Commit Graph

30066 Commits

Author SHA1 Message Date
Donald Sharp
e3e3d729c4
Merge pull request #12066 from opensourcerouting/cleanup-cli-xref
*: clean up various CLI-related bits
2022-10-13 13:47:04 -04:00
Carmine Scarpitta
a9f75ca33b bgpd: Add missing debug guard in SRv6 L3VPN code
This commit adds a missing debug guard in `ensure_vrf_tovpn_sid()`.

Signed-off-by: Carmine Scarpitta <carmine.scarpitta@uniroma2.it>
2022-10-13 17:26:24 +02:00
Russ White
fd30c2467a
Merge pull request #12115 from donaldsharp/ospf_unnumbered_showdown
ospfd: Allow unnumbered and numbered addresses to co-exist better
2022-10-13 11:02:17 -04:00
Russ White
07735ca345
Merge pull request #11980 from isabelladeleon12/set_overload_startup
isisd: Add support for set-overload on-startup
2022-10-13 10:59:24 -04:00
anlan_cs
87d454cce9 ospfd: pass the length of string to function
Fix CID 1526337: (SIZEOF_MISMATCH)

Needs to pass the correct length to the function.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
2022-10-13 21:30:46 +08:00
Donald Sharp
05139d1026
Merge pull request #12116 from alexclewontin/snapcraft-arch
snapcraft: fix staging libssh on non-x86 arches
2022-10-13 09:23:08 -04:00
Donald Sharp
b5864d339b
Merge pull request #12121 from opensourcerouting/feature/tag_prs_with_conflicts
github: Add `conflicts`/`no_conflicts` labels for PRs
2022-10-13 09:21:40 -04:00
Donald Sharp
361c80619a
Merge pull request #12122 from opensourcerouting/fix/use_install_instead_of_touch_chown_combination
tools: Use `install` instead of `touch/chown` combination
2022-10-13 08:58:25 -04:00
Donatas Abraitis
972cdc560e tools: Use install instead of touch/chown combination
touch + chown can have a gap between the commands (or the second failed).

This could lead to unexpected permissions (root, instead of frr) for some
.conf files or directories.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-13 11:14:07 +03:00
Donatas Abraitis
1cc861a9c3 github: Add conflicts/no_conflicts labels for PRs
Just to quickly identify which PRs needs attention on rebasing.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-13 08:18:59 +03:00
Donatas Abraitis
0407bb2dc0
Merge pull request #12108 from donaldsharp/general_mayhem
General mayhem
2022-10-13 08:08:27 +03:00
Isabella de Leon
450841fe05 isisd: Add JSON object functions to save overload status between restarts.
Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2022-10-12 16:57:32 -07:00
Alex Lewontin
47cdbea73c
snapcraft: fix staging libssh on non-x86 arches
Signed-off-by: Alex Lewontin <alex.lewontin@canonical.com>
2022-10-12 17:20:25 -04:00
Donald Sharp
5136e67294 ospfd: Allow unnumbered and numbered addresses to co-exist better
When forming a neighbor relationship on an interface, ospf is
currently evaluating unnumbered as highest priority, without
any consideration for if you have /32's and non /32's on the
interface.  Effectively if I have something like this:

int foo0
  ip address 192.168.119.1/24
!
router ospf
  network 0.0.0.0/0 area 0
!

ospf will form a neighbor on foo0 if it exists.  Now
suppose someone does this:

int foo0
  ip address 192.168.120.1/32

This will create the unnumbered interface on foo0 and
the peering will come down immediately.

The problem here is that the original designers of the unnumbered
code for ospf didn't envision end operators mixing and matching
addresses on an interface like this ( for perfectly legitimate
reasons I might add ).

So if ospf has both numbered and unnumbered let's match against
the numbered first and then unnumbered.  This solves the problem

