]> git.puffer.fish Git - matthieu/frr.git/log
matthieu/frr.git
2 months agostaticd: Extend CLI to configure an SRv6 uA SID
Carmine Scarpitta [Thu, 13 Feb 2025 10:04:03 +0000 (11:04 +0100)]
staticd: Extend CLI to configure an SRv6 uA SID

This commit extends the STATIC CLI to support the configuration of uA
SIDs.

```
router(config)# sid fcbb:bbbb:1:fe00::/64 locator MAIN behavior uA interface sr0 nexthop 2001::2
```

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_srv6_sid_uninstall` to uninstall SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:03:18 +0000 (11:03 +0100)]
staticd: Extend `static_zebra_srv6_sid_uninstall` to uninstall SRv6 uA SIDs

This commit extends the `static_zebra_srv6_sid_uninstall` function to
allow staticd to remove SRv6 uA SIDs from the zebra RIB.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_srv6_sid_install` to install SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:02:59 +0000 (11:02 +0100)]
staticd: Extend `static_zebra_srv6_sid_install` to install SRv6 uA SIDs

This commit extends the `static_zebra_srv6_sid_install` function to
allow staticd to install SRv6 uA SIDs into the zebra RIB.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_release_srv6_sid` to release SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:02:23 +0000 (11:02 +0100)]
staticd: Extend `static_zebra_release_srv6_sid` to release SRv6 uA SIDs

When removing an SRv6 uA SID, staticd should ask SRv6 SID Manager to
release the SID.
Currently, `static_zebra_release_srv6_sid` does not allow to release uA
SIDs.

This commit extends `static_zebra_release_srv6_sid` to allow staticd to
release SRv6 uA SIDs.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Extend `static_zebra_request_srv6_sid` to request SRv6 uA SIDs
Carmine Scarpitta [Thu, 13 Feb 2025 10:01:11 +0000 (11:01 +0100)]
staticd: Extend `static_zebra_request_srv6_sid` to request SRv6 uA SIDs

In order to configure an SRv6 uA SID in staticd, staticd should request
SRv6 SID Manager to allocate a SID bound to the uA behavior.
Currently, `static_zebra_request_srv6_sid` does not support requesting
SIDs bound to the uA behavior.

This commit extends the `static_zebra_request_srv6_sid` function to
enable staticd to request SIDs bound to the uA behavior.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Add nb callbacks to configure a nexthop for SRv6 uA behavior
Carmine Scarpitta [Thu, 13 Feb 2025 09:59:40 +0000 (10:59 +0100)]
staticd: Add nb callbacks to configure a nexthop for SRv6 uA behavior

An SRv6 uA SID is associated with the interface and (optionally) the
IPv6 address of the nexthop.

This commit adds the modify and destroy nortbound callbacks required to
set the nexthop.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agostaticd: Add nb callbacks to configure an interface for SRv6 uA behavior
Carmine Scarpitta [Thu, 13 Feb 2025 09:59:13 +0000 (10:59 +0100)]
staticd: Add nb callbacks to configure an interface for SRv6 uA behavior

An SRv6 uA SID is associated with the interface and (optionally) the
IPv6 address of the nexthop.

This commit adds the modify and destroy nortbound callbacks required to
set the interface.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoyang: Extend staticd YANG model to support the SRv6 uA behavior
Carmine Scarpitta [Thu, 13 Feb 2025 09:51:28 +0000 (10:51 +0100)]
yang: Extend staticd YANG model to support the SRv6 uA behavior

The SRv6 uA behavior is associated with a L3 adjacency.

This commit extends the staticd YANG model by adding two leafs
`interface` and `next-hop` under the `static-sids` container. This
extension allows us to associate an interface and a nexthop when
configuring an SRv6 uA SID.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agolib: Add ifindex to SRv6 SID context
Carmine Scarpitta [Mon, 24 Jun 2024 18:28:50 +0000 (20:28 +0200)]
lib: Add ifindex to SRv6 SID context

The uA behavior is associated with an interface and the IP address of
the nexthop. However, the current SID context data structure only
includes the IP address. It lacks the interface.

This commit extends the SID context data structure by adding the
ifindex. This extension allows daemons to allocate uA SIDs with
the required interface and IP address.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoMerge pull request #18256 from Shbinging/fix_no_ip_split-horizon_poisoned-reverse
Russ White [Tue, 25 Feb 2025 15:45:55 +0000 (10:45 -0500)]
Merge pull request #18256 from Shbinging/fix_no_ip_split-horizon_poisoned-reverse

ripd: fix no ip rip split-horizon poisoned-reverse command

2 months agoMerge pull request #18119 from louis-6wind/bgp-hidden
Russ White [Tue, 25 Feb 2025 14:59:11 +0000 (09:59 -0500)]
Merge pull request #18119 from louis-6wind/bgp-hidden

bgpd: fix default instance when leaving the hidden state.

2 months agoMerge pull request #18243 from dksharp5/remove_everything
Mark Stapp [Tue, 25 Feb 2025 14:43:00 +0000 (09:43 -0500)]
Merge pull request #18243 from dksharp5/remove_everything

Drop unused code

2 months agoripd: fix no ip rip split-horizon poisoned-reverse command
Shbinging [Tue, 25 Feb 2025 08:07:45 +0000 (16:07 +0800)]
ripd: fix no ip rip split-horizon poisoned-reverse command

`no ip rip split-horizon poisoned-reverse` will undo poisoned-reverse and set default behavior which is split-horizon.
By contrast, `no ip rip split-horizon` will undo interface's split-horizon behavior.

Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
2 months agozebra: use provider function to receive data directly
Donna Sharp [Mon, 24 Feb 2025 19:51:12 +0000 (14:51 -0500)]
zebra: use provider function to receive data directly

Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2 months agoospfd: remove unused function ins ospfd/ospf_lsa.c
Donna Sharp [Mon, 11 Nov 2024 23:55:54 +0000 (18:55 -0500)]
ospfd: remove unused function ins ospfd/ospf_lsa.c

Signed-off-by: Donna Sharp <dksharp5@gmail.com>
2 months agoMerge pull request #18216 from gromit1811/bugfix_pim_vrf_register
Jafar Al-Gharaibeh [Mon, 24 Feb 2025 18:56:08 +0000 (12:56 -0600)]
Merge pull request #18216 from gromit1811/bugfix_pim_vrf_register

pimd: Fix PIM VRF support (send register/register stop in VRF)

2 months agoMerge pull request #18226 from nabahr/pim-vrf-bind
Donald Sharp [Mon, 24 Feb 2025 18:53:39 +0000 (13:53 -0500)]
Merge pull request #18226 from nabahr/pim-vrf-bind

pim: Fix vrf binding of autorp and mroute socket

2 months agoMerge pull request #18225 from nabahr/autorp-joins
Donald Sharp [Mon, 24 Feb 2025 18:53:21 +0000 (13:53 -0500)]
Merge pull request #18225 from nabahr/autorp-joins

pim: Fix autorp group joins

2 months agoMerge pull request #18236 from donaldsharp/zebra_multipath_num_operational_data
Christian Hopps [Mon, 24 Feb 2025 17:33:34 +0000 (12:33 -0500)]
Merge pull request #18236 from donaldsharp/zebra_multipath_num_operational_data

zebra: Add operational retrieval of Multipath Number

2 months agotests: check as number in show run
Louis Scalbert [Fri, 14 Feb 2025 10:58:24 +0000 (11:58 +0100)]
tests: check as number in show run

Creates the default VRF instance after the other VRF instances. The
default VRF instance is created in hidden state. Check that AS number
in show run is correctly written.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: fix leaving hidden state
Louis Scalbert [Fri, 14 Feb 2025 14:03:00 +0000 (15:03 +0100)]
bgpd: fix leaving hidden state

Upon configuration of a VRF instance that references an absent default
VRF with "import vrf default", the default instance is created in hidden
state. However, the default instance is not properly un-hidden when
configured.

Restore the behavior prior to commit below.

Fixes: 9f7177af13 ("bgpd: fix duplicate BGP instance created with unified config")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agotests: add bgp_l3vpn_hidden topotest
Louis Scalbert [Fri, 14 Feb 2025 13:07:40 +0000 (14:07 +0100)]
tests: add bgp_l3vpn_hidden topotest

Test that leaving the hidden BGP instance state is working.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: update AS value of a hidden bgp instance
Alexander Skorichenko [Sat, 1 Feb 2025 00:52:17 +0000 (01:52 +0100)]
bgpd: update AS value of a hidden bgp instance

'import vrf VRF' could define a hidden bgp instance with
the default AS_UNSPECIFIED (i.e. = 1) value.
When a
router bgp AS vrf VRF
gets configured later on, replace this AS_UNSPECIFIED setting
with a requested value.

Fixes: 9680831518 ("bgpd: fix as_pretty mem leaks when un-hiding")
Signed-off-by: Alexander Skorichenko <askorichenko@netgate.com>
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agoRevert "bgpd: fix bgp vrf instance creation from implicit"
Louis Scalbert [Fri, 14 Feb 2025 17:01:00 +0000 (18:01 +0100)]
Revert "bgpd: fix bgp vrf instance creation from implicit"

This reverts commit 2ff08af78e315c69795417d150cd23649f68c655.

The fix is obviously wrong.

Link: 2ff08af78e315c69795417d150cd23649f68c655
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: fix process_queue when un-hiding
Louis Scalbert [Wed, 12 Feb 2025 12:09:37 +0000 (13:09 +0100)]
bgpd: fix process_queue when un-hiding

bgp_process_queue_init() is not called in bgp_create() when leaving the
BGP instance hidden state because of the following goto:

> if (hidden) {
> bgp = bgp_old;
> goto peer_init;
> }

Upon reconfiguration of the default instance, the prefixes are never set
into a meta queue by mq_add_handler(). They are never processed for
zebra RIB installation and announcements of update/withdraw.

Do not delete the BGP process_queue when hiding.

Fixes: 4d0e7a49cf ("bgpd: VRF-Lite fix default bgp delete")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agobgpd: fix default instance name when un-hiding
Louis Scalbert [Wed, 12 Feb 2025 11:56:49 +0000 (12:56 +0100)]
bgpd: fix default instance name when un-hiding

When unconfiguring a default BGP instance with VPN SAFI configurations,
the default BGP structure remains but enters a hidden state. Upon
reconfiguration, the instance name incorrectly appears as "VIEW ?"
instead of "VRF default". And the name_pretty pointer

The name_pretty pointer is replaced by another one with the incorrect
name. This also leads to a memory leak as the previous pointer is not
properly freed.

Do not rewrite the instance name.

Fixes: 4d0e7a49cf ("bgpd: VRF-Lite fix default bgp delete")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2 months agozebra: Add operational retrieval of Multipath Number
Donald Sharp [Sun, 23 Feb 2025 16:04:43 +0000 (11:04 -0500)]
zebra: Add operational retrieval of Multipath Number

The multipath number specified is not available through
the yang data and is not retrievable.  Make it so.
At this point in time do not allow this to be set from
yang.  Perhaps in the future.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18231 from LabNConsulting/chopps/fix-case-choice-queries
Jafar Al-Gharaibeh [Sat, 22 Feb 2025 20:06:37 +0000 (14:06 -0600)]
Merge pull request #18231 from LabNConsulting/chopps/fix-case-choice-queries

Fix oper-state queries that involve choice/case nodes

2 months agotests: add unit-test for choice/case node queries
Christian Hopps [Sat, 22 Feb 2025 14:09:38 +0000 (14:09 +0000)]
tests: add unit-test for choice/case node queries

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agolib: nb: fix oper-state queries that involve choice/case nodes
Christian Hopps [Sat, 22 Feb 2025 14:08:27 +0000 (14:08 +0000)]
lib: nb: fix oper-state queries that involve choice/case nodes

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agoMerge pull request #18210 from donaldsharp/fix_bestpath_evpn_issue
Jafar Al-Gharaibeh [Fri, 21 Feb 2025 23:11:13 +0000 (17:11 -0600)]
Merge pull request #18210 from donaldsharp/fix_bestpath_evpn_issue

bgpd: remove dmed check not required in bestpath selection

2 months agoMerge pull request #18224 from LabNConsulting/chopps/fe-client-docstrings
Jafar Al-Gharaibeh [Fri, 21 Feb 2025 23:07:26 +0000 (17:07 -0600)]
Merge pull request #18224 from LabNConsulting/chopps/fe-client-docstrings

tests: add docstrings to frontend mgmtd client

2 months agoMerge pull request #18223 from LabNConsulting/chopps/doc-mgmt-update
Jafar Al-Gharaibeh [Fri, 21 Feb 2025 23:07:02 +0000 (17:07 -0600)]
Merge pull request #18223 from LabNConsulting/chopps/doc-mgmt-update

doc: update mgmtd list of converted

2 months agopim: Fix autorp group joins
Nathan Bahr [Fri, 21 Feb 2025 17:59:04 +0000 (17:59 +0000)]
pim: Fix autorp group joins

Group joining got broken when moving the autorp socket to open/close
as needed. This fixes it so autorp group joining is properly handled
as part of opening the socket.

Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
2 months agopim: Fix vrf binding of autorp and mroute socket
Nathan Bahr [Fri, 21 Feb 2025 17:55:16 +0000 (17:55 +0000)]
pim: Fix vrf binding of autorp and mroute socket

Bind the autorp socket to the vrf device.
Also fixed mroute socket to use vrf_bind instead of directly
setting the socket option.

Signed-off-by: Nathan Bahr <nbahr@atcorp.com>
2 months agotests: add docstrings to frontend mgmtd client
Christian Hopps [Fri, 21 Feb 2025 18:47:15 +0000 (18:47 +0000)]
tests: add docstrings to frontend mgmtd client

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agodoc: update mgmtd list of converted
Christian Hopps [Fri, 21 Feb 2025 18:44:51 +0000 (18:44 +0000)]
doc: update mgmtd list of converted

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agoMerge pull request #18218 from y-bharath14/srib-yang-v3
Donald Sharp [Fri, 21 Feb 2025 16:18:03 +0000 (11:18 -0500)]
Merge pull request #18218 from y-bharath14/srib-yang-v3

yang: Corrected Pyang errors or warnings

2 months agoyang: Corrected Pyang errors or warnings
Y Bharath [Fri, 21 Feb 2025 09:33:31 +0000 (15:03 +0530)]
yang: Corrected Pyang errors or warnings

Corrected Pyang errors or warnings at frr-route-types.yang file

Signed-off-by: y-bharath14 <y.bharath@samsung.com>
2 months agoMerge pull request #18213 from donaldsharp/add_membership
Donatas Abraitis [Fri, 21 Feb 2025 09:10:57 +0000 (11:10 +0200)]
Merge pull request #18213 from donaldsharp/add_membership

*: Remove unneeded IPV6_JOIN|LEAVE_GROUP

2 months agopimd: Fix PIM VRF support (send register/register stop in VRF)
Martin Buck [Fri, 21 Feb 2025 07:54:49 +0000 (08:54 +0100)]
pimd: Fix PIM VRF support (send register/register stop in VRF)

In 946195391406269003275850e1a4d550ea8db38b and
8ebcc02328c6b63ecf85e44fdfbf3365be27c127, transmission of PIM register and
register stop messages was changed to use a separate socket. However, that
socket is not bound to a possible VRF, so the messages were sent in the
default VRF instead. Call vrf_bind() once after socket creation and when the
VRF is ready to ensure transmission in the correct VRF. vrf_bind() handles
the non-VRF case (i.e. VRF_DEFAULT) automatically, so it may be called
unconditionally.

Signed-off-by: Martin Buck <mb-tmp-tvguho.pbz@gromit.dyndns.org>
2 months ago*: Remove unneeded IPV6_JOIN|LEAVE_GROUP
Donald Sharp [Thu, 20 Feb 2025 21:16:35 +0000 (16:16 -0500)]
*: Remove unneeded IPV6_JOIN|LEAVE_GROUP

Headers include this stuff now.  No need for it
in our code base.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agobgpd: remove dmed check not required in bestpath selection
Donald Sharp [Thu, 20 Feb 2025 19:28:15 +0000 (14:28 -0500)]
bgpd: remove dmed check not required in bestpath selection

As part of the upstream master commit (f3575f61c7 bgpd: Sort the
bgp_path_inf) the snippet of the code for dmed check condition
left out, which leads to an issue of selecting incorrect bestpath.

As an example:

During the bestpath selection local route looses to another path due
to dmed condition being hit.

The snippet of the logs:

2025/02/20 03:06:20.131441 BGP: [JW7VP-K1YVV]
[2]:[0]:[48]:[00:92:00:00:00:10](VRF default): Comparing path
27.0.0.7 flags Valid  with path Static announcement flags Selected Valid Attr Changed Unsorted
2025/02/20 03:06:20.131445 BGP: [SYTDR-QV6X9] [2]:[0]:[48]:[00:92:00:00:00:10]: path 27.0.0.7 loses to path Static announcement as ES 03:44:38:39:ff:ff:02:00:00:01 is same and local
2025/02/20 03:06:20.131452 BGP: [JW7VP-K1YVV] [2]:[0]:[48]:[00:92:00:00:00:10](VRF default): Comparing path 27.0.0.8 flags Valid  with path Static announcement flags Selected Valid Attr Changed Unsorted
2025/02/20 03:06:20.131456 BGP: [SYTDR-QV6X9] [2]:[0]:[48]:[00:92:00:00:00:10]: path 27.0.0.8 loses to path Static announcement as ES 03:44:38:39:ff:ff:02:00:00:01 is same and local
2025/02/20 03:06:20.131458 BGP: [WEWEC-8SE72] [2]:[0]:[48]:[00:92:00:00:00:10](VRF default): path Static announcement is the bestpath from AS 0   <<<< static is best
2025/02/20 03:06:20.131463 BGP: [Z3A78-GM3G5] bgp_best_selection: [2]:[0]:[48]:[00:92:00:00:00:10](VRF default) pi 27.0.0.7 dmed
2025/02/20 03:06:20.131467 BGP: [Z3A78-GM3G5] bgp_best_selection: [2]:[0]:[48]:[00:92:00:00:00:10](VRF default) pi 27.0.0.8 dmed
2025/02/20 03:06:20.131471 BGP: [N6CTF-2RSKS] [2]:[0]:[48]:[00:92:00:00:00:10](VRF default): After path selection, newbest is path 27.0.0.7 oldbest was Static announce

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #17666 from routingrocks/pim_fhr_rp
Mark Stapp [Thu, 20 Feb 2025 18:41:10 +0000 (13:41 -0500)]
Merge pull request #17666 from routingrocks/pim_fhr_rp

pimd: During prefix-list update, behave as PIM_UPSTREAM_NOTJOINED sta…

2 months agoMerge pull request #14227 from routingrocks/pim_data_fix
Jafar Al-Gharaibeh [Thu, 20 Feb 2025 16:56:05 +0000 (10:56 -0600)]
Merge pull request #14227 from routingrocks/pim_data_fix

pimd: Fix for data packet loss when FHR is LHR and RP

2 months agoMerge pull request #18194 from donaldsharp/more_orf_funniness
Donatas Abraitis [Wed, 19 Feb 2025 20:34:43 +0000 (22:34 +0200)]
Merge pull request #18194 from donaldsharp/more_orf_funniness

bgpd: Fix another crash in orf

2 months agoMerge pull request #18197 from donaldsharp/ospf_passive_test_removal
Donatas Abraitis [Wed, 19 Feb 2025 20:33:10 +0000 (22:33 +0200)]
Merge pull request #18197 from donaldsharp/ospf_passive_test_removal

tests: Remove warning about passive command

2 months agoMerge pull request #17914 from opensourcerouting/pim-nb-filter
Jafar Al-Gharaibeh [Wed, 19 Feb 2025 19:39:12 +0000 (13:39 -0600)]
Merge pull request #17914 from opensourcerouting/pim-nb-filter

pimd: filter neighbors by address

2 months agotests: Remove warning about passive command
Donald Sharp [Wed, 19 Feb 2025 13:04:54 +0000 (08:04 -0500)]
tests: Remove warning about passive command

Several tests have warnings about the passive
command and how to use it.  Let's address this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agodoc: add allowed-neighbors command
Rafael Zalamena [Thu, 23 Jan 2025 16:00:39 +0000 (13:00 -0300)]
doc: add allowed-neighbors command

Let users know about new command to filter PIM sessions based on peer
address.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agotopotests: test PIM neighbor filtering
Rafael Zalamena [Wed, 22 Jan 2025 14:07:15 +0000 (11:07 -0300)]
topotests: test PIM neighbor filtering

Add new topology for testing neighbor filtering and more features in
the future.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agopimd: allow restricting neighbors per interface
David Lamparter [Thu, 19 Aug 2021 14:46:30 +0000 (16:46 +0200)]
pimd: allow restricting neighbors per interface

Just filter incoming packets against a specified prefix-list.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2 months agoMerge pull request #18108 from opensourcerouting/fix/zebra_no_vni_validation
Donald Sharp [Wed, 19 Feb 2025 12:22:03 +0000 (07:22 -0500)]
Merge pull request #18108 from opensourcerouting/fix/zebra_no_vni_validation

zebra: Do not flush an existing vni configuration trying to remove wrong vni

2 months agoMerge pull request #18111 from opensourcerouting/gmp-leave
Donald Sharp [Wed, 19 Feb 2025 12:21:00 +0000 (07:21 -0500)]
Merge pull request #18111 from opensourcerouting/gmp-leave

pimd,pim6d: support IGMPv2/MLDv1 immediate leave

2 months agobgpd: Fix another crash in orf
Donald Sharp [Tue, 18 Feb 2025 15:25:47 +0000 (10:25 -0500)]
bgpd: Fix another crash in orf

I was pointed at yet another crash in the orf code.  I think it
stems from basicaly the same problem as the last one.  Let's just
make sure that the orf_plist is handled appropriately.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18164 from Pdoijode/pdoijode/staticd-nht-register
Russ White [Tue, 18 Feb 2025 14:18:29 +0000 (09:18 -0500)]
Merge pull request #18164 from Pdoijode/pdoijode/staticd-nht-register

staticd: Failed to register nexthop after networking restart

2 months agoMerge pull request #18189 from Shbinging/fix_ip_rip_split-horizon
Russ White [Tue, 18 Feb 2025 14:16:46 +0000 (09:16 -0500)]
Merge pull request #18189 from Shbinging/fix_ip_rip_split-horizon

doc: correct `ip rip split-horizon` command in the documentation

2 months agoMerge pull request #18095 from opensourcerouting/zebra-check-class-e
Russ White [Tue, 18 Feb 2025 13:31:31 +0000 (08:31 -0500)]
Merge pull request #18095 from opensourcerouting/zebra-check-class-e

Use ipv4 class E addresses (240.0.0.0/4) as connected routes by default

2 months agoMerge pull request #17957 from pguibert6WIND/codepoint_add_some_flavors
Carmine Scarpitta [Tue, 18 Feb 2025 10:06:51 +0000 (11:06 +0100)]
Merge pull request #17957 from pguibert6WIND/codepoint_add_some_flavors

isisd, lib: add some codepoints usually shared with other vendors

2 months agodoc: correct `ip rip split-horizon` command in the RIP documentation.
Shbinging [Mon, 17 Feb 2025 06:45:05 +0000 (14:45 +0800)]
doc: correct `ip rip split-horizon` command in the RIP documentation.

The previous version incorrectly spelled the command as `ip split-horizon`. The correct command is `ip rip split-horizon`, as indicated in the code at line 675 of rip_cli.c.

Signed-off-by: Shbinging <bingshui@smail.nju.edu.cn>
2 months agoMerge pull request #18082 from LabNConsulting/chopps/fix-yang-config-destroy
Jafar Al-Gharaibeh [Tue, 18 Feb 2025 02:35:49 +0000 (20:35 -0600)]
Merge pull request #18082 from LabNConsulting/chopps/fix-yang-config-destroy

lib: nb: call child destroy CBs when YANG container is deleted

2 months agoMerge pull request #16796 from gtataranni/feat/logfmt
Donatas Abraitis [Mon, 17 Feb 2025 21:02:27 +0000 (23:02 +0200)]
Merge pull request #16796 from gtataranni/feat/logfmt

tools: add logfmt option for frr-reload.py

2 months agotools: add logfmt option for frr-reload.py
Giovanni Tataranni [Thu, 19 Sep 2024 13:46:02 +0000 (15:46 +0200)]
tools: add logfmt option for frr-reload.py

Add the option of printing logs in logfmt format.

Additional machine readable information can be printed via the `extra`
argument.
Example:
```python
log.debug("exit context"), extra={"line": line, "ctx_keys": ctx_keys})

