changeset 4536:ce9e8fb0e6a3 draft

route: Build list of static routes and routers correctly. They they need to be inserted by rt_proto_add().
author Roy Marples <roy@marples.name>
date Tue, 18 Jun 2019 17:35:23 +0100
parents 003dc9907bba
children 37f793c7948e a51511507597
files src/dhcp.c
diffstat 1 files changed, 3 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/dhcp.c	Fri Jun 14 17:05:24 2019 +0100
+++ b/src/dhcp.c	Tue Jun 18 17:35:23 2019 +0100
@@ -656,9 +656,7 @@
 			sa_in_init(&rt->rt_dest, &dest);
 			sa_in_init(&rt->rt_netmask, &netmask);
 			sa_in_init(&rt->rt_gateway, &gateway);
-			if (rb_tree_insert_node(routes, rt) != rt)
-				rt_free(rt);
-			else
+			if (rt_proto_add(routes, rt))
 				n++;
 		}
 	}
@@ -668,7 +666,7 @@
 		p = get_option(ifp->ctx, bootp, bootp_len, DHO_ROUTER, &len);
 	else
 		p = NULL;
-	if (p) {
+	if (p && len % 4 == 0) {
 		e = p + len;
 		dest.s_addr = INADDR_ANY;
 		netmask.s_addr = INADDR_ANY;
@@ -680,9 +678,7 @@
 			sa_in_init(&rt->rt_dest, &dest);
 			sa_in_init(&rt->rt_netmask, &netmask);
 			sa_in_init(&rt->rt_gateway, &gateway);
-			if (rb_tree_insert_node(routes, rt) != rt)
-				rt_free(rt);
-			else
+			if (rt_proto_add(routes, rt))
 				n++;
 		}
 	}