changeset 4161:a40c7c100a45 draft

Set RA routes as RA in supported OS's.
author Roy Marples <roy@marples.name>
date Mon, 09 Oct 2017 19:57:09 +0100
parents 4746922d79a3
children fbed6260b7e1
files src/if-linux.c src/ipv6.c src/route.h
diffstat 3 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/if-linux.c	Mon Oct 09 10:28:03 2017 +0100
+++ b/src/if-linux.c	Mon Oct 09 19:57:09 2017 +0100
@@ -1221,6 +1221,11 @@
 	} else {
 		/* Address generated routes are RTPROT_KERNEL,
 		 * otherwise RTPROT_BOOT */
+#ifdef RTPROT_RA
+		if (rt->rt_dflags & RTDF_RA)
+			nlm.rt.rtm_protocol = RTPROT_RA;
+		else
+#endif
 		if (rt->rt_dflags & RTDF_IFA_ROUTE)
 			nlm.rt.rtm_protocol = RTPROT_KERNEL;
 		else
--- a/src/ipv6.c	Mon Oct 09 10:28:03 2017 +0100
+++ b/src/ipv6.c	Mon Oct 09 19:57:09 2017 +0100
@@ -2136,8 +2136,10 @@
 #ifdef HAVE_ROUTE_METRIC
 	rt->rt_metric = ifp->metric;
 #endif
-	if (rap != NULL)
+	if (rap != NULL) {
 		rt->rt_mtu = rap->mtu;
+		rt->rt_dflags |= RTDF_RA;
+	}
 	return rt;
 }
 
--- a/src/route.h	Mon Oct 09 10:28:03 2017 +0100
+++ b/src/route.h	Mon Oct 09 19:57:09 2017 +0100
@@ -72,9 +72,10 @@
 	unsigned int		rt_metric;
 #endif
 	unsigned int		rt_dflags;
-#define RTDF_INIT		0x01		/* Generated by if_initrt() */
-#define RTDF_IFA_ROUTE		0x02		/* Address generated route */
-#define RTDF_FAKE		0x04		/* Maybe us on lease reboot  */
+#define	RTDF_INIT		0x01		/* Generated by if_initrt() */
+#define	RTDF_IFA_ROUTE		0x02		/* Address generated route */
+#define	RTDF_FAKE		0x04		/* Maybe us on lease reboot  */
+#define	RTDF_RA			0x08		/* Router Advertisement */
 };
 TAILQ_HEAD(rt_head, rt);