Commit Graph

27618 Commits

Author SHA1 Message Date
Donatas Abraitis
56fb213493 nhrpd: Do not explicitly set the thread pointer to NULL
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-04 19:29:06 +03:00
Donatas Abraitis
dc4a902689 ldpd: Do not explicitly set the thread pointer to NULL
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-04 19:25:18 +03:00
Donatas Abraitis
c34d552dd5 isisd: Do not explicitly set the thread pointer to NULL
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-04 19:24:54 +03:00
Donatas Abraitis
876968a610 bfdd: Do not explicitly set the thread pointer to NULL
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-04 19:24:28 +03:00
Donatas Abraitis
510404d9f3 zebra: Do not explicitly set the thread pointer to NULL
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-04 19:23:55 +03:00
Donald Sharp
fc3f4adbc6 ospf6d: Ensure expire thread is properly stopped
The lsa->expire thread is for keeping track of when we
are expecting to expire(remove/delete) a lsa.  There
are situations where we just decide to straight up
delete the lsa, but we are not ensuring that the
lsa is not already setup for expiration.
In that case just stop the expiry thread and
do the deletion.

Additionally there was a case where ospf6d was
just dropping the fact that a thread was already
scheduled for expiration.  In that case we
should just setup the timer again and it will
reset it appropriately.

Fixes: #9721
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-04 12:13:57 -04:00
Donatas Abraitis
a33842f08d bgpd: Don't set NULL for struct thread at bgp_dump_interval_func()
NULL is already handled by thread_fetch().

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-10-04 19:07:41 +03:00
Donatas Abraitis
a3e036f36a
Merge pull request #9689 from AnuradhaKaruppiah/bgp-evpn-lttng
bgpd: initial batch of evpn lttng tracepoints
2021-10-04 19:05:41 +03:00
Donald Sharp
eb946ef505 eigrpd: Ensure better struct thread * semantics
1) Do not explicitly set the thread pointer to NULL.
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

2) Fix mixup of `struct eigrp_interface` and `struct eigrp`
usage of the same thread pointer.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-04 09:47:29 -04:00
Donald Sharp
64da2e8ecd ripd: Ensure better struct thread * semantics
Do not explicitly set the thread pointer to NULL.
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-04 09:36:54 -04:00
Donald Sharp
c733548963 ripngd: Ensure better struct thread * semantics
1) Remove `struct thread *` pointers that are never used
2) Do not explicitly set the thread pointer to NULL.
FRR should only ever use the appropriate THREAD_ON/THREAD_OFF
semantics.  This is espacially true for the functions we
end up calling the thread for.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-04 09:28:36 -04:00
Igor Ryzhov
651151f0be isisd: remove unused function declaration
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-04 15:23:46 +03:00
Igor Ryzhov
cb00030f9a doc: fix debugging-ospf label
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-04 15:22:24 +03:00
Donald Sharp
f3d20a2aa5 bgpd: When removing v6 address being used as a nexthop ensure peer is reset
With v6 interface based peering, we send the global as well as the LL address
as nexthops to the peer.  When either of these were removed on the interface
we were not necessarily resetting the connection.  Leaving bgp in a state
where the peer had reachability for addresses that are no longer in use.

Modify the code that when we receive an interface address deletion
event.  Check to see that we are using the v6 address as nexthops
for that peer and if so, tell it to reset.

I initially struggled with a hard reset of the peer or a clear but
choose to follow other places in the code that we noticed address
changes that resulted in hard resets.

Ticket: #2799568
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-04 08:03:38 -04:00
Donald Sharp
e1a32ec1c5 bgpd: bgp_announce_route should know if we should force the update or not
When calling bgp_announce_route allow it to properly set the flag
to force an update to go out or not.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-10-04 07:59:18 -04:00
Mobashshera Rasool
de4e7e3355 pimd: pimd: hello sent counters are getting clear on new neighbor addition
Problem Statement:
==================
On new neighbor addition, the tx counter for hello msg is reset.

