summaryrefslogtreecommitdiffstats
path: root/pimd/pim_ifchannel.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* pimd: Cleanup ifchannel deletionDonald Sharp2018-05-121-1/+0
| | | | | | | When we are being told to go away, cleanup ifchannel deletion a bit better. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* *: conform with COMMUNITY.md formatting rules, via 'make indent'Lou Berger2018-03-061-2/+2
| | | | Signed-off-by: Lou Berger <lberger@labn.net>
* pimd: Cleanup S,GRPt prune handling on Mroute LossDonald Sharp2017-08-241-2/+1
| | | | | | | | | | | | | 1) Clean up display of S,GRPt prune state to be more meaningful 2) Upon receipt of a S,GRPt prune make sure we transition to the correct state 3) Upon loss of a S,GRPt prune make sure we transition to the correct state as well as immediately send a *,G join upstream to propagate the loss of the prune. 4) Removal of a weird S,G state being installed upon loss of a S,G RPt prune. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Convert to using a RB tree for the pim_ifp ifchannel_listDonald Sharp2017-08-021-2/+8
| | | | | | | | This patch does two things: 1) Converts the pim_ifp->ifchannel_list to a pim_ifp->ifchannel_rb 2) Removes the hashing to use the RB RB_FIND instead. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Fix code to not send joins when SGRPT Prune is receivedDonald Sharp2017-07-241-1/+2
| | | | | | | | | | | | | | | When we receive a SGRPT Prune we were switching the upstream to JOINED and immediately sending a join. This was not the right thing to do. This was happening because we were making decisions about the new ifchannel before it was fully formed. Rework ifchannel startup to provide enough information to the pim upstream data structure to make the right decisions Ticket: CM-16425 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* *: reindentreindent-master-afterwhitespace / reindent2017-07-171-62/+57
| | | | | | indent.py `git ls-files | pcregrep '\.[ch]$' | pcregrep -v '^(ldpd|babeld|nhrpd)/'` Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* Merge branch 'stable/3.0'David Lamparter2017-06-061-1/+1
|\ | | | | | | Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
| * pimd: Fix to Tx S,G Join when SGRpt->Join stateChirag Shah2017-05-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -Upon Rx (*,G) Join w/o SGRpt at RP, trigger (S,G) Join towards FHR, unset SGRpt flag from channel, add (*,G) oif to (S,G) entry. -Add I am not RP check to triger SGRpt on *,G path otherwise, send S,G Prune on SPT path from RP to FHR upon receving *,G Prune. -Upon Rx SGRpt receive, remove OIF(downstream where Prune received) from specific S,G. Testing Done: pim-smoke Ran 95 tests in 11790.552s FAILED (SKIP=10, failures=4) Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
* | *: make consistent & update GPLv2 file headersDavid Lamparter2017-05-151-18/+17
|/ | | | | | | | | | | The FSF's address changed, and we had a mixture of comment styles for the GPL file header. (The style with * at the beginning won out with 580 to 141 in existing files.) Note: I've intentionally left intact other "variations" of the copyright header, e.g. whether it says "Zebra", "Quagga", "FRR", or nothing. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* pimd: Fix WG/SGRpt & WG J/P processingChirag Shah2017-04-251-1/+1
| | | | | | | | | | | | | | | | During processing of Join/Prune, for a S,G entry, current state is SGRpt, when only *,G is received, need to clear SGRpt and add/inherit the *,G OIF to S,G so it can forward traffic to downstream where *,G is received. Upon receiving SGRpt prune remove the inherited *,G OIF. Testing Done: Trigger SPT switchover, *,G path received SGRpt later data traffic stopped S,G ages out from LHR, sends only *,G join to upstream, verified S,G entry inherit the OIF. Upon receiving SGRpt deletes inherited oif and retains in SGRpt state. Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
* pimd: Add display of SGRpt state for ifchannelDonald Sharp2017-03-171-1/+1
| | | | | | | When we get a SGrpt Prune embedded in the *,G Join, Display the created ifchannel as being SGRpt state. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Make ifchannel lookup a hash lookupDonald Sharp2017-02-241-0/+3
| | | | | | | | | When we are at scale, it is possible that we have a very large number of ifchannels per interface. So make lookup for that situation to be a hash lookup. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Narrow inheritance search down to interface we are interested in.Donald Sharp2017-02-241-0/+1
| | | | | | | When we are only looking at one ifchannel, for inheritance, narrow the search down to only the interface/ifchannel we are interested in Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Use correct flag to add an oifDonald Sharp2017-01-301-2/+2
| | | | | | | | | | | | When we are creating the igmp ifchannel we were creating it with both a P and a I flag. This was causing it to not be cleaned up properly when the interface was shut down. Subsuquently when the interface came back up we would attempt to add it back in but it would fail. Ticket: CM-14586 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: Cleanup the headers.Donald Sharp2017-01-191-4/+0
| | | | Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* Merge remote-tracking branch 'origin/master' into pim_lib_work2Donald Sharp2017-01-181-0/+3
|\
| * build: remove $Format tagsDavid Lamparter2016-12-201-2/+0
| | | | | | | | Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
* | pimd: Allow storing of sg in string formatDonald Sharp2016-12-221-0/+1
| | | | | | | | | | | | | | | | Debugs are extremely expensive currently. Let's store 'struct prefix_sg sg' string format in the ifchannel, upstream and msdp_sa structures. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Add Handler for Receive (*,G) join for (S,G,rpt)Donald Sharp2016-12-221-0/+1
| | | | | | | | | | | | | | | | | | According to Figure 5( Downstream per-interface (S,G,rpt) state when we receive a (*,G) we need to move (S,G,rpt) children of the (*,G) into different states. This implements that. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Add ability to know if ifchannel is (S,G,rpt)Donald Sharp2016-12-221-0/+8
| | | | | | | | | | | | | | Add ability to track (S,G,rpt) ifchannel prunes. Add ability to display this data in json. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Add ability for ifchannel *,G to know their S,G'sDonald Sharp2016-12-221-0/+3
| | | | | | | | | | | | | | | | Add the ability for pim ifchannels *,G's to know their corresponding S,G's. This will facilitate handling S,G,rpt state information better. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Start (S,G,rpt) codingDonald Sharp2016-12-221-0/+3
| | | | | | | | | | | | Start putting some infrastructure for (S,G,rpt) handling Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Clean up the interface deletionDonald Sharp2016-12-221-0/+1
| | | | | | | | | | | | | | When cleaning up the interface, actually clean up data associated with that interface. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Further work to fix rpf lookups and nbrsDonald Sharp2016-12-221-1/+1
| | | | | | | | | | | | | | | | | | When we do a RPF lookup return a path that we have neighbors for in those cases where we need to have a neighbor to pass along the SG state via a pim join/prune message. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Turn on forwarding for a late added interface.Donald Sharp2016-12-221-0/+1
| | | | | | | | | | | | | | | | | | | | If we receive a join for a upstream interface that hasn't yet been added to pim for working under it, we never go back and add the forwarding on when we get the interface added to pim. Ticket: CM-11800 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | lib, pimd: Fix borked up prefix codeDonald Sharp2016-12-221-7/+7
| | | | | | | | | | | | | | Fix the struct prefix to be an actual struct prefix_sg. This cleans up a bunch of code to make it look nicer. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Remove Wrong PIMREG ifchannel stateDonald Sharp2016-12-221-1/+0
| | | | | | | | | | | | | | The PIMREG ifchannel state is an evolutionary dead-end. I should not have introduced this code. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Allow ifchannel S,G's to know their *,G parentDonald Sharp2016-12-221-0/+1
| | | | | | | | | | | | | | | | | | | | | | Given a S,G ifchannel, create a parent pointer for any *,G state for that interface. When removing a *,G remove S,G pointers. We need to think about the case where their is a *,G but no S,G for a interface when we are determing. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Remove unnecessary QuaggaIdDonald Sharp2016-12-221-1/+0
| | | | | | | | Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Convert pim_ifchannel_local_membership_del to struct prefix *sgDonald Sharp2016-12-221-2/+1
| | | | | | | | Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: convert pim_ifchannel_local_membership_add to use struct prefix sgDonald Sharp2016-12-221-2/+1
| | | | | | | | Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Convert pim_ifchannel_prune to use struct prefix *sgDonald Sharp2016-12-221-2/+1
| | | | | | | | | | | | | | Convert the pim_ifchannel_prune function to use a struct prefix *sg for the source group. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Convert pim_ifchannel_join_add to struct prefix *sgDonald Sharp2016-12-221-2/+1
| | | | | | | | | | | | | | Convert the pim_ifchannel_join_add to use a struct prefix *sg instead of struct in_addr's. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: more source,group conversion to prefix sgDonald Sharp2016-12-221-4/+2
| | | | | | | | | | | | | | Convert more of the code to pass around a 'struct prefix sg' instead of individual struct addr's. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: Convert ifchannel to using a prefix to store (s,g)Donald Sharp2016-12-221-2/+2
| | | | | | | | | | | | | | | | Convert ifchannel to use a prefix to store (s,g) information. Additionally create pim_str_sg_dump function to output data when using debugs. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* | pimd: First Schwag at pim_register_stopDonald Sharp2016-12-221-1/+2
|/ | | | | | | Implement the pim_register_stop state machine. There are still a few bugs still but this is enough to get us rolling a bit more. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
* pimd: merge pimd as of 2015-01-19David Lamparter2016-05-261-0/+145
Welcome pimd to the Quagga daemon zoo! This is a merge of commit 77ae369 ("pimd: Log ifindex found for an interface when zebra lib reports a new connected address."), with the intermediate "reconnect" changes removed (c9adf00...d274381). d274381 is replaced with b162ab7, which includes some changes. In addition, 4 reconnect-related changes and 1 cosmetic one have been bumped out. The rebase command used to produce the branch that is merged here is: git rebase --onto b162ab7 c9adf00 77ae369 Note that 3 patches had their author rewritten from "Anonymous SR#108542 <>" (which is not a valid git author ID) to: "Savannah SR#108542 <nbahr@atcorp.com>" (which is the e-mail address listed in the associated Savannah ticket) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>