]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_jp_agg.c
*: make all route_map_rule_cmd const
[mirror_frr.git] / pimd / pim_jp_agg.c
index 8e0b4ab5e8ec0b27d328acbb53f45dfa0b7ca13f..418f66df0558bbf4f75b1186f7bce6050b5fe129 100644 (file)
@@ -32,7 +32,7 @@
 
 void pim_jp_agg_group_list_free(struct pim_jp_agg_group *jag)
 {
-       list_delete(jag->sources);
+       list_delete(&jag->sources);
 
        XFREE(MTYPE_PIM_JP_AGG_GROUP, jag);
 }
@@ -108,8 +108,7 @@ void pim_jp_agg_clear_group(struct list *group)
                        js->up = NULL;
                        XFREE(MTYPE_PIM_JP_AGG_SOURCE, js);
                }
-               list_delete(jag->sources);
-               jag->sources = NULL;
+               list_delete(&jag->sources);
                listnode_delete(group, jag);
                XFREE(MTYPE_PIM_JP_AGG_GROUP, jag);
        }
@@ -169,8 +168,7 @@ void pim_jp_agg_remove_group(struct list *group, struct pim_upstream *up)
        }
 
        if (jag->sources->count == 0) {
-               list_delete(jag->sources);
-               jag->sources = NULL;
+               list_delete(&jag->sources);
                listnode_delete(group, jag);
                XFREE(MTYPE_PIM_JP_AGG_GROUP, jag);
        }
@@ -214,12 +212,21 @@ int pim_jp_agg_is_in_list(struct list *group, struct pim_upstream *up)
 void pim_jp_agg_upstream_verification(struct pim_upstream *up, bool ignore)
 {
 #ifdef PIM_JP_AGG_DEBUG
-       struct listnode *node;
        struct interface *ifp;
-       struct pim_interface *pim_ifp = up->rpf.source_nexthop.interface->info;
-       struct pim_instance *pim = pim_ifp->pim;
+       struct pim_interface *pim_ifp;
+       struct pim_instance *pim;
 
-       for (ALL_LIST_ELEMENTS_RO(vrf_iflist(pim->vrf_id), node, ifp)) {
+       if (!up->rpf.source_nexthop.interface) {
+               if (PIM_DEBUG_PIM_TRACE)
+                       zlog_debug("%s: up %s RPF is not present",
+                               __PRETTY_FUNCTION__, up->sg_str);
+               return;
+       }
+
+       pim_ifp = up->rpf.source_nexthop.interface->info;
+       pim = pim_ifp->pim;
+
+       FOR_ALL_INTERFACES (pim->vrf, ifp) {
                pim_ifp = ifp->info;
                struct listnode *nnode;
 
@@ -332,7 +339,6 @@ void pim_jp_agg_single_upstream_send(struct pim_rpf *rpf,
 
        if (first) {
                groups = list_new();
-
                jag.sources = list_new();
 
                listnode_add(groups, &jag);