From b08f841685bf67b3f4f8cc3e8f667c80878916a8 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Fri, 18 Oct 2013 14:18:32 +0200 Subject: Add option "delegate" to toggle prefix delegation --- interface-ip.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'interface-ip.c') diff --git a/interface-ip.c b/interface-ip.c index 60902f9..2280266 100644 --- a/interface-ip.c +++ b/interface-ip.c @@ -920,7 +920,9 @@ interface_update_prefix(struct vlist_tree *tree, } else if (node_new) { // Set null-route to avoid routing loops system_add_route(NULL, &route); - interface_update_prefix_assignments(prefix_new, true); + + if (!prefix_new->iface || !prefix_new->iface->proto_ip.no_delegation) + interface_update_prefix_assignments(prefix_new, true); } else if (node_old) { // Remove null-route interface_update_prefix_assignments(prefix_old, false); @@ -928,11 +930,12 @@ interface_update_prefix(struct vlist_tree *tree, } if (node_old) { - list_del(&prefix_old->head); + if (prefix_old->head.next) + list_del(&prefix_old->head); free(prefix_old); } - if (node_new) + if (node_new && (!prefix_new->iface || !prefix_new->iface->proto_ip.no_delegation)) list_add(&prefix_new->head, &prefixes); } -- cgit v1.2.3