]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
23 months agolib: Add PCRE2 support
Donatas Abraitis [Mon, 31 Oct 2022 20:23:51 +0000 (22:23 +0200)]
lib: Add PCRE2 support

Some results:

```
====
PCRE
====
% ./a.out "^65001" "65001"
comparing: ^65001 / 65001

ret status: 0
[14:31] donatas-pc donatas /home/donatas
% ./a.out "^65001_" "65001"
comparing: ^65001_ / 65001

ret status: 0

=====
PCRE2
=====
% ./a.out "^65001" "65001"
comparing: ^65001 / 65001

ret status: 0
[14:30] donatas-pc donatas /home/donatas
% ./a.out "^65001_" "65001"
comparing: ^65001_ / 65001

ret status: 1
```

Seems that if using PCRE2, we need to escape outer `()` chars and `|`. Sounds
like a bug.
But this is only with some older PCRE2 versions. With >= 10.36, I wasn't able
to reproduce this, everything is fine and working as expected.

Adding _FRR_PCRE2_POSIX definition because pcre2posix.h does not have
include's guard.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
23 months agodocker: Reuse all possible cores when building FRR for Alpine
Donatas Abraitis [Mon, 31 Oct 2022 19:40:22 +0000 (21:40 +0200)]
docker: Reuse all possible cores when building FRR for Alpine

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
23 months agoMerge pull request #12268 from opensourcerouting/fix/zebra_tc_include_netinet_for_ethhdr
Donald Sharp [Mon, 7 Nov 2022 18:33:37 +0000 (13:33 -0500)]
Merge pull request #12268 from opensourcerouting/fix/zebra_tc_include_netinet_for_ethhdr

zebra: Reuse netinet/if_ether.h to avoid redefinition of struct ethhdr

23 months agoMerge pull request #12238 from donaldsharp/append
Donatas Abraitis [Mon, 7 Nov 2022 08:37:05 +0000 (10:37 +0200)]
Merge pull request #12238 from donaldsharp/append

lib, zebra: Allow for zebra to recognize that a route has gotten desy…

23 months agoMerge pull request #12263 from anlancs/fix/pimd-log-bug
mobash-rasool [Mon, 7 Nov 2022 07:10:19 +0000 (12:40 +0530)]
Merge pull request #12263 from anlancs/fix/pimd-log-bug

pimd: avoid one EC log

23 months agoMerge pull request #12188 from donaldsharp/resilience
Donatas Abraitis [Sun, 6 Nov 2022 20:57:04 +0000 (22:57 +0200)]
Merge pull request #12188 from donaldsharp/resilience

Resilience

23 months agozebra: Reuse netinet/if_ether.h to avoid redefinition of struct ethhdr
Donatas Abraitis [Wed, 2 Nov 2022 21:01:18 +0000 (23:01 +0200)]
zebra: Reuse netinet/if_ether.h to avoid redefinition of struct ethhdr

In file included from /usr/include/net/ethernet.h:10,
                 from ./lib/prefix.h:26,
                 from zebra/tc_netlink.c:32:
