Commit Graph

20865 Commits

Author SHA1 Message Date
Mark Stapp
850c85b980 lib: use const in nexthop_level() api
Use const in nexthop_level()

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-17 13:12:33 -04:00
Mark Stapp
e95f6d21d6 zebra: improve show output for routes with backups
Improve/clarify some show output for routes with backup
nexthops, esp. multiple backups.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-17 13:12:33 -04:00
Mark Stapp
28593bccc2 lib: support multiple backup nexthops in nexthop group cli
Revise the nexthop-group cli to support multiple backups for
a single primary nexthop.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-17 13:12:33 -04:00
Mark Stapp
0cac0cf4a7 lib: add nexthop_str2backup
Add an api to convert an input list into an array of backup
nexthop indexes; useful for cli input.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-17 13:12:33 -04:00
Mark Stapp
474aebd939 lib,sharpd,zebra: initial support for multiple backup nexthops
Initial changes to support a nexthop with multiple backups. Lib
changes to hold a small array in each primary, zapi message
changes to support sending multiple backups, and daemon
changes to show commands to support multiple backups. The config
input for multiple backup indices is not present here.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-17 13:12:33 -04:00
Don Slice
eb9113dfe3 tools: fix more frr-reload vrf static errors
Reported that in certain config changes, a static intended for the
default table would be duplicated into a vrf context.  Determined
that we still weren't keeping or adding the exit-vrf command when
necessary to keep the contexts straight.  Added logic to look for
the failing circumstances and add or remove the delete of the
exit-vrf command as needed.

Signed-off-by: Don Slice <dslice@nvidia.com>
2020-07-17 16:45:54 +00:00
Quentin Young
98145f13e2
Merge pull request #6760 from opensourcerouting/build-assorted-20200717
build & gcc-frr-format: assorted bits batch
2020-07-17 12:42:05 -04:00
Quentin Young
d58258e909
Merge pull request #6296 from vishaldhingra/static
staticd: static route NB configuration code
2020-07-17 12:39:03 -04:00
Sebastien Merle
98a3fb0ab9 zebra: add IPv6 router-id
* add a vrf sub-command `[no] ipv6 router-id X:X::X:X`.
 * add command `[no] ipv6 router-id X:X::X:X [vrf NAME]` for backward
   compatibility.
 * add a vrf sub-command `[no] ip router-id A.B.C.D` and make the old
   one without `ip` an alias for it.
 * add a  command `[no] ip router-id A.B.C.D [vrf NAME]` for backward
   comptibility and make the old one without `ip` an alias for it.
 * add command `show ip router-id [vrf NAME]` and make
   the old one without `ip` an alias for it.
 * add command `show ipv6 router-id [vrf NAME]`.
 * add ZAPI commands `ZEBRA_ROUTER_ID_V6_ADD`,
   `ZEBRA_ROUTER_ID_V6_DELETE` and `ZEBRA_ROUTER_ID_V6_UPDATE`
   for deamons to get notified of the IPv6 router-id.
 * update zebra documentation.

Signed-off-by: Sebastien Merle <sebastien@netdef.org>
2020-07-17 17:39:05 +02:00
Philippe Guibert
3b1de7b86d zebra: do not free iptable context, once created
This commit avoids freeing the iptable context, once created. the case
where there is an error when reading zapi stream simply needs to free
the zpi context.

