]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
3 years agolib: allow listnode memory to be managed by the app
Anuradha Karuppiah [Fri, 27 Mar 2020 14:28:32 +0000 (07:28 -0700)]
lib: allow listnode memory to be managed by the app

In most cases this memory is pre-allocated along with the base element.
Similarly it is stored in the base element to allow efficient del
without lookup (main reason for using DLL vs. SLL).

So (in most cases) there should be no need to manage the element/data
and listnode memories separately.

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
3 years agolib: bitfield: new macros for bit processing
Anuradha Karuppiah [Wed, 25 Mar 2020 13:17:34 +0000 (06:17 -0700)]
lib: bitfield: new macros for bit processing

New macros have been added for the following -
1. to efficiently iterate and execute functions on already set bits
2. to check if a bit is in use
3. to check if a bitfield has been initialized (this is to safetly
handle cases where the bitfield is freed and re-allocated).
4. to check if two bitfields have the same bits set

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
3 years agobgpd: pull the multihoming code out to a separate file
Anuradha Karuppiah [Fri, 27 Mar 2020 13:39:51 +0000 (06:39 -0700)]
bgpd: pull the multihoming code out to a separate file

Re-org only; no other code changes. This is being done to make maintanence
of MH functionality (which will have more code added to it) easy.

The code moved here was originally committed via -
'commit 50f74cf13105 ("*: support for evpn type-4 route")'

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
3 years agoevpn-netns: Revert PR5077, has been re-worked post-refactor
Pat Ruddy [Wed, 3 Jun 2020 11:22:26 +0000 (12:22 +0100)]
evpn-netns: Revert PR5077, has been re-worked post-refactor

Revert "zebra: support for macvlan interfaces"

This reverts commit bf69e212fd053af3298fc3cba38458b396467849.

Revert "doc: add some documentation about bgp evpn netns support"

This reverts commit 89b97c33d7a6d9dc427d56fea52fa27334dde81d.

Revert "zebra: dynamically detect vxlan link interfaces in other netns"

This reverts commit de0ebb25404fe984f084a0d57b7f873618423876.

Revert "bgpd: sanity check when updating nexthop from bgp to zebra"

This reverts commit ee9633ed87f0ff5da1373a42d6c044f0a682c8d3.

Revert "lib, zebra: reuse and adapt ns_list walk functionality"

This reverts commit c4d466c830083e8ba58881d7ad03a90f6baf0754.

Revert "zebra: local mac entries populated in correct netnamespace"

This reverts commit 40424548910887f3bbbf544ce964d3b736048ae5.

Revert "zebra: when parsing local entry against dad, retrieve config"

This reverts commit 3acc394bc5e5c225e9258fd0d57a6cebea0c0ccd.

Revert "bgpd: evpn nexthop can be changed by default"

This reverts commit a2342a241253c41b798845cae155b4caab4bcda5.

Revert "zebra: zvni_map_to_vlan() adaptation for all namespaces"

This reverts commit db81d18647bbd81a2c335620c9a03e32e4a5b2be.

Revert "zebra: add ns_id attribute to mac structure"

This reverts commit 388d5b438e22cddc6740e362763c0922edbb242a.

Revert "zebra: bridge layer2 information records ns_id where bridge is"

This reverts commit b5b453a2d6af58692bee0e256fe1dffe99824801.

Revert "zebra, lib: new API to get absolute netns val from relative netns val"

This reverts commit b6ebab34f664ba1cc9479fc1287f127c12077509.

Revert "zebra, lib: store relative default ns id in each namespace"

This reverts commit 9d3555e06ccc68fe37e0a00100029ac4bad8dee2.

Revert "zebra, lib: add an internal API to get relative default nsid in other ns"

This reverts commit 97c9e7533bd22029ac19838c043cfca82d2f6eb3.

Revert "zebra: map vxlan interface to bridge interface with correct ns id"

This reverts commit 7c990878f20efff335c1211deda3ec50071ae2b5.

Revert "zebra: fdb and neighbor table are read for all zns"

This reverts commit f8ed2c5420106314a940cb67264494e0110fc4c0.

Revert "zebra: zvni_map_to_svi() adaptation for other network namespaces"

This reverts commit 2a9dccb6475bfc11af2b855c4c8ff9e500ba21f4.

Revert "zebra: display interface slave type"

This reverts commit fc3141393ad95651d31fccd144b5c029d00e5f3a.

Revert "zebra: zvni_from_svi() adaptation for other network namespaces"

This reverts commit 6fe516bd4b85569b3b8b4bcc2910afc5569aa026.

Revert "zebra: importation of bgp evpn rt5 from vni with other netns"

This reverts commit 28254125d06f65cc4344b6156eec76a37ec6aede.

Revert "lib, zebra: update interface name at netlink creation"

This reverts commit 1f7a68a2ff0ba1424131f30112e0cc1572f0bee3.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
3 years agoMerge pull request #6860 from opensourcerouting/bgp-docs-missing
Donatas Abraitis [Wed, 5 Aug 2020 12:07:33 +0000 (15:07 +0300)]
Merge pull request #6860 from opensourcerouting/bgp-docs-missing

