]> git.puffer.fish Git - mirror/frr.git/commit
pimd: neighbor needed true in pim nexthop lookup 5896/head
authorSarita Patra <saritap@vmware.com>
Tue, 3 Mar 2020 11:31:22 +0000 (03:31 -0800)
committerSarita Patra <saritap@vmware.com>
Tue, 3 Mar 2020 11:31:22 +0000 (03:31 -0800)
commit3d68661d7b60dbc4a7c9cde98ba5e79fb8009af3
treeeb1a14cf69462542f822aa56a0b74178185a980b
parent4765870ee751acdb9fa6d2617e0b4ffdb111e065
pimd: neighbor needed true in pim nexthop lookup

Issue:
Client---LHR---RP
1. Add kernel route for RP on LHR. Client send join
2. (*,G) will be get created in LHR and RP.
3. Kill the FRR on all the nodes
4. Start FRR only on LHR node
5. In LHR, (*, G) will be created with iif as unknown.

Root cause:
In the step 4, When LHR will receive igmp join, it will call
the function pim_ecmp_fib_lookup_if_vif_index which will look
for nexthop to RP with neighbor needed as false. So RPF lookup will
be true as the route is present in the kernel. It will create a
(*, G) channel_oil with incoming interface as the RPF interface
towards RP and install the (*,G) mroute in kernel.
Along with this (*,G) upstream gets craeted, which call the function
pim_rpf_update, which will look for the nexthop to RP with neighbor
needed as true. As the frr is not running in RP, no neighbor is present
on the nexthop interface. Due to which this will fail and will update
the channel_oil incoming interface as MAXVIFS(32).

Fix:
pim_ecmp_fib_lookup_if_vif_index() call the function pim_ecmp_nexthop_lookup
with neighbor_needed as true.

Signed-off-by: Sarita Patra <saritap@vmware.com>
pimd/pim_nht.c