Commit Graph

22622 Commits

Author SHA1 Message Date
Chirag Shah
1c00fb274c bgpd: local routes use non-default distance
Use user provided AD for local routes (aggregate).

 address-family ipv4 unicast
  distance bgp 20 200 210
  network 47.2.2.8/30
  aggregate-address 51.1.0.0/16

Testing Done:

Before aggr route uses default 200 AD even user provided local AD.
B>* 51.1.0.0/16 [200/0] unreachable (blackhole), weight 1, 00:01:14

After:
B>* 51.1.0.0/16 [210/0] unreachable (blackhole), weight 1, 00:00:01

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-12-09 16:28:17 -08:00
Donald Sharp
dc29bb3b6b
Merge pull request #7685 from mjstapp/fix_nhrp_int_sa
nhrpd: fix SA warning in nhrp_interface
2020-12-09 15:02:42 -05:00
Karen Schoener
4d1e5644b7 ldpd, isisd, ospfd: Remove periodic ldp-sync hello message
Removing the obsolete ldp-sync periodic 'hello' message.

When ldp-sync is configured, IGPs take action if the LDP process goes down.

The IGPs have been updated to use the zapi client close callback to detect
the LDP process going down.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-12-09 14:11:38 -05:00
Mark Stapp
1c6a23c859
Merge pull request #7699 from opensourcerouting/ldpd-printfrr-issue
ldpd: fix printfrr format specifiers in the child processes
2020-12-09 13:36:28 -05:00
Mark Stapp
00fcf0fe2e
Merge pull request #7700 from opensourcerouting/isisd-null-check
isisd: fix null pointer dereference when parsing LSP
2020-12-09 13:34:11 -05:00
Donald Sharp
327c3aad2a
Merge pull request #7686 from volta-networks/fix_ldpsync_igps_detect_client_close
isisd, ospfd: IGPs detect LDP down via zapi client close message
2020-12-09 11:49:22 -05:00
Renato Westphal
df2c1f3d42 isisd: fix null pointer dereference when parsing LSP
In some extraordinary circumstances an LSP might not have any
TLV. Add a null check to prevent a crash when that happens.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-12-09 12:21:33 -03:00
Renato Westphal
5f004539b8 ldpd: fix printfrr format specifiers in the child processes
In ldpd, the child processes send IPC messages to the main process to
perform logging in their behalf (access to the file descriptor used
for logging needs to be serialized). This commit fixes a problem
that was preventing the printfrr format specifiers from working in
the child processes, since vsnprintf() was being used instead of
vsnprintfrr() before sending the log messages to the parent process.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2020-12-09 11:55:10 -03:00
Karen Schoener
cb135cc943 isisd, ospfd: IGPs detect LDP down via zapi client close message
When ldp-sync is configured, IGPs take action if the LDP process goes down.

Currently, IGPs detect the LDP process is down if they do not receive a
periodic 'hello' message from LDP within 1 second.

Intermittently, this heartbeat mechanism causes false topotest failures.
When the failure occurs, LDP is busy receiving messages from zebra for a
few seconds.  During this time, LDP does not send the expected periodic
message.

With this change, IGPs detect LDP down via zapi client close message.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-12-09 08:41:42 -05:00
Philippe Guibert
91b1421e84 zebra: anticipate zns creation at vrf creation when backend is vrf-lite
in the case the namespace pointer is already available, feed it at vrf
creation. this prevents from crashing if the netlink parsing already
began, and the vrf-lite is not enabled yet.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-12-09 13:26:20 +00:00
Mark Stapp
e386d2b154
Merge pull request #7690 from donaldsharp/nht_show_is_not_not_not
zebra, tests: Fix `show ip nht`
2020-12-09 07:58:37 -05:00
Rafael Zalamena
4e32d023cd lib: prevent libyang abstraction memory leak
Call `ly_set_free()` on `YANG_ITER_STOP` as well.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-12-09 09:57:28 -03:00
Donald Sharp
dfe719ca78
Merge pull request #7688 from kuldeepkash/bgp_multi_vrf
tests: Enhanced auto-rd verification logic for evpn_type5 tests
2020-12-09 07:47:09 -05:00
Donald Sharp
2a20876706
Merge pull request #7694 from slankdev/slankdev-use-zservsend-1
zebra: use zserv_send_message instead of writen
2020-12-09 07:36:32 -05:00
Hiroki Shirokura
732d22cbf2 zebra: use zserv_send_message instead of writen
Following functions is using writen to dispatch message
into socket, but another function uses zserv_send_message.
This commit does tiny unification for zapi's socket messaging.

