Commit Graph

28654 Commits

Author SHA1 Message Date
Eugene Bogomazov
5a78f2bcb0 bgpd: add AFI/SAFI check for RFC 9234
RFC 9234 mandates that role rules apply only to IPv4/IPv6 unicast bgp
sessions. If the OTC attribute appears in other sessions, it will remain
untouched.

Signed-off-by: Eugene Bogomazov <eb@qrator.net>
2022-06-22 13:34:51 +03:00
Eugene Bogomazov
aee05e20fd bgpd: Update topotests for RFC 9234
In the previous version, the time.sleep function was included to wait
for the moment when the routes were sent to all routers. Changed this
function to topotest.run_and_expect for more deterministic behavior.

Signed-off-by: Eugene Bogomazov <eb@qrator.net>
2022-06-21 17:41:53 +03:00
Eugene Bogomazov
8f2d6021f8 bgpd: Add patches for RFC9234 implementation
This commit fixes some issues that were noted by the reviewer

Signed-off-by: Eugene Bogomazov <eb@qrator.net>
2022-06-21 17:41:53 +03:00
Eugene Bogomazov
d864dd9eb1 bgpd: Add RFC9234 implementation
RFC9234 is a way to establish correct connection roles (Customer/
Provider, Peer or with RS) between bgp speakers. This patch:
- Add a new configuration/terminal option to set the appropriate local
role;
- Add a mechanism for checking used roles, implemented by exchanging
the corresponding capabilities in OPEN messages;
- Add strict mode to force other party to use this feature;
- Add basic support for a new transitive optional bgp attribute - OTC
(Only to Customer);
- Add logic for default setting OTC attribute and filtering routes with
this attribute by the edge speakers, if the appropriate conditions are
met;
- Add two test stands to check role negotiation and route filtering
during role usage.

Signed-off-by: Eugene Bogomazov <eb@qrator.net>
2022-06-17 13:14:46 +03:00
Donald Sharp
4151ca0ada
Merge pull request #11422 from opensourcerouting/feature/autoclose_stale_issues_prs
github: Autoclose stale issues/PRs that are stare longer than 180 days
2022-06-16 16:36:36 -04:00
Donald Sharp
8dfcf20fa0
Merge pull request #11419 from anlancs/fix/minor-1
zebra, lib: minor changes
2022-06-16 16:35:38 -04:00
Donatas Abraitis
38ec6e680d
Merge pull request #11421 from donaldsharp/bgp_psu
bgpd: Use %pSU instead of sockunion2str
2022-06-16 23:17:18 +03:00
Martin Winter
7bd83409d2
Merge pull request #11410 from donaldsharp/daemons_cleanup 2022-06-16 20:58:27 +02:00
Donatas Abraitis
0c687ea4c1 github: Autoclose stale issues/PRs that are stare longer than 180 days
Set autoclose label after 180 days (no activity) and close (really) two weeks
later.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-06-16 21:54:55 +03:00
Donald Sharp
ddf6338c03 bgpd: Use %pSU instead of sockunion2str
Commit: 09f267ec95 introduced more sockunion2str
usages when FRR should be using %pSU.  This commit
broke the compile when using --enable-dev-build

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-16 14:47:59 -04:00
Donatas Abraitis
aef69e4f39
Merge pull request #11353 from fdumontet6WIND/bmp_src_interface
bmp: add a interface source to bmp connect command
2022-06-16 21:30:28 +03:00
Donatas Abraitis
7ea104c111
Merge pull request #11415 from donaldsharp/interface_duplication_linux
Interface duplication linux
2022-06-16 21:19:14 +03:00
Martin Winter
22ad701ec0
Merge pull request #11408 from donaldsharp/common_config 2022-06-16 18:45:15 +02:00
Quentin Young
e99126f0ac tools: document frr_global_options in daemons file
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2022-06-16 12:20:36 -04:00
Quentin Young
da9601225f tools: apply various shellcheck recommendations
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2022-06-16 12:20:36 -04:00
Quentin Young
2469a37fd0 tools: print daemon start cmd, vtysh_b cmd
When starting a daemon, print the full command run by the init script to
start it. This gives more information and is especially helpful when
debugging wrap commands.

Also add some more logs to vtysh_b to print the command used there,
log when we exit early because frr.conf doesn't exist, and simplify the
code path for creating the command to use.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2022-06-16 12:00:23 -04:00
Quentin Young
66edf91772 tools: clean up whitespace in daemons file
Bit easier to read this way.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2022-06-16 12:00:23 -04:00
Quentin Young
88323f0f96 tools: improve explanation of watchfrr_options
The explanation block for watchfrr_options was split into two blocks,
one explaining the --netns option and one making a vague statement that
the init script provides the list of daemons to start. The former can be
merged with the latter and the latter is more useful when stated as a
caveat for what you should actually use watchfrr_options for.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2022-06-16 12:00:23 -04:00
Quentin Young
5e24868b15 tools: improve explanation of 'wrap' options
We support 'wrap' variables in /etc/frr/daemons, but the explanation
given there doesn't touch on some of the subtleties of using these
variables.

