summaryrefslogtreecommitdiffstats
path: root/ripd
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2018-11-29 20:06:22 +0100
committerRenato Westphal <renato@opensourcerouting.org>2018-12-03 16:47:58 +0100
commitd682d365a561697118d0e52c0190241ddc3fd598 (patch)
tree9eb7591d560204d8820dac4f43dab948bf2df288 /ripd
parentripd: remove leftovers from the old sighup handler (diff)
downloadfrr-d682d365a561697118d0e52c0190241ddc3fd598.tar.xz
frr-d682d365a561697118d0e52c0190241ddc3fd598.zip
ripd: fix minor issues from the northbound conversion
* Always apply the mask of IPv4 prefixes (user data) in the northbound callbacks, we shouldn't assume the northbound plugins will do that for us. * Fix a bug in the "distance" command introduced by commit a6233bfcb3b. * Remove unnecessary check in the ripd_instance_redistribute_route_map_delete() function and reset the route-map's map pointer for safety as well. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'ripd')
-rw-r--r--ripd/rip_cli.c3
-rw-r--r--ripd/rip_northbound.c12
2 files changed, 10 insertions, 5 deletions
diff --git a/ripd/rip_cli.c b/ripd/rip_cli.c
index e0e5d9589..5bb81ef15 100644
--- a/ripd/rip_cli.c
+++ b/ripd/rip_cli.c
@@ -210,7 +210,8 @@ DEFPY (rip_distance_source,
{
if (!no) {
nb_cli_enqueue_change(vty, ".", NB_OP_CREATE, NULL);
- nb_cli_enqueue_change(vty, "./distance", NB_OP_MODIFY, NULL);
+ nb_cli_enqueue_change(vty, "./distance", NB_OP_MODIFY,
+ distance_str);
nb_cli_enqueue_change(vty, "./access-list",
acl ? NB_OP_MODIFY : NB_OP_DELETE, acl);
} else
diff --git a/ripd/rip_northbound.c b/ripd/rip_northbound.c
index 421b0afe3..4e445bd46 100644
--- a/ripd/rip_northbound.c
+++ b/ripd/rip_northbound.c
@@ -170,6 +170,7 @@ static int ripd_instance_distance_source_create(enum nb_event event,
return NB_OK;
yang_dnode_get_ipv4p(&prefix, dnode, "./prefix");
+ apply_mask_ipv4(&prefix);
/* Get RIP distance node. */
rn = route_node_get(rip_distance_table, (struct prefix *)&prefix);
@@ -317,6 +318,7 @@ static int ripd_instance_network_create(enum nb_event event,
return NB_OK;
yang_dnode_get_ipv4p(&p, dnode, NULL);
+ apply_mask_ipv4((struct prefix_ipv4 *)&p);
return rip_enable_network_add(&p);
}
@@ -330,6 +332,7 @@ static int ripd_instance_network_delete(enum nb_event event,
return NB_OK;
yang_dnode_get_ipv4p(&p, dnode, NULL);
+ apply_mask_ipv4((struct prefix_ipv4 *)&p);
return rip_enable_network_delete(&p);
}
@@ -605,10 +608,9 @@ ripd_instance_redistribute_route_map_delete(enum nb_event event,
type = yang_dnode_get_enum(dnode, "../protocol");
- if (rip->route_map[type].name) {
- free(rip->route_map[type].name);
- rip->route_map[type].name = NULL;
- }
+ free(rip->route_map[type].name);
+ rip->route_map[type].name = NULL;
+ rip->route_map[type].map = NULL;
return NB_OK;
}
@@ -667,6 +669,7 @@ static int ripd_instance_static_route_create(enum nb_event event,
return NB_OK;
yang_dnode_get_ipv4p(&p, dnode, NULL);
+ apply_mask_ipv4(&p);
memset(&nh, 0, sizeof(nh));
nh.type = NEXTHOP_TYPE_IPV4;
@@ -685,6 +688,7 @@ static int ripd_instance_static_route_delete(enum nb_event event,
return NB_OK;
yang_dnode_get_ipv4p(&p, dnode, NULL);
+ apply_mask_ipv4(&p);
rip_redistribute_delete(ZEBRA_ROUTE_RIP, RIP_ROUTE_STATIC, &p, 0);