summaryrefslogtreecommitdiff
path: root/pimd/pim_zebra.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_zebra.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_zebra.c')
-rw-r--r--pimd/pim_zebra.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c
index e791500ede..8355c2099d 100644
--- a/pimd/pim_zebra.c
+++ b/pimd/pim_zebra.c
@@ -835,7 +835,7 @@ void igmp_source_forward_stop(struct igmp_source *source)
void pim_forward_start(struct pim_ifchannel *ch)
{
struct pim_upstream *up = ch->upstream;
- uint32_t mask = PIM_OIF_FLAG_PROTO_PIM;
+ uint32_t mask = 0;
if (PIM_DEBUG_PIM_TRACE) {
char source_str[INET_ADDRSTRLEN];
@@ -853,9 +853,12 @@ void pim_forward_start(struct pim_ifchannel *ch)
inet_ntoa(up->upstream_addr));
}
- if (up->flags & PIM_UPSTREAM_FLAG_MASK_SRC_IGMP)
+ if (PIM_IF_FLAG_TEST_PROTO_IGMP(ch->flags))
mask = PIM_OIF_FLAG_PROTO_IGMP;
+ if (PIM_IF_FLAG_TEST_PROTO_PIM(ch->flags))
+ mask |= PIM_OIF_FLAG_PROTO_PIM;
+
pim_channel_add_oif(up->channel_oil, ch->interface,
mask, __func__);
}