summaryrefslogtreecommitdiff
path: root/pimd/pimd.h
AgeCommit message (Collapse)Author
2023-02-09*: auto-convert to SPDX License IDsDavid Lamparter
Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-09-28pimd: Remove some unused defines in pimd.hDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-09-28pimd: Assign a vty port value for v6Donald Sharp
Let's use 2620 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-09-18pimd, pim6d: Changing IGMP to GM in few macro's.Abhishek N R
Changing IGMP_DEFAULT_ROBUSTNESS_VARIABLE to GM_DEFAULT_ROBUSTNESS_VARIABLE, IGMP_GENERAL_QUERY_INTERVAL to GM_GENERAL_QUERY_INTERVAL, IGMP_QUERY_MAX_RESPONSE_TIME_DSEC to GM_QUERY_MAX_RESPONSE_TIME_DSEC and IGMP_SPECIFIC_QUERY_MAX_RESPONSE_TIME_DSEC to GM_SPECIFIC_QUERY_MAX_RESPONSE_TIME_DSEC to accomodate both igmp and mld. And moved it to common file. Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-09-13pimd, pim6d: Changing IGMP to GM in debug macros.Abhishek N R
Changed PIM_DEBUG_IGMP_TRACE to PIM_DEBUG_GM_TRACE and PIM_DEBUG_IGMP_TRACE_DETAIL to PIM_DEBUG_GM_TRACE_DETAIL. Hence, these macros can be used for both v6 and v4. Issue: #11895 Co-authored-by: Sai Gomathi N <nsaigomathi@vmware.com> Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-09-06pimd: Fixing alignmentSai Gomathi N
Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2022-09-06pimd, pim6d: Changing IGMP to GM in debug macrosSai Gomathi N
Changing PIM_DO_DEBUG_IGMP_EVENTS to PIM_DO_DEBUG_GM_EVENTS PIM_DO_DEBUG_IGMP_PACKETS to PIM_DO_DEBUG_GM_PACKETS PIM_DO_DEBUG_IGMP_TRACE to PIM_DO_DEBUG_GM_TRACE PIM_DO_DEBUG_IGMP_TRACE_DETAIL to PIM_DO_DEBUG_GM_TRACE_DETAIL PIM_DONT_DEBUG_IGMP_EVENTS to PIM_DONT_DEBUG_GM_EVENTS PIM_DONT_DEBUG_IGMP_PACKETS to PIM_DONT_DEBUG_GM_PACKETS PIM_DONT_DEBUG_IGMP_TRACE to PIM_DONT_DEBUG_GM_TRACE PIM_DONT_DEBUG_IGMP_TRACE_DETAIL to PIM_DONT_DEBUG_GM_TRACE_DETAIL PIM_MASK_IGMP_EVENTS to PIM_MASK_GM_EVENTS PIM_MASK_IGMP_PACKETS to PIM_MASK_GM_PACKETS PIM_MASK_IGMP_TRACE to PIM_MASK_GM_TRACE PIM_MASK_IGMP_TRACE_DETAIL to PIM_MASK_GM_TRACE_DETAIL to be used for both IGMP and MLD debugs. Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2022-09-04pimd,pim6d: Modifying IGMP to GM in PIM_DEBUG_IGMP_PACKETS to ↵Sai Gomathi N
PIM_DEBUG_GM_PACKETS Changing the macros to common so that it can be used for pimv6 debugs as well to be used for both IGMP and MLD debugs. Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2022-09-04pimd,pim6d: Modifying IGMP to GM in PIM_DEBUG_IGMP_EVENTS to PIM_DEBUG_GM_EVENTSSai Gomathi N
Changing the macros to common so that it can be used for pimv6 debugs as well to be used for both IGMP and MLD debugs. Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2022-05-06pimd: un-dependency-hell `pim_instance.h`David Lamparter
This is causing build issues on BSD by including (transitively) `linux/mroute6.h` - try to address by disentangling the headers a bunch. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-04-26pimd: fix reversed logic for "debug ... detail"David Lamparter
The normal flag was enabling detail messages, but what we want is the detail flag enabling normal messages. Remove the _ONLY macro while at it, it's only used for config print & that seems like a place where making the difference explicitly visible is helpful regardless. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-03pimd: Added new option "detail" in the "debug pim nht" CLISai Gomathi
Problem Statement: ================= PIM Logs are coming at interval of 1 minute although pim is not enabled. Root Cause Analysis: ==================== By default, RCPM configures the PIM debugs when router comes up via script. The product cannot disable PIM even though it is not required. Hence moving these logs under a new debug option which will not be enabled by default. Fix: ==== Added a new option "detail" in the cli: debug pim nht detail Co-author: Mobashshera Rasool <mrasool@vmware.com> Signed-off-by: Sai Gomathi <nsaigomathi@vmware.com>
2022-02-14pim6d: IPv6-adjust pim_msg_send() and relatedDavid Lamparter
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-01-17pimd: remove PIM_INADDR_IS[NOT]_ANY macrosDavid Lamparter
These really don't serve much of a purpose, especially with how inconsistently they're used. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-01-12pimd: abstract addresses for IPv4/IPv6 PIMDavid Lamparter
Depending on whether we're compiling pimd or pim6d, these types take on the appropriate AF being used. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-11-11*: use compiler.h MIN/MAX macros instead of everyone having oneDonald Sharp
We had various forms of min/max macros across multiple daemons all of which duplicated what we have in compiler.h. Convert everyone to use the `correct` ones Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-08-27pimd: de-circularize includesDavid Lamparter
pimd's include files are very interdependent. Let's chop that down a bit to gain some flexibility. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-02-20pimd: Make frr able to be built by gcc 10Tomas Korbar
- Add extern modifier to some declarations in header file and move qpim_all_pim_routers_addr definition to pimd/pimd.c `GCC now defaults to -fno-common. As a result, global variable accesses are more efficient on various targets. In C, global variables with multiple tentative definitions now result in linker errors.` Taken from https://gcc.gnu.org/gcc-10/changes.html Signed-off-by: Tomas Korbar <tkorbar@redhat.com>
2019-11-13pimd : Add support for MLAG Register & Un-registerSatheesh Kumar K
when ever a FRR Client wants to send any data to another node using MLAG Channel, uses below mechanisam. 1. sends a MLAG Registration to zebra with interested messages that it is intended to receive from peer. 2. In response to this request, Zebra opens communication channel with MLAG. and also in Rx. diretion zebra forwards only those messages which client shown interest during registration 3. when client is no-longer interested in communicating with MLAG, client posts De-register to Zebra 4. if this is the last client which is interested for MLAG Communication, zebra closes the channel. why PIM Needs MLAG Communication ================================ 1. In general on LAN Networks elecetd DR will send the Join towards Multicast RP in case of a LHR and Register in case of FHR. 2. But in case DR Goes down, traffic will be re-converged only after the New DR is elected, but this can take time based on Hold Timer to detect the DR down. 3. this can be optimised by using MLAG Mecganisam. 4. and also Traffic can be forwarded more efficiently by knowing the cost towards RP using MLAG Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-10-14Revert "Merge pull request #4885 from satheeshkarra/pim_mlag"Quentin Young
This reverts commit d563896dada99f3474d428f928786cbfde936fee, reversing changes made to 09ea1a40386f02a13cdb0462cc55af0d03f0c277.
2019-09-16pimd : Add support for MLAG Register & Un-registerSatheesh Kumar K
when ever a FRR Client wants to send any data to another node using MLAG Channel, uses below mechanisam. 1. sends a MLAG Registration to zebra with interested messages that it is intended to receive from peer. 2. In response to this request, Zebra opens communication channel with MLAG. and also in Rx. diretion zebra forwards only those messages which client shown interest during registration 3. when client is no-longer interested in communicating with MLAG, client posts De-register to Zebra 4. if this is the last client which is interested for MLAG Communication, zebra closes the channel. why PIM Needs MLAG Communication ================================ 1. In general on LAN Networks elecetd DR will send the Join towards Multicast RP in case of a LHR and Register in case of FHR. 2. But in case DR Goes down, traffic will be re-converged only after the New DR is elected, but this can take time based on Hold Timer to detect the DR down. 3. this can be optimised by using MLAG Mecganisam. 4. and also Traffic can be forwarded more efficiently by knowing the cost towards RP using MLAG Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-08-26pimd: sh config is showing detail debug, though not configuredSatheesh Kumar K
Original Idea is to display normal & detailed debugs when detailed debug alone is configured. because of this "sh debugs" are showing wrong Information, because same macro is used to disply the configured debugs. that means even if Normal debug is configured, detailed macro returns TRUE. To avoid this ambiguity check whetehr detailed debug is configured or not during dumping configured debugs. In all other places using old macro. Signed-off-by: Satheesh Kumar K <sathk@cumulusnetworks.com>
2019-06-06pimd: debug pim XXX detail now include the non detail data as wellDonald Sharp
If you have turned on a pim debug XXX detail, also include the base form as well. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-05-14pimd: PIM BSM Processing datastructure definition/initialization/deinitsaravanank
Apart from datastructure, bsm scope initialization and deinitialiation routines called during pim instance init and deinit. Also makefile changes. Signed-off-by: Saravanan K <saravanank@vmware.com>
2019-04-20pimd: initial infrastructure to maintain VxLAN SG databaseAnuradha Karuppiah
These entries will be used over the subsequent commits for 1. vxlan-tunnel-termination handling - setup MDT to rx VxLAN encapsulated BUM traffic. 2. vxlan-tunnel-origination handling - register local-vtep-ip as a multicast source. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2019-02-08pimd: reject inconsistent address/mask "ip pim rp command"Sarita Patra
Issue: Configure "ip pim rp x.x.x.x 225.0.0.0/4". Show running config shows "ip pim rp x.x.x.x 224.0.0.0/4" This is mis-leading. Root-cause: Internally 225.0.0.0/4 is getting converted to 224.0.0.0/4 group mask, since the prefix length is 4. Fix: Restrict the user to configure inconsistent group address mask by throughing a cli error "Inconsistent address and mask". Signed-off-by: Sarita Patra <saritap@vmware.com>
2019-01-04pimd: Move register_probe_time to pim_routerDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Move packet_process variable to pim_routerDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Move register_suppress_time into struct pim routerDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Convert rpf_cache_refresh_delay_msec into pim_router structDonald Sharp
Move the rpf_cache_refresh_delay_msec into the pim_router since it should own the data. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Move the infinite_assert_metric global to pim_routerDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Convert qpim_t_periodic into the `struct pim_router` structureDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Move debugs into pim_router structureDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-01-04pimd: Create a `struct pim_router` and move thread master into itDonald Sharp
Create a `struct pim_router` and move the thread master into it. Future commits will further move global varaibles into the pim_router structure. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-08-11*: ALLOC calls cannot failDonald Sharp
There is no need to check for failure of a ALLOC call as that any failure to do so will result in a assert happening. So we can safely remove all of this code. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-17pimd: Move some data tracking variables per VRFDonald Sharp
There were a few more global variables that needed to be per vrf. So move them over. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-03-17pimd: Make the rpf scan per vrf.Donald Sharp
We know the vrf that we are in when we need to initiate a rescan of the rpf cache. So pass it in and use that information. This should help the rescan at scale with several vrf's cutting out a lot of unnecessary work. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-02-19pimd: Multicast traceroute client and routerMladen Sablic
This commit is the implementation of weak multicast traceroute. It consists of IGMP module dealing with mtrace type IGMP messages and client program mtrace/mtracebis for initiating mtrace queries. Signed-off-by: Mladen Sablic <mladen.sablic@gmail.com>
2017-09-14pimd: Add new 'debug pim nht rp' commandDonald Sharp
All the rp debugs were a mish-mash of TRACE or ZEBRA, but the reality they were all focused on handling NHT issues associated with the RP's. So let's create a new debug 'debug pim nht rp' if you are having issues with RP's. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-09-07build: non-recursive pimdDavid Lamparter
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2017-07-28pimd: Allow the keepalive time to be per vrf.Donald Sharp
Allow the keepalive period to be per vrf. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Add `debug pim nht` commandDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Add 'debug pim trace detail' commandDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Make pim_ssmpingd.c 'struct pim_instance' awareDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Refactore qpim_static_route_list into pim->static_routesDonald Sharp
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Refactor code to be in better spotsDonald Sharp
1) Create pim_instance.[ch] to allow us to handle the instance information there 2) Refactor some pim_rpf_ and some pim_rp commands into appropriate files and appropriate includes. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Create the pimreg per vrfDonald Sharp
2017-07-24pimd: Create pim_get_pim_instanceDonald Sharp
Create function to get the pim instance from the vrf_id Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Move thread read to struct pim_instanceDonald Sharp
When we are handling the thread read/writes for a pim mroute socket, make it so that it can be appropriately handled by the 'struct pim_instance' instead of defaulting to the default VRF's Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2017-07-24pimd: Save pim instance on vrf pointerDonald Sharp
This commit does these things: 1) Saves the pim instance created on the vrf pointer 2) Moves some initialization to the proper spot. 3) Remove vrf_id from 'struct pim_ssm' it is not needed 4) Removes some checks to prevent non-default vrf's from being created. 5) When creating the pim instance, save default vrf in pimg to allow backwards compatibility Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>