Commit Graph

25798 Commits

Author SHA1 Message Date
David Lamparter
16c3485e74
Merge pull request #9635 from donaldsharp/ospf6_unit 2021-09-22 14:25:46 +02:00
Donald Sharp
86b2043033
Merge pull request #9646 from LabNConsulting/ziemba/skiplist-level-counters-int
lib: skiplist: clean up level counter implementation
2021-09-22 07:21:14 -04:00
Donald Sharp
2b7da4cb31
Merge pull request #9651 from proelbtn/refactor-9638
bgpd: fix mpls nexthop announce in bgp_zebra_announce
2021-09-22 07:19:31 -04:00
Donatas Abraitis
d24f4b7d84
Merge pull request #9645 from mjstapp/fix_show_bgp_lu
bgpd: make show bgp labeled-unicast work
2021-09-22 09:52:09 +03:00
Ryoga Saito
cd18af00c8 bgpd: fix mpls nexthop announce to zebra
currently, has_valid_label is only used to check need to print debug,
but if route has normal nexthops and mpls nexthops, label information
will be printed even for normal nexthops.

Signed-off-by: Ryoga Saito <ryoga.saito@linecorp.com>
2021-09-22 04:58:59 +00:00
G. Paul Ziemba
c324b10f28 lib: skiplist: clean up level counter implementation
Signed-off-by: G. Paul Ziemba <paulz@labn.net>
2021-09-21 17:03:53 -07:00
Donald Sharp
3c11665b02
Merge pull request #9641 from idryzhov/vtysh-vrf-sort
vtysh: remove sorting of vrf node commands
2021-09-21 16:52:59 -04:00
Sri Mohana Singamsetty
e81192ad7c
Merge pull request #9416 from pguibert6WIND/vxlan_evpn_updates
Vxlan evpn updates
2021-09-21 09:26:34 -07:00
Russ White
2075387e77
Merge pull request #9546 from proelbtn/add-support-for-perfix-sid-type-5
Add support for Prefix-SID (Type 5)
2021-09-21 11:36:53 -04:00
Russ White
48f23c8879
Merge pull request #9640 from opensourcerouting/ospf6d-filters
ospf6d: rework filtering commands to be in line with ospfd
2021-09-21 11:28:58 -04:00
Russ White
2c713b5a47
Merge pull request #9637 from donaldsharp/intra_brouter_calc
ospf6d: Use bool instead of an int
2021-09-21 11:25:14 -04:00
Mark Stapp
cd8c2a27c1 bgpd: make show bgp labeled-unicast work
Yet-another path where the safi needs to be changed to locate
the unicast table where LU routes live.

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2021-09-21 11:21:36 -04:00
Donald Sharp
5b311cf18d
Merge pull request #9052 from mjstapp/dplane_incoming_dev
zebra: Move incoming netlink interface address change events to the dplane pthread
2021-09-21 10:51:37 -04:00
Donald Sharp
cd8aaf076e tools: Add some new suppressions
Bunch of new stuff came in w/ the libyang2 upgrade that needs
to be suppressed.  Make it so.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-21 07:54:54 -04:00
Donald Sharp
6926bedfb3 ospf6d: Fix debug string in rare case
When looking up the o_path->ls_prefix if it is not found
the debug statement was using a buf that was never initialized.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-21 07:54:54 -04:00
Donald Sharp
9ffafdd76b ospf6d: Always pre-init all header values to 0
When making the ospf6 header, let's actually fill
in all the header values

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-21 07:54:54 -04:00
Donald Sharp
b0a13ffb36 pimd: Prevent uninited usage of nexthop
pim_msdp_peer_rpf_check creates an nexthop to do
a rpf search against and doesn't initialize it
sucht that the pim_nexthop_lookup function is
making decisions against the nexthop just
created that was uninitialized.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-21 07:54:54 -04:00
Donald Sharp
d0606e0a85 ospf6d: Use appropriate integer size and more context for reason strings
The ospfv3 spf reason strings are just presented internally in the code
without any real context.  Give a tiny bit more useful information for
the developer and convert the integer to a uint32_t

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-21 07:53:30 -04:00
Donald Sharp
f0a4777192
Merge pull request #9642 from slrz/doc-user-routemap-mention-as-path-exclude
doc: mention set as-path exclude in routemap.rst
2021-09-21 07:49:31 -04:00
Lars Seipel
bedcbe4b91 doc: mention set as-path exclude in routemap.rst
Signed-off-by: Lars Seipel <ls@slrz.net>
2021-09-20 20:43:58 +02:00
Igor Ryzhov
d98d4a1e7d vtysh: remove sorting of vrf node commands
A simple strcmp-based sorting done by `config_add_line_uniq` breaks the
correct advanced sorting of static routes done by staticd. We don't
actually need to check vrf node commands for uniqueness as all commands
are daemon specific, so let's use simple `config_add_line` that doesn't
sort commands.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-09-20 21:18:17 +03:00
Igor Ryzhov
598553e34f
Merge pull request #9636 from donaldsharp/unchecked_return
zebra: Fix ignored return value from inet_pton
2021-09-20 20:12:54 +03:00
Renato Westphal
f4f0098ca0 ospf6d: rework filtering commands to be in line with ospfd
Issue #9535 describes how the export-list/import-list commands work
differently on ospfd and ospf6d.

