diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-07-10 09:45:04 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-07-24 13:52:57 -0400 |
| commit | aabb9a2f07bbcd1b3325e892ac6d204d123c654a (patch) | |
| tree | c7e99a136fd083e19d7b99315846e35dc1a00935 /pimd/pim_zebra.c | |
| parent | 5c3aac90d95bf2c0792ce74ec90d8eb731669f5f (diff) | |
pimd: Allow installation of NULL mroute in some situations
When we receive a S,G,RPT prune as part of a *,G tree, install
the NULL oil S,G mroute. This will cause the traffic to stop
flowing for this particular S,G as we expect.
Ticket: CM-16978
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Diffstat (limited to 'pimd/pim_zebra.c')
| -rw-r--r-- | pimd/pim_zebra.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index 9fbca9cb21..7b060aef4b 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -1284,17 +1284,21 @@ void pim_forward_start(struct pim_ifchannel *ch) pim_channel_add_oif(up->channel_oil, ch->interface, mask); } -void pim_forward_stop(struct pim_ifchannel *ch) +void pim_forward_stop(struct pim_ifchannel *ch, bool install_it) { struct pim_upstream *up = ch->upstream; if (PIM_DEBUG_PIM_TRACE) { - zlog_debug("%s: (S,G)=%s oif=%s", __PRETTY_FUNCTION__, - ch->sg_str, ch->interface->name); + zlog_debug("%s: (S,G)=%s oif=%s install_it: %d installed: %d", + __PRETTY_FUNCTION__, ch->sg_str, ch->interface->name, + install_it, up->channel_oil->installed); } pim_channel_del_oif(up->channel_oil, ch->interface, PIM_OIF_FLAG_PROTO_PIM); + + if (install_it && !up->channel_oil->installed) + pim_mroute_add(up->channel_oil, __PRETTY_FUNCTION__); } void pim_zebra_zclient_update(struct vty *vty) |