doc: update some BGP documentation items

3 years agoMerge pull request #6858 from donaldsharp/display_type_string
Donatas Abraitis [Wed, 5 Aug 2020 07:52:17 +0000 (10:52 +0300)]
Merge pull request #6858 from donaldsharp/display_type_string

zebra: When debugging route notifications use string instead of number

3 years agoMerge pull request #6861 from donaldsharp/pim_doc_fixups
Donatas Abraitis [Wed, 5 Aug 2020 05:35:49 +0000 (08:35 +0300)]
Merge pull request #6861 from donaldsharp/pim_doc_fixups

doc: Update doc for `ip pim use-source ..` command

3 years agodoc: Update doc for `ip pim use-source ..` command
Donald Sharp [Wed, 5 Aug 2020 00:19:43 +0000 (20:19 -0400)]
doc: Update doc for `ip pim use-source ..` command

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agodoc: document addpath
Rafael Zalamena [Tue, 4 Aug 2020 22:31:11 +0000 (19:31 -0300)]
doc: document addpath

Document the commands `addpath-tx-all-paths`,
`addpath-tx-bestpath-per-AS` and attempt to provide an useful
explanation.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agoMerge pull request #6857 from mjstapp/fix_lsp_backup_update
Renato Westphal [Tue, 4 Aug 2020 22:12:57 +0000 (19:12 -0300)]
Merge pull request #6857 from mjstapp/fix_lsp_backup_update

zebra: reset LSP backup nh info on update

3 years agodoc: improve neighbor shutdown
Rafael Zalamena [Tue, 4 Aug 2020 21:47:54 +0000 (18:47 -0300)]
doc: improve neighbor shutdown

Add more neighbor shutdown documentation and reference the RFC.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agodoc: document allowas-in
Rafael Zalamena [Tue, 4 Aug 2020 21:35:53 +0000 (18:35 -0300)]
doc: document allowas-in

Document the command `allowas-in` and attempt to provide an useful
explanation.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agodoc: document bgp AS override
Rafael Zalamena [Tue, 4 Aug 2020 21:19:27 +0000 (18:19 -0300)]
doc: document bgp AS override

Document the command `as-override` and attempt to provide an useful
explanation.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agoMerge pull request #6698 from deastoe/fpm-netlink-fixes
Donald Sharp [Tue, 4 Aug 2020 19:59:51 +0000 (15:59 -0400)]
Merge pull request #6698 from deastoe/fpm-netlink-fixes

zebra: always set kernel table ID in FPM netlink

3 years agozebra: When debugging route notifications use string instead of number
Donald Sharp [Tue, 4 Aug 2020 18:41:00 +0000 (14:41 -0400)]
zebra: When debugging route notifications use string instead of number

Current behavior:
eva# show mem
2020/08/04 18:07:38 ZEBRA: Not Notifying Owner: 2 about prefix 3.3.3.3/32(254) 2 vrf: 0

Fix it to show:

2020/08/04 18:07:38 ZEBRA: Not Notifying Owner: connected about prefix 3.3.3.3/32(254) 2 vrf: 0

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agoMerge pull request #6809 from opensourcerouting/staticd-disable-acl
Donald Sharp [Tue, 4 Aug 2020 18:01:26 +0000 (14:01 -0400)]
Merge pull request #6809 from opensourcerouting/staticd-disable-acl

vtysh: don't send access list commands to staticd

3 years agoMerge pull request #6727 from opensourcerouting/nb-cfg-backoff
Donald Sharp [Tue, 4 Aug 2020 17:54:55 +0000 (13:54 -0400)]
Merge pull request #6727 from opensourcerouting/nb-cfg-backoff

lib: introduce configuration back-off timer for YANG-modeled commands

3 years agoMerge pull request #6815 from donaldsharp/vtysh_goes_vroom
Renato Westphal [Tue, 4 Aug 2020 17:42:41 +0000 (14:42 -0300)]
Merge pull request #6815 from donaldsharp/vtysh_goes_vroom

vtysh: Speed up output of configuration across daemons

3 years agozebra: reset LSP backup nh info on update
Mark Stapp [Tue, 4 Aug 2020 16:46:26 +0000 (12:46 -0400)]
zebra: reset LSP backup nh info on update

If an existing LSP nh is updated, ensure any backup nh
info is also reset.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
3 years agoMerge pull request #6812 from mjstapp/fix_dplane_ret_sa
Sri Mohana Singamsetty [Tue, 4 Aug 2020 16:06:17 +0000 (09:06 -0700)]
Merge pull request #6812 from mjstapp/fix_dplane_ret_sa

zebra: fix SA warning, handle return code

3 years agoMerge pull request #6834 from ton31337/feature/documentation_for_bgp_wide_option
Quentin Young [Tue, 4 Aug 2020 15:45:23 +0000 (11:45 -0400)]
Merge pull request #6834 from ton31337/feature/documentation_for_bgp_wide_option