Fixes: #6823
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 16:20:30 -04:00
Russ White
16f88c704c
Merge pull request #12053 from opensourcerouting/feature/accept_own_extended_community_single_rr
bgpd: Implement ACCEPT_OWN extended community
2022-10-12 15:58:23 -04:00
Donald Sharp
4801fc4670 bgpd: Allow network XXX to work with bgp suppress-fib-pending
When bgp is using `bgp suppress-fib-pending` and the end
operator is using network statements, bgp was not sending
the network'ed prefix'es to it's peers.  Fix this.

Also update the test cases for bgp_suppress_fib to test
this new corner case( I am sure that there are going to
be others that will need to be added ).

Fixes: #12112
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 14:56:27 -04:00
Isabella de Leon
4afc783610 isisd: Add expected behavior with set-overload-bit
Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
2022-10-12 10:52:27 -07:00
Punith Kumar S
d19cae9f34 ospfd: change default ospf schedule abr task timer
Signed-off-by: Punith Kumar S <punith.shivakumar@sophos.com>
2022-10-12 15:27:43 +00:00
Donatas Abraitis
46dbf9d0c0 bgpd: Implement ACCEPT_OWN extended community
TL;DR: rfc7611.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-12 17:48:43 +03:00
Russ White
984eb32b58
Merge pull request #11159 from maduri111/bgpd-orr
bgpd: optimal route reflection
2022-10-12 09:30:36 -04:00
Donatas Abraitis
87d54383c5
Merge pull request #12059 from achernavin22/fix-max-med-on-startup
bgpd: fix "bgp max-med on-startup"
2022-10-12 16:19:06 +03:00
Russ White
b6aa61ba3c
Merge pull request #11981 from proelbtn/add-support-to-change-function-length
bgpd: Add support to change Segment Routing function length
2022-10-12 08:44:29 -04:00
Donald Sharp
8460069326
Merge pull request #12105 from opensourcerouting/fix/bgp_list_sequence_handling_frr-reload
tools: Handle sequence numbers for BGP community (large/ext) in frr-reload.py
2022-10-12 07:41:56 -04:00
Donald Sharp
54fcc739b8 zebra: Cleanup memory leaks on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 07:39:23 -04:00
Donald Sharp
b1d29673ca ripngd: Cleanup memory allocations on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 07:39:23 -04:00
Donald Sharp
3d1588d8ed ripd: Cleanup memory allocations on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 07:39:23 -04:00
Donald Sharp
823d80d155 zebra: zrouter.mh_info is leaked on shutdown
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 07:39:23 -04:00
Donald Sharp
ca28a0f6fa lib: Free some memory in scripting subsystem at shutdown
Pre:
staticd: showing active allocations in memory group libfrr
staticd: memstats:  Scripting                     :     16 * (variably sized)
staticd: memstats:  Hash                          :      2 * (variably sized)
staticd: memstats:  Hash Bucket                   :      8 *         32
staticd: memstats:  Hash Index                    :      1 * (variably sized)
staticd: memstats:  Link List                     :      1 *         40
staticd: memstats:  Link Node                     :      1 *         24
staticd: showing active allocations in memory group logging subsystem
staticd: memstats:  log file target               :      1 *         88
staticd: showing active allocations in memory group staticd