/usr/include/netinet/if_ether.h:115:8: error: redefinition of 'struct ethhdr'
  115 | struct ethhdr {
      |        ^~~~~~
In file included from zebra/tc_netlink.c:28:
/usr/include/linux/if_ether.h:169:8: note: originally defined here
  169 | struct ethhdr {
      |        ^~~~~~

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
23 months agopimd: avoid one EC log
anlan_cs [Sat, 5 Nov 2022 13:33:01 +0000 (21:33 +0800)]
pimd: avoid one EC log

Saw this EC log:

```
PIM: [WX4HZ-FA72S][EC 100663307] pim_rp_find_match_group: BUG We should have found default group information
```

The root cause is group address of "0.0.0.0" is wrongly introduced into
`pim_rp_find_match_group()`. So add a check to avoid it.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
23 months agotests: Test Resilient NHG's are properly created in zebra
Donald Sharp [Wed, 26 Oct 2022 19:47:08 +0000 (15:47 -0400)]
tests: Test Resilient NHG's are properly created in zebra

When a Resilient NHG is created, ensure that Zebra notes
that it is created and has it as well.

Signed-off-by: Donald Sharp <sharp@nvidia.com>
23 months agotests: Speedup test_all_protocol_startup.py by 55 seconds
Donald Sharp [Wed, 26 Oct 2022 15:53:20 +0000 (11:53 -0400)]
tests: Speedup test_all_protocol_startup.py by 55 seconds

Just make ospf and ospfv3 converge faster with faster
hello timers.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agodoc: Add nexthop_groups documentation
Donald Sharp [Mon, 24 Oct 2022 18:26:11 +0000 (14:26 -0400)]
doc: Add nexthop_groups documentation

Remove the nexthop groups documentation from pbr.rst and
make it `generic`.  Add the resilient buckets nexthop
group type.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months ago*: Add ability to encode / decode resilence down zapi
Donald Sharp [Mon, 24 Oct 2022 13:49:40 +0000 (09:49 -0400)]
*: Add ability to encode / decode resilence down zapi

At this point add abilty for the encode/decode of the
resilience down ZAPI to zebra.  Just hookup sharpd
at this point in time.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months ago*: Add ability for daemons to notice resilience changes
Donald Sharp [Mon, 24 Oct 2022 13:25:54 +0000 (09:25 -0400)]
*: Add ability for daemons to notice resilience changes

This patch just introduces the callback mechanism for the
resilient nexthop changes so that upper level daemons
can take advantage of the change.  This does nothing
at this point but just call some code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agolib, vtysh: Add ability to specify resilient nhgs
Donald Sharp [Mon, 24 Oct 2022 13:09:23 +0000 (09:09 -0400)]
lib, vtysh: Add ability to specify resilient nhgs

Add the ability to specify a resilient nexthop group

nexthop-group A
 resilient buckets 32 idle_timer 100 unbalanced_timer 500
 nexthop 192.168.100.1 enp7s0
 nexthop 192.168.100.33 enp7s0
 nexthop 192.168.122.1 enp1s0

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agolib, zebra: Add ability to encode/decode resilient nhg's
Donald Sharp [Sat, 22 Oct 2022 19:37:27 +0000 (15:37 -0400)]
lib, zebra: Add ability to encode/decode resilient nhg's

Add ability to read the nexthop group resilient linux
kernel data as well as write it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agolib: When adding to front of list ensure we handle tail to
Donald Sharp [Mon, 24 Oct 2022 18:08:35 +0000 (14:08 -0400)]
lib: When adding to front of list ensure we handle tail to

When inserting to the front of a list with listnode_add_head
if the list is empty, the tail will not be properly set and
subsuquent calls to insert/remove will cause the function
to crash.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agolib, zebra: Allow for zebra to recognize that a route has gotten desynced
Donald Sharp [Tue, 1 Nov 2022 12:00:14 +0000 (08:00 -0400)]
lib, zebra: Allow for zebra to recognize that a route has gotten desynced

FRR does not use the NLM_F_APPEND semantics ( in fact I would argue that
the NLM_F_APPEND semantics just introduce pain for all parties involved )
I would also argue that most people who use the kernel netlink api
have recognized that NLM_F_APPEND for a route is a recipe for disaster
that is well documented and as such it is not used as anything other
than a curiousity by operators.

See:
https://bugzilla.redhat.com/show_bug.cgi?id=1337855
https://github.com/thom311/libnl/issues/226

Are 2 great examples of how confusing it is for anyone in user
space to know what the correct thing to do is.  Given that
new fields can be added with no semantics to allow us to know
what has resulted in a change or not.

In an attempt to recognize this, let's note that FRR
believes it has gotten out of sync with the kernel.
Future commits will react to the desynchronized route
and request from the kernel a reload of that specific
route if possible.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agoMerge pull request #12244 from anlancs/fix/bgpd-evpn-leak-l3rt
Donald Sharp [Fri, 4 Nov 2022 15:59:32 +0000 (11:59 -0400)]
Merge pull request #12244 from anlancs/fix/bgpd-evpn-leak-l3rt

bgpd: avoid possible memleak

23 months agoMerge pull request #12252 from opensourcerouting/fix/frr-reload.py_reuse_non_default_dirs
Donald Sharp [Fri, 4 Nov 2022 15:58:37 +0000 (11:58 -0400)]
Merge pull request #12252 from opensourcerouting/fix/frr-reload.py_reuse_non_default_dirs

tools: Honor sysdir, confdir, bindir for frr-reload.py from "frr" wrapper

23 months agoMerge pull request #12251 from donaldsharp/various_and_sundry
Donatas Abraitis [Fri, 4 Nov 2022 12:03:50 +0000 (14:03 +0200)]
Merge pull request #12251 from donaldsharp/various_and_sundry

Various and sundry

23 months agoMerge pull request #12256 from opensourcerouting/fix/llgr_max_values
Donald Sharp [Fri, 4 Nov 2022 12:00:06 +0000 (08:00 -0400)]
Merge pull request #12256 from opensourcerouting/fix/llgr_max_values

bgpd: Cap LLGR stale-time to 16777215

23 months agoMerge pull request #12257 from opensourcerouting/fix/bgp_orf_reserved
Donald Sharp [Fri, 4 Nov 2022 11:59:14 +0000 (07:59 -0400)]
Merge pull request #12257 from opensourcerouting/fix/bgp_orf_reserved

bgpd: Check and print if we receive ORF reserved type

23 months agoMerge pull request #12255 from donaldsharp/established_lost
Donatas Abraitis [Fri, 4 Nov 2022 11:27:47 +0000 (13:27 +0200)]
Merge pull request #12255 from donaldsharp/established_lost

bgpd: Limit snmp trap for backwards state movement from established

23 months agobgpd: Cap LLGR stale-time to 16777215
Donatas Abraitis [Fri, 4 Nov 2022 06:21:18 +0000 (08:21 +0200)]
bgpd: Cap LLGR stale-time to 16777215

This value is 3 bytes (24-bits), let's do not overuse this.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
23 months agobgpd: Limit snmp trap for backwards state movement from established
Donald Sharp [Fri, 4 Nov 2022 00:39:39 +0000 (20:39 -0400)]
bgpd: Limit snmp trap for backwards state movement from established

Currently the bgp mib specifies two traps:

a) Into established state
b) transition backwards from a state