In short:
* On ospfd, "area A.B.C.D export-list" filters which internal
  routes an ABR exports to other areas. On ospf6d, instead, that
  command filters which inter-area routes an ABR exports to the
  configured area (which is quite counter-intuitive). In other words,
  both commands do the same but in opposite directions.
* On ospfd, "area A.B.C.D import-list" filters which inter-area
  routes an ABR imports into the configured area. On ospf6d, that
  command filters which inter-area routes an interior router accepts.
* On both daemons, "area A.B.C.D filter-list prefix NAME <in|out>"
  works exactly the same as import/export lists, but using prefix-lists
  instead of ACLs.

The inconsistency on how those commands work is undesirable. This
PR proposes to adapt the ospf6d commands to behave like they do
in ospfd.

These changes are obviously backward incompatible and this PR doesn't
propose any mitigation strategy other than warning users about the
changes in the next release notes. Since these ospf6d commands are
undocumented and work in such a peculiar way, it's unlikely many
users will be affected (if any at all).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-09-20 13:06:35 -03:00
Donald Sharp
b51c659775 zebra: Fix ignored return value from inet_pton
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-20 09:20:46 -04:00
Donald Sharp
cbcf3335b3 ospf6d: Use bool instead of an int
intra_brouter_calc is a int that is being used a bool,
convert to a bool.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-19 07:55:19 -04:00
Russ White
88dde69cb6
Merge pull request #9632 from donaldsharp/no_forced_wait
tests: Do not do a initial_timeout of 2 seconds for verify_bgp_rib
2021-09-17 12:22:36 -04:00
Russ White
ca45d9e5bf
Merge pull request #8985 from opensourcerouting/ospf6d-gr
ospf6d: introduce support for Graceful Restart (restarting mode)
2021-09-17 12:22:07 -04:00
Donatas Abraitis
62aaaeb122
Merge pull request #9620 from idryzhov/bgp-rmap-memleaks
bgpd: fix memory leaks when using route-maps
2021-09-17 15:48:25 +03:00
Donatas Abraitis
3b902f63c1
Merge pull request #9628 from donaldsharp/git_ignore_pcep
*: Add some missed make check generated files in .gitignore
2021-09-17 15:47:00 +03:00
Mark Stapp
1430121d57
Merge pull request #9629 from idryzhov/nb-cli-sort
lib: significantly improve nb cli command sorting
2021-09-17 08:29:00 -04:00
Igor Ryzhov
0de76236b1 lib: significantly improve nb cli command sorting
Instead of sorting each command one-by-one using listnode_add_sort, add
them to the list without sorting and then sort the list only once.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-09-17 12:00:58 +03:00
Philippe Guibert
f56a15b5bd zebra: refresh vxlan evpn contexts, when bridge interface goes up
When using bgp evpn rt5 setup, after BGP configuration has been
loaded, if the user attempts to detach and reattach the bridged
vxlan interface from the bridge, then BGP loses its BGP EVPN
contexts, and a refresh of BGP configuration is necessary to
maintain consistency between linux configuration and BGP EVPN
contexts (RIB). The following command can lead to inconsistency:

