Commit Graph

23387 Commits

Author SHA1 Message Date
Donald Sharp
db2f330bae yang: Allow make clean to actually clean up dependant files
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-03-24 19:27:20 -04:00
David Lamparter
755f959915
Merge pull request #8325 from idryzhov/fix-ip-router-isis
isisd: fix extra space after "ip router isis"
2021-03-24 12:13:07 +01:00
Igor Ryzhov
09e2d8ed97
Merge pull request #8203 from opensourcerouting/ospf-bfd-napi
ospfd,doc,topotests: rework OSPFv2 BFD integrantion
2021-03-24 10:36:48 +03:00
Igor Ryzhov
c560085f4d
Merge pull request #8184 from opensourcerouting/bfd-bgp-napi
bgpd,lib: rework BGP BFD integration
2021-03-24 10:36:26 +03:00
Igor Ryzhov
2ba0884a65 isisd: fix extra space after "ip router isis"
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-03-24 10:30:36 +03:00
Igor Ryzhov
61290c027c
Merge pull request #8319 from qlyoung/doc-remove-old-index-ospf6-spf-tree
doc: remove extraneous .. index:: in ospf6d.rst
2021-03-24 10:01:16 +03:00
Quentin Young
51d0d8f326 doc: remove extraneous .. index:: in ospf6d.rst
And delete some trailing whitespace

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2021-03-23 19:36:27 +00:00
Russ White
8baa41e571
Merge pull request #8261 from opensourcerouting/log-ids
lib: output unique IDs in log messages
2021-03-23 11:46:41 -04:00
Rafael Zalamena
4a0872fc73 bgpd: improve BFD with timers configuration
Move `bgp_peer_config_apply` outside `bgp_peer_configure_bfd` (and
document it) so we only call the session installation once with one
set of timers. It also makes all calls of that function
equal (e.g. always calls `bgp_peer_config_apply` afterwards).

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:11 -03:00
Rafael Zalamena
81313f4386 doc: document new BGP debug option
Let user know what the debug knob does.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:11 -03:00
Rafael Zalamena
259f42367c bgpd: add debug option for BFD
Add new BGP debug option to enable BFD related debugging messages.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:10 -03:00
Rafael Zalamena
21bfce9827 bgpd: rework BFD integration
Remove old BFD API usage and replace it with the new one.

Highlights:

 - More shared code: the daemon gets notified with callbacks instead of
   having to roll its own code to find the notified sessions.

 - Less code to integrate with BFD.

 - Remove hidden commands to configure single / multi hop. Use
   protocol data instead.

   BGP can determine if a peer is single/multi hop according to the
   following criteria:

    a. If the IP address is a link-local address (single hop)

    b. The network is shared with peer (single hop)

    c. BGP is configured for eBGP multi hop / TTL security (multi hop)

 - Respect the configuration hierarchy:

    a. Peer configuration take precendence over peer-group
       configuration.

    b. When peer group configuration is removed, reset peer
       BFD configurations to defaults (unless peer had specific
       configs).

       Example:

         neighbor foo peer-group
         neighbor foo bfd profile X
         neighbor 192.168.0.2 peer-group foo
         neighbor 192.168.0.2 bfd
         ! If peer-group is removed the profile configuration gets
         ! removed from peer 192.168.0.2, but BFD will still enabled
         ! because of the neighbor specific bfd configuration.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:10 -03:00
Rafael Zalamena
50bd8995d4 bgpd: remove cumulus specific code
The BFD function `bgp_bfd_is_peer_multihop` will no longer exist and now
both code paths are equal.

Longer explanation:
Cumulus was previously using the BFD function to help determine whether a
peer is multi hop or not, because there is a configuration to set BFD
to use single or multi hop.

Current BFD code can automatically pick between single/multi hop by
using the protocol information and so it is a good idea to have that
tested/used than relying on yet another duplicated information.

