Commit Graph

2252 Commits

Author SHA1 Message Date
Donald Sharp
6ec6186af9
Merge pull request #10012 from AbhishekNR/upstream
pimd : Handling of Exclude mode IGMPv3 report messages for SSM aware group.
2022-03-15 07:54:04 -04:00
Abhishek N R
5795b17cc3 pim6d: Adding "ipv6 mld query-interval" CLI
Adding the Interface level config command

ipv6 mld query-interval <1-65535>
This command can be use to tune the timing for the general queries sent by the querier.

Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-03-14 23:11:21 -07:00
Abhishek N R
47d4af36d8 pim6d: Adding "ipv6 mld version" CLI
Adding the Interface level config command

ipv6 mld version <1-2>
This command can be use to configure MLD version on the interface.

Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-03-14 23:11:14 -07:00
Abhishek N R
eaa7d656bb pim6d: Adding "ipv6 mld" CLI
Adding the Interface level config command

ipv6 mld
To enable MLD on the interface.

Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-03-14 23:10:41 -07:00
Abhishek N R
fe2df4f7ba pim6d: Adding "ipv6 mld join" CLI
Adding the Interface level config command

ipv6 mld join
This command can be used to configure the static MLD join
for IPv6 group addresses on the interfaces.

Signed-off-by: Abhishek N R <abnr@vmware.com>
2022-03-14 23:00:38 -07:00
Donatas Abraitis
ca3e7807f6 pimd: Show total received messages IGMP stats
```
exit1-debian-11# do sh ip igmp statistics
IGMP statistics
Interface               : global
V1 query                : 0
V2 query                : 0
V3 query                : 3
V2 leave                : 0
V1 report               : 0
V2 report               : 0
V3 report               : 18
mtrace response         : 0
mtrace request          : 0
unsupported             : 0
total received messages : 21
joins failed            : 0
joins sent              : 16
general queries sent    : 6
group queries sent      : 3
total groups            : 4
total source groups     : 1
exit1-debian-11# do sh ip igmp statistics json
{
  "global":{
    "name":"global",
    "queryV1":0,
    "queryV2":0,
    "queryV3":4,
    "leaveV2":0,
    "reportV1":0,
    "reportV2":0,
    "reportV3":18,
    "mtraceResponse":0,
    "mtraceRequest":0,
    "unsupported":0,
    "totalReceivedMessage":22,
    "totalGroups":3,
    "totalSourceGroups":1,
    "joinsFailed":0,
    "joinsSent":16,
    "generalQueriesSent":6,
    "groupQueriesSent":4
  }
}
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-03-14 22:49:23 +02:00
Donald Sharp
1aa3f6b199 pimd: A wrong address family means the register-stop receive fails
The current code in pim_register_stop_recv would never fail as
that the code was always returning 0 in all cases, but
if the code parses an incorrect afi then it has failed and
should return as much

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-03-14 15:52:37 -04:00
saravanank
03f9d812f9 pimd: FRR-PIM sending register packet even after receiving (*,G) register stop
RCA: (*,G) register stop was not handled

Fix: Loop through all (S,G) under the (*,G) and apply reg stop

Authored-by- Saravanan K <saravanank@vmware.com>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-14 15:48:07 -04:00
Donald Sharp
7a382e16e6
Merge pull request #10786 from opensourcerouting/pim6-pim-prep
pim6d: prepare for sending & receiving actual PIM packets
2022-03-14 09:35:37 -04:00
Donatas Abraitis
278912eabf pimd: Add additional IGMP stats (generic/group specific queries sent)
```
exit1-debian-11# sh ip igmp statistics
IGMP statistics
Interface            : global
V1 query             : 0
V2 query             : 0
V3 query             : 6
V2 leave             : 0
V1 report            : 0
V2 report            : 0
V3 report            : 14
mtrace response      : 0
mtrace request       : 0
unsupported          : 0
joins failed         : 0
joins sent           : 16
general queries sent : 6
group queries sent   : 4
total groups         : 5
total source groups  : 1
exit1-debian-11# sh ip igmp statistics json
{
  "global":{
    "name":"global",
    "queryV1":0,
    "queryV2":0,
    "queryV3":6,
    "leaveV2":0,
    "reportV1":0,
    "reportV2":0,
    "reportV3":18,
    "mtraceResponse":0,
    "mtraceRequest":0,
    "unsupported":0,
    "totalGroups":5,
    "totalSourceGroups":1,
    "joinsFailed":0,
    "joinsSent":16,
    "generalQueriesSent":6,
    "groupQueriesSent":4
  }
}
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-03-14 10:50:28 +02:00
Donatas Abraitis
7665a2e1cd pimd: Fix indentation for struct igmp_stats
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-03-14 09:24:49 +02:00
Donald Sharp
7baebfb715
Merge pull request #10447 from ton31337/fix/json_with_whitespaces
*: Fix JSON keys with whitespaces and PascalCase
2022-03-13 18:19:33 -04:00
Donatas Abraitis
f2058cb425 pimd: Add IGMP join sent/failed statistics
```
exit1-debian-11# sh ip igmp statistics
IGMP statistics
Interface           : global
V1 query            : 0
V2 query            : 0
V3 query            : 0
V2 leave            : 0
V1 report           : 0
V2 report           : 0
V3 report           : 16
mtrace response     : 0
mtrace request      : 0
unsupported         : 0
joins failed        : 0
joins sent          : 11
total groups        : 4
total source groups : 0
exit1-debian-11# sh ip igmp statistics json
{
  "global":{
    "name":"global",
    "queryV1":0,
    "queryV2":0,
    "queryV3":0,
    "leaveV3":0,
    "reportV1":0,
    "reportV2":0,
    "reportV3":16,
    "mtraceResponse":0,
    "mtraceRequest":0,
    "unsupported":0,
    "totalGroups":4,
    "totalSourceGroups":0,
    "joinsFailed":0,
    "joinsSent":11
  }
}
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-03-13 19:31:34 +02:00
Donald Sharp
6ea4244514
Merge pull request #10399 from g-balaji1/pimv6-sock
pim6d: PIMv6 socket related changes
2022-03-13 10:03:45 -04:00
David Lamparter
ccc3ccd38c pim6d: decode IPv6 source addresses
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:57:34 +01:00
David Lamparter
042a754146 pim6d: encode PIM joins correctly
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:57:34 +01:00
David Lamparter
334326ed39 pim6d: reenable pim_init()
... so we have `qpim_all_pim_routers_addr` initialized.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:57:34 +01:00
David Lamparter
185754fe7c pimd: be more informative about missing neighbors
Much more useful to know what we were trying to find a neighbor for.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:57:28 +01:00
David Lamparter
516b97fe4d pimd: log interface name for send errors
Not very helpful to be told only the fd number.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:57:17 +01:00
David Lamparter
97feb13f0f pim6d: reenable address management code
A few more pieces that should now work reasonably well for IPv6.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:47:13 +01:00
David Lamparter
cfef61553f pim6d: rework interface address tracking/selection
We only care about link-local addresses for IPv6 operation.  Also, MLD
needs the lowest while PIM needs the highest...

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:47:13 +01:00
David Lamparter
cd6d285855 pimd: refactor/split IGMP integration
Try to untangle some spaghetti...

This is an 1:1 change that should not result in any functional
difference.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:47:08 +01:00
David Lamparter
d6890c49b2 pimd: add safety check to OIL add/del
These will corrupt memory if mroute_vif_index is -1 (e.g. interface not
operating.)  That shouldn't happen, but it does while doing development
work, so trip an assert rather than corrupting memory.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 22:47:08 +01:00
Donald Sharp
e576475723
Merge pull request #10744 from opensourcerouting/igmp-json-leave-typo
pimd: fix typo in IGMP interface statistics JSON output.
2022-03-12 16:09:58 -05:00
Donald Sharp
d7ffe67b0c
Merge pull request #10746 from ton31337/feature/show_group_type_under_rp_info_cli
pimd: Show group-type under `show ip pim rp-info`
2022-03-12 15:28:28 -05:00
Donatas Abraitis
3b3b5ab350
Merge pull request #10783 from donaldsharp/bgp_zebra_nht
Bgp zebra nht
2022-03-12 21:46:13 +02:00
Donald Sharp
06e4e90132 *: When matching against a nexthop send and process what it matched against
Currently the nexthop tracking code is only sending to the requestor
what it was requested to match against.  When the nexthop tracking
code was simplified to not need an import check and a nexthop check
in b8210849b8 for bgpd.  It was not
noticed that a longer prefix could match but it would be seen
as a match because FRR was not sending up both the resolved
route prefix and the route FRR was asked to match against.

This code change causes the nexthop tracking code to pass
back up the matched requested route (so that the calling
protocol can figure out which one it is being told about )
as well as the actual prefix that was matched to.

Fixes: #10766
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-03-12 11:18:45 -05:00
David Lamparter
30d408e6c7
Merge pull request #10781 from donaldsharp/remove_unused_function 2022-03-12 16:40:48 +01:00
Balaji Gurudoss
023d3e4af8 pim6d: pim6d socket changes
socket changes to support IPv6 PIM

Signed-off-by: Balaji Gurudoss <G_Balaji1@dell.com>
[DL: cleaned up & refactored a whole bunch more.]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 15:59:01 +01:00
Donald Sharp
58c05959d5 bgpd, lib, pimd: Remove sockopt_cork
sockopt_cork is a no-op function that was cleaned up
in 2017.  Since then it's still not being used.  At
this point in time there is little point in keeping a
dead function that will not be used because of vagaries
between platforms

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-03-12 08:21:16 -05:00
Donald Sharp
6aa54b144a
Merge pull request #10780 from mobash-rasool/fixes
pimd: Fix Null pointer dereference
2022-03-12 08:07:50 -05:00
David Lamparter
c532e50351 pimd: drop printing IP_MULTICAST_LOOP sockopt
This isn't a system or interface setting, it's a socket behavior.  It is
both irrelevant and confusing to the user since it doesn't affect any
system behavior (but it sounds like it does).  Whether it is enabled or
not is solely relevant to how the code is designed to work.

So, remove it from output.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-12 12:55:12 +01:00
Donatas Abraitis
8c0a76808a pimd: Show group-type under show ip pim rp-info
And filter by group for PIM.

```
exit1-debian-11# show ip pim rp-info
RP address       group/prefix-list   OIF               I am RP    Source   Group-Type
192.168.10.17    238.0.0.0/24        eth2              no         Static   ASM
192.168.10.110   232.0.0.0/24        eth2              no         Static   SSM
exit1-debian-11# show ip pim rp-info 238.0.0.0/24
RP address       group/prefix-list   OIF               I am RP    Source   Group-Type
192.168.10.17    238.0.0.0/24        eth2              no         Static   ASM
exit1-debian-11# show ip pim rp-info 238.0.0.0/24 json
{
  "192.168.10.17":[
    {
      "rpAddress":"192.168.10.17",
      "outboundInterface":"eth2",
      "iAmRP":false,
      "group":"238.0.0.0/24",
      "source":"Static",
      "groupType":"ASM"
    }
  ]
}
exit1-debian-11#
```

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-03-12 10:41:07 +02:00
Donald Sharp
44f1c44c2d
Merge pull request #10759 from opensourcerouting/feature/add_more_stats_for_igmp
pimd: Add IGMP total groups and total source groups to statistics
2022-03-11 14:32:05 -05:00
Mobashshera Rasool
ea5f4c4c57 pimd: Fix Null pointer dereferences
Fixing the below problem:
Dereferencing a pointer that might be "NULL" "group_dnode"
when calling "yang_is_last_list_dnode" in api pim_process_no_rp_cmd

Although there is no NULL pointer dereference since
yang_dnode_exists is called before using the dnode.
So removing the unnecessary yang_dnode_exists api call
and directly get the node and if node does not exists,
return.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-11 10:07:01 -08:00
David Lamparter
41490e0ede pim6d: fix some format strings for IPv6
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-11 13:43:19 +01:00
David Lamparter
5d1d18a10e pim6d: fix some IPv6 confusion in RP code
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-11 13:43:19 +01:00
David Lamparter
243e02abae pimd: RP code indentation adjustment
Need to fix some bits here and running into the "80-ch wall".

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-11 13:43:19 +01:00
David Lamparter
f1bfeadcc1
Merge pull request #10707 from mobash-rasool/pimv6-register-recv 2022-03-10 19:00:45 +01:00
Mobashshera Rasool
e782863dfc pim6d: Replace pim_br_unknown with PIMADDR_ANY
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-10 03:24:52 -08:00
Mobashshera Rasool
a141ea61e7 pim6d: Handle B bit changes for IPv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-10 03:24:52 -08:00
Mobashshera Rasool
c7842d245e pim6d: Parsing pimv6 register msg
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-10 03:24:46 -08:00
Mobashshera Rasool
d1fd950aa0 pim6d: Abstract api to get src and dst from ip hdr
IPv4 uses "struct ip" and IPv6 uses "struct ip6_hdr" as
headers. Get the src and dst in pim_sgaddr.
Added api pim_sgaddr_from_iphdr to do so.

Signed-off-by: Mobashshera Rasool <mrasool@vmwaer.com>
2022-03-10 03:01:47 -08:00
Donald Sharp
4f138d5d8a
Merge pull request #10694 from opensourcerouting/pim6-nht-reenable
pim6d: reenable NHT code
2022-03-09 11:51:18 -05:00
Donatas Abraitis
1e02f2f9ab pimd: Add IGMP total groups and total source groups to statistics
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-03-08 19:07:57 +02:00
Mobashshera Rasool
ded5024af4 pim6d: Modify apis in pim_rpf.c for PIMv4/PIMv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
fd5540ead6 pim6d: Modify pim_rp_find_exact and pim_rp_find_match_group
Modify the apis to accomodate IPv4 and IPv6 addreses for RP.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
9dca52b924 pim6d: Modify pim_rp_del for PIMv4/PIMv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
1db07606ff pim6d: Modify pim_rp_find_prefix_list for PIMv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
8eb5ad6c4a pim6d: Modify pim_rp_g for PIMv4/PIMv6
Modify pim_rp_g to support PIMv6.
Remove it from stub.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
131ded0891 pim6d: Modify pim_rp_i_am_rp for PIMv4/PIMv6
Remove pim_rp_i_am_rp from stub for PIMv6.
Modify pim_rp_i_am_rp for both the daemons.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
b1e132ac61 pim6d: Modify pim_rp_set_upstream_addr for PIMv4/PIMv6
Modify pim_rp_set_upstream_addr for supporting PIMv4 and PIMv6.
Removed the stub api for PIMv6.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
c6ced47492 pim6d: Add pim_get_all_mcast_group api
Added this api to fill all multicast group address based on IP version.
For PIMv4 its 224.0.0.0/4, for PIMv6 its FF00::0/8.
Changed the code where its being used currently.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
49b7b2c4a8 pim6d: Modify pim_rp_change api for pimv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
cafbb61955 pim6d: Convert %s to %pPA for RP Addresses
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
119fcc3def pim6d: Modify pim_*_cmd_worker api passing pim_addr parameter
Pass pim_addr as parameter for rp address to accomodate ipv6.
Modifying pim_rp_cmd_worker and pim_no_rp_cmd_worker function
parameters from in_addr to pim_addr.
Changes in the caller functions are done as well to make it work
for IPv6.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
6ed1cea1dc pim6d: Modify pim_rp_new for pimv6
Modify the api pim_rp_new to accomodate pimv6 changes.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
99384c6e4d pim6d: Return type and parameter changes for api pim_rp_del_config
1. Return value of this function pim_rp_del_config is nowhere used.
So made it as a void function.
2. Paramater const char *rp is first converted to string from prefix
in the caller and then back to prefix in this api pim_rp_del_config.
Fixed it by directly passing the address instead of string.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
4fc1f59ea7 pim6d: Stub BSM related APIs for compilation
Have stubbed few of the BSM related APIs to keep
PIMv6 compiling.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
e1a7c58ce2 pim6d: Add northbound changes for static rp
Parsing the inputs for static RP configuration.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
0c3182a08d pim6d: Adding the rp clis to show-running
Modify the pim_rp_config_write api for pimv4/pimv6.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
8663adc490 pim6d: Adding "ipv6 pim rp <> prefix-list <>" cli to pimv6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:51 -08:00
Mobashshera Rasool
34b403cf8b pim6d: Add static RP CLI for PIMv6
Added the CLI to configure static RP configuration.
[no] ipv6 pim rp <rp-addr> [<group-addr/M>]

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:57:49 -08:00
Mobashshera Rasool
f39f349719 pimd: Modify "ip pim rp <> prefix-list <>" command
1. Moving the processing of the above command to an api.
2. Change DEFUN to DEPFY
3. Make the api common for pimv4 and pimv6 processing.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:54:49 -08:00
Mobashshera Rasool
a96942ca3e pim6d: Modify apis pim_process_rp_cmd for common processing
Modify the apis pim_process_rp_cmd and pim_process_no_rp_cmd
to accomodate ipv4 as well as ipv6.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:54:49 -08:00
Mobashshera Rasool
13ddf7cf74 pimd: Moving processing of "ip pim rp <grp>" cmd to a common api
1. Moving the processing of the command to a common api.
2. Changing the DEFUN to DEFPY.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-08 00:54:44 -08:00
David Lamparter
f4d8394b01
Merge pull request #10393 from patrasar/master_pimv6_cli 2022-03-08 09:46:31 +01:00
Mobashshera Rasool
ac529e18d4 pim6d: Initialise VRF related stuffs in Northbound
Not initialising it will lead to crash in nb_running_get_entry_worker.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-07 21:18:53 -08:00
Mobashshera Rasool
19ef44597d pim6d: Remove duplicate if_cmd_init
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-03-07 21:17:20 -08:00
David Schweizer
a533bb8cac
pimd/pim_cmd.c: fix typo in IGMP iface stats JSON
Changes correct typo in JSON output for IGMP interface statistics show
command from "leaveV3" to "leaveV2".

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2022-03-07 14:18:09 +01:00
Sai Gomathi
6d733f0dbc pimd: Added new option "detail" in the "debug pim nht" CLI
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-03-03 22:33:20 -08:00
David Lamparter
0455229c5d pim6d: reenable NHT code
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-02 11:01:47 +01:00
David Lamparter
bc97f40dff pim6d: fixup NHT code for IPv6
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-02 11:01:46 +01:00
David Lamparter
6564f5e5a5 Merge pull request #10657 from patrasar/pim_remove_in_addr_none
[manual merge to edit comment, didn't want to incur another cycle]

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-02 10:42:17 +01:00
David Lamparter
b369d0cc40 pimd: fix stray comment referencing INADDR_NONE
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-02 10:41:22 +01:00
David Lamparter
f2ec36de77
Merge pull request #10684 from mobash-rasool/join-prune 2022-03-02 09:29:02 +01:00
Jafar Al-Gharaibeh
5aad2b6a82
Merge pull request #10652 from mobash-rasool/fixes
pimd: FRR drops IGMP packets for TOS value other than 0XC0
2022-03-01 13:31:49 -06:00
sarita patra
cc144e8b6b pimd: replace inaddr_none with PIMADDR_ANY
We can use PIMADDR_ANY instead of INADDR_NONE to initalize rp->rpf_addr
when there is no rp configured for group_all.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 09:45:56 -08:00
sarita patra
63ee25c0ba pim6d: Adding ipv6 mroute INTERFACE X:X::X:X [X:X::X:X]" cli
This cli is used to add multicast route on interface

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 07:23:45 -08:00
sarita patra
52c52d7806 pim6d: Adding "ipv6 multicast boundary oil WORD" cli
This cli is used to define multicast boundary on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 07:23:45 -08:00
sarita patra
2b16b40fc7 pim6d: Adding "ipv6 pim sm" cli
This cli used to enable PIMV6 on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 07:23:44 -08:00
sarita patra
dab0ac2955 pim6d: Adding "ipv6 pim ssm" cli
This cli used to enable PIMV6 on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 07:23:44 -08:00
sarita patra
7e01b641ae pim6d: Adding "[no] ipv6 pim active-active" cli
This cli used to mark the interface as active-active.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 07:23:42 -08:00
sarita patra
e6aab61395 pim6d: Adding "ipv6 pim hello (1-65535) [(1-65535)]" CLI
This cli used to configure PIMV6 hello and hold timer on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 06:26:13 -08:00
sarita patra
bb387611c6 pim6d: Adding "ipv6 pim dr-priority" CLI
This cli used to configure PIMV6 dr-priority on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 06:24:16 -08:00
sarita patra
a1caf7a88f pim6d: Adding "ipv6 pim" CLI
This cli used to enable PIMV6 on interface.

Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 06:24:14 -08:00
sarita patra
3e394a7729 pim6d: Handling pim_rpf for IPV6
Signed-off-by: sarita patra <saritap@vmware.com>
2022-03-01 06:30:03 -08:00
sarita patra
113f29b90d pim6d: Handling last_lookup in pim_nexthop for IPV6
Signed-off-by: sarita patra <saritap@vmware.com>
2022-02-28 18:03:12 -08:00
sarita patra
d4addb4839 pim6d: moving FRR_PIM_AF_XPATH_VAL into pim_nb.h
Signed-off-by: sarita patra <saritap@vmware.com>
2022-02-28 15:57:47 -08:00
Mobashshera Rasool
17280eee1f pimd: Handle pim join/prune recv flow for ipv6
Making the code changes to handle both ipv4 and ipv6 in the same code

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 10:36:04 -08:00
David Lamparter
ee95029ac4
Merge pull request #10424 from patrasar/master_pimv6_nht 2022-02-28 17:50:42 +01:00
sarita patra
90ab4458a1 pim6d: pim_nht changes for pimv6
Signed-off-by: sarita patra <saritap@vmware.com>
2022-02-28 13:36:02 -08:00
David Lamparter
1917b9e480
Merge pull request #10639 from patrasar/master_pimv6_upstream 2022-02-28 14:10:44 +01:00
sarita patra
fd3af22930 pim6d: Handling IPV6 in pim_upstream
Signed-off-by: sarita patra <saritap@vmware.com>
2022-02-28 11:10:00 -08:00
Mobashshera Rasool
18ca7de516 pim6d: Add ipv6 pim register-suppress-time CLI
Adding below CLI for pim6d
[no] ipv6 pim register-suppress-time (1-65535)

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
2322b99150 pim6d: Adding ipv6 pim rp keep-alive-timer
Adding below CLI for pim6d daemon
[no] ipv6 pim rp keep-alive-timer [(1-65535)]

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
28e32366e3 pim6d: Adding ipv6 pim keep-alive-timer
Adding the below CLI for pim6d daemon:
ipv6 pim keep-alive-timer (1-65535)

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
0da72f1f59 pim6d: Adding ipv6 pim packet CLI
Adding below CLI for pim6d daemon:
[no] ipv6 pim packet (1-255)

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
fb991ce9d4 pim6d: Adding ipv6 pim spt-switchover CLI
Adding the below CLIs for ipv6:
[no] ipv6 pim spt-switchover infinity-and-beyond
[no] ipv6 pim spt-switchover infinity-and-beyond prefix-list WORD

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
c73113ea9a pim6d: Implementing join-prune interval CLI
Adding "ipv6 pim join-prune interval (1-65535)

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
528311b5c8 pim6d: Add FRR_PIM_AF_XPATH_VAL for v4 and v6
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
2328b7ef1e pimd: Moving pim_cli_get_vrf_name function to common file
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
26cd3d6612 pimd: Adding pim_cmd_common.h and .c
This is to keep the cmd changes common to v4 and v6 in this file.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
ae97d5777c pimd: Change the show running commands based on address family
Change the show running commands for pimv4 and pimv6 based on the
address family.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
fb908b01a0 pimd: Removing unnecessary #if
Since pim_cmd.c file is moved to pimv4 make file, therefore
removing #if PIM_IPV !=6.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Sai Gomathi N
d17b6892fc pim6d: Adding show running for ipv6 mld commands
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
078c5867a1 pimd: Moving igmp "show running-config" to a function
Moving the igmp related commands running config to
a new function specific to pimv4.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Mobashshera Rasool
ebde3825c4 pim6d: Adding PIM_AF_NAME "ip" / "ipv6" for "show running-config"
Adding PIM_AF_NAME to use in the show running config for both
pimv4 and pimv6 commands.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Sai Gomathi N
0da95b2fd8 pimd: Moving ipv4 running-configs to a separate function
Co-authored-by: Sai Gomathi <nsaogimathi@vmware.com>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:41 -08:00
Sai Gomathi N
5d613d13b2 pim6d: Adding the base changes
Adding the file pim6_cmd.h and pim6d_cmd.c as the base changes
for implementing the CLI changes

Removed the pim_cmd_init from the stub file.

Co-authored-by: Sarita Patra <saritap@vmware.com>
Co-authored-by: Abhishek N R <abnr@vmware.com>
Co-authored-by: Sai Gomathi N <nsaigomathi@vmware.com>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-28 01:38:24 -08:00
David Lamparter
d7da6520e9
Merge pull request #10376 from patrasar/master_pimv6_vtysh 2022-02-28 10:26:22 +01:00
David Lamparter
8f26d9da67 pimd: fix unused variable
Fix `-Werror` build.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-26 15:32:48 +01:00
Donald Sharp
3bf65aa1ae
Merge pull request #10400 from opensourcerouting/pim6-compilefix
pim6d: get running with ipv6 types throughout
2022-02-26 08:03:06 -05:00
sarita patra
e8515e32a4 pim6d: Adding PIMV6 as VTYSH client
Co-authored-by: Mobashshera Rasool <mrasool@vmware.com>
Signed-off-by: sarita patra <saritap@vmware.com>
2022-02-25 06:08:42 -08:00
Mobashshera Rasool
baee5b57fc pimd: FRR drops IGMP packets for TOS value other than 0XC0
Currently the code is expecting the TOS value for received
packet to be 0xC0 and hence it is discarding packets having
TOS value other than 0xc0.

We need to make sure that we are sending the packet with
TOS 0xC0 and while receiving we can allow any TOS value.
Let's follow Postel's law.
Checked Cisco behavior as well. It also accepts all TOS values.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-24 22:10:52 -08:00
Christian Hopps
7bf63db79b
Merge pull request #10632 from donaldsharp/thread_return_null
*: Change thread->func to return void instead of int
2022-02-24 01:43:48 -05:00
Jafar Al-Gharaibeh
ca6c97340b
Merge pull request #10628 from anlancs/pimd-minors
pimd: cosmetic change
2022-02-23 23:26:58 -06:00
Donald Sharp
cc9f21da22 *: Change thread->func to return void instead of int
The int return value is never used.  Modify the code
base to just return a void instead.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-02-23 19:56:04 -05:00
anlan_cs
de674e9fc2 pimd: cosmetic change
Remove one empty line. And correct one word.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-02-21 21:33:04 +08:00
Mobashshera Rasool
fcfd479d99 pimd: Do not allow 224.0.0.0/24 range in igmp join
224.0.0.0/24 cannot be used by igmp since this is reserved
for routing protocols and other low-level topology discovery or
maintenance protocols.

Fixes: #10614

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-02-20 22:21:31 -08:00
Donald Sharp
b5bf67e905
Merge pull request #10582 from anlancs/pimd-remove-redundant
pimd: remove redundant code
2022-02-17 08:06:14 -05:00
Donald Sharp
ccaa4cced2 pimd: Ensure timers are stopped on instance shutdown
The pim_upstream data structure has a ref count that is
not properly being incremented/decremented and when an
instance is removed this is causing crashes because timers
are still popping afterwords on data structures that are
now freed.

Since getting the ref count code is extremely hard and
we know that this crash is happening, add a bit of code
to prevent the timers from popping at all when we go
through and free up other data structures that we
are pointing at.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-02-17 07:52:33 -05:00
Mobashshera Rasool
dfc26ad186 pimd: Fix Compilation issue in PIM
A recent merge caused this, fixing it.

Signed-off-by: Mobashshera Rasool <mrasool@gmail.com>
2022-02-16 09:04:08 -08:00
Donald Sharp
7b08708e65
Merge pull request #9224 from SaiGomathiN/saig
pimd: IGMP Query Generation
2022-02-16 11:26:03 -05:00
David Lamparter
ae449dc594 pim6d: remove PIM_V6_TEMP_BREAK
It's no longer necessary, pim6d now compiles without this hack.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
94120cb227 pim6d: get into a kinda-working state wrt. zebra
Fix up just enough to make us not operate in complete darkness.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
b7f71639c9 pim6d: isolate remaining TODOs into stubs file
This creates `pim6_stubs.c`, which is intended to temporarily provide
stubbed-out definitions of some functions we don't have yet for IPv6.
This makes pim6d compile without the `PIM_V6_TEMP_BREAK` hack, and is
very important as an intermediate step to get a working environment for
further work.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
deb76ca4ce pim6d: drop off MLAG code 2022-02-16 16:40:56 +01:00
David Lamparter
5a46a3dea9 pim6d: drop off IGMP code
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
809c11a9d8 pim6d: IPv6-adjust BSM code
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
f0d63d90bd pim6d: IPv6-adjust static multicast routes
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
a9338fa449 pim6d: IPv6-adjust mroute code
This is just hitting the pim_mroute code with a hammer until it doesn't
print warnings anymore.  This is NOT quite tested or working yet, it
just compiles.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:40:56 +01:00
David Lamparter
89e2cbd38f pim6d: IPv6-adjust northbound code
Just fixing a bunch of compiler errors, this will NOT actually configure
IPv6 PIM properly.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:32:26 +01:00
David Lamparter
00b1f412a1 pim6d: IPv6-adjust RPF lookups
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:32:26 +01:00
David Lamparter
101b31041a pim6d: IPv6-adjust upstream_rpf_genid_changed
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-16 16:32:26 +01:00
anlan_cs
c0d217c4e8 pimd: remove redundant code
`ifchannel_rb` is already cleaned by `pim_ifchannel_delete_all`, so
it should be removed.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-02-15 22:49:37 +08:00
David Lamparter
29fd9fca45 pim6d: IPv6-adjust pim_msg_send() and related
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
2b844385dc pim6d: IPv6-adjust pim_ifchannel_*
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
efd66f7bad pim6d: IPv6-adjust assert-related addrs
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
da6bed2bbe pim6d: IPv6-adjust jp_agg->group
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
034db86b72 pim6d: IPv6-adjust iface primary/DR addrs
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
01adb431d3 pim6d: IPv6-adjust pim_upstream addr
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
11928ecf19 pim6d: IPv6-adjust Hello/TLV processing
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
9bb93fa04e pim6d: IPv6-adjust neigh->source_addr
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
c631920c15 pim6d: IPv6-adjust various pim_sgaddr uses
Since `pim_sgaddr` is `pim_addr` now, that causes a whole lot of fallout
anywhere S,G pairs are handled.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
80d9fa1e68 pim6d: prepare SSM/filter functions
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
5d99ebea32 pim6d: prepare/stub pim_rp_* functions for IPv6
These are sprinkled relatively widely through the PIM codebase, so for
the time being reduce the "compiler warning surface" by moving them
forward to proper types without actual implementations.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
0d36009204 pim6d: more TLV parse/encode IPv6 preparation
More proliferation of pim_addr to work towards IPV6.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
16763d77a3 pim6d: prepare IPv6 address encoding functions
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00
David Lamparter
883052c6f9 pim6d: convert address comparison in I_am_DR macro
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-02-14 06:45:03 +01:00