doc: Add wide option for show bgp commands

3 years agoMerge pull request #6821 from Niral-Networks/niral_6VPE_6PE_fix
Stephen Worley [Tue, 4 Aug 2020 15:17:31 +0000 (11:17 -0400)]
Merge pull request #6821 from Niral-Networks/niral_6VPE_6PE_fix

BGP : Fix for nexthop as IPv4 mapped IPv6 address

3 years agoMerge pull request #6770 from opensourcerouting/fpm-race
Quentin Young [Tue, 4 Aug 2020 15:04:22 +0000 (11:04 -0400)]
Merge pull request #6770 from opensourcerouting/fpm-race

zebra: FPM fixes

3 years agovtysh: Speed up output of configuration across daemons
Donald Sharp [Tue, 28 Jul 2020 14:58:47 +0000 (10:58 -0400)]
vtysh: Speed up output of configuration across daemons

With a config that contains a large number of prefix-lists a 'show run' command
was an expensive operation:

sharpd@eva ~/frr_internal2 ((cl4.1.0))> time vtysh -c "show run" | grep ACTIVE | wc -l
32397
________________________________________________________
Executed in   14.53 secs   fish           external
   usr time   14.45 secs  591.00 micros   14.45 secs
   sys time    0.03 secs  189.00 micros    0.03 secs
sharpd@eva ~/frr_internal2 ((cl4.1.0))>

Effectively we are keeping a linked list of data to store the configuration.
When we received a new item we would look in the list to see if it already
does, by doing a string search across each element in the list.

Add to the master configuration a hash of items for O(1) lookup.
Keep the list for order so we don't mangle that up.

New time:
sharpd@eva ~/frr_internal1 (dev)> time vtysh -c "show run" | grep ACTIVE | wc -l
32397
________________________________________________________
Executed in  277.94 millis    fish           external
   usr time  237.46 millis   20.53 millis  216.93 millis
   sys time   14.31 millis    0.00 millis   14.31 millis

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agolib,zebra,bgpd: Fix for nexthop as IPv4 mapped IPv6 address
Kaushik [Wed, 29 Jul 2020 15:48:57 +0000 (08:48 -0700)]
lib,zebra,bgpd: Fix for nexthop as IPv4 mapped IPv6 address

Added a macro to validate the v4 mapped v6 address.
Modified bgp receive & send updates for v4 mapped v6 address as
nexthop and installing it as recursive nexthop in RIB.
Minor change in fpm while sending the routes for nexthop as
v4 mapped v6 address.

Signed-off-by: Kaushik <kaushik@niralnetworks.com>
3 years agoMerge pull request #6844 from donaldsharp/bestpath_routes
Donatas Abraitis [Tue, 4 Aug 2020 05:13:49 +0000 (08:13 +0300)]
Merge pull request #6844 from donaldsharp/bestpath_routes

Bestpath routes

3 years agostaticd,vtysh: no access list commands
Rafael Zalamena [Tue, 4 Aug 2020 00:22:52 +0000 (21:22 -0300)]
staticd,vtysh: no access list commands

Don't send access list commands to `staticd` since it doesn't use them.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agotopotests: remove sharpd from route map output
Rafael Zalamena [Tue, 28 Jul 2020 12:33:08 +0000 (09:33 -0300)]
topotests: remove sharpd from route map output

`sharpd` doesn't handle any route map commands and neither should show
up in route map commands. This makes the CI pass again after not sending
route map commands to it again.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agosharpd,vtysh: no access list or route map commands
Rafael Zalamena [Mon, 3 Aug 2020 23:55:47 +0000 (20:55 -0300)]
sharpd,vtysh: no access list or route map commands

Don't send access list or route map commands to `sharpd` since it
doesn't use them.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agovtysh: recategorize access list commands
Rafael Zalamena [Tue, 28 Jul 2020 00:27:50 +0000 (21:27 -0300)]
vtysh: recategorize access list commands

Create a new category for access lists commands so we can avoid sending
configurations (which might be big) to daemons which do not use it.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agoMerge pull request #6832 from pguibert6WIND/ignore_nhrp
Renato Westphal [Mon, 3 Aug 2020 23:03:39 +0000 (20:03 -0300)]
Merge pull request #6832 from pguibert6WIND/ignore_nhrp

nhrpd: ignore zebra updates about our routes being deleted/added

3 years agolib: introduce configuration back-off timer for YANG-modeled commands
Renato Westphal [Thu, 2 Jul 2020 17:43:36 +0000 (14:43 -0300)]
lib: introduce configuration back-off timer for YANG-modeled commands

When using the default CLI mode, the northbound layer needs to create
a separate transaction to process each YANG-modeled command since
they are supposed to be applied immediately (there's no candidate
configuration nor the "commit" command like in the transactional
CLI). The problem is that configuration transactions have an overhead
associated to them, in big part because of the use of some heavy
libyang functions like `lyd_validate()` and `lyd_diff()`. As of
now this overhead is substantial and doesn't scale well when large
numbers of transactions need to be performed in sequence.

