]> git.proxmox.com Git - mirror_frr.git/commitdiff
lib,pbrd,zebra: Use one api to delete nexthops/group
authorStephen Worley <sworley@cumulusnetworks.com>
Fri, 4 Oct 2019 18:04:43 +0000 (14:04 -0400)
committerStephen Worley <sworley@cumulusnetworks.com>
Fri, 25 Oct 2019 15:13:43 +0000 (11:13 -0400)
Reduce the api for deleting nexthops and the containing
group to just one call rather than having a special case
and handling it separately.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
lib/nexthop_group.c
lib/nexthop_group.h
pbrd/pbr_nht.c
zebra/zapi_msg.c
zebra/zebra_nhg.c
zebra/zebra_rib.c
zebra/zebra_rnh.c

index 7d8bcd1166c5c4abbce3612989e0360785f905a6..9552f895683bb14199108c8c929ee669b09b71c3 100644 (file)
@@ -212,15 +212,11 @@ void nexthop_group_copy(struct nexthop_group *to, struct nexthop_group *from)
 }
 
 void nexthop_group_delete(struct nexthop_group **nhg)
-{
-       XFREE(MTYPE_NEXTHOP_GROUP, *nhg);
-}
-
-void nexthop_group_free_delete(struct nexthop_group **nhg)
 {
        if ((*nhg)->nexthop)
                nexthops_free((*nhg)->nexthop);
-       nexthop_group_delete(nhg);
+
+       XFREE(MTYPE_NEXTHOP_GROUP, *nhg);
 }
 
 /* Add nexthop to the end of a nexthop list.  */
index 378b0ce6bb717160300709c38f076cf12457ca82..391775c69c3945bdbe7406c801e129814e8e7153 100644 (file)
@@ -41,7 +41,6 @@ struct nexthop_group {
 
 struct nexthop_group *nexthop_group_new(void);
 void nexthop_group_delete(struct nexthop_group **nhg);
-void nexthop_group_free_delete(struct nexthop_group **nhg);
 
 void nexthop_group_copy(struct nexthop_group *to,
                        struct nexthop_group *from);
index 062cfd0158b6b4b9abf502e1474c2b8d7d966c83..7ccd14d1f1b7d31a7ac33ad35994ae1e0f68f6ef 100644 (file)
@@ -578,8 +578,6 @@ void pbr_nht_delete_individual_nexthop(struct pbr_map_sequence *pbrms)
 
        hash_release(pbr_nhg_hash, pnhgc);
 
-       _nexthop_del(pbrms->nhg, nh);
-       nexthop_free(nh);
        nexthop_group_delete(&pbrms->nhg);
        XFREE(MTYPE_TMP, pbrms->internal_nhg_name);
 }
index ab4c246d166f72abde7fa99114748fb731f4cb77..d6ade783cf0fbde27e07ac73ef0dd5fe252cf9fd 100644 (file)
@@ -1537,7 +1537,6 @@ static void zread_route_add(ZAPI_HANDLER_ARGS)
                                EC_ZEBRA_NEXTHOP_CREATION_FAILED,
                                "%s: Nexthops Specified: %d but we failed to properly create one",
                                __PRETTY_FUNCTION__, api.nexthop_num);
-                       nexthops_free(re->ng->nexthop);
                        nexthop_group_delete(&re->ng);
                        XFREE(MTYPE_RE, re);
                        return;
@@ -1580,7 +1579,6 @@ static void zread_route_add(ZAPI_HANDLER_ARGS)
                flog_warn(EC_ZEBRA_RX_SRCDEST_WRONG_AFI,
                          "%s: Received SRC Prefix but afi is not v6",
                          __PRETTY_FUNCTION__);
-               nexthops_free(re->ng->nexthop);
                nexthop_group_delete(&re->ng);
                XFREE(MTYPE_RE, re);
                return;
index c22ed67f8071cbd1e300dd5c07e7fee735bc8eda..f4fc06efc9538e6cfc00449f0fb0878696fc9089 100644 (file)
@@ -769,7 +769,7 @@ static int nhg_ctx_process_new(struct nhg_ctx *ctx)
                if (zebra_nhg_process_grp(nhg, &nhg_depends,
                                          nhg_ctx_get_grp(ctx), count)) {
                        depends_decrement_free(&nhg_depends);
-                       nexthop_group_free_delete(&nhg);
+                       nexthop_group_delete(&nhg);
                        return -ENOENT;
                }
 
@@ -778,7 +778,7 @@ static int nhg_ctx_process_new(struct nhg_ctx *ctx)
                        depends_decrement_free(&nhg_depends);
 
                /* These got copied over in zebra_nhg_alloc() */
-               nexthop_group_free_delete(&nhg);
+               nexthop_group_delete(&nhg);
        } else
                nhe = zebra_nhg_find_nexthop(id, nhg_ctx_get_nh(ctx), afi,
                                             type);
@@ -1046,7 +1046,7 @@ zebra_nhg_rib_find(uint32_t id, struct nexthop_group *nhg, afi_t rt_afi)
 
 void zebra_nhg_free_members(struct nhg_hash_entry *nhe)
 {
-       nexthop_group_free_delete(&nhe->nhg);
+       nexthop_group_delete(&nhe->nhg);
        /* Decrement to remove connection ref */
        nhg_connected_tree_decrement_ref(&nhe->nhg_depends);
        nhg_connected_tree_free(&nhe->nhg_depends);
index 337a2f09c5d9a27ab89ccab2ed63a4fdd4359e1a..e0bf1a58f244e273248b2cdf300480bea8ac0e21 100644 (file)
@@ -2431,7 +2431,7 @@ void rib_unlink(struct route_node *rn, struct route_entry *re)
                if (nhe)
                        zebra_nhg_decrement_ref(nhe);
        } else if (re->ng)
-               nexthop_group_free_delete(&re->ng);
+               nexthop_group_delete(&re->ng);
 
        nexthops_free(re->fib_ng.nexthop);
 
@@ -2667,7 +2667,7 @@ int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p,
        table = zebra_vrf_table_with_table_id(afi, safi, re->vrf_id, re->table);
        if (!table) {
                if (re->ng)
-                       nexthop_group_free_delete(&re->ng);
+                       nexthop_group_delete(&re->ng);
                XFREE(MTYPE_RE, re);
                return 0;
        }
@@ -2690,7 +2690,7 @@ int rib_add_multipath(afi_t afi, safi_t safi, struct prefix *p,
                 * The nexthops got copied over into an nhe,
                 * so free them now.
                 */
-               nexthop_group_free_delete(&re->ng);
+               nexthop_group_delete(&re->ng);
 
                if (!nhe) {
                        char buf[PREFIX_STRLEN] = "";
index af3c1b818f2ff3518f90ad0cfe4f8d577771e458..60e23cc4d480ea2ac026b9121fd5e3bfbcebaebb 100644 (file)
@@ -940,7 +940,6 @@ static void free_state(vrf_id_t vrf_id, struct route_entry *re,
                return;
 
        /* free RE and nexthops */
-       nexthops_free(re->ng->nexthop);
        nexthop_group_delete(&re->ng);
        XFREE(MTYPE_RE, re);
 }