Fix:
=================
Do not reset the tx counter on new neighbor addition.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-10-03 22:04:34 -07:00
Mobashshera Rasool
79992e8a42 pimd: Add a flag to decide PIM has to send Hello
Problem Statement:
==================
pim maintains two counters hello tx and hello rx at interface level.
At present pim needs to send the hello message prior to other pim
message as per RFC. This logic is getting derived from the tx hello
counters. So when a new neighbor is added, tx counters are set to
zero and then based on this, it is further decided to send hello in
pim_hello_require function.

Fix:
====
Separating the hello statistics and the logic to decide when to send hello
based on a new flag. pim_ifstat_hello_sent will be used to note down
the hello stats while a new flag is added to decide whether to send hello
or not if it is the first packet to a neighbor.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-10-03 22:04:34 -07:00
Chirag Shah
1b3ac4c7ca zebra: add nhg id to show ip route json
Add json field nexthop group id to
'show ip route json'.

Testing Done:
{
  "27.0.0.14\/32":[
    {
      "prefix":"27.0.0.14\/32",
      "protocol":"bgp",
      "selected":true,
      "destSelected":true,
      "distance":20,
      "metric":0,
      "installed":true,
      "table":254,
      "internalStatus":16,
      "internalFlags":8,
      "internalNextHopNum":2,
      "internalNextHopActiveNum":2,
      "nexthopGroupId":103,     <---- New field
      "uptime":"00:04:37",
      "nexthops":[
        {
          "ip":"fe80::202:ff:fe00:11",
          "interfaceName":"uplink-1",
        },
        {
          "ip":"fe80::202:ff:fe00:1d",
          "interfaceName":"uplink-2",
        }
      ]
    }
  ]
}

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2021-10-03 16:20:46 -07:00
Donatas Abraitis
31df775552
Merge pull request #9714 from idryzhov/bgp-ext-comm-doc
doc: fix range for bgp expanded community list
2021-10-02 20:14:11 +03:00
Donatas Abraitis
b1fb03f8b1
Merge pull request #9710 from idryzhov/bgp-distribute-list-update
bgpd: fix access-list update callback
2021-10-02 20:12:47 +03:00
Donatas Abraitis
5d9e468205
Merge pull request #9701 from AnuradhaKaruppiah/lttng-build-fix
bgpd: fix build error seen when lttng is enabled
2021-10-02 20:11:32 +03:00
rgirada
89eb4727de ospfd: GR helper functionality change in helper exit
Description:
	As per the RFC 3623 section 3.2,
	OSPF nbr shouldn't be deleted even in unsuccessful helper exit.

	1. Made the changes to keep neighbour even after exit.
	2. Restart the dead timer after expiry in helper. Otherwise, Restarter
	   will be in FULL state in helper forever until it receives the 'hello'.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2021-10-01 11:59:11 -07:00
Anuradha Karuppiah
23aa35ade5 bgpd: initial batch of evpn lttng tracepoints
Low overhead bgp-evpn TPs have been added which push data out in a binary
format -
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
root@switch:~# lttng list --userspace |grep "frr_bgp:evpn"
      frr_bgp:evpn_mh_nh_rmac_zsend (loglevel: TRACE_DEBUG_LINE (13)) (type: tracepoint)
      frr_bgp:evpn_mh_nh_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_mh_nhg_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_mh_vtep_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_bum_vtep_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
      frr_bgp:evpn_mac_ip_zsend (loglevel: TRACE_INFO (6)) (type: tracepoint)
root@switch:~#
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

In addition to the tracepoints a babeltrace python plugin for pretty
printing (binary data is converted into grepable strings). Sample usage -
frr_babeltrace.py trace_path

Sample tracepoint output -
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1. frr_bgp: evpn_mac_ip_zsend
frr_bgp:evpn_mac_ip_zsend {'action': 'add', 'vni': 1007, 'mac': '00:02:00:00:00:04', 'ip': 'fe80::202:ff:fe00:4', 'vtep': '27.0.0.15', 'esi': '03:44:38:39:ff:ff:01:00:00:02'}