As an example, loading 50k prefix-lists using a single transaction
takes about 2 seconds on a modern CPU. Loading the same 50k
prefix-lists using 50k transactions can take more than an hour
to complete (which is unacceptable by any standard). To fix this
problem, some heavy optimization work needs to be done on libyang and
on the FRR northbound itself too (e.g. perform partial configuration
diffs whenever possible).  This, however, should be a long term
effort since these optimizations shouldn't be trivial to implement
and we're far from having the performance numbers we need.

In the meanwhile, this commit introduces a simple but efficient
workaround to alleviate the issue. In short, a new back-off timer
was introduced in the CLI to monitor and detect when too many
YANG-modeled commands are being received at the same time. When
a certain threshold is reached (100 YANG-modeled commands within
one second), the northbound starts to group all subsequent commands
into a single large transaction, which allows them to be processed
much faster (e.g. seconds and not hours).  It's essentially a
protection mechanism that creates dynamically-sized transactions
when necessary to prevent performance issues from happening. This
mechanism is enabled both when parsing configuration files and when
reading commands from a terminal.

The downside of this optimization is that, if several YANG-modeled
commands are grouped into the same transaction and at least one of
them fails, the whole transaction is rejected. This is undesirable
since users don't expect transactional behavior when that's not
enabled explicitly. To minimize this issue, the CLI will log all
commands that were rejected whenever that happens, to make the
user aware of what happened and have enough information to fix
the problem. Commands that fail due to parsing errors or CLI-level
validations in general are rejected separately.

Again, this proposed workaround is intended to be temporary. The
goal is to provided a quick fix to issues like #6658 while we work
on better long-term solutions.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
3 years ago*: introduce DEFPY_YANG & friends
Renato Westphal [Mon, 6 Jul 2020 15:47:44 +0000 (12:47 -0300)]
*: introduce DEFPY_YANG & friends

DEFPY_YANG will allow the CLI to identify which commands are
YANG-modeled or not before executing them. This is going to be
useful for the upcoming configuration back-off timer work that
needs to commit pending configuration changes before executing a
command that isn't YANG-modeled.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
3 years agoMerge pull request #6845 from opensourcerouting/foreach-safi-formatting
Quentin Young [Mon, 3 Aug 2020 16:27:28 +0000 (12:27 -0400)]
Merge pull request #6845 from opensourcerouting/foreach-safi-formatting

clang-format: add FOREACH_SAFI to the ForEachMacros list

3 years agoMerge pull request #6781 from chiragshah6/mdev
Renato Westphal [Mon, 3 Aug 2020 15:57:45 +0000 (12:57 -0300)]
Merge pull request #6781 from chiragshah6/mdev

yang: create route-map leafref reference type

3 years agoclang-format: add FOREACH_SAFI to the ForEachMacros list
Renato Westphal [Mon, 3 Aug 2020 15:18:24 +0000 (12:18 -0300)]
clang-format: add FOREACH_SAFI to the ForEachMacros list

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
3 years agodoc: Add documentation for the new cli
Donald Sharp [Mon, 3 Aug 2020 14:33:03 +0000 (10:33 -0400)]
doc: Add documentation for the new cli

Document the `show bgp ipv4 uni neighbors 192.168.161.2 bestpath-routes`
command.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agobgpd: Add `bestpath-routes` to neighbor command
Donald Sharp [Fri, 31 Jul 2020 16:12:37 +0000 (12:12 -0400)]
bgpd: Add `bestpath-routes` to neighbor command

Add the ability to list the bestpath-routes to the
`show bgp afi safi neighbor X` command.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agobgpd: Abstract the header inclusion for show_adj_route
Donald Sharp [Fri, 31 Jul 2020 16:33:59 +0000 (12:33 -0400)]
bgpd: Abstract the header inclusion for show_adj_route

Cut-n-paste code can go away.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agoMerge pull request #6833 from donaldsharp/pcount_selected
Donatas Abraitis [Sat, 1 Aug 2020 10:09:28 +0000 (13:09 +0300)]
Merge pull request #6833 from donaldsharp/pcount_selected

bgpd: Add to neighbor prefix-counts the count of best path selected

3 years agoyang: route-map model description format
Chirag Shah [Wed, 29 Jul 2020 20:03:35 +0000 (13:03 -0700)]
yang: route-map model description format

Added "." at the enf of each description of fields.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
3 years agoyang: route-map style format
Chirag Shah [Tue, 21 Jul 2020 05:04:28 +0000 (22:04 -0700)]
yang: route-map style format

Align to yanglint format

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
3 years agoyang: create route-map leafref reference type
Chirag Shah [Tue, 21 Jul 2020 04:47:03 +0000 (21:47 -0700)]
yang: create route-map leafref reference type