b) really is an interesting case.  It means transitioning
from say established to starting over.  It can also
mean when bgp is trying to connect and that fails and
the state transitions backwards.

Now let's imagine 500 peers with tight timers (say a data center)
and there is network trauma you have just created an inordinately
large number of traps for each peer.

Let's limit FRR to changing from the old status as Established
to something else.  This will greatly limit the trap but it
will also be something end operators are actually interested in.

I actually had several operators say they had to write special code
to ignore all the backward state transitions that they didn't care
about.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agotools: Honor sysdir, confdir, bindir for frr-reload.py from "frr" wrapper
Donatas Abraitis [Thu, 3 Nov 2022 18:13:24 +0000 (20:13 +0200)]
tools: Honor sysdir, confdir, bindir for frr-reload.py from "frr" wrapper

Without this, those variables are not passed to frr-reload.py and uses
default values.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
23 months agovtysh: Allow `service ...` lines to not repeat
Donald Sharp [Thu, 3 Nov 2022 16:59:01 +0000 (12:59 -0400)]
vtysh: Allow `service ...` lines to not repeat

When any `service ...` line is entered and there are multiple
daemons running prevent this from being displayed multiple times.

Fixes: #5475
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agobgpd: rfapi doc strings are messed up for one command
Donald Sharp [Thu, 3 Nov 2022 16:54:55 +0000 (12:54 -0400)]
bgpd: rfapi doc strings are messed up for one command

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agolib: Fix double set of event pointer to NULL
Donald Sharp [Thu, 3 Nov 2022 16:50:24 +0000 (12:50 -0400)]
lib: Fix double set of event pointer to NULL

The event system when executing a thread already
sets the pointer of it to NULL.  No need to
do it again.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agobgpd: Check and print if we receive ORF reserved type
Donatas Abraitis [Thu, 3 Nov 2022 14:19:21 +0000 (16:19 +0200)]
bgpd: Check and print if we receive ORF reserved type

Just for debugging purposes and a better visibility.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
23 months agobgpd: avoid possible memleak
anlan_cs [Tue, 1 Nov 2022 02:09:15 +0000 (22:09 -0400)]
bgpd: avoid possible memleak

In the case of without ':' in `ecom_str`, memleak on this `ecom_str` will
occur. Just free `ecom_str` for this case.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
23 months agoMerge pull request #12196 from opensourcerouting/xref-vtysh
Donald Sharp [Thu, 3 Nov 2022 12:54:09 +0000 (08:54 -0400)]
Merge pull request #12196 from opensourcerouting/xref-vtysh

*: rewrite `extract.pl` using `xref` infra

23 months agoMerge pull request #12245 from mobash-rasool/fixes3
Jafar Al-Gharaibeh [Thu, 3 Nov 2022 03:37:23 +0000 (22:37 -0500)]
Merge pull request #12245 from mobash-rasool/fixes3

pimd: fix igmp source packet check

23 months agoMerge pull request #12247 from donaldsharp/bgp_open_issues
Donatas Abraitis [Wed, 2 Nov 2022 19:45:50 +0000 (21:45 +0200)]
Merge pull request #12247 from donaldsharp/bgp_open_issues

bgpd: Ensure that bgp open message stream has enough data to read

23 months agoMerge pull request #12169 from donaldsharp/zebra_meta_q_ordering
Donatas Abraitis [Wed, 2 Nov 2022 18:15:32 +0000 (20:15 +0200)]
Merge pull request #12169 from donaldsharp/zebra_meta_q_ordering

zebra: Fix handling of recursive routes when processing closely in time

23 months agobgpd: Ensure that bgp open message stream has enough data to read
Donald Sharp [Wed, 2 Nov 2022 17:24:48 +0000 (13:24 -0400)]
bgpd: Ensure that bgp open message stream has enough data to read

If a operator receives an invalid packet that is of insufficient size
then it is possible for BGP to assert during reading of the packet
instead of gracefully resetting the connection with the peer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agoMerge pull request #12235 from anlancs/fix/cleanup-22
Donald Sharp [Wed, 2 Nov 2022 12:21:03 +0000 (08:21 -0400)]
Merge pull request #12235 from anlancs/fix/cleanup-22

include: remove one unused macro

23 months agopimd: fix igmp source packet check
Mobashshera Rasool [Wed, 2 Nov 2022 10:17:30 +0000 (03:17 -0700)]
pimd: fix igmp source packet check

ip source 0.0.0.0 is OK as per RFC 3376: 4.2.13.

Co-authored-by: ron <lyq140hf2006@163.com>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
23 months agoMerge pull request #12159 from opensourcerouting/fix/conditional_advertisement_track_...
Russ White [Tue, 1 Nov 2022 16:24:51 +0000 (12:24 -0400)]
Merge pull request #12159 from opensourcerouting/fix/conditional_advertisement_track_updates

bgpd: Notify BGP conditional advertisement thread when the peer goes down

