summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2014-08-29 19:18:04 -0500
committerDan Williams <dcbw@redhat.com>2014-08-29 19:56:19 -0500
commit15870c52092d827749d50e75c5223ad427690fe1 (patch)
tree9c47fa0a2824042647a81cbed23a559ccb9d5951
parent03a475ddf5ce0c4551c94a26179f303223d3efa8 (diff)
downloadNetworkManager-dcbw/ipv6-addrgenmode.tar.gz
fixup! platform: add support for kernel IPv6LL address generation modesdcbw/ipv6-addrgenmode
-rw-r--r--configure.ac14
-rw-r--r--src/platform/nm-linux-platform.c13
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"