Create leafref reference type for route-map name.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
3 years agodoc: Add wide option for show bgp commands
Donatas Abraitis [Fri, 31 Jul 2020 19:14:00 +0000 (22:14 +0300)]
doc: Add wide option for show bgp commands

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
3 years agobgpd: Add to neighbor prefix-counts the count of best path selected
Donald Sharp [Fri, 31 Jul 2020 14:06:39 +0000 (10:06 -0400)]
bgpd: Add to neighbor prefix-counts the count of best path selected

When we have a prefix that has been selected, note that that
particular flag has been set and give that information to the
end user.

eva# show bgp ipv4 uni neighbors 192.168.161.131 prefix-counts
Prefix counts for 192.168.161.131, IPv4 Unicast
PfxCt: 814246

Counts from RIB table walk:

              Adj-in: 0
              Damped: 0
             Removed: 0
             History: 0
               Stale: 0
               Valid: 814246
             All RIB: 814246
       PfxCt counted: 814246
 PfxCt Best Selected: 0
             Useable: 814246
eva# show bgp ipv4 uni neighbors 192.168.161.2 prefix-counts
Prefix counts for 192.168.161.2, IPv4 Unicast
PfxCt: 814070

Counts from RIB table walk:

              Adj-in: 0
              Damped: 0
             Removed: 0
             History: 0
               Stale: 0
               Valid: 814070
             All RIB: 814070
       PfxCt counted: 814070
 PfxCt Best Selected: 814070
             Useable: 814070

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agonhrpd: ignore zebra updates about our routes being deleted/added
Philippe Guibert [Thu, 5 Mar 2020 14:50:37 +0000 (14:50 +0000)]
nhrpd: ignore zebra updates about our routes being deleted/added

nhrp listens for route entries to be deleted, in case some new routes
impact the current routes installed by nhrp. To prevent from
unconfiguring nhrp shortcut route, just prevent nhrp routes to be
processed.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
3 years agoMerge pull request #6778 from mjstapp/fix_topo_route_scale
Rafael Zalamena [Thu, 30 Jul 2020 20:59:42 +0000 (17:59 -0300)]
Merge pull request #6778 from mjstapp/fix_topo_route_scale

tests: rework route_scale topotest

3 years agoMerge pull request #6824 from liweitianux/patch-1
Donald Sharp [Thu, 30 Jul 2020 18:34:34 +0000 (14:34 -0400)]
Merge pull request #6824 from liweitianux/patch-1

ospfd: Fix Zebra route add message truncation issue

3 years agozebra: fix SA warning, handle return code
Mark Stapp [Tue, 28 Jul 2020 12:30:52 +0000 (08:30 -0400)]
zebra: fix SA warning, handle return code

Handle a return code, resolving an SA warning

Signed-off-by: Mark Stapp <mjs@voltanet.io>
3 years agotests: Avoid top ecmp route_scale test case when memory limited
Mark Stapp [Wed, 29 Jul 2020 20:57:37 +0000 (16:57 -0400)]
tests: Avoid top ecmp route_scale test case when memory limited

Address-sanitizer runs in the CI appear to require more
memory than is available (at present), so skip the top
x32 route_scale testcase when running with <4G of ram.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
3 years agotests: rework route_scale topotest
Mark Stapp [Mon, 20 Jul 2020 18:51:16 +0000 (14:51 -0400)]
tests: rework route_scale topotest

Make some changes to the route-scale topotest, in view of
issue #6734. Table-drive the test to eliminate some
repeated code. Assert and fail if a step in the progression
of scale fails. Wait a little longer between checking the show
output - it's costly to generate that output at scale. Add a
memleak testcase.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
3 years agoMerge pull request #6825 from kuldeepkash/evpn_type2_tests
Mark Stapp [Thu, 30 Jul 2020 18:09:24 +0000 (14:09 -0400)]
Merge pull request #6825 from kuldeepkash/evpn_type2_tests

tests: Skipping evpn_type5_test_topo1 tests from CI runs

3 years agoospfd: Fix Zebra route add message truncation issue
Aaron LI [Thu, 30 Jul 2020 11:22:34 +0000 (19:22 +0800)]
ospfd: Fix Zebra route add message truncation issue

The `INET_ADDRSTRLEN` is 16 and is only enough to format an IPv4 address.
So when there is a prefix (`/xx`), the debug output may get truncated.
Use `PREFIX2STR_BUFFER` macro instead to fix the issue.

Signed-off-by: Aaron LI <aly@aaronly.me>
3 years agotests: Skipping evpn_type5_test_topo1 tests from CI runs
Kuldeep Kashyap [Thu, 30 Jul 2020 12:12:07 +0000 (12:12 +0000)]
tests: Skipping evpn_type5_test_topo1 tests from CI runs

1. evpn_type5_test_topo1 tests started failing in CI for all Ubuntu 18.04 machine,
which are having kernel version: 5.4.0-42-generic
2. We will enable these tests once issue is found and fixed.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
3 years agoMerge pull request #6732 from opensourcerouting/printfrr-prep
Quentin Young [Wed, 29 Jul 2020 18:29:34 +0000 (14:29 -0400)]
Merge pull request #6732 from opensourcerouting/printfrr-prep