Post:
staticd: showing active allocations in memory group libfrr
staticd: showing active allocations in memory group logging subsystem
staticd: memstats:  log file target               :      1 *         88
staticd: showing active allocations in memory group staticd

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 07:39:23 -04:00
Donald Sharp
08040409cc staticd: Clean up zclient on shutdown
The zclient data structure was not being cleaned up on shutdown.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-10-12 07:39:23 -04:00
Madhuri Kuruganti
80f6ea8b99 bgpd: code review comments addressed
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:48:23 +05:30
Madhuri Kuruganti
bba9435157 bgpd, ospfd: update BGP when routes are removed from OSPF routing table
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:43:55 +05:30
Madhuri Kuruganti
5fcf01c9ae bgpd: fix for crash when no neighbor A.B.C.D remote-as AS_NUM with orr config
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:43:55 +05:30
Madhuri Kuruganti
9f2984d97c ospfd: few fixes in rSPF calc when LSA received from non root node
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:43:55 +05:30
Madhuri Kuruganti
d6b2761134 bgpd, ospfd: BGP ORR CI warning fixes
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:43:55 +05:30
Madhuri Kuruganti
a3d3a14c09 ospfd: rSPF calc and messaging for optimal route reflection
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:43:55 +05:30
Madhuri Kuruganti
70cd87ca02 bgpd: optimal router reflection cli and fsm changes
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:43:55 +05:30
Madhuri Kuruganti
2b55ff400f doc: Add documentation for BGP ORR support
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:29:24 +05:30
Madhuri Kuruganti
a5dd4bf47d lib: BGP registration with IGP for BGP ORR rSPF calc
Signed-off-by: Madhuri Kuruganti <maduri111@gmail.com>
2022-10-12 13:29:24 +05:30
Donatas Abraitis
69c736ec06
Merge pull request #12074 from donaldsharp/lib_debugs
*: Create and use infrastructure to show debugs in lib
2022-10-12 10:38:21 +03:00
Donatas Abraitis
4b7ad630e0
Merge pull request #12091 from kuldeepkash/update_assert_msg
tests: [topojson]Update assert messages for better debugging
2022-10-12 10:37:10 +03:00
Stephen Worley
100290e449 bgpd: fix vni table output broken by 8304dabfab
Fix vni table output broken by 8304dabfab

The "Imported from" output was not getting delimitted by a newline
after the mentioned commit. This fixes that and retains the output
wanted by the original change.

Before:

'''
  Route [2]:[0]:[48]:[b6:3a:cc:d5:a1:cd]:[128]:[fe80::b43a:ccff:fed5:a1cd] VNI 30/10  Imported from 2.2.2.2:4:[2]:[0]:[48]:[b6:3a:cc:d5:a1:cd]:[128]:[fe80::b43a:ccff:fed5:a1cd], VNI 30/10

  2
    2.2.2.2(alfred) from alfred(veth1) (2.2.2.2)
      Origin IGP, valid, external, bestpath-from-AS 2, best (First path received)
      Extended Community: RT:2:30 ET:8
      Last update: Fri Oct  7 16:04:59 2022
'''

After:

'''
  Route [2]:[0]:[48]:[b2:cf:96:70:4f:b6]:[128]:[fe80::b0cf:96ff:fe70:4fb6] VNI 30/10
  Imported from 2.2.2.2:4:[2]:[0]:[48]:[b2:cf:96:70:4f:b6]:[128]:[fe80::b0cf:96ff:fe70:4fb6], VNI 30/10
  2
    2.2.2.2(alfred) from alfred(veth1) (2.2.2.2)
      Origin IGP, valid, external, bestpath-from-AS 2, best (First path received)
      Extended Community: RT:2:30 ET:8
      Last update: Fri Oct  7 17:02:28 2022
'''

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-10-11 16:18:21 -04:00
Stephen Worley
8476d11c49 doc: add new show bgp vni ... command to docs
Add new `show bgp vni ...` command to docs. This command
is used to show the per-VNI EVPN tables in BGP.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-10-11 16:18:21 -04:00
Trey Aspelund
b5118501ac bgpd: don't unlock bgp_dest twice
Both install_evpn_route_entry_in_vni_mac() and
install_evpn_route_entry_in_vni_ip() will unlock the bgp_dest when
install_evpn_route_entry_in_vni_common() returns, so there's no need to
unlock the bgp_dest inside the _common function.  Let's let the new
wrappers handle the cleanup of the dest.

Ticket: #3119673

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2022-10-11 16:18:21 -04:00
Stephen Worley
15919b8915 bgpd: add show bgp vni <VNI|all> json commands
Add add show bgp vni <VNI|all> json commands.

This is very similar to the old `show bgp evpn l2vpn vni route json`
commands but adds a new `macTable` object under the normal output.

