summaryrefslogtreecommitdiff
path: root/pimd/pim_upstream.c
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2020-03-17 13:40:53 -0400
committerGitHub <noreply@github.com>2020-03-17 13:40:53 -0400
commit7967afda0799711bf4ce3bfe8b8b51ceb179376e (patch)
tree10c8375b68a214451ce4c3759311b8d37353ddd9 /pimd/pim_upstream.c
parent136b3d67dbdc7408c570ef1560ea8345b8f810ca (diff)
parent9443810eef5d2de2d932600cf058ee030baa6d47 (diff)
Merge pull request #5880 from patrasar/2371558
pimd: fix OIL not removed after IGMP prune
Diffstat (limited to 'pimd/pim_upstream.c')
-rw-r--r--pimd/pim_upstream.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index efa58c1b1f..07f8315a19 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -1794,10 +1794,16 @@ int pim_upstream_inherited_olist_decide(struct pim_instance *pim,
continue;
if (pim_upstream_evaluate_join_desired_interface(up, ch,
starch)) {
- int flag = PIM_OIF_FLAG_PROTO_PIM;
+ int flag = 0;
if (!ch)
flag = PIM_OIF_FLAG_PROTO_STAR;
+ else {
+ if (PIM_IF_FLAG_TEST_PROTO_IGMP(ch->flags))
+ flag = PIM_OIF_FLAG_PROTO_IGMP;
+ if (PIM_IF_FLAG_TEST_PROTO_PIM(ch->flags))
+ flag |= PIM_OIF_FLAG_PROTO_PIM;
+ }
pim_channel_add_oif(up->channel_oil, ifp, flag,
__func__);