log.error(f"Failed to execute command {' '.join(cmd)}", extra={"cmd": cmd})
```

Signed-off-by: Giovanni Tataranni <g.tataranni@gmail.com>
2 months agoMerge pull request #18139 from y-bharath14/srib-yang-v2
Christian Hopps [Mon, 17 Feb 2025 10:13:57 +0000 (05:13 -0500)]
Merge pull request #18139 from y-bharath14/srib-yang-v2

yang: Default value for a key leaf to be ignored

2 months agoMerge pull request #18187 from cscarpitta/fix/fix_srv6_encap_src_addr_test_failures
Donald Sharp [Sun, 16 Feb 2025 13:09:18 +0000 (08:09 -0500)]
Merge pull request #18187 from cscarpitta/fix/fix_srv6_encap_src_addr_test_failures

tests: Fix intermittent failures in `srv6_encap_src_addr` topotest

2 months agotests: Fix intermittent failures in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:59:05 +0000 (10:59 +0100)]
tests: Fix intermittent failures in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` runs a vtysh command to configure the SRv6
encapsulation source address and then immediately invokes an iproute2
command to verify that zebra has set this address in the kernel. There
is no wait between the two operations and the verification is attempted
only once. If the topotest does not find the expected address it fails
immediately.

The problem is that when topotest is run on a heavyily loaded system,
it can take some time for zebra to set the address in the kernel.
In this case, when the topotest checks the kernel address right after
running the vtysh command, it doesn't find the expected address because
zebra hasn't set it yet.