The variables were designed for use with Valgrind, which has special
behavior when run with programs that daemonize; Valgrind will intercept
the fork()'d child process and run itself instead of the child. This
behavior allows it to follow the same forking semantics as the target
program.

For virtually every other wrapper, the wrap variables do not work as
demonstrated because the wrapper programs do not daemonize. If the
wrappers do not daemonize, they will block the init script. The examples
given with "perf" for example simply do not work, because perf remains
in the foreground even as it tracks forked children.

This patch adds an explanation of the behavior expected by the init
script and offers a solution for getting that behavior.

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2022-06-16 12:00:23 -04:00
anlan_cs
e3f05a8a1a zebra: adjust one variable name
Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-06-16 10:15:12 -04:00
Russ White
93ab9a2c0b
Merge pull request #11409 from donaldsharp/zebra_nhg_debug
Zebra nhg debug
2022-06-16 10:13:20 -04:00
Rafael Zalamena
952071e44a
Merge pull request #11414 from donaldsharp/memory_cannot_fail
Memory cannot fail
2022-06-16 10:58:05 -03:00
anlan_cs
f978382d78 lib: correct two comments
Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-06-16 08:39:34 -04:00
Francois Dumontet
09f267ec95 bmp: add a interface source to bmp connect command
With current release, forcin the source ip address when setting up a BMP
connection is not possible.

The need is to add an extra parameter for the following vty command:

router bgp 65500
bmp targets AAA
bmp connect 2.2.2.2 port 666 min-retry 100 max-retry 700
bmp connect 2:2::2:2 port 666 min-retry 100 max-retry 700 [source-interface lo1]

Signed-off-by: Francois Dumontet <francois.dumontet@6wind.com>
2022-06-16 12:51:11 +02:00
Donald Sharp
f3d6bfd13e
Merge pull request #11272 from AbhishekNR/flag_removal
pim6d: Removed PIM_IPV == 4 flag
2022-06-15 20:19:34 -04:00
Donald Sharp
88158815a7
Merge pull request #11405 from kuldeepkash/multicast_pim_bsm
tests: Verify PIM neighbors and static routes for BSM tests
2022-06-15 20:17:56 -04:00
Donald Sharp
77c98a18b9
Merge pull request #11412 from mobash-rasool/fixes
pimd: Fix the setting of oif_flags in channel oil
2022-06-15 20:17:16 -04:00
Donald Sharp
b64bd72183
Merge pull request #11416 from opensourcerouting/ldp_vpls_topo1_fix
tests: fix ldp_vpls_topo1 to work as expected
2022-06-15 19:19:04 -04:00
Renato Westphal
62e91cdcf2 doc: document ldpd's "ttl-security" commands
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2022-06-15 14:12:35 -03:00
Renato Westphal
45f64029dc tests: fix ldp_vpls_topo1 to work as expected
In the last step of this test, r1's link to r2 is shut down but
both routers stay connected through a multi-hop LDP session. That
happens because r1 and r2 have a targeted adjacency created by
the pseudowire.  The test then checks whether the pseudowire is
still up, using an alternate path for nexthop resolution.

Everything's fine except for the fact that LDP GTSM (aka
ttl-security) is enabled by default. This means that messages sent
over a multi-hop session are not delivered. In the case of this
test, it can prevent PW-Status notifications from being delivered,
which in turn can prevent the pseudowire from coming back up.

Fix the test by disabling GTSM so that LDP multi-hop sessions can
work normally. This is in accordance with RFC6720 which mentions
that GTSM should be disabled (statically or dynamically) for
multi-hop sessions.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2022-06-15 12:59:45 -03:00
Donald Sharp
668bbbce51
Merge pull request #11355 from patrasar/pim6reg
pim6d: creating pim6reg
2022-06-15 11:29:25 -04:00
Donald Sharp
8b9b1d6043 zebra: On linux let interface data come in through netlink messaging
Consolidate on linux to using the netlink api for gathering all data
about a interface.  Leave this interface alone in the meantime for
other OS's.