Fixes: ("8b5c4dce07e6 zebra: fix iptable memleak, fix free funcs")

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-07-17 17:07:18 +02:00
Philippe Guibert
026b0e3b6f bgpd: flowspec pbr entries list display fix
the pbr entries list was not terminated with a carriage return and a
parenthesis.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-07-17 17:07:18 +02:00
Donald Sharp
7cc27d418f bgpd: Remove memset from bgp_zebra_announce
During perf testing of receiving and installing 7.5 million
routes into zebra it was noticed that memset in bgp_zebra_announce
was taking ~11% of the runtime.  With this change bgp_zebra_announce
now no longer has any appreciable time spent in memset as reported
by perf.  In addition bgp_zebra_announce run time in perf was
reduced by a composite amount.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-07-17 10:07:17 -04:00
Mark Stapp
7d4b857955
Merge pull request #6705 from sworleys/PBR-Fixes-More
pbrd: A couple pbr fixes
2020-07-17 08:54:54 -04:00
Mark Stapp
54651eaef9
Merge pull request #6759 from donaldsharp/rules_family
zebra: Silently ignore afi 128/129 for rules
2020-07-17 08:23:46 -04:00
David Lamparter
1a798bcb6b tools/gcc-frr-format: update README
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-17 05:56:40 +02:00
David Lamparter
20a236abe3 tools/gcc-frr-format: update debian bits
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-17 05:54:54 +02:00
David Lamparter
555cc1001d tools/gcc-frr-format: improve test
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-17 05:54:54 +02:00
David Lamparter
05675eb32f tools/gcc-frr-format: update for gcc 10
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-17 05:54:54 +02:00
David Lamparter
06852b5b5c build: fix Makefile rule redefinition
Signed-off-by: David Lamparter <equinox@diac24.net>
2020-07-17 05:54:54 +02:00
Donald Sharp
dfbe3a2bd3 zebra: Silently ignore afi 128/129 for rules
We do not need to know anything about rules in afi 128/129
at this point in time.  Just note it with a zebra kernel
debug and move on.  This is not something that a operator
can do anything with and at this point in time FRR
does not care.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-07-16 20:59:33 -04:00
Donald Sharp
721026f68c
Merge pull request #6752 from xThaid/evpn_neigh_fix
zebra: fix the installation of the evpn neighbor update
2020-07-16 20:09:08 -04:00
Renato Westphal
2d1ddebc8b
Merge pull request #6706 from donaldsharp/router_id_bullshit
Router id vrf subnode configuration
2020-07-16 18:09:38 -03:00
Mark Stapp
00a9b15005 zebra: include installed backup nexthops in kernel update
Include any installed backups when updating the local kernel
after processing an async notification. This includes routes'
nexthops and LSPs' nhlfes.

Add the 'b' character to the route show display and header to
indicate backup nexthops.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-16 14:18:37 -04:00
vdhingra
7aa6f9cd47 staticd: Formatting changes
Warning fixes for indentation

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 09:56:23 -07:00
vdhingra
314825ff91 staticd: Added afi-safi as a key in route-list
To address the ip mroute command there is a need to add
safi as a key. So adding the afi-safi-type identityref
as a key.

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:40:45 -07:00
vdhingra
755100ac89 zebra: Moving afi-safi identity to lib
afi-safi identity handling should be in the common place.

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:40:42 -07:00
vdhingra
88fa5104a0 staticd : Configuration northbound implementation
1. Modifies the data structs to make the distance, tag and table-id
   property of a route, i.e created a hireachical data struct to save
   route and nexthop information.
2. Backend northbound implementation

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:33:00 -07:00
vdhingra
7441ea1afd lib : basic-routing backend configuration northbound code
Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:33:00 -07:00
vdhingra
27802d3fee lib : Yang wrappers
1. To get the parent node
2. To auto delete the parent when last node in list gets deleted

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:33:00 -07:00
vdhingra
565f463e30 yang : removed leafref to run CI/CD
Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:33:00 -07:00
vdhingra
eac8547afe yang : nexthop yang modification
nexthop vrf is addded as a key along with nh-type, gateway,
interface.

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:33:00 -07:00
vdhingra
556d500694 yang: staticd yang modification
staticd yang has been modified to support below use cases
1. src-table for IPV6 address family.
2. distance,tag and table-id would be the key for a given prefix.