*: preparations for printfrr coccinelle run

3 years agoMerge pull request #6769 from opensourcerouting/acl-regress
Donald Sharp [Wed, 29 Jul 2020 13:57:39 +0000 (09:57 -0400)]
Merge pull request #6769 from opensourcerouting/acl-regress

lib,yang: merge cisco/zebra access list styles

3 years agozebra,fpm: serialize zebra table walks
Rafael Zalamena [Fri, 17 Jul 2020 19:15:04 +0000 (16:15 -0300)]
zebra,fpm: serialize zebra table walks

We were not getting any benefits from attempting to walk all tables at the
same time and it made debugging harder, so lets execute one table walk
per time.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agozebra,fpm: fix race on completion detection
Rafael Zalamena [Fri, 17 Jul 2020 14:37:38 +0000 (11:37 -0300)]
zebra,fpm: fix race on completion detection

Zebra runs on a different thread than FPM, so we need to synchronize
them by using events. While here, implement completion detection for all
kinds of walk.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agozebra,fpm: fix input handling
Rafael Zalamena [Fri, 17 Jul 2020 17:37:55 +0000 (14:37 -0300)]
zebra,fpm: fix input handling

Two important fixes:

* `stream_read_try` does a dirty trick and converts the `-1` return to
  `-2` when errno is `EAGAIN`, `EWOULDBLOCK` or `EINTR`.
* Don't enable reads until the connection is complete.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
3 years agoMerge pull request #6792 from chiragshah6/pim_dev
David Lamparter [Tue, 28 Jul 2020 13:13:00 +0000 (15:13 +0200)]
Merge pull request #6792 from chiragshah6/pim_dev

*: pim igmp yang registery to appropriate makefile

3 years agoMerge pull request #6787 from toreanderson/master
David Lamparter [Tue, 28 Jul 2020 13:09:15 +0000 (15:09 +0200)]
Merge pull request #6787 from toreanderson/master

tools: do not silently ignore errors when loading config during startup

3 years agoMerge pull request #6758 from chiragshah6/yang_nb6
Russ White [Tue, 28 Jul 2020 11:22:24 +0000 (07:22 -0400)]
Merge pull request #6758 from chiragshah6/yang_nb6

EVPN northbound conversion for vrf l3vni mapping command

3 years agoMerge pull request #6808 from ton31337/fix/dampening_reuse_limit_assert
Russ White [Tue, 28 Jul 2020 10:20:29 +0000 (06:20 -0400)]
Merge pull request #6808 from ton31337/fix/dampening_reuse_limit_assert

bgpd: Bypass SA tests regarding division by zero for reuse_limit in dampening

3 years agoMerge pull request #6806 from donaldsharp/tests_log_monitor
David Lamparter [Mon, 27 Jul 2020 22:15:22 +0000 (00:15 +0200)]
Merge pull request #6806 from donaldsharp/tests_log_monitor

tests: Remove 'log monitor' from tests

3 years agoMerge pull request #6805 from ton31337/fix/dead_code
Rafael Zalamena [Mon, 27 Jul 2020 21:35:20 +0000 (18:35 -0300)]
Merge pull request #6805 from ton31337/fix/dead_code

bgpd: Remove peer_afc_set()

3 years agoMerge pull request #6804 from donaldsharp/remove_cisco_compatability
Rafael Zalamena [Mon, 27 Jul 2020 20:15:02 +0000 (17:15 -0300)]
Merge pull request #6804 from donaldsharp/remove_cisco_compatability

doc: Remove `Cisco Compatability` section

3 years agobgpd: Bypass SA tests regarding division by zero for reuse_limit in dampening
Donatas Abraitis [Mon, 27 Jul 2020 17:38:42 +0000 (20:38 +0300)]
bgpd: Bypass SA tests regarding division by zero for reuse_limit in dampening

reuse_limit can't be zero basically, Coverity just does not know how the
value comes in.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
3 years agoMerge pull request #6765 from mjstapp/backup_nhg_netlink
Renato Westphal [Mon, 27 Jul 2020 15:49:36 +0000 (12:49 -0300)]
Merge pull request #6765 from mjstapp/backup_nhg_netlink

lib,zebra: support multiple backup nexthops

3 years agotests: Remove 'log monitor' from tests
Donald Sharp [Mon, 27 Jul 2020 15:09:16 +0000 (11:09 -0400)]
tests: Remove 'log monitor' from tests

The `log monitor' command is a no-op and actually
outputs a `this doesn't do anything` warning.  Let's remove
this cli line from our tests as that don't do anything and
people will look at these configs for guidance.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agoMerge pull request #6803 from donaldsharp/coverity_moo_moo
Donatas Abraitis [Mon, 27 Jul 2020 14:20:51 +0000 (17:20 +0300)]
Merge pull request #6803 from donaldsharp/coverity_moo_moo

Coverity code cleanup

3 years agobgpd: Remove peer_afc_set()
Donatas Abraitis [Mon, 27 Jul 2020 14:16:32 +0000 (17:16 +0300)]
bgpd: Remove peer_afc_set()

