Commit Graph

31703 Commits

Author SHA1 Message Date
Donatas Abraitis
d76f782c84
Merge pull request #13064 from chiragshah6/fdev1
lib: fix clear route-map command
2023-03-21 08:58:51 +02:00
Donatas Abraitis
ad959654f5
Merge pull request #13063 from qlyoung/update-docker-build-info
doc: add release instructions for docker images
2023-03-21 08:56:20 +02:00
rgirada
c8c1a240ab ospfd: Fixing Summary origination after range configuration
Description:
	After area range config, summary lsas are aggerated to configured
	route but later it was being flushed instead of the actual summary
	lsa. This was seen when prefix-id of the aggregated route is same
	as one of the actual summary route.
	Here, aggregated summary lsa need to be returned to set the flag
	SUMMARY_APPROVE after originating aggregated summary lsa but its not.
	Which is being cleaned up as part of unapproved summary cleanup.
	Corrected this now.

Issue: #13028

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2023-03-21 04:16:37 +00:00
Sindhu Parvathi Gopinathan
463110f733 lib:fix clear route-map cmd using DEFPY
Due to the wrong input argv id, "argv[idx_word]->arg"
fetched in-correctly and it clears all the route-maps instead of
specific one.

Now correct argv id is passed to clear the given route-map counters.

Also, use RMAP_NAME which allows to show list of configured
route-maps in the system.

After Fix:-

Ticket:#3407773
Issue:3407773

Testing: UT done

Before:
TORC11# clear route-map counters
  <cr>
  WORD  route-map name

After:

TORC11# clear route-map counters
  <cr>
  RMAP_NAME  route-map name
     my-as

Signed-off-by: Chirag Shah <chirag@nvidia.com>
Signed-off-by: Sindhu Parvathi Gopinathan's <sgopinathan@nvidia.com>
2023-03-20 19:17:32 -07:00
Quentin Young
5c6b543b64 doc: add release instructions for docker images
Signed-off-by: Quentin Young <qlyoung@qlyoung.net>
2023-03-20 17:04:43 -04:00
Russ White
55cf5ea672
Merge pull request #12688 from dorDiogo/isis_hello_padding_sometimes
isisd: Add support for IS-IS hello padding during-adjacency-formation
2023-03-20 17:00:57 -04:00
Donald Sharp
f83431c7e8 lib: on bfd peer shutdown actually stop event
When deleting a bfd peer during shutdown, let's ensure
that any scheduled events are actually stopped.