ip netns exec cust1 ip link set dev vxlan1000 nomaster
ip netns exec cust1 ip link set dev vxlan1000 master br1000

consecutive to the, BGP l2vpn evpn RIB is empty, and the way to
solve this until now is to reconfigure EVPN like this:

vrf cust1
 no vni 1000
 vni 1000
exit-vrf

Actually, the link information is correctly handled. In fact,
at the time of link event, the lower link status of the bridge
interface was not yet up, thus preventing from establishing
BGP EVPN contexts. In fact, when a bridge interface does not
have any slave interface, the link status of the bridge interface
is down. That change of status comes a bit after, and is not
detected by slave interfaces, as this event is not intercepted.

This commit intercepts the bridge link up event, and triggers
a check on slaved vxlan interfaces.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2021-09-17 10:25:38 +02:00
Philippe Guibert
c762010889 zebra: handle bridge mac address update in evpn contexts
when running bgp evpn rt5 setup, the Rmac sent in BGP updates
stands for the MAC address of the bridge interface. After
having loaded frr configuration, the Rmac address is not refreshed.
This issue can be easily reproduced by executing some commands:

ip netns exec cust1 ip link set dev br1000 address  2e🆎45:aa:bb:cc

Actually, the BGP EVPN contexts are kept unchanged.
That commit proposes to fix this by intercepting the mac address
change, and refreshing the vxlan interfaces attached to te bridge
interface that changed its MAC address.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2021-09-17 10:25:35 +02:00
Sri Mohana Singamsetty
7f906926c7
Merge pull request #9235 from AnuradhaKaruppiah/nht_mh
bgpd: Extend EVPN next hop tracking to type-1 and type-4 routes
2021-09-16 14:52:45 -07:00
Jafar Al-Gharaibeh
7c3ea1c424
Merge pull request #9619 from AnuradhaKaruppiah/lttng-updates
lttng build updates
2021-09-16 14:55:43 -05:00
Donald Sharp
4367df1575 tests: Do not do a initial_timeout of 2 seconds for verify_bgp_rib
A bunch of tests have this pattern:

a) Install a new prefix into bgp
b) Run this loop:
foreach (router in topology) {
	verify_bgp_rib(router)
}

This is to ensure that the prefix is actually disseminated.
The problem with this, of course, is that a wait of 2 seconds
for every item in that loop makes no sense.  As that the initial
router verification of it's bgp rib will wait 2 seconds and
all the remaining bgp routers in the topology will have gotten
the data.  So we end up waiting a bunch of extra time.

Remove the initial_wait time for verify_bgp_rib.  Also
increase the failure wait time to 30 seconds.  This is
to give a bigger window for bgp to send it's data for
our test systems that could be under heavy load.  In the
normal case tests will never hit this.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-16 15:12:13 -04:00
Donatas Abraitis
68a8bd50d4
Merge pull request #9627 from donaldsharp/connect_interface_based_issue
bgpd: Allow v6 LL peers to work when connected to as well
2021-09-16 21:14:43 +03:00
Donald Sharp
7e469b9476
Merge pull request #9489 from opensourcerouting/pim-restruct-20210825
pimd: move IGMP memberships from socket to iface, + some cleanups
2021-09-16 12:32:45 -04:00
Renato Westphal
b275f44a4a ospf6d: fix build problem with ancient json-c versions
Some CI VMs are using really old versions of json-c (pre 2013 [1])
that expect filenames to be passed as "char *" instead of "const char *".

Add some explicit casts to fix the resulting compiler errors on those
VMs (passing "char *" when the API expects "const char *" is fine).
Hopefully this commit should be reverted once the CI is updated to use
newer versions of json-c.

[1] https://github.com/json-c/json-c/commit/20e4708c

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-09-16 12:26:48 -03:00
Renato Westphal
b1c1004fb9 tests: add OSPFv3 graceful restart topotest
Add a new topotest that features a topology with seven routers spread
across four OSPF areas:
* 1 backbone area;
* 1 regular non-backbone area (0.0.0.1);
* 1 stub area (0.0.0.2);
* 1 NSSA area (0.0.0.3).