This commit gives zebra some time to configure the address. It keeps to
check that the address is the expected one for about 1 minute. If after
1 minute the address is not the expected one then the test fails.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Increase retry timeout in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:23:07 +0000 (10:23 +0100)]
tests: Increase retry timeout in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` topotest uses a waiting time that is too
small. For this reason during startup it prints a warning:

```
2025-02-16 09:23:47,704 WARNING: topo: Waiting time is too small (count=10, wait=1), using default values (count=20, wait=3)
```

This commit increases the waiting time to fix the warning.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Do not load bgpd config in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:14:16 +0000 (10:14 +0100)]
tests: Do not load bgpd config in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` topotest tries to load bgpd.conf file that
does not exist, which produces the following warning:

```
2025-02-16 09:23:35,151 WARNING: topo: missing config 'r1' for '/media/frr/tests/topotests/srv6_encap_src_addr/r1/bgpd.conf' creating empty file '/etc/frr/bgpd.conf'
```

Since this topotest doesn't actually use bgpd, there's no point in
loading the config file.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Do not load sharpd config in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 09:13:15 +0000 (10:13 +0100)]
tests: Do not load sharpd config in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` topotest tries to load sharpd.conf file that
does not exist, which produces the following warning:

```
2025-02-16 09:23:35,151 WARNING: topo: missing config 'r1' for '/media/frr/tests/topotests/srv6_encap_src_addr/r1/sharpd.conf' creating empty file '/etc/frr/sharpd.conf'
```

Since this topotest doesn't actually use sharpd, there's no point in
loading the config file.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agotests: Remove bgpd marker in `srv6_encap_src_addr` topotest
Carmine Scarpitta [Sun, 16 Feb 2025 08:51:22 +0000 (09:51 +0100)]
tests: Remove bgpd marker in `srv6_encap_src_addr` topotest

The `srv6_encap_src_addr` does not use bgp. As such, it should not have
bgpd marker.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoMerge pull request #18109 from mjstapp/fix_evpn_vty_rt
Donatas Abraitis [Sat, 15 Feb 2025 20:11:00 +0000 (22:11 +0200)]
Merge pull request #18109 from mjstapp/fix_evpn_vty_rt

bgpd: fix vty output of evpn route-target AS4

2 months agoMerge pull request #18178 from cscarpitta/fix/isis_request_srv6_locator
Donald Sharp [Sat, 15 Feb 2025 14:39:04 +0000 (09:39 -0500)]
Merge pull request #18178 from cscarpitta/fix/isis_request_srv6_locator

isisd: Request SRv6 locator after zebra connection

2 months agoMerge pull request #18163 from opensourcerouting/sharpd-crash-command
Donald Sharp [Sat, 15 Feb 2025 14:17:10 +0000 (09:17 -0500)]
Merge pull request #18163 from opensourcerouting/sharpd-crash-command

sharpd: add `crashme` commands

2 months agoisisd: Request SRv6 locator after zebra connection
Carmine Scarpitta [Sat, 15 Feb 2025 09:39:40 +0000 (10:39 +0100)]
isisd: Request SRv6 locator after zebra connection

When SRv6 is enabled and an SRv6 locator is specified in the IS-IS
configuration, IS-IS may attempt to request SRv6 locator information from
zebra before the connection is fully established. If this occurs, the
request fails with the following error:

```
2025/02/14 21:41:20 ISIS: [HR66R-TWQYD][EC 100663302] srv6_manager_get_locator: invalid zclient socket
````

