From d682d365a561697118d0e52c0190241ddc3fd598 Mon Sep 17 00:00:00 2001 From: Renato Westphal Date: Thu, 29 Nov 2018 17:06:22 -0200 Subject: [PATCH] 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 --- ripd/rip_cli.c | 3 ++- ripd/rip_northbound.c | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/ripd/rip_cli.c b/ripd/rip_cli.c index e0e5d95895..5bb81ef157 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 421b0afe38..4e445bd46d 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); -- 2.39.5