Funcs:
- zsend_assign_label_chunk_response()
- zsend_label_manager_connect_response()

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
2020-12-09 17:17:21 +09:00
Kaushik
a069482f1f ospf6d : Code refactoring for route redistribution.
1. Created new ospf6_redist structure.
2. Moved the 'route_map' structure from structure 'ospf6' to
   structure 'ospf6_redist'.
3. Added new message type OSPF6_REDISTRIBUTE.
4. Added the placeholder for metric option in structure ospf6_redist
   for redistribute.
5. Added few API's for route redistribute lookup, add & del.

Signed-off-by: Kaushik <kaushik@niralnetworks.com>
2020-12-09 13:27:23 +05:30
Donald Sharp
dda33b6e0c zebra, tests: Fix show ip nht
The `show ip nht` and `show ipv6 nht` commands were broken.
This is because recent code commit: 0154d8ce45

assumed that p must not be NULL and this is not the case.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 15:50:46 -05:00
Mark Stapp
08b17099f2
Merge pull request #7684 from donaldsharp/metric_doc
doc: Add some notes about RR semantics and the Linux Kernel
2020-12-08 12:16:43 -05:00
Quentin Young
bcccb2248d debian: clean up packaging stuff for scripting
Signed-off-by: Quentin Young <qlyoung@nvidia.com>
2020-12-08 11:28:01 -05:00
kuldeepkash
3732ea226a tests: Enhanced auto-rd verification as per changes done in #7652
1. As per recent changes done in PR #7652, we have modified the auto-rd verification logic
2. Dev PR link: https://github.com/FRRouting/frr/pull/7652

Signed-off-by: kuldeepkash <kashyapk@vmware.com>
2020-12-08 15:53:20 +00:00
Mark Stapp
e5773617af nhrpd: fix SA warning in nhrp_interface
Clear SA warning from recent nhrp cache code changes.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-12-08 09:10:10 -05:00
Donald Sharp
9a06c15792 doc: Update sharpd and bgpd documentation
Update these two daemons to include the new
ability for both bgp and sharpd to send extra informational
data to zebra.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:07:21 -05:00
Donald Sharp
e46723a50e bgpd, zebra: Add ability for bgp to send AS-Path information to zebra
Add a bit of code to allow bgp to send the AS-Path associated with
the route being installed to zebra so it can be displayed and
used as part of the `show ip route A` command in zebra.

eva# show ip route 20.0.0.0/11
Routing entry for 20.0.0.0/11
  Known via "bgp", distance 20, metric 0, best
  Last update 00:00:00 ago
  * 192.168.161.1, via enp39s0, weight 1
    AS-Path: 60000 64539 15096 6939 8075

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:07:21 -05:00
Donald Sharp
cfa2a35d8d sharpd, zebra: Pass and display opaque data as PoC
Pass data from sharpd to zebra as opaque data and display
it as part of the detailed route data.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:06:09 -05:00
Donald Sharp
80a6ee90c3 zebra: Setup structure for opaque data to be displayed
Setup the output mechanism for opaque data to be displayed
to the end operator.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:06:08 -05:00
Donald Sharp
a29a60016e zebra: Gather opaque data into the route entry for storage
Just gather the opaque data into the route entry.  Later
commits will display this data for end users as well as
to send it down.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:06:08 -05:00
Donald Sharp
71c4870b2c lib: Add encode/decode of opaque data
Add a bit of code that allows for opaque data to be
sent from an upper level protocol to zebra.  This is just
pass through data that will be used as part of displaying
useful data about a route in a `show ip route` command
in future commits.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:06:08 -05:00
Donald Sharp
aab4eca1c0 lib, zebra: Fix overlapping message types
We had duplicate message id's.  Shit's broke yo.