Signed-off-by: VishalDhingra <vdhingra@vmware.com>
2020-07-16 08:33:00 -07:00
Mark Stapp
43a9f66cd1 zebra: fix SA warnings in backup nexthop code
Fix a couple of recent SA warnings that came from backup
nexthop/nhlfe changes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-07-16 11:00:17 -04:00
Mark Stapp
5677e93f8f
Merge pull request #6751 from donaldsharp/pim_mem_leaks
Pim mem leaks
2020-07-16 10:45:26 -04:00
Donatas Abraitis
deee0dd830
Merge pull request #6519 from RichardWu-Hebut/master
bgpd: Fix the bug that BGP MRAI does not work.
2020-07-16 16:49:08 +03:00
Jakub Urbańczyk
45c80fbd08 zebra: fix installing an evpn neighbor update
Fix the function encoding evpn neighbor. The size of the buffer
for the netlink message wasn't correct and because of that we thought that
the message didn't fit entirely in the buffer and thus we were not sending
the update to the kernel.

Signed-off-by: Jakub Urbańczyk <xthaid@gmail.com>
2020-07-16 15:49:05 +02:00
Donald Sharp
e4e52805c9 pimd: Cleanup leaked memory from rp initialization
When creating a pim instance, we were allocating table information
but never freeing it.  Do so.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2020-07-16 08:16:39 -04:00
Donald Sharp
892c2c4468 pimd: Cleanup some small memory leaks on exit
We were not properly cleaning up some memory in the pim mlag
subsystem.  Clean it up on exit.

Signed-off-by: Donald Sharp <sharpc@cumulusnetworks.com>
2020-07-16 08:13:21 -04:00
Donald Sharp
249df50a20
Merge pull request #6701 from deastoe/ospf-area-format
ospf: set display format for range command
2020-07-15 20:17:39 -04:00
Donald Sharp
3eb15671ee
Merge pull request #6731 from opensourcerouting/style-string-prep
*: string coding style
2020-07-15 20:06:55 -04:00
Donald Sharp
c71ff7a60e
Merge pull request #6746 from opensourcerouting/topotests-wtf
topotests: stop the zombie apocalypse
2020-07-15 20:04:07 -04:00
Donatas Abraitis
5290ceab0c bgpd: Show the instance name when displaying statistics
```
exit1-debian-9# sh ip bgp vrf all statistics json
{
  "ipv4Unicast":[
    {
      "instance":"VRF default",
      "totalAdvertisements":2,
      "totalPrefixes":2,
      "averagePrefixLength":24,
      "unaggregateablePrefixes":2,
      "maximumAggregateablePrefixes":0,
      "bgpAggregateAdvertisements":0,
      "addressSpaceAdvertised":512,
      "%announced":1.1920928955078125e-05,
      "\/8equivalent":3.0517578125e-05,
      "\/24equivalent":2,
      "advertisementsWithPaths":2,
      "longestAsPath":0,
      "averageAsPathLengthHops":0,
      "largestAsPath":0,
      "averageAsPathSizeBytes":0,
      "highestPublicAsn":0
    },
    {
      "instance":"VRF testas",
      "totalAdvertisements":0,
      "totalPrefixes":0,
      "averagePrefixLength":0,
      "unaggregateablePrefixes":0,
      "maximumAggregateablePrefixes":0,
      "bgpAggregateAdvertisements":0,
      "addressSpaceAdvertised":0,
      "%announced":0,
      "\/8equivalent":0,
      "\/24equivalent":0,
      "advertisementsWithPaths":0,
      "longestAsPath":0,
      "averageAsPathLengthHops":0,
      "largestAsPath":0,
      "averageAsPathSizeBytes":0,
      "highestPublicAsn":0
    }
  ]
}
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-07-15 21:36:32 +03:00
Donatas Abraitis
71f1613a3f bgpd: Do not crash if bgp argument is NULL for bgp_table_stats()
```
(gdb) bt
0  0x00007f45a6f0a781 in raise () from /lib/x86_64-linux-gnu/libc.so.6
1  0x00007f45a6ef455b in abort () from /lib/x86_64-linux-gnu/libc.so.6
2  0x00007f45a7781920 in core_handler (signo=11, siginfo=0x7fffac7b84b0, context=<optimized out>) at lib/sigevent.c:228
3  <signal handler called>
4  0x000055a4133c0f32 in bgp_table_stats (vty=vty@entry=0x55a415acb240, bgp=0x0, afi=AFI_IP, safi=SAFI_UNICAST, json_array=json_array@entry=0x0) at bgpd/bgp_route.c:11412
5  0x000055a4133c13fb in show_ip_bgp_afi_safi_statistics (self=<optimized out>, vty=0x55a415acb240, argc=6, argv=<optimized out>) at bgpd/bgp_route.c:10749
6  0x00007f45a773917d in cmd_execute_command_real (vline=vline@entry=0x55a415ab7e10, vty=vty@entry=0x55a415acb240, cmd=cmd@entry=0x0, filter=FILTER_RELAXED)
    at lib/command.c:909