As a result, IS-IS is unable to obtain the locator information,
preventing SRv6 from working.

This commit fixes the issue by ensuring IS-IS requests SRv6 locator
information once the connection with zebra is successfully established.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoisisd: Add helper function to request SRv6 locator information
Carmine Scarpitta [Sat, 15 Feb 2025 09:39:30 +0000 (10:39 +0100)]
isisd: Add helper function to request SRv6 locator information

This commit adds a function that iterates over all IS-IS areas and asks
the SRv6 Manager for information about the configured locators.

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
2 months agoMerge pull request #18160 from donaldsharp/orf_plist_argie_bargie
David Lamparter [Fri, 14 Feb 2025 21:28:09 +0000 (22:28 +0100)]
Merge pull request #18160 from donaldsharp/orf_plist_argie_bargie

bgpd: When removing the prefix list drop the pointer

2 months agoMerge pull request #18122 from louis-6wind/bgp_cleanup_table-factorize
Donatas Abraitis [Fri, 14 Feb 2025 21:08:51 +0000 (23:08 +0200)]
Merge pull request #18122 from louis-6wind/bgp_cleanup_table-factorize

bgpd: factorize bgp_table_cleanup()

2 months agostaticd: Failed to register nexthop after networking restart
Pooja Jagadeesh Doijode [Fri, 14 Feb 2025 07:34:46 +0000 (23:34 -0800)]
staticd: Failed to register nexthop after networking restart