Fix.  I have no idea how this properly worked.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:06:08 -05:00
Donald Sharp
b64e173374
Merge pull request #7683 from volta-networks/feat_zapi_client_close
zebra: Adding zapi client close notification
2020-12-08 09:05:00 -05:00
Donald Sharp
ba5e7ae2e0 doc: Add some notes about RR semantics and the Linux Kernel
Add doc about RR semantics for Linux Kernel and why it works
the way it does.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-08 09:02:02 -05:00
Karen Schoener
581e797e02 zebra: Adding zapi client close notification
When zebra detects a client close, send a zapi client close
notification.

Signed-off-by: Karen Schoener <karen@voltanet.io>
2020-12-07 18:22:36 -05:00
Russ White
6a684109ae
Merge pull request #7681 from chiragshah6/mdev
bgpd: fix distance for aggregate route
2020-12-07 17:19:09 -05:00
Russ White
bd32345be3
Merge pull request #7582 from AnuradhaKaruppiah/frr-reload-cleanup
frr reload fixes for mac and ip normalization
2020-12-07 16:19:04 -05:00
Russ White
c0f5b038b6
Merge pull request #7501 from pguibert6WIND/nhrp_map_fix
nhrpd: cache config may disappear if iface not present at startup
2020-12-07 16:17:39 -05:00
Mark Stapp
a88a7c8d43 zebra: improve dataplane plugin queue counters
Add the current queue depths for each plugin to the
'show dplane providers' output. Maintain the out-bound queue
max counter properly, that was being ignored.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-12-07 13:54:08 -05:00
Mark Stapp
0ca6f3b1e6 zebra: remove useless deleted route_entries promptly
Zebra accumulates route-entry objects and then processes them
as a group. If that rib processing is delayed, because the
dataplane/fib programming has built up a queue e.g., zebra can
hold multiple deleted route objects in memory. At scale, this can
be a problem. Delete unneeded route entries promptly, if they
can't contribute to rib processing.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-12-07 13:54:08 -05:00
Chirag Shah
801bb996a4 bgpd: fix distance for aggregate route
bgp aggregate address installs route with self peer which
can have peer->su of unspecifed type.
bgp_distance_apply bailed out as it fails to parse
sockunion2hostprefix for af type unspec.

config:
 address-family ipv4 unicast
  aggregate-address 50.1.0.0/16 summary-only

Testing Done:

Before:
B>* 50.1.0.0/16 [20/0] unreachable (blackhole), weight 1, 00:00:02

After:
B>* 50.1.0.0/16 [200/0] unreachable (blackhole), weight 1, 00:01:28

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2020-12-07 08:31:04 -08:00
Rafael Zalamena
866f48f2df lib: silently ignore duplicated values
Keep the previous CLI behavior of silently ignoring access lists which
contain the same value.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-12-07 12:20:22 -03:00
Rafael Zalamena
54d153f786 lib: disallow prefix list duplicated values
Don't allow users to create multiple entries in the same list with the
same value to keep the behavior previously to northbound migration.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-12-07 12:08:44 -03:00
Rafael Zalamena
f1ca1dde81
Merge pull request #7671 from idryzhov/bfd-fix-session-lookup
bfd: fix session lookup
2020-12-07 10:09:34 -03:00
Donatas Abraitis
e8678e2c51
Merge pull request #7679 from donaldsharp/topo_fixes
tests: Close some open handles
2020-12-07 11:14:09 +02:00
Donald Sharp
46a0656f7a tests: Close some open handles
I accidently installed something that is telling me about
unlosed handles in the tests.  Let's clean them up.