(BFD extracts the TTL information from protocol and selects
single/multi hop based on that)

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:10 -03:00
Rafael Zalamena
3e6376b813 lib: small BFD session notifier improvement
Cache current monotime to avoid unnecessary calls.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:09 -03:00
Rafael Zalamena
a099abe55b lib: new BFD integration API
New BFD protocol integration API with abstractions to fix most common
protocol integration errors:

 - Set address family together with the source/destination addresses

 - Set the TTL together with the single/multi hop option

 - Set/unset profile/interface easily

 - Keep the arguments so we don't have to rebuild them every time

 - Install/uninstall functions that keep track of current state so the
  daemon doesn't have to

 - Reinstall when critical configuration changes (address, multi hop
   etc...)

 - Reconfigure BFD when the daemon restarts automatically

 - Automatically calls the user defined callback for session update

 - Shutdown handler for all protocols

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 12:40:09 -03:00
Russ White
638fa8dd4e
Merge pull request #8253 from opensourcerouting/topotest-python3-backports
tests: iproute2 VRF capability check for topotests
2021-03-23 11:25:35 -04:00
Russ White
09e623fbe1
Merge pull request #8271 from idryzhov/fix-show-ip-ospf-database
ospfd: fix "show ip ospf database" issues
2021-03-23 11:19:32 -04:00
Donatas Abraitis
7c94e3d606
Merge pull request #8312 from pjdruddy/update-topotest-snmp-install-doc
doc: add libsnmp-dev install line
2021-03-23 16:41:20 +02:00
Russ White
28e16a993b
Merge pull request #8305 from donaldsharp/bgp_ll_ifp_change
bgpd: Reset LLA NHT's interface if there is a change
2021-03-23 10:08:18 -04:00
Russ White
63d4a9708c
Merge pull request #8307 from opensourcerouting/mtypes-cleanup-20210322
isisd, eigrpd, pathd: clean up & drop *_memory.[ch] files, make a whole bunch static
2021-03-23 10:07:28 -04:00
Russ White
38981e4bba
Merge pull request #8120 from ton31337/feature/bgp_ipv6_default_activated
bgpd: Activate ipv6-unicast for peer automatically if globally defined
2021-03-23 09:36:43 -04:00
Rafael Zalamena
b5b3078bec ospfd: fix checkpatch warnings
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
e5c2d3a82e doc: document new OSPF debug option
Let user know what does the BFD debug knob does.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
e4505a2e6d ospfd: add debug option for BFD
Add specialized debug option for BFD which also enables library debugging.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
8d69272b8f topotests: test OSPF BFD profile
Use BFD profiles in test to make sure it doesn't break.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
33082fcfee doc: update OSPF BFD documentation
Tell users that OSPFv2 now supports BFD profiles.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
96b5251038 ospfd: support BFD profiles
Add new command to configure BFD peers to use a specific profile.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
659f4e40dd ospfd: rework BFD integration
Use new BFD API to integrate with OSPFv2.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
cab054bfd2 lib: small BFD session notifier improvement
Cache current monotime to avoid unnecessary calls.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Rafael Zalamena
2176a8d9e5 lib: new BFD integration API
New BFD protocol integration API with abstractions to fix most common
protocol integration errors:

 - Set address family together with the source/destination addresses

 - Set the TTL together with the single/multi hop option

 - Set/unset profile/interface easily

 - Keep the arguments so we don't have to rebuild them every time

 - Install/uninstall functions that keep track of current state so the
  daemon doesn't have to

 - Reinstall when critical configuration changes (address, multi hop
   etc...)

 - Reconfigure BFD when the daemon restarts automatically

 - Automatically calls the user defined callback for session update

 - Shutdown handler for all protocols

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-03-23 10:18:42 -03:00
Pat Ruddy
b69bc6fe0d doc: add libsnmp-dev install line
Do not assume libsnmp-dev is installed.

Signed-off-by: Pat Ruddy <pat@voltanet.io>
2021-03-23 10:18:16 +00:00
Igor Ryzhov
7a89002ab6
Merge pull request #8296 from chiragshah6/mdev
bgpd: convert send-community to transactional cli
2021-03-23 00:19:33 +03:00
Igor Ryzhov
a605d719d3 doc: add missing vrf parameter to "show ip ospf database ..." commands
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-03-22 23:37:42 +03:00
Igor Ryzhov
a11bce1197 ospfd: fix "show ip ospf database" issues
Current implementation of commands `show_ip_ospf_instance_database_cmd`
and `show_ip_ospf_instance_database_type_adv_router_cmd` have the
following problems:

- they doesn't have "vrf all" argument, however the processing of this
  argument is implemented,

- they incorrectly implement json output for instances - they don't
  output anything to the vty and don't release the json object.

To fix the problems, let's do the following:

1. Split `show_ip_ospf_instance_database_cmd` into two aliases to
   `show_ip_ospf_database_max_cmd` and `show_ip_ospf_instance_database_max_cmd`.
   The code is the same and doesn't need to be duplicated.

