summaryrefslogtreecommitdiffstats
path: root/pimd/pim_nht.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* pimd: Avoid deleting SGRpt entry from PP->P stateChirag Shah2017-05-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | -Upon Receving SGRpt Prune message, transitioning from Prune Pending state to NOINFO state, ifchannel entry was getting deleted in prune pending timer expiry. This can result in SGRpt ifhchannel deleted and recreated upon receving triggered or periodic SGRpt received from downstream. The automation test failed as it expected (check) SGRpt entry at RP after it triggers SPT switchover. - While transitioning from Prune-Pending state to NOINFO(Pruned) state, Trigger SGRpt message towards RP. - Add/del some of the debug traces Ticket:CM-16057 Reviewed By:CCR-6198 Testing Done: Rerun test08 multiple times and observed passing it. Pim-smoke with hardnode Ran 95 tests in 11219.420s FAILED (SKIP=10, failures=4) Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
* pimd: fix channel_oil and upstream RPF in syncChirag Shah2017-05-071-133/+162
| | | | | | | | | | | | | | | | | | | | | | During PIM Neighbor change/UP event, pim_scan_oil api scans all channel oil to see any rpf impacted. Instead of passing current upstream's RPF it passes current RPF as 0 and does query to rib for nexhtop (without ECMP/Rebalance). This creates inconsist RPF between Upstream and Channel oil. In Channel Oil keep backward pointer to upstream DB and fetch up's RPF and passed to channel_oil scan. Decrement channel_oil ref_count in upstream_del when decrementing up ref_count and it is not the last. Created ECMP based FIB lookup API. Testing Done: Performed following testing on tester setup: 5 x LHR, 4 x MSDP Spines, 6 Sources each sending to 1023 groups from one of the spines. Total send rate 8Mpps. Test that caused problems was to reboot every device at the same time. After fix performed 5 iterations of reboot devices and show no sign of the problem. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
* pimd: fix pimd crashes around pim rpfChirag Shah2017-04-251-1/+4
| | | | | | | | During neighbor down event, all upstream entries rpf lookup may result into nhop address with 0.0.0.0 and rpf interface info being NULL. Put preventin check where rpf interface info is accessed. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
* pimd: Enable igmp on igmp version change cliChirag Shah2017-04-251-6/+1
| | | | | | | | | | | Execute ip igmp version 3 under swp interface, verified show running displayed 'ip igmp' configuration. Continuous sending group membership, performed 'no ip igmp' and verified, group membership flushed. Performed 'ip igmp version 3', verified 'show ip igmp groups' displaying igmp membership re-populated. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
* pimd: Pim Nexthop Tracking support with ECMPChirag Shah2017-04-251-69/+492
| | | | | | | | | | | | | | | | | | | | | | | In this patch, PIM nexthop tracking uses locally populated nexthop cached list to determine ECMP based nexthop (w/ ECMP knob enabled), otherwise picks the first nexthop as RPF. Introduced '[no] ip pim ecmp' command to enable/disable PIM ECMP knob. By default, PIM ECMP is disabled. Intorudced '[no] ip pim ecmp rebalance' command to provide existing mcache entry to switch new path based on hash chosen path. Introduced, show command to display pim registered addresses and respective nexthops. Introuduce, show command to find nexthop and out interface for (S,G) or (RP,G). Re-Register an address with nexthop when Interface UP event received, to ensure the PIM nexthop cache is updated (being PIM enabled). During PIM neighbor UP, traverse all RPs and Upstreams nexthop and determine, if any of nexthop's IPv4 address changes/resolves due to neigbor UP event. Testing Done: Run various LHR, RP and FHR related cases to resolve RPF using nexthop cache with ECMP knob disabled, performed interface/PIM neighbor flap events. Executed pim-smoke with knob disabled. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com> (cherry picked from commit cba444817883b8b3b22a7ed9958dc9ed77f76230)
* pimd: Remove impossible conditions from testDonald Sharp2017-03-311-36/+0
| | | | | | | | | | | | It is impossible for the list->cmp function to ever be handed NULL values as the arguments. Clean up this in the code. Additionally consolidate the exact same two functions into 1 function. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Cleanup api and stop crashDonald Sharp2017-03-311-5/+16
| | | | | | | | | | | | | There is no need for a function that calls another function. Additionally, nexthop_updates from zebra can be either ZEBRA_NEXTHOP_UPDATE -or- ZEBRA_IMPORT_CHECK_UPDATE If we were to receive a IMPORT_CHECK_UPDATE the code would cause a immediate crash. Fix this Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Fix interface apiDonald Sharp2017-03-211-2/+2
| | | | | | | The interface api has change and the pim changes used the old api. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Remove dead codeDonald Sharp2017-03-171-6/+0
| | | | | | This code is impossible to reach. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: When the RPF is changed remove the groupDonald Sharp2017-03-161-0/+6
| | | | | | | When changing the RPF cleanup the old entry in the J/P Agg neighbor list. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Nexthop tracking supportChirag Shah2017-03-161-0/+647
Add pim Nexthop tracking feature 1st part where, specific RP or Source address (unicast address) register with Zebra. Once nexthop update received from Zebra for a given address, scan RP or upstream entries impacted by the change in nexthop. Reviewed By: CCR-5761, Donald Sharp <sharpd@cumulusnetworks.com> Testing Done: Tested with multiple RPs and multiple *,G entries at LHR. Add new Nexthop or remove one of the link towards RP and verify RP and upstream nexthop update. similar test done at RP with multiple S,G entries to reach source. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>