2. frr_bgp: evpn_mh_vtep_zsend
frr_bgp:evpn_mh_vtep_zsend {'action': 'add', 'esi': '03:44:38:39:ff:ff:01:00:00:02', 'vtep': '27.0.0.16'}

3. frr_bgp: evpn_mh_nhg_zsend
frr_bgp:evpn_mh_nhg_zsend {'action': 'add', 'type': 'v4', 'nhg': 74999998, 'esi': '03:44:38:39:ff:ff:01:00:00:02', 'vrf': 85}

4. frr_bgp: evpn_mh_nh_zsend
frr_bgp:evpn_mh_nh_zsend {'nhg': 74999998, 'vtep': '27.0.0.16', 'svi': 93}

5. frr_bgp: evpn_mh_nh_rmac_zsend
frr_bgp:evpn_mh_nh_rmac_zsend {'action': 'add', 'vrf': 85, 'nh': '::ffff:1b00:12', 'rmac': '00:02:00:00:00:50'}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2021-10-01 09:02:25 -07:00
Igor Ryzhov
0757efc0ce doc: fix range for bgp expanded community list
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-01 18:36:02 +03:00
Mark Stapp
f89211f7c9 tests: fix log string in topotests/lib/bgprib.py
Correct a log string in a method in bgprib.py - cut-and-paste
error, maybe?

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2021-10-01 08:06:35 -04:00
Mark Stapp
2aad8c4289 bgpd: add 'header' info to show bgp afi safi json detail
The '... json detail' output is missing some data that's shown
via the 'route_vty_out_detail_header' function. Integrate the
json version of that function in the 'json detail' path.

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2021-10-01 08:06:35 -04:00
Mark Stapp
edfee30d64 bgpd: add some const
Add const to a couple of arguments in bgp_label utilities,
and in a show function.

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2021-10-01 07:48:45 -04:00
Igor Ryzhov
e3cb363a73 doc: fix ospf distribute-list command and description
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-01 14:45:21 +03:00
Igor Ryzhov
b0a007df7a bgpd: fix access-list update callback
When a regular access-list is updated, we should update references to
regular access-lists, not as-path access-lists.

Fixes #9707.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-01 14:45:07 +03:00
Donald Sharp
d0bf22a10b
Merge pull request #9712 from idryzhov/travis-gprc
docker: remove grpc from Travis CI
2021-10-01 07:34:44 -04:00
Igor Ryzhov
7a53c83a68 docker: remove grpc from Travis CI
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-10-01 14:04:42 +03:00
Manoj Naragund
25dd89e398 ospf6d: minor struct compare issues.
Problem Statement:
Multiple struct compare using memcmp, which might result in issue due to
structure padding/alignment.

Fix:
The code changes involve structure member by member comparison to
remove any issues related to padding/alignment.

Signed-off-by: Manoj Naragund <mnaragund@vmware.com>
(cherry picked from commit 67db821a1d6d68b19862d50b68ed19278c5f2422)
2021-09-30 09:53:26 -07:00
Anuradha Karuppiah
e439b73606 bgpd: fix build error seen when lttng is enabled
Signed-off-by: Anuradha Karuppiah <anuradhak@nvidia.com>
2021-09-30 08:54:26 -07:00
Igor Ryzhov
ac32b03f98
Merge pull request #9694 from mjstapp/fix_topo_pim_cmp
tests: fix string comparison in lib/pim.py
2021-09-30 12:40:55 +03:00
Igor Ryzhov
ef322b022f *: cleanup interface loopback/vrf check
There's a helper function to check whether the interface is loopback or
VRF - if_is_loopback_or_vrf. Let's use it whenever we need to check that.