Dead code.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
3 years agoMerge pull request #6662 from kuldeepkash/evpn_type2_tests
Mark Stapp [Mon, 27 Jul 2020 12:16:31 +0000 (08:16 -0400)]
Merge pull request #6662 from kuldeepkash/evpn_type2_tests

tests: Adding test suites evpn_type5_test_topo1

3 years agodoc: Remove `Cisco Compatability` section
Donald Sharp [Mon, 27 Jul 2020 11:57:13 +0000 (07:57 -0400)]
doc: Remove `Cisco Compatability` section

This code was deprecated in 5.0 and removed after a year.
It has not been in the code base and we forgot to update the
doc.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agobgpd: Deref after null check in bgp_evpn_vty.c
Donald Sharp [Mon, 27 Jul 2020 11:10:41 +0000 (07:10 -0400)]
bgpd: Deref after null check in bgp_evpn_vty.c

Coverity has noticed that we are using bgp_evpn after
we have already NULL checked it one time.  Add an assert
to make Coverity happy here, if we get to this point
something terrible has happened.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agobgpd: Prevent Null pointer usage
Donald Sharp [Mon, 27 Jul 2020 10:59:45 +0000 (06:59 -0400)]
bgpd: Prevent Null pointer usage

Coverity rightly points out that bgp_table_top might return
NULL and immediately deref'ing it might be a problem.
Add a bit of safety.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agobgpd: Comment out dead code for future
Donald Sharp [Mon, 27 Jul 2020 10:54:23 +0000 (06:54 -0400)]
bgpd: Comment out dead code for future

I wanted to preserve the old code flow to see what might
be needed in the future in commit:
23ca3269da5f9d898cb54d42c560d519b9cb9915

Coverity doesn't like dead code.  So let's comment it out.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agoMerge pull request #6802 from donaldsharp/various
Donatas Abraitis [Mon, 27 Jul 2020 07:36:24 +0000 (10:36 +0300)]
Merge pull request #6802 from donaldsharp/various

Various

3 years agovrrpd: Make clang 11 happy
Donald Sharp [Sun, 26 Jul 2020 23:05:09 +0000 (19:05 -0400)]
vrrpd: Make clang 11 happy

Recent changes to remove PRIu... in commit:
6cde4b45528e52819c803de92d10d4be3abddf29

causes clang 11 to be unhappy, with length of field warnings.
Modify the offending code to compile properly using that compiler.
I've tested against clang 11 and gcc 9.3

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agodoc: Add doc for `coalesce-time` in bgp
Donald Sharp [Sun, 26 Jul 2020 22:58:25 +0000 (18:58 -0400)]
doc: Add doc for `coalesce-time` in bgp

The documentation for this command was missing.  Add a little
bit of data for people in the future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
3 years agoMerge pull request #6796 from russellb/bgp-debug-newline
Quentin Young [Fri, 24 Jul 2020 23:09:36 +0000 (19:09 -0400)]
Merge pull request #6796 from russellb/bgp-debug-newline

bgpd: Add missing newline to a log message

3 years agoMerge pull request #6771 from opensourcerouting/netbsd-tls-buf
Quentin Young [Fri, 24 Jul 2020 18:53:28 +0000 (14:53 -0400)]
Merge pull request #6771 from opensourcerouting/netbsd-tls-buf

lib: fix TLS log buffer on NetBSD

3 years agobgpd: Add missing newline to a log message
Russell Bryant [Fri, 24 Jul 2020 00:26:54 +0000 (20:26 -0400)]
bgpd: Add missing newline to a log message

While checking my BGP debugging settings at the console, I noticed
this message was missing a newline.  Add it to be consistent with the
other similar messages.

Signed-off-by: Russell Bryant <rbryant@redhat.com>
3 years agoMerge pull request #6793 from maduri111/bgpd-wide
Donatas Abraitis [Fri, 24 Jul 2020 05:42:26 +0000 (08:42 +0300)]
Merge pull request #6793 from maduri111/bgpd-wide

bgpd: wide option

3 years agoMerge pull request #6730 from wesleycoakley/pbrd-dscp-ecn
Russ White [Thu, 23 Jul 2020 16:08:38 +0000 (12:08 -0400)]
Merge pull request #6730 from wesleycoakley/pbrd-dscp-ecn

DSCP / ECN-based PBR Matching

3 years agoMerge pull request #6243 from pguibert6WIND/flowspec_some_regression_seen
Quentin Young [Thu, 23 Jul 2020 15:26:00 +0000 (11:26 -0400)]
Merge pull request #6243 from pguibert6WIND/flowspec_some_regression_seen

Flowspec some regression seen

3 years agobgpd: wide option
Madhuri Kuruganti [Thu, 23 Jul 2020 09:20:52 +0000 (14:50 +0530)]
bgpd: wide option

Signed-off-by: Madhuri Kuruganti <k.madhuri@samsung.com>
3 years agotools: do not silently ignore errors when loading config during startup
Tore Anderson [Wed, 22 Jul 2020 15:32:18 +0000 (17:32 +0200)]
tools: do not silently ignore errors when loading config during startup