Problem:
After networking restart, staticd unregistered the nexthop
but failed to register the nexthop again, which caused the
nexthop to remain inactive in zebra for static route.

Fix:
Call to static_zebra_nht_register() from static_install_path() was
removed in 3c05d53bf8defc36acdfe6e78064e068d60c649f. Adding it back
so that staticd can register the nexthop for static routes.

Testing:
After networking restart trigger on h1:

Before fix:
```
h1# show ipv6 route vrf vrf1012
Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP,
       T - Table, A - Babel, D - SHARP, F - PBR, f - OpenFabric,
       t - Table-Direct, Z - FRR,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

VRF vrf1012:
S   ::/0 [1/0] via 2003:7:2::1, swp1.2 inactive, weight 1, 00:00:39
K>* ::/0 [255/8192] unreachable (ICMP unreachable) (vrf default), 00:00:39
L * 2000:9:12::3/128 is directly connected, vrf1012, 00:00:39
C>* 2000:9:12::3/128 is directly connected, vrf1012, 00:00:39
C>* 2003:7:2::/125 is directly connected, swp1.2, 00:00:37
L>* 2003:7:2::3/128 is directly connected, swp1.2, 00:00:37
C>* fe80::/64 is directly connected, swp1.2, 00:00:37
h1#
```

After fix:
```
h1# show ipv6 route vrf vrf1012

Codes: K - kernel route, C - connected, L - local, S - static,
       R - RIPng, O - OSPFv3, I - IS-IS, B - BGP, N - NHRP,
       T - Table, A - Babel, D - SHARP, F - PBR, f - OpenFabric,
       t - Table-Direct, Z - FRR,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

VRF vrf1012:
S>* ::/0 [1/0] via 2003:7:2::1, swp1.2, weight 1, 00:00:15
K * ::/0 [255/8192] unreachable (ICMP unreachable) (vrf default), 00:00:17
L * 2000:9:12::3/128 is directly connected, vrf1012, 00:00:17
C>* 2000:9:12::3/128 is directly connected, vrf1012, 00:00:17
C>* 2003:7:2::/125 is directly connected, swp1.2, 00:00:15
L>* 2003:7:2::3/128 is directly connected, swp1.2, 00:00:15
```

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
2 months agolib: nb: call child destroy CBs when YANG container is deleted
Christian Hopps [Tue, 11 Feb 2025 07:12:06 +0000 (07:12 +0000)]
lib: nb: call child destroy CBs when YANG container is deleted