<and yes I have no idea wtf I did>

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-05 20:05:52 -05:00
Rafael Zalamena
208dc372cd lib: silently ignore duplicated values
Keep the previous CLI behavior of silently ignoring access lists which
contain the same value.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-12-04 18:12:58 -03:00
Rafael Zalamena
f414129b0c lib: disallow access list duplicated values
Don't allow users to create multiple rules in the same list with the
same value to keep the behavior previously to northbound migration.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2020-12-04 18:11:45 -03:00
Mark Stapp
f017e7312e
Merge pull request #7675 from donaldsharp/bgp_nh
bgpd: Let's actually track if the nh was updated
2020-12-04 15:36:27 -05:00
Donald Sharp
f1df19a841
Merge pull request #7669 from ranjanyash54/2370
ospf6d: Router-ID filter is not filtering the show command "do show i…
2020-12-04 10:39:53 -05:00
Donald Sharp
bc23c57d7b
Merge pull request #7673 from idryzhov/isisd-sa
isisd: fix SA warning
2020-12-04 10:39:14 -05:00
Donatas Abraitis
00c106648f bgpd: Handle IPv6 prefixes with IPv4 nexthops for zebra
Prevent from crashing as well here:

```
(gdb) bt
0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
1  0x00007ff54ec5242a in __GI_abort () at abort.c:89
2  0x00007ff54ffb1dd5 in core_handler (signo=11, siginfo=0x7fff189328f0, context=<optimized out>) at lib/sigevent.c:255
3  <signal handler called>
4  update_ipv6nh_for_route_install (api_nh=0x7fff1893309c, is_evpn=<optimized out>, best_pi=0x55c18854f220,
    pi=0x55c18854f220, ifindex=0, nexthop=0x0, nh_bgp=0x55c18850db20, nh_othervrf=<optimized out>) at bgpd/bgp_zebra.c:1099
5  bgp_zebra_announce (dest=dest@entry=0x55c188553020, p=p@entry=0x55c188553020, info=info@entry=0x55c18854f220,
    bgp=bgp@entry=0x55c18850db20, afi=afi@entry=AFI_IP6, safi=safi@entry=SAFI_UNICAST) at bgpd/bgp_zebra.c:1381
6  0x000055c1858ffa3a in bgp_process_main_one (bgp=0x55c18850db20, dest=0x55c188553020, afi=AFI_IP6, safi=SAFI_UNICAST)
    at bgpd/bgp_route.c:2908
7  0x000055c1858ffbbe in bgp_process_wq (wq=<optimized out>, data=0x55c1885550a0) at bgpd/bgp_route.c:3017
8  0x00007ff54ffca560 in work_queue_run (thread=0x7fff189373e0) at lib/workqueue.c:291
9  0x00007ff54ffc0a91 in thread_call (thread=thread@entry=0x7fff189373e0) at lib/thread.c:1681
10 0x00007ff54ff8b978 in frr_run (master=0x55c187caaed0) at lib/libfrr.c:1110
11 0x000055c1858a165b in main (argc=6, argv=0x7fff18937648) at bgpd/bgp_main.c:523
```

```
5  bgp_zebra_announce (dest=dest@entry=0x55c188553020, p=p@entry=0x55c188553020, info=info@entry=0x55c18854f220,
    bgp=bgp@entry=0x55c18850db20, afi=afi@entry=AFI_IP6, safi=safi@entry=SAFI_UNICAST) at bgpd/bgp_zebra.c:1381
        ifindex = 0
        nexthop = 0x0
        nh_weight = 0
```

Reproduce:

```
~# echo "announce route 2a02:4780:1::abdc/128 next-hop 192.168.0.2" > /run/exabgp.in
```

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2020-12-04 17:37:36 +02:00
Mark Stapp
0114e2edc9
Merge pull request #7667 from donaldsharp/vtysh_more_useful_data
Vtysh more useful data
2020-12-04 08:14:23 -05:00
Donald Sharp
06f16b2c25 bgpd: Let's actually track if the nh was updated
In bgp_zebra_announce when iterating over multipath
we were checking to ensure that the nexthop was updated
but never initially clearing the nh_updated variable.
Thus leading to a situation where we could crash.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-12-04 08:01:31 -05:00