23 months agoMerge pull request #12236 from cscarpitta/fix/replace-inet-top-in-bgp-mplsvpn
David Lamparter [Tue, 1 Nov 2022 12:01:49 +0000 (13:01 +0100)]
Merge pull request #12236 from cscarpitta/fix/replace-inet-top-in-bgp-mplsvpn

23 months agoinclude: remove one unused macro
anlan_cs [Mon, 31 Oct 2022 10:14:07 +0000 (06:14 -0400)]
include: remove one unused macro

In "rtnetlink.h", four items are a group, e.g. 116/117/118/119 should be
a group.  But "RTM_SETHWFLAGS" is not in use and has nothing to do with
"NEXTHOPBUCKET".

After comparing with kernel header, better remove it imo.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
23 months agoMerge pull request #12114 from opensourcerouting/feature/bgp_aigp_attribute
Russ White [Mon, 31 Oct 2022 15:24:43 +0000 (11:24 -0400)]
Merge pull request #12114 from opensourcerouting/feature/bgp_aigp_attribute

bgpd: Implement AIGP

23 months agoMerge pull request #12195 from anlancs/fix/ospfd-missing-max-metric
Donald Sharp [Mon, 31 Oct 2022 11:40:26 +0000 (07:40 -0400)]
Merge pull request #12195 from anlancs/fix/ospfd-missing-max-metric

ospfd: fix missing max-metric in show running config

23 months agoMerge pull request #12226 from spk-hebbar/zebra_fpm
Donatas Abraitis [Mon, 31 Oct 2022 11:12:58 +0000 (13:12 +0200)]
Merge pull request #12226 from spk-hebbar/zebra_fpm

zebra: Remove duplicate update of msg_type

23 months agoMerge pull request #12232 from anlancs/fix/doc-ospfd-max-metric
Donatas Abraitis [Mon, 31 Oct 2022 11:12:43 +0000 (13:12 +0200)]
Merge pull request #12232 from anlancs/fix/doc-ospfd-max-metric

doc: fix ospf's max-metric command

23 months agodoc: fix ospf's max-metric command
anlan_cs [Mon, 31 Oct 2022 08:03:04 +0000 (04:03 -0400)]
doc: fix ospf's max-metric command

"on-shutdown" and "on-startup" have the different timeout range.

Correct the timeout range for "on-shutdown" based on the current code:

```
(ospf)  max-metric router-lsa on-shutdown (5-100)
```

Signed-off-by: anlan_cs <vic.lan@pica8.com>
23 months agoMerge pull request #12230 from cscarpitta/fix/replace-inet-top-in-srv6-lib
mobash-rasool [Mon, 31 Oct 2022 06:34:26 +0000 (12:04 +0530)]
Merge pull request #12230 from cscarpitta/fix/replace-inet-top-in-srv6-lib

lib: Use `%pI6`/`%pI4` to print SRv6 seg6local ctx

23 months agolib: Use `%pI6`/`%pI4` to print SRv6 seg6local ctx
Carmine Scarpitta [Sun, 30 Oct 2022 08:15:06 +0000 (09:15 +0100)]
lib: Use `%pI6`/`%pI4` to print SRv6 seg6local ctx

This commit changes `seg6local_context2str()` to use `%pI6`/`%pI4`
instead of `inet_ntop` to print the SRv6 seg6local context information.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
23 months agobgpd: Replace `inet_ntop` with `%pI6`
Carmine Scarpitta [Sun, 30 Oct 2022 07:25:07 +0000 (08:25 +0100)]
bgpd: Replace `inet_ntop` with `%pI6`

This commit changes some debug prints to use `%pI6` instead of
`inet_ntop` to print SRv6 SIDs.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
23 months agoMerge pull request #12224 from cscarpitta/fix/enhance-srv6-locator-chunk-free-api
Donald Sharp [Sat, 29 Oct 2022 23:56:07 +0000 (19:56 -0400)]
Merge pull request #12224 from cscarpitta/fix/enhance-srv6-locator-chunk-free-api

bgpd: Enhance the `srv6_locator_chunk_free()` API by automatically setting the pointer to the freed memory to `NULL`

23 months agoMerge pull request #12215 from LabNConsulting/working/lb/ospf-allow-for-zero
Jafar Al-Gharaibeh [Sat, 29 Oct 2022 21:58:50 +0000 (16:58 -0500)]
Merge pull request #12215 from LabNConsulting/working/lb/ospf-allow-for-zero

ospfd: remove asster on zero length LSA - which is permitted by spec

23 months agoMerge pull request #12222 from LabNConsulting/working/lb/fix-p2X-acks
Jafar Al-Gharaibeh [Sat, 29 Oct 2022 21:57:12 +0000 (16:57 -0500)]
Merge pull request #12222 from LabNConsulting/working/lb/fix-p2X-acks

ospfd: fix bug where acks were not be generated to incoming P2P/P2MP peers

23 months agozebra: Remove duplicate updation of msg_type
Spoorthi K [Sat, 29 Oct 2022 17:55:03 +0000 (23:25 +0530)]
zebra: Remove duplicate updation of msg_type

