]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ripd: fix minor issues from the northbound conversion
authorRenato Westphal <renato@opensourcerouting.org>
Thu, 29 Nov 2018 19:06:22 +0000 (17:06 -0200)
committerRenato Westphal <renato@opensourcerouting.org>
Mon, 3 Dec 2018 15:47:58 +0000 (13:47 -0200)
* 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>
ripd/rip_cli.c
ripd/rip_northbound.c

index e0e5d95895c970cbe2d322f0d5f8d507ead4cfb1..5bb81ef157c2f1a10da77634e89a7ab22cbebd1c 100644 (file)
@@ -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
index 421b0afe389e22f0fbb0c26ced2d8086d4230883..4e445bd46df4bddab4cc14b084d4551a44b99506 100644 (file)
@@ -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);