]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_upstream.c
*: Actually allow end users to not build pbrd
[mirror_frr.git] / pimd / pim_upstream.c
index 0bf2ce5d562e46f3523b566180a4424d93ea7368..b5f5f646d42aba7aebe4a61d71d9b848403bbb42 100644 (file)
@@ -82,8 +82,7 @@ static void pim_upstream_remove_children(struct pim_instance *pim,
                if (child)
                        child->parent = NULL;
        }
-       list_delete(up->sources);
-       up->sources = NULL;
+       list_delete_and_null(&up->sources);
 }
 
 /*
@@ -168,9 +167,9 @@ struct pim_upstream *pim_upstream_del(struct pim_instance *pim,
        if (PIM_DEBUG_TRACE)
                zlog_debug(
                        "%s(%s): Delete %s[%s] ref count: %d , flags: %d c_oil ref count %d (Pre decrement)",
-                       __PRETTY_FUNCTION__, name, up->sg_str,
-                       pim->vrf->name, up->ref_count,
-                       up->flags, up->channel_oil->oil_ref_count);
+                       __PRETTY_FUNCTION__, name, up->sg_str, pim->vrf->name,
+                       up->ref_count, up->flags,
+                       up->channel_oil->oil_ref_count);
 
        --up->ref_count;
 
@@ -203,13 +202,12 @@ struct pim_upstream *pim_upstream_del(struct pim_instance *pim,
 
        pim_upstream_remove_children(pim, up);
        if (up->sources)
-               list_delete(up->sources);
-       up->sources = NULL;
+               list_delete_and_null(&up->sources);
+
        pim_mroute_del(up->channel_oil, __PRETTY_FUNCTION__);
        upstream_channel_oil_detach(up);
 
-       list_delete(up->ifchannels);
-       up->ifchannels = NULL;
+       list_delete_and_null(&up->ifchannels);
 
        /*
          notice that listnode_delete() can't be moved
@@ -696,9 +694,9 @@ static struct pim_upstream *pim_upstream_new(struct pim_instance *pim,
 
                pim_upstream_remove_children(pim, up);
                if (up->sources)
-                       list_delete(up->sources);
+                       list_delete_and_null(&up->sources);
 
-               list_delete(up->ifchannels);
+               list_delete_and_null(&up->ifchannels);
 
                hash_release(pim->upstream_hash, up);
                XFREE(MTYPE_PIM_UPSTREAM, up);
@@ -866,12 +864,11 @@ int pim_upstream_evaluate_join_desired(struct pim_instance *pim,
                                       struct pim_upstream *up)
 {
        struct interface *ifp;
-       struct listnode *node;
        struct pim_ifchannel *ch, *starch;
        struct pim_upstream *starup = up->parent;
        int ret = 0;
 
-       for (ALL_LIST_ELEMENTS_RO(vrf_iflist(pim->vrf_id), node, ifp)) {
+       FOR_ALL_INTERFACES (pim->vrf, ifp) {
                if (!ifp->info)
                        continue;
 
@@ -952,7 +949,8 @@ void pim_upstream_rpf_genid_changed(struct pim_instance *pim,
                                      sizeof(rpf_addr_str));
                        zlog_debug(
                                "%s: matching neigh=%s against upstream (S,G)=%s[%s] joined=%d rpf_addr=%s",
-                               __PRETTY_FUNCTION__, neigh_str, up->sg_str, pim->vrf->name,
+                               __PRETTY_FUNCTION__, neigh_str, up->sg_str,
+                               pim->vrf->name,
                                up->join_state == PIM_UPSTREAM_JOINED,
                                rpf_addr_str);
                }
@@ -1109,8 +1107,9 @@ static int pim_upstream_keep_alive_timer(struct thread *t)
        if (PIM_UPSTREAM_FLAG_TEST_SRC_STREAM(up->flags)) {
                pim_upstream_fhr_kat_expiry(pim, up);
                if (PIM_DEBUG_TRACE)
-                       zlog_debug("kat expired on %s[%s]; remove stream reference",
-                                  up->sg_str, pim->vrf->name);
+                       zlog_debug(
+                               "kat expired on %s[%s]; remove stream reference",
+                               up->sg_str, pim->vrf->name);
                PIM_UPSTREAM_FLAG_UNSET_SRC_STREAM(up->flags);
                pim_upstream_del(pim, up, __PRETTY_FUNCTION__);
        } else if (PIM_UPSTREAM_FLAG_TEST_SRC_LHR(up->flags)) {
@@ -1120,8 +1119,8 @@ static int pim_upstream_keep_alive_timer(struct thread *t)
                pim_upstream_del(pim, up, __PRETTY_FUNCTION__);
 
                if (parent) {
-                       pim_jp_agg_single_upstream_send(&parent->rpf,
-                                                       parent, true);
+                       pim_jp_agg_single_upstream_send(&parent->rpf, parent,
+                                                       true);
                }
        }
 
@@ -1428,7 +1427,6 @@ int pim_upstream_inherited_olist_decide(struct pim_instance *pim,
        struct interface *ifp;
        struct pim_interface *pim_ifp = NULL;
        struct pim_ifchannel *ch, *starch;
-       struct listnode *node;
        struct pim_upstream *starup = up->parent;
        int output_intf = 0;
 
@@ -1443,7 +1441,7 @@ int pim_upstream_inherited_olist_decide(struct pim_instance *pim,
                up->channel_oil = pim_channel_oil_add(
                        pim, &up->sg, pim_ifp->mroute_vif_index);
 
-       for (ALL_LIST_ELEMENTS_RO(vrf_iflist(pim->vrf_id), node, ifp)) {
+       FOR_ALL_INTERFACES (pim->vrf, ifp) {
                if (!ifp->info)
                        continue;
 
@@ -1548,8 +1546,7 @@ unsigned int pim_upstream_hash_key(void *arg)
 void pim_upstream_terminate(struct pim_instance *pim)
 {
        if (pim->upstream_list)
-               list_delete(pim->upstream_list);
-       pim->upstream_list = NULL;
+               list_delete_and_null(&pim->upstream_list);
 
        if (pim->upstream_hash)
                hash_free(pim->upstream_hash);
@@ -1625,8 +1622,8 @@ static void pim_upstream_sg_running(void *arg)
        if (!up->channel_oil->installed) {
                if (PIM_DEBUG_TRACE)
                        zlog_debug("%s: %s[%s] is not installed in mroute",
-                                  __PRETTY_FUNCTION__,
-                                  up->sg_str, pim->vrf->name);
+                                  __PRETTY_FUNCTION__, up->sg_str,
+                                  pim->vrf->name);
                return;
        }
 
@@ -1642,7 +1639,8 @@ static void pim_upstream_sg_running(void *arg)
                if (PIM_DEBUG_TRACE)
                        zlog_debug(
                                "%s: Handling unscanned inherited_olist for %s[%s]",
-                               __PRETTY_FUNCTION__, up->sg_str, pim->vrf->name);
+                               __PRETTY_FUNCTION__, up->sg_str,
+                               pim->vrf->name);
                pim_upstream_inherited_olist_decide(pim, up);
                up->channel_oil->oil_inherited_rescan = 0;
        }
@@ -1770,8 +1768,7 @@ void pim_upstream_init(struct pim_instance *pim)
                wheel_init(master, 31000, 100, pim_upstream_hash_key,
                           pim_upstream_sg_running);
 
-       snprintf(hash_name, 64, "PIM %s Upstream Hash",
-                pim->vrf->name);
+       snprintf(hash_name, 64, "PIM %s Upstream Hash", pim->vrf->name);
        pim->upstream_hash = hash_create_size(8192, pim_upstream_hash_key,
                                              pim_upstream_equal, hash_name);