Previously the code was only calling the child destroy callbacks if the target
deleted node was a non-presence container. We now add a flag to the callback
structure to instruct northbound to perform the rescursive delete for code that
wishes for this to happen.

- Fix wrong relative path lookup in keychain destroy callback

Signed-off-by: Christian Hopps <chopps@labn.net>
2 months agosharpd: add `crashme` commands
David Lamparter [Fri, 14 Feb 2025 16:23:29 +0000 (17:23 +0100)]
sharpd: add `crashme` commands

This adds 2 commands, one that should just straight up SEGV, another
that should trip an ASAN warning for an use-after-free.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2 months agoisisd, lib: add some codepoints usually shared with other vendors
Philippe Guibert [Thu, 30 Jan 2025 08:14:00 +0000 (09:14 +0100)]
isisd, lib: add some codepoints usually shared with other vendors

Some codepoints can not be read by interoperating with CISCO.
This is because PSP/USP flavor are used by default, and the display of
the isis output has to be adapted.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2 months agodoc: Update description of 'allow-reserved-ranges'
David Schweizer [Wed, 12 Feb 2025 12:22:06 +0000 (13:22 +0100)]
doc: Update description of 'allow-reserved-ranges'

Update user documentation to reflect behavior of config command
'allow-reserved-ranges' after changes enable use of ipv4 class E
addresses by default.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2 months agolib,zebra: Allow class E prefixes in RIB
David Schweizer [Wed, 12 Feb 2025 12:07:38 +0000 (13:07 +0100)]
lib,zebra: Allow class E prefixes in RIB