Signed-off-by: Spoorthi K <spk@redhat.com>
23 months agoospfd: fix bug where acks were not be generated to incoming P2P/P2MP neighbors
Lou Berger [Sat, 29 Oct 2022 17:17:56 +0000 (17:17 +0000)]
ospfd: fix bug where acks were not be generated to incoming P2P/P2MP neighbors

Signed-off-by: Lou Berger <lberger@labn.net>
23 months agoMerge pull request #12220 from spk-hebbar/patch-1
Jafar Al-Gharaibeh [Sat, 29 Oct 2022 17:02:21 +0000 (12:02 -0500)]
Merge pull request #12220 from spk-hebbar/patch-1

doc: Update with right default FPM server port

23 months agobgpd: Don't check for NULL when removing chunks
Carmine Scarpitta [Sat, 29 Oct 2022 15:31:16 +0000 (17:31 +0200)]
bgpd: Don't check for NULL when removing chunks

`srv6_locator_chunk_free()` is a wrapper around the `XFREE()` macro.
Passing a NULL pointer to `XFREE()` is safe. Therefore, checking that
the pointer passed to the `srv6_locator_chunk_free()` is not null is
unnecessary.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
23 months agobgpd: Do not set chunk pointer to NULL after free
Carmine Scarpitta [Sat, 29 Oct 2022 15:23:59 +0000 (17:23 +0200)]
bgpd: Do not set chunk pointer to NULL after free

`srv6_locator_chunk_free()` takes care of freeing the memory allocated
for a `struct srv6_locator_chunk` and setting the
`struct srv6_locator_chunk` pointer to NULL.

It is not necessary to explicitly set the pointer to NULL after invoking
`srv6_locator_chunk_free()`.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
23 months agolib, bgpd: Enhance `srv6_locator_chunk_free()` API
Carmine Scarpitta [Sat, 29 Oct 2022 15:04:35 +0000 (17:04 +0200)]
lib, bgpd: Enhance `srv6_locator_chunk_free()` API

A programmer can use the `srv6_locator_chunk_free()` function to free
the memory allocated for a `struct srv6_locator_chunk`.

The programmer invokes `srv6_locator_chunk_free()` by passing a single
pointer to the `struct srv6_locator_chunk` to be freed.
`srv6_locator_chunk_free()` uses `XFREE()` to free the memory.
It is the responsibility of the programmer to set the
`struct srv6_locator_chunk` pointer to NULL after freeing memory with
`srv6_locator_chunk_free()`.

This commit modifies the `srv6_locator_chunk_free()` function to take a
double pointer instead of a single pointer. In this way, setting the
`struct srv6_locator_chunk` pointer to NULL is no longer the
programmer's responsibility but is the responsibility of
`srv6_locator_chunk_free()`. This prevents programmers from making
mistakes such as forgetting to set the pointer to NULL after invoking
`srv6_locator_chunk_free()`.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
23 months agoMerge pull request #12172 from LabNConsulting/working/lb/api-zero-len-del-flag
Russ White [Sat, 29 Oct 2022 14:38:27 +0000 (10:38 -0400)]
Merge pull request #12172 from LabNConsulting/working/lb/api-zero-len-del-flag

OSPF opaques LSA API - fix bug with LL API delete, add option for zero data length withdrawals

23 months agoospfd: catch and report runt LSAs
Lou Berger [Fri, 28 Oct 2022 16:06:04 +0000 (16:06 +0000)]
ospfd: catch and report runt LSAs

Signed-off-by: Lou Berger <lberger@labn.net>
23 months agodoc: Update with right default FPM server port
Spoorthi K [Sat, 29 Oct 2022 08:39:00 +0000 (14:09 +0530)]
doc: Update with right default FPM server port

Signed-off-by: Spoorthi K <spk@redhat.com>
23 months agoospfd: remove assert on zero length LSA - which is permitted by spec
Lou Berger [Thu, 27 Oct 2022 19:12:23 +0000 (19:12 +0000)]
ospfd: remove assert on zero length LSA - which is permitted by spec

Signed-off-by: Lou Berger <lberger@labn.net>
23 months agopython: hide inet_ntoa from frrbot
David Lamparter [Fri, 28 Oct 2022 10:18:06 +0000 (11:18 +0100)]
python: hide inet_ntoa from frrbot

These are not the inet_ntoa you are looking for ;)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agopython: fix a bunch of pylint warnings in clippy
David Lamparter [Fri, 28 Oct 2022 10:13:22 +0000 (11:13 +0100)]
python: fix a bunch of pylint warnings in clippy

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agopython: apply black formatting
David Lamparter [Fri, 28 Oct 2022 09:59:41 +0000 (10:59 +0100)]
python: apply black formatting

The python/ directory hasn't been shoved into black yet (unlike
topotests, where most FRR python code is.)  Run black over it.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agoMerge pull request #12216 from donaldsharp/language_none
David Lamparter [Fri, 28 Oct 2022 09:56:26 +0000 (11:56 +0200)]
Merge pull request #12216 from donaldsharp/language_none

