diff options
author | Dan Williams <dcbw@redhat.com> | 2014-08-29 19:18:04 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-08-29 19:56:19 -0500 |
commit | 15870c52092d827749d50e75c5223ad427690fe1 (patch) | |
tree | 9c47fa0a2824042647a81cbed23a559ccb9d5951 | |
parent | 03a475ddf5ce0c4551c94a26179f303223d3efa8 (diff) | |
download | NetworkManager-dcbw/ipv6-addrgenmode.tar.gz |
fixup! platform: add support for kernel IPv6LL address generation modesdcbw/ipv6-addrgenmode
-rw-r--r-- | configure.ac | 14 | ||||
-rw-r--r-- | src/platform/nm-linux-platform.c | 13 |
2 files changed, 23 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index 8e8ad05fcc..23898c3bbb 100644 --- a/configure.ac +++ b/configure.ac @@ -386,13 +386,25 @@ PKG_CHECK_MODULES(LIBNL, libnl-3.0 >= 3.2.8 libnl-route-3.0 libnl-genl-3.0) AC_SUBST(LIBNL_CFLAGS) AC_SUBST(LIBNL_LIBS) -AC_MSG_CHECKING([libnl rtnl_link_inet6_get_addr_gen_mode() support]) AC_CHECK_LIB([nl-route-3], [rtnl_link_inet6_get_addr_gen_mode], ac_have_addr_gen_mode="1", ac_have_addr_gen_mode="0") AC_DEFINE_UNQUOTED(HAVE_LIBNL_INET6_ADDR_GEN_MODE, $ac_have_addr_gen_mode, [Define if libnl has rtnl_link_inet6_get_addr_gen_mode()]) +AC_MSG_CHECKING([Linux kernel IN6_ADDR_GEN_MODE enum]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#ifndef __user + #define __user + #endif + #include <linux/if_link.h>]], + [[int a = IN6_ADDR_GEN_MODE_EUI64; a++;]])], + [ac_have_kernel_gen_mode="1"], + [ac_have_kernel_gen_mode="0"]) +AC_DEFINE_UNQUOTED(HAVE_KERNEL_INET6_ADDR_GEN_MODE, + $ac_have_kernel_gen_mode, [Define if the kernel has IN6_ADDR_GEN_MODE_*]) + # uuid library PKG_CHECK_MODULES(UUID, uuid) AC_SUBST(UUID_CFLAGS) diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index a768d13a13..867010c9b7 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -40,13 +40,20 @@ #include <netlink/cache.h> #include <netlink/route/link.h> #include <netlink/route/link/vlan.h> -#if HAVE_LIBNL_INET6_ADDR_GEN_MODE -#include <netlink/route/link/inet6.h> -#endif #include <netlink/route/addr.h> #include <netlink/route/route.h> #include <gudev/gudev.h> +#if HAVE_LIBNL_INET6_ADDR_GEN_MODE +#include <netlink/route/link/inet6.h> +#if HAVE_KERNEL_INET6_ADDR_GEN_MODE +#include <linux/if_link.h> +#else +#define IN6_ADDR_GEN_MODE_EUI64 0 +#define IN6_ADDR_GEN_MODE_NONE 1 +#endif +#endif + #include "NetworkManagerUtils.h" #include "nm-linux-platform.h" #include "NetworkManagerUtils.h" |