2. Split `show_ip_ospf_instance_database_type_adv_router_cmd` into two
   separate functions - one regular and one for instances, which now
   correctly implements the processing for json output.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-03-22 23:37:41 +03:00
David Lamparter
224ccf29d9 zebra: kill zebra_memory.h, use MTYPE_STATIC
This one also needed a bit of shuffling around, but MTYPE_RE is the only
one left used across file boundaries now.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 20:02:17 +01:00
David Lamparter
8392606ec1 staticd: kill static_memory.h, use MTYPE_STATIC
This one needed a move of zebra_stable_node_cleanup() from static_vrf.c
to static_routes.c.  But it seems to actually make sense there.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 19:41:54 +01:00
David Lamparter
30043e4ce2 ospf6d: kill ospf6_memory.h, use MTYPE_STATIC
Same as other commits -- convert most DEFINE_MTYPE into the _STATIC
variant, and move the remaining non-static ones to appropriate places.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 19:31:56 +01:00
David Lamparter
53ab0eacab
Merge pull request #8115 from mjstapp/fix_ax_pthread
build: test program needs to be warning-free
2021-03-22 19:31:05 +01:00
David Lamparter
771e1fbee0 ospf6d: split off ospf6_lsa_alloc()
... so we can make the MTYPEs static to ospf6_lsa.c

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 19:26:02 +01:00
David Lamparter
c7479286ae pathd: kill *_memory.[ch]
Ouch, MTYPE_PCEP is used in 81 places :(

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 18:53:23 +01:00
David Lamparter
b4216e2c66 eigrpd: kill eigrp_memory.h, use MTYPE_STATIC
Same as previous commit -- convert most DEFINE_MTYPE into the _STATIC
variant, and move the remaining non-static ones to appropriate places.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 18:37:25 +01:00
David Lamparter
66b9a3816a isisd: kill isis_memory.h, use MTYPE_STATIC
Convert most DEFINE_MTYPE into the _STATIC variant, and move the
remaining non-static ones to appropriate places.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 18:27:58 +01:00
Donald Sharp
7bf7917cde
Merge pull request #8303 from volta-networks/fix_coverity_pceplib
pceplib: Fixing coverity messages.
2021-03-22 10:22:25 -04:00
Donald Sharp
cb39b2d4aa
Merge pull request #8280 from kuldeepkash/bgp_convergence_test
tests: Fix bgp convergence issue mentioned in #8279
2021-03-22 10:15:36 -04:00
vivek
4115b2966b bgpd: Reset LLA NHT's interface if there is a change
For link-local IPv6 next hops, the next hop tracking is implemented based
on interface status changes. For this purpose, the ifindex is stored in
the NHT. Reset this value if a change in ifindex is noticed, such as for
example after a restart of the networking service.

Also add some additional debug logs.

Signed-off-by: Vivek Venkatraman <vivek@nvidia.com>
Updates: "bgpd: Switch LL nexthop tracking to be interface based"

Ticket: RM 2575386
Testing Done:
1. Manual verification
2. Precommit (#156), evpn-smoke (#155), bgp-smoke (#157), vrl (#158)
-- Precommit is clean, reported failures in evpn-smoke & vrl are resolved
-- some other tests fail in evpn-smoke, bgp-smoke & vrl, appear to be existing
-- or unrelated failures
2021-03-22 08:45:41 -04:00
Mark Stapp
c00471326e build: test program needs to be warning-free
One of the configure-time test programs produces a warning with
gcc 9 (at least), so it fails if -Werror is enabled. Fix that.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-03-22 08:41:14 -04:00
David Lamparter
833a54b757 lib: fix xref hash calculation
... to make it do what it says it does.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 12:50:27 +01:00
David Lamparter
a3c6749860 lib: add [XXXXX-XXXXX] log prefix & config
This logs the unique ID prefix from the xref that each log message call
has, and adds on/off knobs for both EC and unique ID printing.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 12:50:27 +01:00
David Lamparter
0e3967d766 lib: remove flog() macro
It was only used in one place.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 12:50:27 +01:00
David Lamparter
1b293b2be4 lib: get rid of flog() usage in NB code
This parametrized use of flog with variable EC and priority doesn't mesh
particularly well with the xref code & there isn't really much reason to
not use fixed/constant calls like this.

Signed-off-by: David Lamparter <equinox@diac24.net>
2021-03-22 12:50:27 +01:00