changeset 4163:799ea031e1ec draft

Don't mark statically configured IPv4 routes as DHCP.
author Roy Marples <roy@marples.name>
date Mon, 09 Oct 2017 20:21:05 +0100
parents fbed6260b7e1
children 834aba640014
files src/dhcp.c src/ipv4.c src/route.h
diffstat 3 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/dhcp.c	Mon Oct 09 20:11:36 2017 +0100
+++ b/src/dhcp.c	Mon Oct 09 20:21:05 2017 +0100
@@ -428,7 +428,6 @@
 
 		if ((rt = rt_new(ifp)) == NULL)
 			return -1;
-		rt->rt_dflags |= RTDF_DHCP;
 
 		/* If we have ocets then we have a destination and netmask */
 		dest.s_addr = 0;
@@ -633,7 +632,6 @@
 				continue;
 			if ((rt = rt_new(ifp)) == NULL)
 				return -1;
-			rt->rt_dflags |= RTDF_DHCP;
 
 			/* A host route is normally set by having the
 			 * gateway match the destination or assigned address */
@@ -666,7 +664,6 @@
 		while (p < e) {
 			if ((rt = rt_new(ifp)) == NULL)
 				return -1;
-			rt->rt_dflags |= RTDF_DHCP;
 			memcpy(&gateway.s_addr, p, sizeof(gateway.s_addr));
 			p += 4;
 			sa_in_init(&rt->rt_dest, &dest);
--- a/src/ipv4.c	Mon Oct 09 20:11:36 2017 +0100
+++ b/src/ipv4.c	Mon Oct 09 20:21:05 2017 +0100
@@ -266,7 +266,7 @@
 	/* First, add a subnet route. */
 	if (!(ifp->flags & IFF_POINTOPOINT) &&
 #ifndef BSD
-		/* BSD adds a route in this instance */
+	    /* BSD adds a route in this instance */
 	    state->addr->mask.s_addr != INADDR_BROADCAST &&
 #endif
 	    state->addr->mask.s_addr != INADDR_ANY)
@@ -291,6 +291,7 @@
 				break;
 			if ((rt = rt_new(ifp)) == NULL)
 				return -1;
+			rt->rt_dflags = RTDF_STATIC;
 			memcpy(rt, r, sizeof(*rt));
 			TAILQ_INSERT_TAIL(&nroutes, rt, rt_next);
 		}
@@ -319,6 +320,8 @@
 	n = 0;
 	TAILQ_FOREACH(rt, &nroutes, rt_next) {
 		rt->rt_mtu = mtu;
+		if (!(rt->rt_dflags & RTDF_STATIC))
+			rt->rt_dflags |= RTDF_DHCP;
 		sa_in_init(&rt->rt_ifa, &state->addr->addr);
 		n++;
 	}
--- a/src/route.h	Mon Oct 09 20:11:36 2017 +0100
+++ b/src/route.h	Mon Oct 09 20:21:05 2017 +0100
@@ -77,6 +77,7 @@
 #define	RTDF_FAKE		0x04		/* Maybe us on lease reboot  */
 #define	RTDF_RA			0x08		/* Router Advertisement */
 #define	RTDF_DHCP		0x10		/* DHCP route */
+#define	RTDF_STATIC		0x20		/* Configured in dhcpcd */
 };
 TAILQ_HEAD(rt_head, rt);