There's no functional change in this commit.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-09-30 12:31:05 +03:00
Yuan Yuan
a1638c7ce5 ospfd: Fix assert related to capability opaque
The capability opaque command can trigger asserts through a rather
round-about mechanism. The command eventually calls
ospf_renegotiate_optional_capabilities, which will call
ospf_flush_self_originated_lsas_now, which has the side effect of
marking the OSPF instance as shutting down. This was causing the
flooding logic to call ospf_write immediately insted of waiting for the
select IO loop every time it was sending a maxage LSA.  This could cause
the list of OSPF interfaces needing to send packets to be drained while
there was a call to ospf_write pending from the IO loop. When the
pending call ran, it would see the empty list of interfaces and assert.

Signed-off-by: Yuan Yuan <yyuanam@amazon.com>
2021-09-29 19:37:33 +00:00
Mark Stapp
94e8feaa9f tests: fix string comparison in lib/pim.py
Use correct string comparison syntax in lib/pim.py

Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2021-09-29 11:49:43 -04:00
David Lamparter
a89bae26f7
Merge pull request #9560 from LabNConsulting/ziemba/frrmod_load-error-messages
frrmod_load(): fix error messages
2021-09-29 14:35:35 +02:00
Donald Sharp
ffd7467cc4
Merge pull request #9688 from LabNConsulting/working/lb/fix-tt-bgp-vrf
tests:  get bgp_l3vpn_to_bgp_vrf running again, also improve logging (minor)
2021-09-29 07:29:39 -04:00
Sri Mohana Singamsetty
2e2d2be87f
Merge pull request #9422 from pguibert6WIND/update_autort_l3vni
bgpd: update auto route target for l3vni appropriately
2021-09-28 09:15:34 -07:00
Lou Berger
1b9ebabb27 tests: get bgp_l3vpn_to_bgp_vrf running, also improve logging
Signed-off-by: Lou Berger <lberger@labn.net>
2021-09-28 11:29:46 -04:00
Quentin Young
c85f53017a
Merge pull request #9669 from LabNConsulting/chopps/topo-sudo-env 2021-09-28 10:53:23 -04:00
Donald Sharp
8e55e2c87b
Merge pull request #9677 from ton31337/fix/zlog_newline_not_needed
tools: Add coccinelle script to catch \n or \r at the end of zlog_*
2021-09-28 10:44:54 -04:00
Russ White
5393318d81
Merge pull request #9682 from adrianomarto/mesh-group-fix
pimd: fixing command "no ip msdp mesh-group member"
2021-09-28 10:21:17 -04:00
Igor Ryzhov
b7c21fad11 zebra: fix buffer overflow
mac is only 6 bytes long and we shouldn't blindly copy unknown number of
bytes into it.

Fixes #9671.

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2021-09-28 15:45:14 +03:00
David Lamparter
f62de63c6a *: frr-format with unmodified GCC
Since there's very few locations where the `frr-format` actually prints
false positive warnings, consensus seems to be to just work around the
false positives even if the code is correct.

In fact, there is only one pattern of false positives currently, in
`bfdd/dplane.c` which does `vty_out("%"PRIu64, (uint64_t)be64toh(...))`.
The workaround/fix for this is a replacement `be64toh` whose type is
always `uint64_t` regardless of what OS we're on, making the cast
unnecessary.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-09-28 11:20:32 +02:00
Fredi Raspall
d97e415dd5 ospfd: fix processing of ext prefix in SR
The existing logic was not comparing the prefix of the extended
prefix TLV. As a result, the code was removing all of the prefix
SIDs except the one received on every LSA update.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
2021-09-28 10:40:33 +02:00
Fredi Raspall
1a41378ecc ospfd: remove duplicate field update
In update_ext_prefix_sid(), the sr_prefix is associated to the
SR node and inherits the adv router ID regardless.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
2021-09-28 10:40:33 +02:00
Fredi Raspall
152656d8ef ospfd: replace iterator by RO version ..
..since it's used for read-only lookups.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
2021-09-28 10:40:33 +02:00
Fredi Raspall
d1db7359ad ospfd: fix logic on SR prefix configuration
The logic was broken in some corner cases.

Signed-off-by: Fredi Raspall <fredi@voltanet.io>
2021-09-28 10:40:33 +02:00