Changes allow ipv4 class E addresses and prefixes in the 240.0.0.0/4
range to be configured on interfaces, imported from the kernel routing
table and redistributed as connected routes in zebra by default.

Changes also fix routes with class E prefixes in kernel routing table
getting rejected by zebra during early daemon startup.

Drivin this change in default behavior are cloud providers (with
customers still using obsolete ipv4 protocol, i.e. Azure, AWS) running
out of ip space and abusing class E for addressing instances (announced
via BGP) over tunneling connections back to customers on premise
infrastructure.

Signed-off-by: David Schweizer <dschweizer@opensourcerouting.org>
2 months agobgpd: When removing the prefix list drop the pointer
Donald Sharp [Fri, 14 Feb 2025 12:55:09 +0000 (07:55 -0500)]
bgpd: When removing the prefix list drop the pointer

We are very very rarely seeing this crash:

    0 0x7f36ba48e389 in prefix_list_apply_ext lib/plist.c:789
    1 0x55eff3fa4126 in subgroup_announce_check bgpd/bgp_route.c:2334
    2 0x55eff3fa858e in subgroup_process_announce_selected bgpd/bgp_route.c:3440
    3 0x55eff4016488 in subgroup_announce_table bgpd/bgp_updgrp_adv.c:808
    4 0x55eff401664e in subgroup_announce_route bgpd/bgp_updgrp_adv.c:861
    5 0x55eff40111df in peer_af_announce_route bgpd/bgp_updgrp.c:2223
    6 0x55eff3f884cb in bgp_announce_route_timer_expired bgpd/bgp_route.c:5892
    7 0x7f36ba4ec239 in event_call lib/event.c:2019
    8 0x7f36ba41a22a in frr_run lib/libfrr.c:1295
    9 0x55eff3e668b7 in main bgpd/bgp_main.c:557
    10 0x7f36b9e2d249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    11 0x7f36b9e2d304 in __libc_start_main_impl ../csu/libc-start.c:360
    12 0x55eff3e64a30 in _start (/home/ci/cibuild.1407/frr-source/bgpd/.libs/bgpd+0x2fda30)
0x608000037038 is located 24 bytes inside of 88-byte region [0x608000037020,0x608000037078)
freed by thread T0 here:
    0 0x7f36ba8b76a8 in __interceptor_free ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:52
    1 0x7f36ba439bd7 in qfree lib/memory.c:131
    2 0x7f36ba48d3a3 in prefix_list_free lib/plist.c:156
    3 0x7f36ba48d3a3 in prefix_list_delete lib/plist.c:247
    4 0x7f36ba48fbef in prefix_bgp_orf_remove_all lib/plist.c:1516
    5 0x55eff3f679c4 in bgp_route_refresh_receive bgpd/bgp_packet.c:2841
    6 0x55eff3f70bab in bgp_process_packet bgpd/bgp_packet.c:4069
    7 0x7f36ba4ec239 in event_call lib/event.c:2019
    8 0x7f36ba41a22a in frr_run lib/libfrr.c:1295
    9 0x55eff3e668b7 in main bgpd/bgp_main.c:557
    10 0x7f36b9e2d249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
previously allocated by thread T0 here:
    0 0x7f36ba8b83b7 in __interceptor_calloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:77
    1 0x7f36ba4392e4 in qcalloc lib/memory.c:106
    2 0x7f36ba48d0de in prefix_list_new lib/plist.c:150
    3 0x7f36ba48d0de in prefix_list_insert lib/plist.c:186
    4 0x7f36ba48d0de in prefix_list_get lib/plist.c:204
    5 0x7f36ba48f9df in prefix_bgp_orf_set lib/plist.c:1479
    6 0x55eff3f67ba6 in bgp_route_refresh_receive bgpd/bgp_packet.c:2920
    7 0x55eff3f70bab in bgp_process_packet bgpd/bgp_packet.c:4069
    8 0x7f36ba4ec239 in event_call lib/event.c:2019
    9 0x7f36ba41a22a in frr_run lib/libfrr.c:1295
    10 0x55eff3e668b7 in main bgpd/bgp_main.c:557
    11 0x7f36b9e2d249 in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58

