summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconfigure.ac6
-rw-r--r--zebra/rt_netlink.c5
2 files changed, 11 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 8758d9d3c1..8338ad1462 100755
--- a/configure.ac
+++ b/configure.ac
@@ -304,6 +304,8 @@ AC_ARG_ENABLE(werror,
AS_HELP_STRING([--enable-werror], [enable -Werror (recommended for developers only)]))
AC_ARG_ENABLE(cumulus,
[ --enable-cumulus enable Cumulus Switch Special Extensions])
+AC_ARG_ENABLE(rr-semantics,
+ AS_HELP_STRING([--disable-rr-semantics], [disable the v6 Route Replace semantics]))
if test x"${enable_gcc_ultra_verbose}" = x"yes" ; then
CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
@@ -345,6 +347,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
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index e52fcd4342..1f7b1a9cff 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -2390,7 +2390,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