Donatas Abraitis
387a5ffe5a
tests: Add more tests for labeled-unicast and addpath
...
Check if we advertise more routes when an additional path comes up, and
if we withdraw if dissapears.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-09 14:12:32 +02:00
Donatas Abraitis
c8cfee4e3b
Merge pull request #12470 from donaldsharp/cleanup_topos
...
tests: ospf_gr_helper tests are slow
2022-12-09 09:20:00 +02:00
Donatas Abraitis
d71f616734
Merge pull request #12473 from donaldsharp/ensure_used
...
bgpd: Don't always allocate json memory in non-json path
2022-12-09 09:17:45 +02:00
Donald Sharp
5691f760d2
bgpd: Don't always allocate json memory in non-json path
...
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-08 18:22:17 -05:00
Ryoga Saito
2b0efccd05
tests: Add topotest bgp_vrf_leaking_5549_routes
...
To verify previous changes, this PR introduces topotest to verify
whether imported routes learnt from BGP unnumbered peers will be active
on VPN RIB and other VRF RIB.
Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
2022-12-09 07:13:54 +09:00
Donatas Abraitis
e535be623a
github: Prevent running actions on forked repositories
...
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-08 22:54:28 +02:00
Trey Aspelund
433d9566bf
doc: add FRR/Linux configuration examples for EVPN
...
The existing EVPN documentation in bgp.rst does not provide a holistic
configuration, just examples of individual features, and doesn't give
an operator any idea of what a compatible Linux netdev configuration
might look like. This introduces evpn.rst which includes a sample
frr.conf and corresponding Linux interface config (via iproute2) that
an operator can use to setup a basic EVPN topology and model their
interface manager's config from.
This initial version of evpn.rst shows Linux netdev config for
traditional bridges (vlan_filtering=0) and traditional vxlan devices
(single VNI). Later changes to this file will cover the use of
VLAN-aware bridges (vlan_filtering=1), single VXLAN devices
(multi VNI), and eventually bonds (for EVPN-MH).
Eventually the plan is to move the existing EVPN content from bgp.rst
into evpn.rst, but for now let's get some user-facing documentation in
place for interface configs.
Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2022-12-08 14:34:20 -05:00
Donald Sharp
57968e38a9
Merge pull request #12463 from opensourcerouting/fix/totalPrefixCounter_with_default_originate
...
bgpd: totalPrefixCounter incorectly shows sent prefix count
2022-12-08 14:31:31 -05:00
Donald Sharp
abc8c68bea
Merge pull request #12468 from mjstapp/fix_log_command_types
...
lib: fix zlog command types table
2022-12-08 14:22:36 -05:00
Donald Sharp
f47c65ff87
tests: ospf_gr_helper tests are slow
...
With a dead interval of 40 seconds, each tests is waiting 40+
seconds for ospf convergence to occurr because the DR is re-elected
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-08 14:20:23 -05:00
Quentin Young
71ee1fa3a4
Merge pull request #12430 from opensourcerouting/accords
2022-12-08 12:39:48 -05:00
Mark Stapp
447586fd3c
lib: fix zlog command types table
...
Fix a number of differences between the zapi message enum
and the log description table.
Signed-off-by: Mark Stapp <mjs@labn.net>
2022-12-08 11:37:51 -05:00
Donatas Abraitis
ff1163a3b1
Merge pull request #12461 from donaldsharp/evpn_mh_crash
...
bgpd: Prevent crash in evpn when using default vrf
2022-12-08 16:35:11 +02:00
Donatas Abraitis
dd426a51e3
bgpd: Deprecate bgpStatusCodes
and bgpOriginCodes
...
```
donatas-pc# sh ip bgp neighbors 192.168.10.124 advertised-routes json
{
"bgpTableVersion":11,
"bgpLocalRouterId":"192.168.10.17",
"defaultLocPrf":100,
"localAS":65002,
"bgpStatusCodes":{
"suppressed":"s",
"damped":"d",
"history":"h",
"valid":"*",
"best":">",
"multipath":"=",
"internal":"i",
"ribFailure":"r",
"stale":"S",
"removed":"R"
},
"bgpOriginCodes":{
"igp":"i",
"egp":"e",
"incomplete":"?"
},
"advertisedRoutes":{
"200.200.200.200\/32":{
"addrPrefix":"200.200.200.200",
"prefixLen":32,
"network":"200.200.200.200\/32",
"nextHopGlobal":"2a02:4780:abc::2",
"weight":0,
"path":"65001",
"bgpOriginCode":"?",
"origin":"incomplete", <<<<<<<
"valid":true, <<<<<<<<
"best":true, <<<<<<<<
"appliedStatusSymbols":{
"*":true,
">":true
}
}
},
"totalPrefixCounter":1,
"filteredPrefixCounter":0
}
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-08 15:57:14 +02:00
David Lamparter
d3135b0189
doc: add FreeBSD 13 build docs
...
Some minor changes since FreeBSD 11, mostly fewer extra sauce.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-12-08 14:19:34 +01:00
David Lamparter
d9a2d546da
build: pim6d is Linux only
...
This stops breaking build on FreeBSD.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-12-08 12:45:38 +01:00
David Lamparter
9e46405ca2
build: fix sed regex in Lua macro
...
Using `\s` to match whitespace is not portable, use `[[:space:]]`
instead.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-12-08 12:39:17 +01:00
David Lamparter
ad5fef3ded
doc: introduce FRR community "accords"
...
The idea here is to pass "non-code agreements" through the PR review
mechanism, and have them visible in the git tree.
Two "example" (but real) accords are included, mostly to illustrate the
idea. Both of these should be non-controversial and have had some
previous discussion in random places.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-12-08 12:06:37 +01:00
Donatas Abraitis
65565c9a3f
bgpd: totalPrefixCounter incorectly shows sent prefix count
...
Using: show bgp ipv4 unicast neighbors 192.168.12.2 advertised-routes json
Before:
```
"bgpOriginatingDefaultNetwork":"0.0.0.0\/0",
"advertisedRoutes":{
"192.168.12.0\/24":{
"addrPrefix":"192.168.12.0",
"prefixLen":24,
"network":"192.168.12.0\/24",
"nextHop":"0.0.0.0",
"metric":0,
"weight":32768,
"path":"",
"bgpOriginCode":"?",
"appliedStatusSymbols":{
"*":true,
">":true
}
}
},
"totalPrefixCounter":1,
"filteredPrefixCounter":0
```
After:
```
"bgpOriginatingDefaultNetwork":"0.0.0.0\/0",
"advertisedRoutes":{
"192.168.12.0\/24":{
"addrPrefix":"192.168.12.0",
"prefixLen":24,
"network":"192.168.12.0\/24",
"nextHop":"0.0.0.0",
"metric":0,
"weight":32768,
"path":"",
"bgpOriginCode":"?",
"appliedStatusSymbols":{
"*":true,
">":true
}
}
},
"totalPrefixCounter":2,
"filteredPrefixCounter":0
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-07 23:36:00 +02:00
Donatas Abraitis
31f77524bf
tests: Check if default-originate works with labeled-unicast
...
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-07 23:24:28 +02:00
Donatas Abraitis
2de5f5b5f8
bgpd: Announce labeled-unicast default-originate
...
Without this patch, this just crashes:
```
(gdb) bt
0 raise (sig=sig@entry=11) at ../sysdeps/unix/sysv/linux/raise.c:51
1 0x00007f66d977b10c in core_handler (signo=11, siginfo=0x7ffd87aa0430, context=<optimized out>) at lib/sigevent.c:261
2 <signal handler called>
3 stream_put_labeled_prefix (s=s@entry=0x55bd3ce53050, p=p@entry=0x7ffd87aa0a20, label=label@entry=0x0, addpath_capable=<optimized out>, addpath_tx_id=addpath_tx_id@entry=1)
at lib/stream.c:1057
4 0x000055bd3bfba176 in bgp_packet_mpattr_prefix (s=s@entry=0x55bd3ce53050, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_LABELED_UNICAST, p=p@entry=0x7ffd87aa0a20, prd=prd@entry=0x0,
label=label@entry=0x0, num_labels=0, addpath_capable=true, addpath_tx_id=1, attr=0x7ffd87aa2c20) at bgpd/bgp_attr.c:3964
5 0x000055bd3bfba2b5 in bgp_packet_attribute (bgp=0x55bd3cd8e470, bgp@entry=0x0, peer=peer@entry=0x55bd3cf21fc0, s=s@entry=0x55bd3ce53050, attr=attr@entry=0x7ffd87aa2c20,
vecarr=vecarr@entry=0x7ffd87aa0a10, p=p@entry=0x7ffd87aa0a20, afi=AFI_IP, safi=SAFI_LABELED_UNICAST, from=0x7f66d9ba9010, prd=0x0, label=0x0, num_labels=0, addpath_capable=true,
addpath_tx_id=1, bpi=0x0) at bgpd/bgp_attr.c:4139
6 0x000055bd3c04d455 in subgroup_default_update_packet (subgrp=subgrp@entry=0x55bd3cd885b0, attr=attr@entry=0x7ffd87aa2c20, from=from@entry=0x7f66d9ba9010) at bgpd/bgp_updgrp_packet.c:1129
7 0x000055bd3c04a9a5 in subgroup_default_originate (subgrp=0x55bd3cd885b0, withdraw=withdraw@entry=0) at bgpd/bgp_updgrp_adv.c:972
8 0x000055bd3c022668 in bgp_default_originate (peer=peer@entry=0x7f66d574a010, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_LABELED_UNICAST, withdraw=withdraw@entry=0)
at bgpd/bgp_route.c:5037
9 0x000055bd3c0922e0 in peer_default_originate_set (peer=0x7f66d574a010, afi=afi@entry=AFI_IP, safi=safi@entry=SAFI_LABELED_UNICAST, rmap=rmap@entry=0x0, route_map=route_map@entry=0x0)
at bgpd/bgpd.c:5428
10 0x000055bd3c076c07 in peer_default_originate_set_vty (set=1, rmap=0x0, safi=SAFI_LABELED_UNICAST, afi=AFI_IP, peer_str=<optimized out>, vty=0x55bd3ce4c900) at bgpd/bgp_vty.c:6941
11 neighbor_default_originate (self=<optimized out>, vty=0x55bd3ce4c900, argc=<optimized out>, argv=<optimized out>) at bgpd/bgp_vty.c:6958
12 0x00007f66d9721dc0 in cmd_execute_command_real (vline=vline@entry=0x55bd3cd874d0, vty=vty@entry=0x55bd3ce4c900, cmd=cmd@entry=0x0, up_level=up_level@entry=0, filter=FILTER_RELAXED)
at lib/command.c:996
13 0x00007f66d9721f39 in cmd_execute_command (vline=vline@entry=0x55bd3cd874d0, vty=vty@entry=0x55bd3ce4c900, cmd=cmd@entry=0x0, vtysh=vtysh@entry=0) at lib/command.c:1055
14 0x00007f66d9722162 in cmd_execute (vty=vty@entry=0x55bd3ce4c900, cmd=cmd@entry=0x55bd3cd8a230 "neighbor 192.168.34.4 default-originate ", matched=matched@entry=0x0, vtysh=vtysh@entry=0)
at lib/command.c:1223
15 0x00007f66d9792337 in vty_command (vty=vty@entry=0x55bd3ce4c900, buf=<optimized out>) at lib/vty.c:486
16 0x00007f66d9792570 in vty_execute (vty=0x55bd3ce4c900) at lib/vty.c:1249
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-07 23:18:07 +02:00
Donald Sharp
dc9ca53f94
bgpd: Prevent crash in evpn when using default vrf
...
The default vrf in bgp when created, ends up having the
bgp->name as NULL. This of course crashes the ilk
of `json_object_string_add` when a NULL is passed in.
Go through all the places in bgp_evpn_mh.c and fix
so that it doesn't crash.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-07 14:06:12 -05:00
Donald Sharp
91aaed76c5
Merge pull request #12460 from opensourcerouting/msdp-fixes
...
pimd: two MSDP packet handling fixes
2022-12-07 13:17:25 -05:00
Rafael Zalamena
1dd422a22b
pimd: fix MSDP packet debug crashes
...
Add some safe guards to avoid crashes and alert us about programming
errors in packet build.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2022-12-07 11:49:26 -03:00
Rafael Zalamena
d49810329d
pimd: fix MSDP crash on unexpected TLV sizes
...
Increase the MSDP peer stream buffer size to handle the whole TLV
(maximum is 65KiB due to 16bit field). If the stream is not resized
there will be a crash in the read function attempting to put more than
9192 (`PIM_MSDP_SA_TLV_MAX_SIZE`) bytes.
According to the RFC 3618 Section 12 we should accept the TLV and we
should not reset the peer connection.
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2022-12-07 11:48:47 -03:00
Donald Sharp
1b97fa9976
Merge pull request #12456 from opensourcerouting/fix/bgpd_labeled_unicast_rr_addpath
...
bgpd: Labeled unicast fixes for addpath capability
2022-12-07 08:03:59 -05:00
Donatas Abraitis
8ccee4b8cc
bgpd: Adopt addpath functionality for labeled-unicast
...
The same as for RIB, labeled-unicast allocations should live in
unicast space.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-06 21:39:15 +02:00
Donatas Abraitis
4d65410c54
bgpd: Show in JSON if the advertised path is multipath
...
```
"advertisedRoutes":{
"10.0.0.1\/32":{
"addrPrefix":"10.0.0.1",
"prefixLen":32,
"network":"10.0.0.1\/32",
"nextHop":"0.0.0.0",
"weight":0,
"path":"65001",
"bgpOriginCode":"?",
"appliedStatusSymbols":{
"*":true,
">":true,
"=":true
}
}
},
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-06 21:39:14 +02:00
Donald Sharp
0fce20b808
Merge pull request #12339 from anlancs/fix/bgpd-null-show
...
bgpd: fix null pointer dereference
2022-12-06 14:11:47 -05:00
Donald Sharp
d18b34f21f
Merge pull request #12455 from mjstapp/revert_stop_zebra_last
...
tools: revert stop zebra daemon last
2022-12-06 14:11:03 -05:00
Manoj Naragund
50a275d7c9
tests: Testcase for OSPFv3 learning.
...
Have added topotest to verify OSPF can learn different types of LSA,
and processes them
Signed-off-by: Manoj Naragund <mnaragund@vmware.com>
2022-12-06 09:11:16 -08:00
Russ White
7ad0f5e07e
Merge pull request #12415 from donaldsharp/bgp_use_after_free
...
Bgp use after free
2022-12-06 11:29:31 -05:00
Donatas Abraitis
b0ade0a111
tests: Check if labeled-unicast works correctly with addpath capability
...
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-12-06 18:24:13 +02:00
Mark Stapp
828ac45474
Revert "tools: stop zebra daemon last"
...
This reverts commit 2000ac4075
.
There were concerns that ensuring zebra stopped last led to
problems with zebra's "-r" flag, so we'll revert that for the
time being and reconsider this area.
Signed-off-by: Mark Stapp <mjs@labn.net>
2022-12-06 11:21:02 -05:00
Russ White
17ccfbb6c2
Merge pull request #12322 from fdumontet6WIND/confed_num
...
bgp: fix case where confederation id same as member-as
2022-12-06 08:59:44 -05:00
Russ White
d3e7592557
Merge pull request #12390 from sigeryang/vrrp-interop
...
vrrpd: add IPv4 pseudoheader option for VRRPv3
2022-12-06 08:57:17 -05:00
Russ White
be51a45984
Merge pull request #12410 from ghzserg/master
...
Add motd command
2022-12-06 08:55:20 -05:00
Donald Sharp
f13611d2f4
Merge pull request #12432 from mjstapp/use_real_mtypes
...
lib, zebra: Use real mtypes instead of MTYPE_TMP
2022-12-06 08:34:36 -05:00
Donatas Abraitis
90bf4243fb
Merge pull request #12443 from donaldsharp/vtysh_mem_leak_2
...
vtysh: free memory given to us by readline
2022-12-06 08:57:00 +02:00
Donatas Abraitis
ed7d45f828
Merge pull request #12436 from donaldsharp/general_use
...
General use
2022-12-06 08:51:39 +02:00
Donatas Abraitis
cee4c22a26
Merge pull request #12445 from donaldsharp/more_mtype_tmp
...
More mtype tmp
2022-12-06 08:23:01 +02:00
Donatas Abraitis
f44032cfc8
Merge pull request #12433 from donaldsharp/more_use_after_use_and_use
...
bgpd: Fix 2 read beyond end of streams in bgp srv6 packet processing
2022-12-05 22:46:07 +02:00
Donald Sharp
19a713be1d
bgpd: Make bgp_keepalives.c not use MTYPE_TMP
...
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-05 12:17:00 -05:00
Donald Sharp
4898cbaf1d
ospf6d: Stop using MTYPE_TMP in some cases
...
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-05 12:10:25 -05:00
Donald Sharp
253113bcb8
ospfd, ospfclient: Do not just include .c files in another .c
...
ospfclient.c includes .c files directly from ospfd. Let's separate
these out a bit.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-05 11:55:14 -05:00
Donald Sharp
29a1a53d6c
ospfd: Remove MTYPE_TMP
...
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-05 11:43:57 -05:00
Karl Quan
432e7e463e
bgpd: Adding BGP neighbor JSON output for neighbors never established a BGP adjacency
...
Some keys are only present in the JSON data of BGP neighbors are only present if the peer is, or has previously been established.
While they are not present if the peer has never come up.
To keep the data structure aligned, the below keys are added also to the neighbors that BGP adjacency has never been established.
Values of the keys are all set to Unknown
hostname:Unknown,
nexthop:Unknown,
nexthopGlobal:Unknown,
nexthopLocal:Unknown,
bgpConnection:Unknown,
Signed-off-by: Karl Quan <kquan@nvidia.com>
2022-12-05 08:06:36 -08:00
Mark Stapp
c0ce4875ff
zebra: use real MTYPEs for various objects
...
Don't use MTYPE_TMP for many things in zebra: add specific
mem types.
Signed-off-by: Mark Stapp <mjs@labn.net>
2022-12-05 10:55:35 -05:00
Donald Sharp
4da144f3d8
bgpd: Change fsm to use an enum for passing state
...
The BGP fsm uses return codes to pass event success/fail
as well as some extra data to the bgp_event_update function.
Convert this to use a enum instead of an int to track the
changes.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-05 10:10:36 -05:00
Donald Sharp
534db980a2
bgpd: When creating peer convey if it is a CONFIG_NODE or not
...
When actually creating a peer in BGP, tell the creation if
it is a config node or not. There were cases where the
CONFIG_NODE was being set *after* being placed into
the bgp->peerhash, thus causing collisions between the
doppelganger and the peer and eventually use after free's.
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-12-05 09:11:22 -05:00