7  0x00007f45a773afdf in cmd_execute_command (vline=vline@entry=0x55a415ab7e10, vty=vty@entry=0x55a415acb240, cmd=0x0, vtysh=vtysh@entry=0) at lib/command.c:968
8  0x00007f45a773b135 in cmd_execute (vty=vty@entry=0x55a415acb240, cmd=cmd@entry=0x55a415ace950 "show ip bgp vrf all statistics", matched=matched@entry=0x0,
    vtysh=vtysh@entry=0) at lib/command.c:1122
9  0x00007f45a7794d62 in vty_command (vty=vty@entry=0x55a415acb240, buf=0x55a415ace950 "show ip bgp vrf all statistics") at lib/vty.c:526
10 0x00007f45a7794fb6 in vty_execute (vty=vty@entry=0x55a415acb240) at lib/vty.c:1293
11 0x00007f45a7797804 in vtysh_read (thread=<optimized out>) at lib/vty.c:2126
12 0x00007f45a778f641 in thread_call (thread=thread@entry=0x7fffac7bb040) at lib/thread.c:1550
13 0x00007f45a775b6d8 in frr_run (master=0x55a415542820) at lib/libfrr.c:1098
14 0x000055a4133815d6 in main (argc=10, argv=0x7fffac7bb2a8) at bgpd/bgp_main.c:509
```

"show ip bgp vrf all statistics" should show statistics for all VRFs if "all"
is specified.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-07-15 21:36:27 +03:00
Rafael Zalamena
6d8016115a
Merge pull request #6333 from Spantik/ospf_default
ospf: Default-information originate with routemap
2020-07-15 14:55:16 -03:00
Wesley Coakley
4402515921 tests: expand pbr-topo1 to cover DSCP & ECN
Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
2020-07-15 12:59:36 -04:00
Wesley Coakley
d301f15320 pbrd: expose dscp & ecn to json for show pbr map
Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
2020-07-15 12:59:36 -04:00
Wesley Coakley
116b86bdb9 pbrd: dscp interpret standard codepoints
Matching by dscp may now also be specified by its standard codepoint
(provided it has one), such as `cf0` or `af11`.

Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
2020-07-15 12:59:36 -04:00
Wesley Coakley
01f23affdb pbrd, zebra, lib: DSCP / ECN-based PBR Matching
Extend PBR maps to discriminate by Differentiated Services Code Point and / or
Explicit Congestion Notification fields. These fields are used in the IP header
for classifying network traffic.

      0     1     2     3     4     5     6     7
    +-----+-----+-----+-----+-----+-----+-----+-----+
    |          DS FIELD, DSCP           | ECN FIELD |
    +-----+-----+-----+-----+-----+-----+-----+-----+
      DSCP: differentiated services codepoint
      ECN:  Explicit Congestion Notification

Signed-off-by: Wesley Coakley <wcoakley@nvidia.com>
Signed-off-by: Saurav Kumar Paul <saurav@cumulusnetworks.com>
2020-07-15 12:59:36 -04:00
David Lamparter
f033a78a99 topotests: stop wasting time at exit
... and clean up zombie child processes

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-07-15 18:50:30 +02:00
David Lamparter
ba5410e32f topotests: update Dockerfile
... python3 is non-optional now.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2020-07-15 18:50:12 +02:00