23 months agoMerge pull request #12154 from louis-6wind/fix-te-default-bandwidth
Olivier Dugeon [Fri, 28 Oct 2022 07:29:12 +0000 (09:29 +0200)]
Merge pull request #12154 from louis-6wind/fix-te-default-bandwidth

lib: fix the default TE bandwidth

23 months agoMerge pull request #12128 from donaldsharp/pim_br_fix_crash
mobash-rasool [Fri, 28 Oct 2022 05:47:10 +0000 (11:17 +0530)]
Merge pull request #12128 from donaldsharp/pim_br_fix_crash

pimd: Remove pim_br vestiges

23 months agoMerge pull request #12176 from sworleys/BGP-InQ
Russ White [Thu, 27 Oct 2022 20:13:44 +0000 (16:13 -0400)]
Merge pull request #12176 from sworleys/BGP-InQ

bgpd,doc: limit InQ buf to allow for back pressure

23 months agodoc: `debug zebra pbr` does not need to be documented in 2 places
Donald Sharp [Thu, 27 Oct 2022 20:03:11 +0000 (16:03 -0400)]
doc: `debug zebra pbr` does not need to be documented in 2 places

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agodoc: Remove `language = none` as that sphinx no longer needs this line
Donald Sharp [Thu, 27 Oct 2022 19:59:57 +0000 (15:59 -0400)]
doc: Remove `language = none` as that sphinx no longer needs this line

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agopimd: Remove pim_br vestiges
Donald Sharp [Thu, 13 Oct 2022 19:54:43 +0000 (15:54 -0400)]
pimd: Remove pim_br vestiges

If PIM had received a register packet with the Border Router
bit set, pimd would have crashed.  Since I wrote this code
in 2015 and really have pretty much no memory of this and
no-one has ever reported this crash, let's just remove this
code.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agoMerge pull request #12211 from SaiGomathiN/coverity
Donatas Abraitis [Thu, 27 Oct 2022 17:04:21 +0000 (18:04 +0100)]
Merge pull request #12211 from SaiGomathiN/coverity

pimd: fixing some coverity issues

23 months agoMerge pull request #12212 from donaldsharp/clarify_issue
Donatas Abraitis [Thu, 27 Oct 2022 17:01:44 +0000 (18:01 +0100)]
Merge pull request #12212 from donaldsharp/clarify_issue

bgpd: Clarify what NHT error message means

23 months agoMerge pull request #12200 from patrasar/pimv6_rp_iif_fix
Donatas Abraitis [Thu, 27 Oct 2022 16:59:50 +0000 (17:59 +0100)]
Merge pull request #12200 from patrasar/pimv6_rp_iif_fix

pimd, pim6d: Fix rp-info OIF having PIM disabled interface

23 months agotests: adapt cspf_topo1 to the default link-params bandwidth
Louis Scalbert [Thu, 27 Oct 2022 12:45:53 +0000 (14:45 +0200)]
tests: adapt cspf_topo1 to the default link-params bandwidth

Adapt cspf_topo1 to the default link-params bandwidth

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
23 months agotests: adapt ospf_te_topo1 to the default link-params bandwidth
Louis Scalbert [Thu, 27 Oct 2022 12:36:51 +0000 (14:36 +0200)]
tests: adapt ospf_te_topo1 to the default link-params bandwidth

Adapt ospf_te_topo1 to the default link-params bandwidth

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
23 months agotests: adapt isis_te_topo1 to the default link-params bandwidth
Louis Scalbert [Thu, 27 Oct 2022 12:06:50 +0000 (14:06 +0200)]
tests: adapt isis_te_topo1 to the default link-params bandwidth

adapt isis_te_topo1 to the default link-params bandwidth

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
23 months agolib: fix the default TE bandwidth
Louis Scalbert [Wed, 19 Oct 2022 12:34:43 +0000 (14:34 +0200)]
lib: fix the default TE bandwidth

When enabling the interface link-params, a default bandwidth is assigned
to the Max, Reservable and Unreserved Bandwidth variables. If the
bandwidth is set at in the interface context, this value is used.
Otherwise, a default bandwidth value of 10 Gbps is set.

Revert the default value to 10 Mbps as it was intended in the initial
commit. 10 Mbps is a low value so that the link will not be prioritized
when computing the paths.

Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
23 months agoMerge pull request #12210 from louis-6wind/fix-link-params-coverity
Olivier Dugeon [Thu, 27 Oct 2022 14:01:42 +0000 (16:01 +0200)]
Merge pull request #12210 from louis-6wind/fix-link-params-coverity

lib: fix coverity scan failure in zebra_interface_link_params_read()

23 months agobgpd: Clarify what NHT error message means
Donald Sharp [Thu, 27 Oct 2022 13:21:41 +0000 (09:21 -0400)]
bgpd: Clarify what NHT error message means

When waiting on a path to reach the peer, modify the debug/show
output to give a better understanding to the operator about what
they should be looking for.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agopimd: Dereference before null check
Sai Gomathi N [Thu, 27 Oct 2022 09:36:00 +0000 (02:36 -0700)]
pimd: Dereference before null check

In pim_ecmp_nexthop_search: All paths that lead to this null pointer comparison already dereference the pointer earlier
There may be a null pointer dereference, or else the comparison against null is unnecessary.