==7759== Invalid read of size 4
==7759==    at 0x48BF700: _bfd_sess_valid (bfd.c:419)
==7759==    by 0x48BF700: _bfd_sess_send (bfd.c:470)
==7759==    by 0x492F79C: thread_call (thread.c:2008)
==7759==    by 0x48E9BD7: frr_run (libfrr.c:1223)
==7759==    by 0x1C739B: main (bgp_main.c:550)
==7759==  Address 0xfb687a4 is 4 bytes inside a block of size 272 free'd
==7759==    at 0x48369AB: free (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==7759==    by 0x48BFA5A: bfd_sess_free (bfd.c:535)
==7759==    by 0x2B7034: bgp_peer_remove_bfd (bgp_bfd.c:339)
==7759==    by 0x29FF8A: peer_free (bgpd.c:1160)
==7759==    by 0x29FF8A: peer_unlock_with_caller (bgpd.c:1192)
==7759==    by 0x2A0506: peer_delete (bgpd.c:2633)
==7759==    by 0x208190: bgp_stop (bgp_fsm.c:1639)
==7759==    by 0x20C082: bgp_event_update (bgp_fsm.c:2751)
==7759==    by 0x492F79C: thread_call (thread.c:2008)
==7759==    by 0x48E9BD7: frr_run (libfrr.c:1223)
==7759==    by 0x1C739B: main (bgp_main.c:550)
==7759==  Block was alloc'd at
==7759==    at 0x4837B65: calloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
==7759==    by 0x48F53AF: qcalloc (memory.c:116)
==7759==    by 0x48BF98D: bfd_sess_new (bfd.c:397)
==7759==    by 0x2B76DC: bgp_peer_configure_bfd (bgp_bfd.c:298)
==7759==    by 0x2B76DC: bgp_peer_configure_bfd (bgp_bfd.c:279)
==7759==    by 0x29BA06: peer_group2peer_config_copy (bgpd.c:2803)
==7759==    by 0x2A3D96: peer_create_bind_dynamic_neighbor (bgpd.c:4107)
==7759==    by 0x2A4195: peer_lookup_dynamic_neighbor (bgpd.c:4239)
==7759==    by 0x21AB72: bgp_accept (bgp_network.c:422)
==7759==    by 0x492F79C: thread_call (thread.c:2008)
==7759==    by 0x48E9BD7: frr_run (libfrr.c:1223)
==7759==    by 0x1C739B: main (bgp_main.c:550)

tl;dr -> Effectively, in this test setup we have 300 dynamic bgp
sessions all of which are using bfd.  When a peer collision is detected
or we remove the peers, if an event has been scheduled but not actually
executed yet the event event was not actually being stopped, leaving
the bsp pointer on the thread->arg and causing a crash when it is
executed.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-20 16:07:20 -04:00
Pooja Jagadeesh Doijode
7eefea98ba zebra: Fix for heap-use-after-free in EVPN
Issue:
When a netns is deleted, since zebra doesn’t receive interface down/delete
notifications from kernel, it manually deletes the interface without removing
the association between zebra_l3vni and the interface that is being deleted
(i.e it deletes the interface without setting “zl3vni->vxlan_if” to NULL).

Later, during the deletion of netns, when zl3vni_rmac_uninstall() is called to
uninstall the remote RMAC from the kernel, zebra ends up accessing stale
“zl3vni->vxlan_if” pointer, which now points to freed memory.
This was causing heap use-after-free.

Fix:
Before zebra starts deleting the interfaces when it receives netns delete notification,
appropriate functions() are being called to remove the association between evpn structs
and interface and set “zl3vni->vxlan_if” to NULL. This ensures that when
zl3vni_rmac_uninstall() is called during netns deletion, it will bail because
“zl3vni->vxlan_if” is NULL.

Signed-off-by: Pooja Jagadeesh Doijode <pdoijode@nvidia.com>
2023-03-20 12:54:31 -07:00
Sai Gomathi N
522ec0a924 pim6d: Do not use interfaces with ifindex as 0
After restarting pim6d, in some cases the ifindex is 0 for the interfaces,
so the vif index is also assigned as 0.
This causes the interface name to be pim6reg.

Fix:
If the ifindex is 0 and the interface name is not "pimreg" or "pim6reg",
the function will return without assigning vifindex with an error message.

Issue: #12744

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2023-03-19 22:58:55 -07:00
Donald Sharp
c8cba1b88c
Merge pull request #13050 from opensourcerouting/fix/update_snmp_mibs_doc 2023-03-19 18:40:08 -04:00
Donald Sharp
44d8908d00
Merge pull request #13049 from opensourcerouting/fix/missed_ipv6_prefix-list_any 2023-03-19 18:38:38 -04:00
Donald Sharp
9dd64182dd
Merge pull request #13047 from opensourcerouting/nhrpd-memleak-20230319 2023-03-19 18:35:57 -04:00
Donatas Abraitis
8709aab554 doc: Use frrouting/frr-mibs repo downloading SNMP mibs
Use repo instead of pastebin.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-19 22:56:13 +02:00
Donatas Abraitis
14c1e0a169 lib: Destroy any flag when creating a prefix-list entry with prefix
The same as 61c07b9d43, but forgot to put IPv6
in place.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-19 22:51:37 +02:00
Donatas Abraitis
d8986f0134 tests: Check if prefix-lists with IPv6 any works fine
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-19 22:51:36 +02:00
David Lamparter
637a914d19 nhrpd: drop peer references on freeing cache entry
When dropping an interface (e.g. at shutdown) while there are still
valid cache entries, the reference held on the cache entries' peer
pointers was leaking.

Fixes: #12505
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-03-19 12:38:49 +01:00
Jafar Al-Gharaibeh
07b427d164
Merge pull request #13025 from donaldsharp/ospf_ti_lfa_leaks
Ospf ti lfa leaks
2023-03-18 23:44:37 -05:00
Jafar Al-Gharaibeh
18f5535b79
Merge pull request #13026 from chiragshah6/fdev1
pbrd:fix mismatching in match src-dst
2023-03-18 23:42:32 -05:00
Jafar Al-Gharaibeh
330e9f6efe
Merge pull request #13038 from donaldsharp/ospf_apiserver_memleaks
ospfd: Cleanup some memory leaks on shutdown in ospf_apiserver.c
2023-03-18 23:28:46 -05:00
Donald Sharp
7773d0071a ospfd: Cleanup some memory leaks on shutdown in ospf_apiserver.c
Clean up some memory leaks found in ospf_apiserver.c  Also
a crash in the original implementation.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-18 15:35:34 -04:00
Donald Sharp
f2073996bc
Merge pull request #13023 from opensourcerouting/mld-expire-off
pimd: stop t_sg_expire in MLD NOINFO transition
2023-03-18 07:32:09 -04:00
Donald Sharp
32894bf8af
Merge pull request #13024 from opensourcerouting/fix/bgpd_prefix-list_changes_not_affected
lib: Adjust only any flag for prefix-list entries if destroying
2023-03-18 07:31:12 -04:00
Donatas Abraitis
4f039e94aa
Merge pull request #13027 from donaldsharp/evpn_crashit_like_you_wantit
bgpd: Prevent Null pointer deref when outputting data
2023-03-18 10:22:33 +02:00
Renato Westphal
f54232d0b2 ospfd: Fix inconsistency in LSDB JSON output
As it can be seen below, the LSDB JSON output varies depending
whether a filter option is specified or not (e.g. "adv-router",
"self-originate"):

> show ip ospf database router json
{
  "routerId":"3.3.3.3",
  "routerLinkStates":{
    "areas":{
      "0.0.0.0":[
        {
          "lsaAge":175,
          "options":"*|-|-|-|-|-|E|-",
          [snip]

> show ip ospf database router adv-router 2.2.2.2 json
{
  "routerId":"3.3.3.3",
  "Router Link States":{
    "0.0.0.0":{
      "2.2.2.2":{
        "lsaAge":193,
        "options":"*|-|-|-|-|-|E|-",
        [snip]

This inconsistency is undesirable since it makes this data harder to
consume programmatically. Also, in the second output, "Router Link
States" is used as a JSON key, which doesn't conform to our JSON
guidelines (JSON keys need to be camelCased).

Make the required changes to ensure the first output structure is used,
regardless if any output filter is used or not.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2023-03-17 23:00:31 -03:00
Renato Westphal
a08f41b95b ospfd: Add "detail" option to "show ip ospf database"
This option is useful to dump detailed information about the LSDB using
a single command (instead of one command per LSA type).

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2023-03-17 23:00:31 -03:00
Renato Westphal
b131b1ed9c ospfd: Refactor the "show ip ospf database" command
Combine all variations of this command into a single DEFPY to
improve maintainability. No behavioral changes intended.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2023-03-17 23:00:17 -03:00
Chirag Shah
03494887ed pbrd:fix mismatching in match src-dst
upstream commit 67765a232d has incorect
address family check which prevent from
deleting src/dst config under pbr rule.

Ticket:#3405024
Issue:3405024
Testing Done:

Config:

pbr-map map6 seq 1
 match src-ip 2000::200:100💯0/96
 match dst-ip 2000:💯100💯0/96
 set nexthop-group group3

Before:
torc-12(config)# pbr-map map6 seq 1
torc-12(config-pbr-map)# no match src-ip 2000::200:100💯0/96
Cannot mismatch families within match src/dst

After:
torc-12(config)# pbr-map map6 seq 1
torc-12(config-pbr-map)# no match src-ip 2000::200:100💯0/96
torc-12(config-pbr-map)#

Signed-off-by: Chirag Shah <chirag@nvidia.com>
2023-03-17 17:01:13 -07:00
Donald Sharp
3059f5c992 bgpd: Prevent Null pointer deref when outputting data
Crash:

(gdb) bt
0  0x00007fee27de15cb in raise () from /lib/x86_64-linux-gnu/libpthread.so.0
1  0x00007fee280ecd9c in core_handler (signo=11, siginfo=0x7ffe56001bb0, context=<optimized out>) at lib/sigevent.c:264
2  <signal handler called>
3  0x0000555e321c41b2 in prefix_rd2str (prd=0x10, buf=buf@entry=0x7ffe56002080 "27.0.0.R\340\373\062\062^U", size=size@entry=28) at bgpd/bgp_rd.c:168
4  0x0000555e321c431a in printfrr_prd (buf=0x7ffe560021a0, ea=<optimized out>, ptr=<optimized out>) at bgpd/bgp_rd.c:224
5  0x00007fee2812069b in vbprintfrr (cb_in=cb_in@entry=0x7ffe56002330, fmt0=fmt0@entry=0x555e3229a3ad " RD: %pRD\n", ap=ap@entry=0x7ffe560023d8) at lib/printf/vfprintf.c:564
6  0x00007fee28122ef7 in vasnprintfrr (mt=mt@entry=0x7fee281cb5e0 <MTYPE_VTY_OUT_BUF>, out=out@entry=0x7ffe560023f0 " RD: : R\n", outsz=outsz@entry=1024, fmt=fmt@entry=0x555e3229a3ad " RD: %pRD\n", ap=ap@entry=0x7ffe560023d8) at lib/printf/glue.c:103
7  0x00007fee28103504 in vty_out (vty=vty@entry=0x555e33f82d10, format=format@entry=0x555e3229a3ad " RD: %pRD\n") at lib/vty.c:190
8  0x0000555e32185156 in bgp_evpn_es_show_entry_detail (vty=0x555e33f82d10, es=0x555e33c38420, json=<optimized out>) at bgpd/bgp_evpn_mh.c:2655
9  0x0000555e32188fe5 in bgp_evpn_es_show (vty=vty@entry=0x555e33f82d10, uj=false, detail=true) at bgpd/bgp_evpn_mh.c:2721
notice prd=0x10 in #3.  This is because in bgp_evpn_mh.c we are sending &es->es_base_frag->prd.

There is one spot in the code where during output the es->es_base_frag is checked for non nullness
Let's just make sure it's right in all the places.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-17 15:44:33 -04:00
Renato Westphal
7644097f61
Merge pull request #13019 from rgirada/ospf_type3_fix
ospfd: Ospf ABR doesnt Advertise LSA summary
2023-03-17 13:04:43 -03:00
Russ White
d4906f8b6d
Merge pull request #13005 from donaldsharp/prefix_list_speedup
lib: Speedup prefix-list readin by a large factor
2023-03-17 11:19:38 -04:00
Donald Sharp
52ff0e3ed4 ospfd: Free up q_space in early return path
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-17 10:58:08 -04:00
Donald Sharp
eb7e14011f ospfd: Fix ospf_ti_lfa drop of an entire table
The new_rtrs variable was just generated and then dropped.  Let's
fix that entirely

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-17 10:37:40 -04:00
Donatas Abraitis
61c07b9d43 lib: Adjust only any flag for prefix-list entries if destroying
Before this patch, if we destroy `any` flag for a prefix-list entry, we always
set destination as 0.0.0.0/0 and/or ::/0.

This means that, if we switch from `ip prefix-list r1-2 seq 5 deny any` to
`ip prefix-list r1-2 seq 5 permit 10.10.10.10/32` we will have
`permit any` eventually, which broke ACLs.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-17 14:54:39 +02:00
Donatas Abraitis
a1e538178c tests: Check if route-map works correctly if modifying prefix-lists
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-17 14:54:38 +02:00
David Lamparter
f4ac0a1c7c pimd: stop t_sg_expire in MLD NOINFO transition
When hitting gm_sg_update from the S,G expiry timer, t_sg_expire will
already be cancelled.  But when arriving there from e.g. the MLD packet
getting cleared out, it'll still be running.

Clear out the timer if we arrive with `has_expired == true`.

Fixes: #12441
Reported-by: Vijay Kumar Gupta <vijayg@vmware.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-03-17 13:38:31 +01:00
Donald Sharp
3bf4d3b45d
Merge pull request #13016 from opensourcerouting/feature/ospf_logging_upstream_backport
ospfd, ospfd6: Add more logging
2023-03-17 07:55:09 -04:00
rgirada
e6f3d0811d ospfd: Ospf ABR doesnt Advertise LSA summary
Description:
	OSPF ABR will summarise the networks based on configured range
	and re-advtertise the summarised route. But if configured range
	prefix id is same as one of the subset of routes prefix id then
	as per rcf2328 Appendex-E recommendation, it will prepare the LSID and originate.
	While re-advertising, it is using ospf LSDB instead of area specific
	LSDB which is making it fail to re-advertise the summary lsa.
	Fixed this by passing correct LSDB pointer.

Issue: #12995

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2023-03-17 10:11:28 +00:00
Donatas Abraitis
6c634d2912
Merge pull request #13012 from donaldsharp/hold_time_reset
bgpd: Always restart timer from scratch in OpenConfirm/Established
2023-03-17 12:04:28 +02:00
Martin Winter
386d232a1a ospfd: Log Adjacency Changes with Neighbor IP in addition to Neighbor ID
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-17 10:17:52 +02:00
Donatas Abraitis
ba427e6348 ospfd, ospf6d: Add more logging details
Basically just router-id or interface/IP.

Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
2023-03-17 10:14:26 +02:00
Donatas Abraitis
a550e3446c
Merge pull request #13009 from donaldsharp/nexthop_use_interface_name
bgpd: Use interface name instead of pointer value
2023-03-17 09:56:00 +02:00
Sai Gomathi N
6339167300 pim6d: Custom error-message for non-multicast groups
While configuring global or non-multicast address for IPv6 mld join command,
displaying a custom error-message "invalid multicast address"

Signed-off-by: Sai Gomathi N <nsaigomathi@vmware.com>
2023-03-16 22:13:26 -07:00
Donald Sharp
aa554d4b65 bgpd: Always restart timer from scratch in OpenConfirm/Established
Imagine this scenario:

A peer has very large hold/keepalive timers of 600/200.  This peer is
using the DataCenter default time.  As such the open will cause
the t_holdtime to be negotiated to 600 seconds.  Now also imagine
that both peers are in update-delay.  If we do not restart the
timers and both peers are in Update Delay, we will continously
reset the peer because the hold time will be hit( since the peer
is not sending us any data ).

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-16 19:23:38 -04:00
Donald Sharp
090109617e
Merge pull request #12999 from opensourcerouting/fix/bgp_leaks_random_stuff
bgpd: aggregate routes memory leak for aspath
2023-03-16 19:12:55 -04:00
Donald Sharp
e2e8f8dd51 lib: Speedup prefix-list readin by a large factor
Reading in prefix-lists is reading in the specified
prefix list and validating that the prefix is unique
2 times.  This makes no sense.  Relax the requirement
that a prefix list can limit this as well as completely
remove this check.  Validation then just becomes
does this prefix-list specified actually make sense
and that is taken care of by the the cli code.

Reading in prefix-lists was looking for duplicate prefixes
2 times instead of doing it just one time.  Let's just
not do it at all.

By doing this change, The code changes from never
completing for a 27k long prefix-list to taking
just under 30 seconds, with 4 daemons processing
this data.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-16 10:40:35 -04:00
Donald Sharp
50e049db76 bgpd: Use interface name instead of pointer value
Log message is borked in a manner that makes it unusable:
bgpd[52]: [VX6SM-8YE5W][EC 33554460] 2000:31:0:53::2: nexthop_set failed, resetting connection - intf 0x561eb9005a30

Let's print out the interface name instead.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-16 10:26:01 -04:00
Donald Sharp
9a02d9a3bc
Merge pull request #13006 from opensourcerouting/bgp-gr-null-warning
bgpd: fix NULL argument warning
2023-03-16 07:41:10 -04:00
David Lamparter
4b216f58dc bgpd: fix NULL argument warning
gcc 12.2.0 complains `error: ‘%s’ directive argument is null`, even
though all enum values are covered with a string.  Let's just go with a
`???` default.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2023-03-16 11:00:02 +01:00
anlan_cs
5b498ae7ec yang, bgpd: Fix "aggregator-asn" to support asdot
The following command is not working:

 > (routemap)  set aggregator as ASNUM A.B.C.D

Since "aggregator-asn" has already supported asdot,
fixed it with new yang type. Extra ASN validation
(leading zeroes for instance) are done in the validate
hook of the yang leaf.

Signed-off-by: anlan_cs <vic.lan@pica8.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2023-03-16 07:00:53 +01:00
Donald Sharp
9b3cebe228
Merge pull request #13002 from opensourcerouting/fix/missing_bgp_dest_unlock_node_leak_update 2023-03-15 21:54:15 -04:00