diff options
author | Satheesh Kumar K <sathk@cumulusnetworks.com> | 2019-07-24 07:00:08 +0200 |
---|---|---|
committer | Satheesh Kumar K <sathk@cumulusnetworks.com> | 2019-07-24 07:00:08 +0200 |
commit | 59711f1063d763649f53219ef31d7325c007cdeb (patch) | |
tree | 4933412446da90ffcb39a54b8a846431d5ebf2b9 /pimd | |
parent | Merge pull request #4708 from opensourcerouting/topotest-common-improvement (diff) | |
download | frr-59711f1063d763649f53219ef31d7325c007cdeb.tar.xz frr-59711f1063d763649f53219ef31d7325c007cdeb.zip |
pimd: Zebra Route Updates are missing at pim
Pim will do the nexthop registration with "ip pim rp" static configuration
with this Zebra will advertise the Route Information.
But while processing this info at PIM, if Nexthop Interfaces are not PIM
enabled, currently PIM is dropping those paths. in case all paths are not
PIM enabled, there is no valid RPF Interface at PIM.
and PIM will be stuck at this state until Next update this to route, that
can happen only if there is a Routing change at Zebra for this prefix.
until that time PIM will not have any valid outgoing Interface.
This issue was mainly seen during Node bootup scenarios.
Fix Proposed
=============
store the paths in PIM PNC Data structure though they are not enabled
with PIM, because while selecting the Interface PIM checks for multicast
enabled Interface.
Tests Performed
===============
1. Verified fail Test case
2. Disabling the PIM on selected outgoing Interface, PIM is choosing
another path when Neighbor is down on this Interface.
3. Re-configure the PIM on above un-configured Interface, PIM is staying
with old NHop since it is valid.
Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
Diffstat (limited to 'pimd')
-rw-r--r-- | pimd/pim_nht.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 65ea858cb..39dc8ad2f 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -842,6 +842,14 @@ int pim_parse_nexthop_update(ZAPI_CALLBACK_ARGS) } if (!ifp->info) { + /* + * Though Multicast is not enabled on this + * Interface store it in database otheriwse we + * may miss this update and this will not cause + * any issue, because while choosing the path we + * are ommitting the Interfaces which are not + * multicast enabled + */ if (PIM_DEBUG_PIM_NHT) { char buf[NEXTHOP_STRLEN]; @@ -853,8 +861,6 @@ int pim_parse_nexthop_update(ZAPI_CALLBACK_ARGS) nexthop2str(nexthop, buf, sizeof(buf))); } - nexthop_free(nexthop); - continue; } if (nhlist_tail) { |