Coverity CID-1519749

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
23 months agopimd: Unchecked return value
Sai Gomathi N [Thu, 27 Oct 2022 08:52:31 +0000 (01:52 -0700)]
pimd: Unchecked return value

In tib_sg_oil_setup: Value returned from a function is not checked for errors before being used.
If the function returns an error value, the error value may be mistaken for a normal value.
Here, only the nexthop value is being used. So casted the return type to void.

Coverity CID-1519816

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
23 months agolib: fix coverity scan failure in zebra_interface_link_params_read()
Louis Scalbert [Thu, 27 Oct 2022 08:11:25 +0000 (10:11 +0200)]
lib: fix coverity scan failure in zebra_interface_link_params_read()

The code was working but the coverity scan reported a failure.

Clarify the code to make the coverity scan happy.

Fixes: fe0a129687 ("lib,zebra: link-params are not flushed after no enable")
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
23 months agoMerge pull request #12205 from proelbtn/fix-ipv4-vpn-nexthop-over-ipv6-peer
Donatas Abraitis [Thu, 27 Oct 2022 06:47:24 +0000 (07:47 +0100)]
Merge pull request #12205 from proelbtn/fix-ipv4-vpn-nexthop-over-ipv6-peer

bgpd: Fix the condition whether nexthop is changed

23 months agoMerge pull request #12204 from taspelund/soo_ip_fix
Donatas Abraitis [Thu, 27 Oct 2022 06:27:41 +0000 (07:27 +0100)]
Merge pull request #12204 from taspelund/soo_ip_fix

bgpd: Check for IP-format Site-of-Origin

23 months agoMerge pull request #12201 from donaldsharp/clang-16-robots
Jafar Al-Gharaibeh [Thu, 27 Oct 2022 04:07:05 +0000 (23:07 -0500)]
Merge pull request #12201 from donaldsharp/clang-16-robots

Clang 16 robots

23 months agoMerge pull request #12190 from manojvn/468074
Jafar Al-Gharaibeh [Thu, 27 Oct 2022 04:05:47 +0000 (23:05 -0500)]
Merge pull request #12190 from manojvn/468074

ospf6d: Fix for memory leak issues in ospf6.

23 months agoMerge pull request #12179 from LabNConsulting/working/lb/p2mp-improvements
Jafar Al-Gharaibeh [Thu, 27 Oct 2022 03:46:10 +0000 (22:46 -0500)]
Merge pull request #12179 from LabNConsulting/working/lb/p2mp-improvements

  ospf: optimization for FRR's P2MP mode

23 months agobgpd: Fix the condition whether nexthop is changed
Ryoga Saito [Thu, 27 Oct 2022 01:17:50 +0000 (10:17 +0900)]
bgpd: Fix the condition whether nexthop is changed

Given that the following topology, route server MUST not modify NEXT_HOP
attribute because route server isn't in the actual routing path. This
behavior is required to comply RFC7947

(Router A) <-(eBGP peer)-> (Route Server) <-(eBGP peer)-> (Router B)

RFC7947 says as follows:

> As the route server does not participate in the actual routing of
> traffic, the NEXT_HOP attribute MUST be passed unmodified to the route
> server clients, similar to the "third-party" next-hop
> feature described in Section 5.1.3. of [RFC4271].

However, current FRR is violating RFC7947 in some cases. If routers and
route server established BGP peer over IPv6 connection and routers
advertise ipv4-vpn routes through route server, route server will modify
NEXT_HOP attribute in these advertisements.

This is because the condition to check whether NEXT_HOP attribute should
be changed or not is wrong. We should use (afi, safi) as the key to
check, but (nhafi, safi) is actually used. This causes the RFC7947
violation.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
23 months agobgpd: Check for IP-format Site-of-Origin
Trey Aspelund [Wed, 26 Oct 2022 20:53:09 +0000 (20:53 +0000)]
bgpd: Check for IP-format Site-of-Origin

When deciding whether to apply "neighbor soo" filtering towards a peer,
we were only looking for SoO ecoms that use either AS or AS4 encoding.
This makes sure we also check for IPv4 encoding, since we allow a user
to configure that encoding style against the peer.

Config:
```
router bgp 1
 address-family ipv4 unicast
  network 100.64.0.2/32 route-map soo-foo
  neighbor 192.168.122.12 soo 3.3.3.3:20
 exit-address-family
!
route-map soo-foo permit 10
 set extcommunity soo 3.3.3.3:20
exit
```

Before:
```
ub20# show ip bgp neighbors 192.168.122.12 advertised-routes
BGP table version is 5, local router ID is 100.64.0.222, vrf id 0
Default local pref 100, local AS 1
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       0.0.0.0                  0    100  32768 i
*> 100.64.0.2/32    0.0.0.0                  0    100  32768 i

Total number of prefixes 2
```

