]> git.proxmox.com Git - mirror_frr.git/blobdiff - pimd/pim_jp_agg.c
Merge pull request #5494 from opensourcerouting/mlag-module
[mirror_frr.git] / pimd / pim_jp_agg.c
index 5f9e166810e7e956df34d1b83f304b52c5da508d..2662c9eae68d2b2aaba910c65555ab00ea7d006e 100644 (file)
@@ -148,7 +148,8 @@ pim_jp_agg_get_interface_upstream_switch_list(struct pim_rpf *rpf)
        return pius;
 }
 
-void pim_jp_agg_remove_group(struct list *group, struct pim_upstream *up)
+void pim_jp_agg_remove_group(struct list *group, struct pim_upstream *up,
+               struct pim_neighbor *nbr)
 {
        struct listnode *node, *nnode;
        struct pim_jp_agg_group *jag = NULL;
@@ -167,6 +168,20 @@ void pim_jp_agg_remove_group(struct list *group, struct pim_upstream *up)
                        break;
        }
 
+       if (nbr) {
+               if (PIM_DEBUG_TRACE) {
+                       char src_str[INET_ADDRSTRLEN];
+
+                       pim_inet4_dump("<src?>", nbr->source_addr, src_str,
+                                       sizeof(src_str));
+                       zlog_debug(
+                               "up %s remove from nbr %s/%s jp-agg-list",
+                               up->sg_str,
+                               nbr->interface->name,
+                               src_str);
+               }
+       }
+
        if (js) {
                js->up = NULL;
                listnode_delete(jag->sources, js);
@@ -254,7 +269,7 @@ void pim_jp_agg_upstream_verification(struct pim_upstream *up, bool ignore)
 }
 
 void pim_jp_agg_add_group(struct list *group, struct pim_upstream *up,
-                         bool is_join)
+                         bool is_join, struct pim_neighbor *nbr)
 {
        struct listnode *node, *nnode;
        struct pim_jp_agg_group *jag = NULL;
@@ -280,6 +295,20 @@ void pim_jp_agg_add_group(struct list *group, struct pim_upstream *up,
                        break;
        }
 
+       if (nbr) {
+               if (PIM_DEBUG_TRACE) {
+                       char src_str[INET_ADDRSTRLEN];
+
+                       pim_inet4_dump("<src?>", nbr->source_addr, src_str,
+                                       sizeof(src_str));
+                       zlog_debug(
+                               "up %s add to nbr %s/%s jp-agg-list",
+                               up->sg_str,
+                               up->rpf.source_nexthop.interface->name,
+                               src_str);
+               }
+       }
+
        if (!js) {
                js = XCALLOC(MTYPE_PIM_JP_AGG_SOURCE,
                             sizeof(struct pim_jp_sources));
@@ -320,11 +349,11 @@ void pim_jp_agg_switch_interface(struct pim_rpf *orpf, struct pim_rpf *nrpf,
 
        /* send Prune(S,G) to the old upstream neighbor */
        if (opius)
-               pim_jp_agg_add_group(opius->us, up, false);
+               pim_jp_agg_add_group(opius->us, up, false, NULL);
 
        /* send Join(S,G) to the current upstream neighbor */
        if (npius)
-               pim_jp_agg_add_group(npius->us, up, true);
+               pim_jp_agg_add_group(npius->us, up, true, NULL);
 }