All routers have both GR and GR helper functionality enabled in
the configuration. The test consists of restarting each router,
one at time, and checking that all forwarding planes (and LSDBs)
are kept intact during those restarts.

A successful run takes about three minutes to finish.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-09-16 12:26:48 -03:00
Renato Westphal
7116509803 ospf6d: introduce support for Graceful Restart (restarting mode)
RFC 5187 specifies the Graceful Restart enhancement to the OSPFv3
routing protocol. This commit implements support for the GR
restarting mode.

Here's a quick summary of how the GR restarting mode works:
* GR can be enabled on a per-instance basis using the `graceful-restart
  [grace-period (1-1800)]` command;
* To perform a graceful shutdown, the `graceful-restart prepare ipv6
  ospf` EXEC-level command needs to be issued before restarting the
  ospf6d daemon (there's no specific requirement on how the daemon
  should be restarted);
* `graceful-restart prepare ospf` will initiate the graceful restart
  for all GR-enabled instances by taking the following actions:
  o Flooding Grace-LSAs over all interfaces
  o Freezing the OSPF routes in the RIB
  o Saving the end of the grace period in non-volatile memory (a JSON
    file stored in `$frr_statedir`)
* Once ospf6d is started again, it will follow the procedures
  described in RFC 3623 until it detects it's time to exit the graceful
  restart (either successfully or unsuccessfully).

Testing done:
* New topotest featuring a multi-area OSPF topology (including stub
  and NSSA areas);
* Successful interop tests against IOS-XR routers acting as helpers.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-09-16 12:26:48 -03:00
Renato Westphal
1a898463a3 ospf6d: add missing entry to array of strings
Commit b8212e0310 introduced OSPF6_SPF_FLAGS_ASBR_STATUS_CHANGE but
didn't update the 'ospf6_spf_reason_str' array accordingly. Fix this.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2021-09-16 12:26:05 -03:00
Donald Sharp
f4291f383d *: Add some missed make check generated files in .gitignore
Some pcep log output from `make check` is showing up in
git status.  Make git know it's ok to ignore this stuff.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-16 08:13:17 -04:00
Donald Sharp
dcd5ba5505 bgpd: Allow v6 LL peers to work when connected to as well
Initial commit: 8761cd6ddb

introduced the idea of v6 LL using interface up/down events
instead of nexthop resolution to know when a peering should
happen or not.  This above commit left a hole where if the remote
peer connected to this bgp, the bgp code would still believe
the peering is down.   Modify the code to double check and
ensure that we have proper v6 LL resolution flags set.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-16 08:07:45 -04:00
Donatas Abraitis
a8f67b1306
Merge pull request #9614 from idryzhov/bgp-aspath-coverity
bgpd: fix coverity warning
2021-09-16 15:03:25 +03:00
Donatas Abraitis
0d0d9d929e
Merge pull request #9623 from donaldsharp/test_bgp_table
tests: Fix make check builds on some bsd variants
2021-09-16 09:03:12 +03:00
Donatas Abraitis
4899c2be99
Merge pull request #9622 from taspelund/arp_sysctl_formatting
doc: fixup formatting in zebra.rst
2021-09-16 08:56:13 +03:00
Donald Sharp
6aed8082b6 tests: Fix make check builds on some bsd variants
Compilation is warning that a memcpy is only copying
the first (sizeof pointer) into memory.  This is not
what we really want.  Although it does beg the question about
why this memcpy is needed( or what it is doing ).  I'm going
to just fix the memcpy and call it a day.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-15 21:10:24 -04:00
Trey Aspelund
4c9cf1988f doc: fixup formatting in zebra.rst
Swap out incorrect usage of '^' with proper usage of '-'.

Signed-off-by: Trey Aspelund <taspelund@nvidia.com>
2021-09-15 20:50:55 -04:00
Donald Sharp
827ddd5a1d
Merge pull request #9596 from LabNConsulting/ziemba/printfrr-nexthop
printfrr %pNHcg, %pNHci
2021-09-15 20:23:30 -04:00