forked from Mirror/frr
pimd: Don't double include Source
When we are adding to a J/P Agg list, don't double add the source. Ticket: CM-15189 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
fc9d070da4
commit
f849df457e
|
@ -170,7 +170,7 @@ pim_jp_agg_add_group (struct list *group, struct pim_upstream *up, bool is_join)
|
||||||
{
|
{
|
||||||
struct listnode *node, *nnode;
|
struct listnode *node, *nnode;
|
||||||
struct pim_jp_agg_group *jag = NULL;
|
struct pim_jp_agg_group *jag = NULL;
|
||||||
struct pim_jp_sources *js;
|
struct pim_jp_sources *js = NULL;
|
||||||
|
|
||||||
for (ALL_LIST_ELEMENTS(group, node, nnode, jag))
|
for (ALL_LIST_ELEMENTS(group, node, nnode, jag))
|
||||||
{
|
{
|
||||||
|
@ -188,13 +188,22 @@ pim_jp_agg_add_group (struct list *group, struct pim_upstream *up, bool is_join)
|
||||||
listnode_add (group, jag);
|
listnode_add (group, jag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (ALL_LIST_ELEMENTS(jag->sources, node, nnode, js))
|
||||||
|
{
|
||||||
|
if (js->up->sg.src.s_addr == up->sg.src.s_addr)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!js)
|
||||||
|
{
|
||||||
js = XCALLOC(MTYPE_PIM_JP_AGG_SOURCE, sizeof (struct pim_jp_sources));
|
js = XCALLOC(MTYPE_PIM_JP_AGG_SOURCE, sizeof (struct pim_jp_sources));
|
||||||
js->up = up;
|
js->up = up;
|
||||||
js->is_join = is_join;
|
|
||||||
|
|
||||||
listnode_add (jag->sources, js);
|
listnode_add (jag->sources, js);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
js->is_join = is_join;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pim_jp_agg_switch_interface (struct pim_rpf *orpf,
|
pim_jp_agg_switch_interface (struct pim_rpf *orpf,
|
||||||
struct pim_rpf *nrpf,
|
struct pim_rpf *nrpf,
|
||||||
|
|
Loading…
Reference in a new issue