]> git.puffer.fish Git - matthieu/frr.git/commitdiff
quagga: Allow compile time determination of v6 RR semantics
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 20 Jun 2016 12:21:00 +0000 (08:21 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 20 Jun 2016 12:21:00 +0000 (08:21 -0400)
The patches to allow kernel v6 Route Replacement semantics
to work correctly are on a very recent kernel.  If you are
compiling on a linux kernel where it's broken, just
compile with --disable-rr-semantics.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
configure.ac
zebra/rt_netlink.c

index e7ca6015d27da7fb64bc6827f000eb8deecd27d3..1f7d59d3aad0526ce2de9ccc192a5b4174b4a352 100755 (executable)
@@ -320,6 +320,8 @@ AC_ARG_ENABLE(werror,
   AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
 AC_ARG_ENABLE(cumulus,
   AS_HELP_STRING([--enable-cumulus], [enable Cumulus Switch Special Extensions]))
+AC_ARG_ENABLE(rr-semantics,
+  AS_HELP_STRING([--disable-rr-semantics], [disable the v6 Route Replace semantics]))
 
 AC_CHECK_HEADERS(json-c/json.h)
 AC_CHECK_LIB(json-c, json_object_get, LIBS="$LIBS -ljson-c")
@@ -354,6 +356,10 @@ case "${enable_systemd}" in
   "*") ;;
 esac
 
+if test "${enable_rr_semantics}" != "no" ; then
+  AC_DEFINE(HAVE_V6_RR_SEMANTICS,, Compile in v6 Route Replacement Semantics)
+fi
+
 if test "${enable_poll}" = "yes" ; then
   AC_DEFINE(HAVE_POLL,,Compile systemd support in)
 fi
index b0e680b7a98bee2eb44d6e1e238f2793067f2f2b..0e336fe974d33f30f9361f624c58de24f106ad95 100644 (file)
@@ -2299,7 +2299,12 @@ kernel_add_ipv6 (struct prefix *p, struct rib *rib)
 int
 kernel_update_ipv6 (struct prefix *p, struct rib *rib)
 {
+#if defined (HAVE_V6_RR_SEMANTICS)
   return netlink_route_multipath (RTM_NEWROUTE, p, rib, AF_INET6, 1);
+#else
+  kernel_delete_ipv6 (p, rib);
+  return kernel_add_ipv6 (p, rib);
+#endif
 }
 
 int