Drop the `-n` (`--noerror`) flag from the `vtysh -b` invocation called by the
init script responsible for starting FRR. This ensures that errors in the
configuration file is propagated to the administrator, and prevents a node from
entering a production network while running an essentially undefined
configuration (a behaviour that I can personally attest to has the potential to
cause disastrous network outages - documented in more detail in Cumulus
Networks CS#12791).

Silently ignoring errors also leads to the rather odd behaviour that starting
FRR will ostensibly succeed, while reloading it immediately after - without
changing the configuration - will fail. This is due to the fact that the `-n`
flag is not used while reloading.

The use of the `-n` flag appears to have been introduced without any
explanation in commit 858aa29c6862ed2390baee53b6fc9f54e65246e2 by @donaldsharp.
Looking at the commit message, I suspect that it was not an intentional change.
It seems more likely to me that it was just meant to be used during testing and
development, but ended up being committed to master by accident.

Ticket:CM-28003

Signed-off-by: Tore Anderson <tore@fud.no>
3 years ago*: pim igmp yang registery to appropriate makefile
Chirag Shah [Thu, 23 Jul 2020 06:16:05 +0000 (23:16 -0700)]
*: pim igmp yang registery to appropriate makefile

Move pim and igmp yang files registery to appropriate makefiles.

In yang directory makefile move under `PIMD`
Remove pimd yang files from library makefile instead move them
to pimd makefile.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
3 years agoMerge pull request #6343 from opensourcerouting/watchfrr-n-20200505
Quentin Young [Wed, 22 Jul 2020 16:07:14 +0000 (12:07 -0400)]
Merge pull request #6343 from opensourcerouting/watchfrr-n-20200505

watchfrr: add `-N` and `--netns` options

3 years agodoc: update watchfrr manpage
David Lamparter [Thu, 8 Aug 2019 18:55:40 +0000 (20:55 +0200)]
doc: update watchfrr manpage

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
3 years agotools: add frr@.service
David Lamparter [Thu, 8 Aug 2019 18:51:01 +0000 (20:51 +0200)]
tools: add frr@.service

... for starting an FRR instance.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
3 years agotools/frr-reload.py: support -N pathspace
David Lamparter [Thu, 8 Aug 2019 18:20:33 +0000 (20:20 +0200)]
tools/frr-reload.py: support -N pathspace

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
3 years agowatchfrr: add (network) namespace support
David Lamparter [Thu, 8 Aug 2019 17:25:39 +0000 (19:25 +0200)]
watchfrr: add (network) namespace support

This adds -N and --netns options to watchfrr, allowing it to start
daemons with -N and switching network namespaces respectively.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
3 years agotests: Adding test suites evpn_type5_test_topo1
Kuldeep Kashyap [Wed, 1 Jul 2020 13:16:34 +0000 (13:16 +0000)]
tests: Adding test suites evpn_type5_test_topo1

1. Added 15 test cases to test evpn type5 functionality
2. Total execution time is ~9 mins

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
3 years agotests: Adding framework support for EVPN-Type5 automation
Kuldeep Kashyap [Wed, 1 Jul 2020 13:13:08 +0000 (13:13 +0000)]
tests: Adding framework support for EVPN-Type5 automation

1. Added APIs to create evpn related config.
2. Added APIs to verify evpn config and routes.

Signed-off-by: Kuldeep Kashyap <kashyapk@vmware.com>
3 years agoMerge pull request #6780 from chiragshah6/evpn_dev2
Mark Stapp [Tue, 21 Jul 2020 20:08:13 +0000 (16:08 -0400)]
Merge pull request #6780 from chiragshah6/evpn_dev2

zebra: vrf disable clean up evpn rmac and nxthp cache

3 years agoMerge pull request #6711 from GalaxyGorilla/bfd_isis_profiles
Quentin Young [Tue, 21 Jul 2020 18:45:31 +0000 (14:45 -0400)]
Merge pull request #6711 from GalaxyGorilla/bfd_isis_profiles

Add BFD profiles for IS-IS

3 years agoMerge pull request #6435 from idryzhov/fix-no-vrf
Quentin Young [Tue, 21 Jul 2020 15:48:34 +0000 (11:48 -0400)]
Merge pull request #6435 from idryzhov/fix-no-vrf

vtysh: return success from "no vrf" when VRF doesn't exist

3 years agozebra: add validate function for zapi_labels message
Mark Stapp [Mon, 20 Jul 2020 21:19:31 +0000 (17:19 -0400)]
zebra: add validate function for zapi_labels message

Add a simple validation function for zapi_labels messages; it
checks for and validates backup nexthop indexes currently.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
3 years agoMerge pull request #6700 from deastoe/ospf6-interface-decimal-area
David Lamparter [Tue, 21 Jul 2020 11:42:59 +0000 (13:42 +0200)]
Merge pull request #6700 from deastoe/ospf6-interface-decimal-area