This may change in the future but doing it like this for now

VNI ALL:

```
{
"1002":{
"vni":1002,
"[2]:[0]:[48]:[00:00:00:00:00:00]:[128]:[fe80::202:ff:fe00:9]":{
  "prefix":"[2]:[0]:[48]:[00:00:00:00:00:00]:[128]:[fe80::202:ff:fe00:9]",
  "prefixLen":352,
  "paths":[
    [
      {
        "valid":true,
        "pathFrom":"external",
...
...
...
    "numPrefix":4,
    "numPaths":7,
    "macTable":{
      "[2]:[0]:[48]:[00:02:00:00:00:09]":{
        "prefix":"[2]:[0]:[48]:[00:02:00:00:00:09]",
        "prefixLen":352,
        "paths":[
          [
            {
              "valid":true,
              "pathFrom":"external",

```

VNI 1002:

```
{
  "[2]:[0]:[48]:[00:00:00:00:00:00]:[128]:[fe80::202:ff:fe00:9]":{
    "prefix":"[2]:[0]:[48]:[00:00:00:00:00:00]:[128]:[fe80::202:ff:fe00:9]",
    "prefixLen":352,
    "paths":[
      [
        {
          "valid":true,
          "pathFrom":"external",
...
...
...
  "numPrefix":4,
  "numPaths":7,
  "macTable":{
    "[2]:[0]:[48]:[00:02:00:00:00:09]":{
      "prefix":"[2]:[0]:[48]:[00:02:00:00:00:09]",
      "prefixLen":352,
      "paths":[
        [
          {
            "valid":true,
            "pathFrom":"external",
```

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-10-11 16:18:21 -04:00
Stephen Worley
0653625d3b zebra: add some neigh del not found debugs
Add some neigh deletion debugs for when the neigh isn't
found or there is a MAC mismatch on what was sent and found.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-10-11 16:18:21 -04:00
Stephen Worley
852d9f9757 bgpd,zebra,lib: bgp evpn vni macip into two tables
Re-work the bgp vni table to use separately keyed tables for type2
routes.

So, with type2 routes, we have the main table keyed off of the IP and a
new MAC table keyed off of MACs.

By separating out the two, we are able to run path selection separately
for the neigh and mac. Keeping the two separate is also more in-line
with what happens in zebra (they are managed comptletely seperate).

With this change type2 routes go into each table like so:

```
Remote MAC-IP -> IP Table & MAC Table
Remote MAC -> MAC Table

Local MAC-IP -> IP Table
Local MAC -> MAC Table
```

The difference for local is necessary because we should not ever allow
multiple paths for a local MAC.

Also cleaned up the commands for querying the vni tables:

```
show bgp vni all type ...
show bgp vni VNI type ...

```

Old commands will be deprecated in a separate commit.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-10-11 16:18:21 -04:00
Donatas Abraitis
63f99a91c8 tools: Apply black formatting for frr-reload.py
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-11 22:38:30 +03:00
Donatas Abraitis
8bcbee1999 tools: Handle sequence numbers for BGP community (large/ext) in frr-reload.py
If we add/modify community/large/ext lists without sequence numbers, and
doing frr-reload.py, then rules with sequence numbers (show running-config
always adds sequence numbers) will be deleted and new ones will be re-added.

This could lead to blackholing for some time.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2022-10-11 22:36:26 +03:00
Anuradha Karuppiah
36bac85c7f bgpd: sync seq numbers only if the MAC address is the same
We locate the sync path with the highest seq number for normalizing
local path to the same seq. With the change to maintain the VNI RT table
by IP address (instead of MAC&IP) we need additional changes to skip
paths with a different mac address than the local one we are trying to
normalize.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2022-10-11 15:18:39 -04:00
Anuradha Karuppiah
90f30caa24 bgpd: include ESI in the zebra update log
Log changes only; no functional change.

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2022-10-11 15:18:39 -04:00