This also has the side effect of reducing the amount of work
being done on linux in that FRR was handling shut/no shut
events 2 times.  Once for the ioctl question asked and
once for the netlink message received.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:34:30 -04:00
Donald Sharp
7c4910cead zebra: Attempt to make ioctl.c have a bit more useful log messges
While examining the code, it was noticed that there was a chance
to improve the log output in some cases to give a fuller understanding
of what went wrong where.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:34:30 -04:00
Donald Sharp
442321664b bgpd, ospfd: Remove extra newline for show debugging
This extra newline was adding a weird output to `show debugging`
display where there would be extra newlines sometims and not
others.  Make it consistent.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:34:30 -04:00
Donald Sharp
d9db1a4092 zebra: stream_dup cannot fail
If stream_dup was unable to actually allocate memory
then FRR would crash instead.  So let's remove the
check for null since it is not needed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:24:01 -04:00
Donald Sharp
ab08ef8230 lib: stream_dup memory alloc cannot fail
If stream_dup calls stream_new, stream_new can never
return a NULL pointer so the check is unneeded.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-15 10:24:01 -04:00
Sarita Patra
ee1c4ba977 pim6d: creating pim6reg interface for pim6d
Signed-off-by: Sarita Patra <saritap@vmware.com>
2022-06-15 06:10:47 -07:00
mobash-rasool
677106de01
Merge pull request #11404 from donaldsharp/pim_rpf_debug_improvement
pimd: Cleanup rpf lookup debug to help us figure out what is going on
2022-06-15 18:40:37 +05:30
Donald Sharp
cdfeb53cbd
Merge pull request #11400 from opensourcerouting/fix/vrf_autocomplete_for_router_bgp
vtysh: Add autocomplete for VRFs when using with `router bgp`
2022-06-15 07:19:39 -04:00
Donald Sharp
62acc92ed7
Merge pull request #11403 from maxiestudies/doc_routeserver
replace the import/export keywords for in/out
2022-06-15 07:18:11 -04:00
Mobashshera Rasool
692b118698 pimd: Fix the setting of oif_flags in channel oil
When pim_upstream_inherited_olist_decide calls the api
pim_channel_add_oif, it can pass PIM_OIF_FLAG_PROTO_GM,
PIM_OIF_FLAG_PROTO_PIM and/or PIM_OIF_FLAG_PROTO_STAR.
Now a consider a case where PIM flag was already set
but STAR flag was not set and this api tries to set
both STAR + PIM and passes the same. The api pim_channel_add_oif
returns since it sees that PIM is already set without
setting the STAR flag.

So basically this will lead to issues in scenarios where for the
same OIF multiple flags(IGMP, PIM, STAR) needs to be set.

Fixing it for all combinations.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2022-06-15 00:55:55 -07:00
Donald Sharp
89f76cd132
Merge pull request #11407 from opensourcerouting/ldp_topo1_fix
tests: fix sporadic failures in the ldp_topo1 topotest
2022-06-14 20:27:01 -04:00
Donald Sharp
68d188be7a zebra: Convert debugs to use %pNG
The nexthop group debugs were using %u to just display the id.
I found this very hard to figure out what was going on.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-14 20:25:56 -04:00
Donald Sharp
cc75cbea1b zebra: Add %pNG to zebra print routines
Add `%pNG` so that a nexthop group can be displayed in debugs/logs
such that it can provide useful information.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-14 20:25:56 -04:00
Kuldeep Kashyap
697ce62f7a tests: Verify PIM neighbor and static routes for BSM tests
Verifying and making sure PIM neighbors are
up before sending BSM packet using Scapy.

Verifying static routes are installed before
proceeding fruther.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
2022-06-14 14:23:09 -07:00
Donald Sharp
f7a410a7c3 lib: Abstract usage of '%pNHs' so that nexthop groups can use it too
Abstract the usage of '%pNHs' so that when nexthop groups get
a new special printfrr that it can take advantage of this
functionality too.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-14 15:40:36 -04:00
Donald Sharp
f90391998c
Merge pull request #11229 from anlancs/fix/zebra-nb-remove-checknode
zebra: remove one unnecessary check for l3vni nb
2022-06-14 13:58:16 -04:00
Donald Sharp
853585a7cd tests: Fix verify_rib such that it will look at the selected route
When you have a static route with multiple different admin
distances there exists a chance that route will have been
installed multiple times due to system load when inserted
at about the same time.  If this is the case then the
verify_rib function can and will select the wrong route
that happens to have a nexthop group that is still installed.

Modify verify_rib to ensure that the route that is going to
be looked at for nexthop correctness is the actual installed
route, not a previous version of it.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-14 12:21:19 -04:00
Donald Sharp
a1340e6de4
Merge pull request #11243 from patrasar/pimv6_issue_11240
pim6d: Don't enable mld on pimreg interface by default
2022-06-14 11:59:42 -04:00
Renato Westphal
1c333cbed9 tests: fix sporadic failures in the ldp_topo1 topotest
The sporadic failures were happening because, under heavy load,
the r4 router could form an OSPF adjacency with r3 a few seconds
before doing the same with r2. In that interim, LDP could establish
a neighborship with r2 going through r3 (instead of connecting
directly). That would cause all label mappings received from r3
to be ignored since they can't be mapped to the routes' nexthops
received from zebra, causing all sorts of test failures. None of
this is erroneous behavior as LDP simply follows the IGP.

The fix consists of updating the test to ensure all expected OSPF
adjacencies fully converged before proceeding to the LDP checks.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2022-06-14 12:21:30 -03:00