Let's just stop trying to save the pointer around in the peer->orf_plist
data structure.  There are other design problems but at least lets
stop the crash from possibly happening.

Fixes: #18138
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18127 from donaldsharp/w_option_for_watchfrr
David Lamparter [Thu, 13 Feb 2025 20:31:39 +0000 (21:31 +0100)]
Merge pull request #18127 from donaldsharp/w_option_for_watchfrr

2 months agoMerge pull request #18121 from louis-6wind/fix-lable-release
Donatas Abraitis [Thu, 13 Feb 2025 19:08:23 +0000 (21:08 +0200)]
Merge pull request #18121 from louis-6wind/fix-lable-release

bgpd: release manual vpn label on instance deletion

2 months agoMerge pull request #18080 from opensourcerouting/fix/enable_ll_capability_if_using_un...
Donald Sharp [Thu, 13 Feb 2025 19:06:24 +0000 (14:06 -0500)]
Merge pull request #18080 from opensourcerouting/fix/enable_ll_capability_if_using_unnumerred

bgpd: Some fixes/improvements for Link-Local Next Hop capability

2 months agoMerge pull request #18142 from donaldsharp/vrf_tableid_debugs
Donatas Abraitis [Thu, 13 Feb 2025 18:52:16 +0000 (20:52 +0200)]
Merge pull request #18142 from donaldsharp/vrf_tableid_debugs

Vrf tableid debugs

2 months agoMerge pull request #18064 from cscarpitta/fix/fix_srv6_sid_parameters
Donald Sharp [Thu, 13 Feb 2025 18:37:22 +0000 (13:37 -0500)]
Merge pull request #18064 from cscarpitta/fix/fix_srv6_sid_parameters

staticd: Fix SRv6 SID installation and deletion

2 months agoMerge pull request #18023 from pguibert6WIND/srv6_route_dump
Carmine Scarpitta [Thu, 13 Feb 2025 17:57:44 +0000 (18:57 +0100)]
Merge pull request #18023 from pguibert6WIND/srv6_route_dump

lib: fix false context information for SRv6 route

2 months agoMerge pull request #18079 from donaldsharp/labelpool_crash
Philippe Guibert [Thu, 13 Feb 2025 17:44:19 +0000 (18:44 +0100)]
Merge pull request #18079 from donaldsharp/labelpool_crash

bgpd: Fix crash in bgp_labelpool

2 months agotools: watchfrr should ignore frr_global_options
Donald Sharp [Thu, 13 Feb 2025 16:41:27 +0000 (11:41 -0500)]
tools: watchfrr should ignore frr_global_options

watchfrr is currently being started with $frr_global_options
This is problematic as that it has a entirely different cli
than the rest of the daemons and we have no plans to make
this equivalent.

Fixes: #18107
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18046 from LabNConsulting/aceelindem/ospf-lsa-add-delete-hook
Russ White [Thu, 13 Feb 2025 16:16:42 +0000 (11:16 -0500)]
Merge pull request #18046 from LabNConsulting/aceelindem/ospf-lsa-add-delete-hook

ospfd: Replace LSDB callbacks with LSA Update/Delete hooks.

2 months agopimd,topotests: frrbot styling suggestions
Rafael Zalamena [Thu, 13 Feb 2025 16:07:34 +0000 (13:07 -0300)]
pimd,topotests: frrbot styling suggestions

Incorporate frrbot suggestion to avoid the CI warning.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agotopotests: test IGMPv2/MLDv1 immediate leave
Rafael Zalamena [Wed, 22 Jan 2025 14:07:15 +0000 (11:07 -0300)]
topotests: test IGMPv2/MLDv1 immediate leave

Add new topology for testing IGMPv2/MLDv1 immediate leave and more features
in the future.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agodoc: document new immediate-leave commands
Rafael Zalamena [Fri, 7 Feb 2025 17:43:05 +0000 (14:43 -0300)]
doc: document new immediate-leave commands

Let user know about this new multicast knob.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agopimd: add IGMPv2/MLDv1 immediate-leave
David Lamparter [Tue, 28 Sep 2021 12:40:23 +0000 (14:40 +0200)]
pimd: add IGMPv2/MLDv1 immediate-leave

(Somewhat) useful when dealing with an interface that has only one host
attached.  Only works for IGMPv2 and MLDv1, other protocol versions have
no leave message.

Co-authored-by: David Lamparter <equinox@opensourcerouting.org>
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2 months agozebra: Use tableid when displaying prefix
Donald Sharp [Thu, 13 Feb 2025 15:40:52 +0000 (10:40 -0500)]
zebra: Use tableid when displaying prefix

Found some more instances of tableid not being
displayed when trying to debug something.  Fix.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agopbr: Add tableid to some debugs
Donald Sharp [Thu, 13 Feb 2025 15:40:17 +0000 (10:40 -0500)]
pbr: Add tableid to some debugs

Add prefix and tableid to one debug instead of several.
Consolidate a bit.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2 months agoMerge pull request #18032 from opensourcerouting/gmp-limit
Jafar Al-Gharaibeh [Thu, 13 Feb 2025 15:32:07 +0000 (09:32 -0600)]
Merge pull request #18032 from opensourcerouting/gmp-limit

pimd,pim6d: implement GMP group / source limits