After:
```
ub20# show ip bgp neighbors 192.168.122.12 advertised-routes
BGP table version is 5, local router ID is 100.64.0.222, vrf id 0
Default local pref 100, local AS 1
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
*> 2.2.2.2/32       0.0.0.0                  0    100  32768 i

Total number of prefixes 1
```

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
23 months agozebra: Fix handling of recursive routes when processing closely in time
Donald Sharp [Fri, 21 Oct 2022 11:20:44 +0000 (07:20 -0400)]
zebra: Fix handling of recursive routes when processing closely in time

When zebra receives routes from upper level protocols it decodes the
zapi message and places the routes on the metaQ for processing.  Suppose
we have a route A that is already installed by some routing protocol.
And there is a route B that has a nexthop that will be recursively
resolved through A.  Imagine if a route replace operation for A is
going to happen from an upper level protocol at about the same time
the route B is going to be installed into zebra.  If these routes
are received, and decoded, at about the same time there exists a
chance that the metaQ will contain both of them at the same time.
If the order of installation is [ B, A ].  B will be resolved
correctly through A and installed, A will be processed and
re-installed into the FIB.  If the nexthops have changed for
A then the owner of B should be notified about the change( and B
can do the correct action here and decide to withdraw or re-install ).
Now imagine if the order of routes received for processing on the
metaQ is [ A, B ].  A will be received, processed and sent to the
dataplane for reinstall.  B will then be pulled off the metaQ and
fail the install since A is in a `not Installed` state.

Let's loosen the restriction in nexthop resolution for B such
that if the route we are dependent on is a route replace operation
allow the resolution to suceed.  This requires zebra to track a new
route state( ROUTE_ENTRY_ROUTE_REPLACING ) that can be looked at
during nexthop resolution.  I believe this is ok because A is
a route replace operation, which could result in this:
-route install failed, in which case B should be nht'ing and
will receive the nht failure and the upper level protocol should
remove B.
-route install succeeded, no nexthop changes.  In this case
allowing the resolution for B is ok, NHT will not notify the upper
level protocol so no action is needed.
-route install succeeded, nexthops changes.  In this case
allowing the resolution for B is ok, NHT will notify the upper
level protocol and it can decide to reinstall B or not based
upon it's own algorithm.

This set of events was found by the bgp_distance_change topotest(s).
Effectively the tests were looking for the bug ( A, B order in the metaQ )
as the `correct` state.  When under very heavy load, the A, B ordering
caused A to just be installed and fully resolved in the dataplane before
B is gotten to( which is entirely possible ).

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
23 months agobgpd: make the input-queue log more understandable
Stephen Worley [Wed, 26 Oct 2022 17:23:21 +0000 (13:23 -0400)]
bgpd: make the input-queue log more understandable

Make the input-queue log a bit more understandble to a person
debugging an issue.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
23 months agobuild: exclude a few more things from frr.xref
David Lamparter [Wed, 26 Oct 2022 14:57:16 +0000 (15:57 +0100)]
build: exclude a few more things from frr.xref

... this might need some better approach long-term.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agopython: fix for old (< 3.6) Python versions
David Lamparter [Mon, 24 Oct 2022 14:55:01 +0000 (15:55 +0100)]
python: fix for old (< 3.6) Python versions

Sigh.  No type annotations, no f-strings.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agobuild: fix gRPC build dependencies
David Lamparter [Mon, 24 Oct 2022 14:49:10 +0000 (15:49 +0100)]
build: fix gRPC build dependencies

The generated header files need a dependency on the generated .c file,
otherwise build breaks when the header is used before it is generated.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agoisisd/fabricd: use PROTO_NAME in SR code
David Lamparter [Thu, 6 Oct 2022 14:04:03 +0000 (16:04 +0200)]
isisd/fabricd: use PROTO_NAME in SR code

The IS-IS SR code was missing a use of `PROTO_NAME`, making fabricd
collide with the isisd CLI command.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agoospfd, ospf6d: align CLI help strings
David Lamparter [Thu, 6 Oct 2022 14:03:23 +0000 (16:03 +0200)]
ospfd, ospf6d: align CLI help strings

ospfd and ospf6d define the same metric-type route-map commands.  Make
them have the same help string too.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agobuild, vtysh: extract vtysh commands from .xref
David Lamparter [Tue, 4 Oct 2022 16:44:36 +0000 (18:44 +0200)]
build, vtysh: extract vtysh commands from .xref

Rather than running selected source files through the preprocessor and a
bunch of perl regex'ing to get the list of all DEFUNs, use the data
collected in frr.xref.

This not only eliminates issues we've been having with preprocessor
failures due to nonexistent header files, but is also much faster.
Where extract.pl would take 5s, this now finishes in 0.2s.  And since
this is a non-parallelizable build step towards the end of the build
(dependent on a lot of other things being done already), the speedup is
actually noticeable.

Also files containing CLI no longer need to be listed in `vtysh_scan`
since the .xref data covers everything.  `#ifndef VTYSH_EXTRACT_PL`
checks are equally obsolete.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
23 months agoMerge pull request #12199 from tewok/frr-routes-table-columns
Russ White [Wed, 26 Oct 2022 13:48:41 +0000 (09:48 -0400)]
Merge pull request #12199 from tewok/frr-routes-table-columns

bgpd: fixed misaligned columns in BGP routes table