Louis Scalbert 
							
						 
					 
					
						
						
						
						
							
						
						
							db7cf73a33 
							
						 
					 
					
						
						
							
							bgpd: fix interface on leaks from redistribute connected  
						
						 
						
						... 
						
						
						
						In the target VRF's Routing Information Base (RIB), routes that are
leaked and originate from the 'redistribute connected' command have
their next-hop interface set as the interface from the source VRF.
This prevents the IP address of the connected interface from being
reachable from the target VRF.
> router bgp 5227 vrf r1-cust1
>  address-family ipv4 unicast
>   redistribute connected
>   rd vpn export 10:1
>   rt vpn import 52:100
>   rt vpn export 52:101
>   export vpn
>   import vpn
>  exit-address-family
> exit
> !
> router bgp 5227 vrf r1-cust4
>  address-family ipv4 unicast
>   network 192.0.2.0/24
>   rd vpn export 10:1
>   rt vpn import 52:101
>   rt vpn export 52:100
>   export vpn
>   import vpn
>  exit-address-family
> exit
> !
> vrf r1-cust1
>  ip route 192.0.2.0/24 r1-cust4 nexthop-vrf r1-cust4
Extract from the routing table:
> VRF r1-cust1:
> C>* 172.16.29.0/24 is directly connected, r1-eth4, 00:44:15
> S>* 192.0.2.0/24 [1/0] is directly connected, r1-cust4 (vrf r1-cust4), weight 1, 00:00:30
>
> VRF r1-cust4:
> B>* 172.16.29.0/24 [20/0] is directly connected, r1-eth4 (vrf r1-cust1), weight 1, 00:00:02
In r1-cust4 VRF, the nexthop interface of 172.16.29.0/24 is r1-eth4,
which is unknown in the context. The following ping does not work:
> # tcpdump -lnni r1-cust1 'icmp' &
> # ip vrf exec r1-cust4 ping -c1 -I 192.0.2.1 172.16.29.1
> PING 172.16.29.1 (172.16.29.1) 56(84) bytes of data.
PING 172.16.29.1 (172.16.29.1) from 192.0.2.1 : 56(84) bytes of data.
18:49:20.635638 IP 192.0.2.1 > 172.16.29.1: ICMP echo request, id 15897, seq 1, length 64
18:49:27.113827 IP 192.0.2.1 > 192.0.2.1: ICMP host 172.16.29.1 unreachable, length 92
Fix the issue by setting nh_ifindex to the index of the VRF master
interface of the incoming BGP instance. The result is:
> VRF r1-cust4:
> C>* 192.0.2.0/24 is directly connected, r1-cust5, 00:27:40
> B>* 172.16.29.0/24 [20/0] is directly connected, r1-cust1 (vrf r1-cust1), weight 1, 00:00:08
> # tcpdump -lnni r1-cust1 'icmp' &
> # ping -c1 172.16.29.1 -I 192.0.2.1
> PING 172.16.29.1 (172.16.29.1) from 192.0.2.1 : 56(84) bytes of data.
> 18:48:32.506281 IP 192.0.2.1 > 172.16.29.1: ICMP echo request, id 15870, seq 1, length 64
> 64 bytes from 172.16.29.1: icmp_seq=1 ttl=64 time=0.050 ms
> 18:48:32.506304 IP 172.16.29.1 > 192.0.2.1: ICMP echo reply, id 15870, seq 1, length 64
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> 
						
					 
					
						2024-02-01 10:21:43 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Louis Scalbert 
							
						 
					 
					
						
						
						
						
							
						
						
							067fbab4e4 
							
						 
					 
					
						
						
							
							bgpd: fix interface on leaks from network statement  
						
						 
						
						... 
						
						
						
						Leaked routes from prefixes defined with 'network <prefix>' are inactive
because they have no valid nexthop interface.
> vrf r1-cust1
>  ip route 172.16.29.0/24 192.168.1.2
> router bgp 5227 vrf r1-cust1
>  no bgp network import-check
>  address-family ipv4 unicast
>   network 172.16.29.0/24
>   rd vpn export 10:1
>   rt vpn import 52:100
>   rt vpn export 52:101
>   export vpn
>   import vpn
>  exit-address-family
> exit
> !
> router bgp 5227 vrf r1-cust4
>  bgp router-id 192.168.1.1
> !
>  address-family ipv4 unicast
>   network 192.0.2/24
>   rd vpn export 10:1
>   rt vpn import 52:101
>   rt vpn export 52:100
>   export vpn
>   import vpn
>  exit-address-family
> exit
Extract from the routing table:
> VRF r1-cust1:
> S>* 172.16.29.0/24 [1/0] via 192.168.1.2, r1-eth4, weight 1, 00:47:53
>
> VRF r1-cust4:
> B   172.16.29.0/24 [20/0] is directly connected, unknown (vrf r1-cust1) inactive, weight 1, 00:03:40
Routes imported through the "network" command, as opposed to those
redistributed from the routing table, do not associate with any specific
interface.
When leaking prefix from other VRFs, if the route was imported from the
network statement (ie. static sub-type), set nh_ifindex to the index of
the VRF master interface of the incoming BGP instance.
The result is:
> VRF r1-cust4:
> B>* 172.16.29.0/24 [20/0] is directly connected, r1-cust1 (vrf r1-cust1), weight 1, 00:00:08
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> 
						
					 
					
						2024-02-01 10:21:43 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							a2caf2b5e1 
							
						 
					 
					
						
						
							
							Merge pull request  #15268  from LabNConsulting/chopps/quieter-code  
						
						 
						
						... 
						
						
						
						lowercase and localize debug/err macros 
						
					 
					
						2024-02-01 10:54:30 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							e9fc85f421 
							
						 
					 
					
						
						
							
							mgmtd: convert MGMTD_FE_CLIENT_DBG() to debug_fe_client()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-31 20:19:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							21f3b4e5c5 
							
						 
					 
					
						
						
							
							mgmtd: convert MGMTD_BE_CLIENT_DBG() to debug_be_client()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-31 20:19:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							31b6d684e1 
							
						 
					 
					
						
						
							
							mgmtd: convert MGMT_FE_ADAPTER_DBG() to __dbg()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-31 20:19:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							fb8dc955b1 
							
						 
					 
					
						
						
							
							mgmtd: convert MGMT_BE_ADAPTER_DBG() to __dbg()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-31 20:19:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							ef305e8993 
							
						 
					 
					
						
						
							
							mgmtd: convert MGMT_DS_DBG() to __dbg()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-31 20:19:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							ecd13c615b 
							
						 
					 
					
						
						
							
							mgmtd: convert MGMT_TXN_DBG() to __dbg()  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-31 20:18:55 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							bd3b17d27d 
							
						 
					 
					
						
						
							
							Merge pull request  #15258  from louis-6wind/fix-adj-in-attr  
						
						 
						
						... 
						
						
						
						bgpd: fix attr comparaison bgp_adj_in_set 
						
					 
					
						2024-01-31 15:06:40 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							72949f5f94 
							
						 
					 
					
						
						
							
							Merge pull request  #15251  from qlyoung/fix-doc-nbcli-numlist  
						
						 
						
						... 
						
						
						
						doc: fix misformatted list in nbapi docs 
						
					 
					
						2024-01-31 15:06:25 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							25d3086d83 
							
						 
					 
					
						
						
							
							Merge pull request  #15246  from idryzhov/mgmt-get-data-improvements  
						
						 
						
						... 
						
						
						
						mgmt get-data improvements 
						
					 
					
						2024-01-31 06:04:04 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							3afea9ccda 
							
						 
					 
					
						
						
							
							tests: add tests for mgmt get-data with-defaults parameter  
						
						 
						
						... 
						
						
						
						Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-31 02:20:13 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							c19d0a5bf3 
							
						 
					 
					
						
						
							
							mgmtd: add our own format definitions for frontend messages  
						
						 
						
						... 
						
						
						
						It allows people not familiar with libyang and FRR internals to use
mgmtd FE API by looking only at `mgmt_msg_native.h` header. We still use
the same values to avoid a lot of mapping code, and ensure that any
change doesn't slip unnoticed by using static asserts.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-31 02:20:13 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							dda5de0340 
							
						 
					 
					
						
						
							
							mgmtd: fix printing an empty data tree  
						
						 
						
						... 
						
						
						
						We don't need to create an actual tree to print an empty tree, libyang
handles NULL just fine. The actual problem is that `yang_dnode_new`
creates a tree by validating it, and the validation creates all implicit
default nodes. Therefore, when called with "with-default" flags, instead
of getting an empty tree, we get a tree with all top-level default set.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-31 02:20:13 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							e13c590abe 
							
						 
					 
					
						
						
							
							mgmtd: add ability to choose datastore to get data from  
						
						 
						
						... 
						
						
						
						Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-31 02:20:13 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							4317c8ffa6 
							
						 
					 
					
						
						
							
							mgmtd: add support for with-defaults parameter to get-data  
						
						 
						
						... 
						
						
						
						Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-31 02:20:13 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							e2caf64ef7 
							
						 
					 
					
						
						
							
							yang: add more ietf models  
						
						 
						
						... 
						
						
						
						These models are needed to use LYD_PRINT_WD_ALL_TAG flag of libyang.
Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-31 02:20:13 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							642078de8e 
							
						 
					 
					
						
						
							
							Merge pull request  #15254  from LabNConsulting/chopps/notifications  
						
						 
						
						... 
						
						
						
						Add YANG notifications 
						
					 
					
						2024-01-31 02:18:20 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							2a572bad91 
							
						 
					 
					
						
						
							
							Merge pull request  #14764  from mjstapp/nb_gen_tool  
						
						 
						
						... 
						
						
						
						tools, vtysh: add the cli write callback, unhide an NB show command 
						
					 
					
						2024-01-30 23:02:18 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
						
						
							
						
						
							ecc88c52ba 
							
						 
					 
					
						
						
							
							build: build: make mgmtd test client build conditional  
						
						 
						
						... 
						
						
						
						Signed-off-by: Igor Ryzhov <iryzhov@nfware.com> 
						
					 
					
						2024-01-30 15:41:26 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							1e884ba12f 
							
						 
					 
					
						
						
							
							mgmtd: backend subscriptions to notifications  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-30 15:41:26 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Russ White 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							61aa468a04 
							
						 
					 
					
						
						
							
							Merge pull request  #15257  from opensourcerouting/fix/reinstall_aggregate_route_if_rmap  
						
						 
						
						... 
						
						
						
						bgpd: Reinstall aggregated routes if using route-maps and it was changed 
						
					 
					
						2024-01-30 15:08:08 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							cb3242f697 
							
						 
					 
					
						
						
							
							tests: add YANG notification test  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-30 14:54:47 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Quentin Young 
							
						 
					 
					
						
						
						
						
							
						
						
							5b4a3d3af9 
							
						 
					 
					
						
						
							
							doc: update [no] recommendation  
						
						 
						
						... 
						
						
						
						Signed-off-by: Quentin Young <qlyoung@qlyoung.net> 
						
					 
					
						2024-01-30 12:16:01 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Jafar Al-Gharaibeh 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							471e4b7bbe 
							
						 
					 
					
						
						
							
							Merge pull request  #15163  from opensourcerouting/fix/pam_account  
						
						 
						
						... 
						
						
						
						packaging: Require account validation with pam_unix.so if PAM enabled 
						
					 
					
						2024-01-30 10:24:57 -06:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donald Sharp 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							d633a81dbf 
							
						 
					 
					
						
						
							
							Merge pull request  #15250  from opensourcerouting/fix/memory_optimizations  
						
						 
						
						... 
						
						
						
						bgpd: Some memory optimizations 
						
					 
					
						2024-01-30 10:56:35 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donald Sharp 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							71dd971aeb 
							
						 
					 
					
						
						
							
							Merge pull request  #15252  from mjstapp/fix_bitfield_init  
						
						 
						
						... 
						
						
						
						lib: init new bitfield word after realloc 
						
					 
					
						2024-01-30 10:54:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Louis Scalbert 
							
						 
					 
					
						
						
						
						
							
						
						
							5c0aab103d 
							
						 
					 
					
						
						
							
							bgpd: fix attr comparaison bgp_adj_in_set  
						
						 
						
						... 
						
						
						
						In bgp_adj_in_set(), attr has not yet been interned. adj->attr is always
different from attr. adj->attr is always uninterned and interned even if
attr and adj->attr are identical.
Fix the comparison.
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> 
						
					 
					
						2024-01-30 15:24:32 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							9aed5777b7 
							
						 
					 
					
						
						
							
							tests: Check if attributes are reapplied for aggregate routes with route-maps  
						
						 
						
						... 
						
						
						
						Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-30 15:54:04 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							ee1986f1b5 
							
						 
					 
					
						
						
							
							bgpd: Reinstall aggregated routes if using route-maps and it was changed  
						
						 
						
						... 
						
						
						
						Without this change when we change the route-map, we never reinstall the route
if the route-map has changed.
We checked only some attributes like aspath, communities, large-communities,
extended-communities, but ignoring the rest of attributes.
With this change, let's check if the route-map has changed.
bgp_route_map_process_update() is triggered on route-map change, and we set
`changed` to true, which treats aggregated route as not the same as it was before.
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-30 15:47:49 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Mark Stapp 
							
						 
					 
					
						
						
						
						
							
						
						
							55f6d016da 
							
						 
					 
					
						
						
							
							doc: add doc for show configuration running  
						
						 
						
						... 
						
						
						
						Add a doc entry for the newly-unhidden 'show configuration
running ...' command.
Signed-off-by: Mark Stapp <mjs@labn.net> 
						
					 
					
						2024-01-30 08:09:25 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Mark Stapp 
							
						 
					 
					
						
						
						
						
							
						
						
							678292b9be 
							
						 
					 
					
						
						
							
							vtysh: un-hide the show configuration nb cli  
						
						 
						
						... 
						
						
						
						The "show configuration running" cli is pretty useful when
doing NB work; unhide it so it's easier to use.
Signed-off-by: Mark Stapp <mjs@labn.net> 
						
					 
					
						2024-01-30 08:09:25 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Mark Stapp 
							
						 
					 
					
						
						
						
						
							
						
						
							77143ce77a 
							
						 
					 
					
						
						
							
							tools: add config-write callbacks to nb templates  
						
						 
						
						... 
						
						
						
						Add the cli_show (config write) callback when emitting the
create or modify callback in the northbound template. Split
the config-handling and config-output callbacks into two
structs/arrays; this seems to be helpful when doing mgmtd
conversion.
Signed-off-by: Mark Stapp <mjs@labn.net> 
						
					 
					
						2024-01-30 08:09:25 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							25bb8b203c 
							
						 
					 
					
						
						
							
							lib: mgmtd: add YANG notification support  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-30 04:57:10 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							cd869ebcf2 
							
						 
					 
					
						
						
							
							Merge pull request  #15238  from louis-6wind/bgp-leak-network  
						
						 
						
						... 
						
						
						
						bgpd: fix VRF leaking with 'network import-check' 
						
					 
					
						2024-01-30 08:21:05 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							48856741bd 
							
						 
					 
					
						
						
							
							bgpd: Optimize memory usage for bgp_damp_config struct  
						
						 
						
						... 
						
						
						
						```
struct bgp_damp_config {
        unsigned int               suppress_value;       /*     0     4 */
        unsigned int               reuse_limit;          /*     4     4 */
        time_t                     max_suppress_time;    /*     8     8 */
        time_t                     half_life;            /*    16     8 */
        unsigned int               reuse_list_size;      /*    24     4 */
        unsigned int               reuse_index_size;     /*    28     4 */
        unsigned int               ceiling;              /*    32     4 */
        unsigned int               decay_rate_per_tick;  /*    36     4 */
        unsigned int               decay_array_size;     /*    40     4 */
        unsigned int               reuse_scale_factor;   /*    44     4 */
        double                     scale_factor;         /*    48     8 */
        double *                   decay_array;          /*    56     8 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        int *                      reuse_index;          /*    64     8 */
        struct bgp_damp_info * *   reuse_list;           /*    72     8 */
        int                        reuse_offset;         /*    80     4 */
        safi_t                     safi;                 /*    84     4 */
        struct bgp_damp_info *     no_reuse_list;        /*    88     8 */
        struct event *             t_reuse;              /*    96     8 */
        afi_t                      afi;                  /*   104     4 */
        /* size: 112, cachelines: 2, members: 19 */
        /* padding: 4 */
        /* last cacheline: 48 bytes */
};   /* saved 8 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-30 08:12:59 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							a699cc1796 
							
						 
					 
					
						
						
							
							bgpd: Optimize memory usage for bgp_aggregate struct  
						
						 
						
						... 
						
						
						
						```
struct bgp_aggregate {
        uint8_t                    summary_only;         /*     0     1 */
        uint8_t                    as_set;               /*     1     1 */
        uint8_t                    origin;               /*     2     1 */
        _Bool                      med_mismatched;       /*     3     1 */
        _Bool                      med_initialized;      /*     4     1 */
        _Bool                      match_med;            /*     5     1 */
        /* XXX 2 bytes hole, try to pack */
        struct {
                char *             name;                 /*     8     8 */
                struct route_map * map;                  /*    16     8 */
        } rmap;                                          /*     8    16 */
        long unsigned int          count;                /*    24     8 */
        long unsigned int          incomplete_origin_count; /*    32     8 */
        long unsigned int          egp_origin_count;     /*    40     8 */
        struct hash *              community_hash;       /*    48     8 */
        struct hash *              ecommunity_hash;      /*    56     8 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        struct hash *              lcommunity_hash;      /*    64     8 */
        struct hash *              aspath_hash;          /*    72     8 */
        struct community *         community;            /*    80     8 */
        struct ecommunity *        ecommunity;           /*    88     8 */
        struct lcommunity *        lcommunity;           /*    96     8 */
        struct aspath *            aspath;               /*   104     8 */
        safi_t                     safi;                 /*   112     4 */
        uint32_t                   med_matched_value;    /*   116     4 */
        char *                     suppress_map_name;    /*   120     8 */
        /* --- cacheline 2 boundary (128 bytes) --- */
        struct route_map *         suppress_map;         /*   128     8 */
        /* size: 136, cachelines: 3, members: 22 */
        /* sum members: 134, holes: 1, sum holes: 2 */
        /* last cacheline: 8 bytes */
};
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-30 08:12:59 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							0804038916 
							
						 
					 
					
						
						
							
							bgpd: Optimize memory usage for bgp_static struct  
						
						 
						
						... 
						
						
						
						```
struct bgp_static {
        int                        backdoor;             /*     0     4 */
        uint32_t                   label_index;          /*     4     4 */
        uint8_t                    valid;                /*     8     1 */
        /* XXX 1 byte hole, try to pack */
        uint16_t                   encap_tunneltype;     /*    10     2 */
        uint32_t                   igpmetric;            /*    12     4 */
        struct in_addr             igpnexthop;           /*    16     4 */
        uint32_t                   atomic;               /*    20     4 */
        struct {
                char *             name;                 /*    24     8 */
                struct route_map * map;                  /*    32     8 */
        } rmap;                                          /*    24    16 */
        struct prefix_rd           prd __attribute__((__aligned__(8))); /*    40    16 */
        char *                     prd_pretty;           /*    56     8 */
        /* --- cacheline 1 boundary (64 bytes) --- */
        mpls_label_t               label;                /*    64     4 */
        /* XXX 4 bytes hole, try to pack */
        esi_t *                    eth_s_id;             /*    72     8 */
        struct ethaddr *           router_mac;           /*    80     8 */
        struct prefix              gatewayIp __attribute__((__aligned__(8))); /*    88    56 */
        /* size: 144, cachelines: 3, members: 14 */
        /* sum members: 139, holes: 2, sum holes: 5 */
        /* forced alignments: 2 */
        /* last cacheline: 16 bytes */
} __attribute__((__aligned__(8)));   /* saved 8 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-30 08:12:59 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							4821e7a0d8 
							
						 
					 
					
						
						
							
							bgpd: Optimize memory usage for attr struct  
						
						 
						
						... 
						
						
						
						```
struct attr {
	struct aspath *            aspath;               /*     0     8 */
	struct community *         community;            /*     8     8 */
	long unsigned int          refcnt;               /*    16     8 */
	_uint64_t                  flag;                 /*    24     8 */
	struct in_addr             nexthop;              /*    32     4 */
	uint32_t                   med;                  /*    36     4 */
	uint32_t                   local_pref;           /*    40     4 */
	ifindex_t                  nh_ifindex;           /*    44     4 */
	uint8_t                    origin;               /*    48     1 */
	uint8_t                    es_flags;             /*    49     1 */
	uint8_t                    router_flag;          /*    50     1 */
	uint8_t                    default_gw;           /*    51     1 */
	enum pta_type              pmsi_tnl_type;        /*    52     4 */
	uint32_t                   rmap_change_flags;    /*    56     4 */
	struct in6_addr            mp_nexthop_global;    /*    60    16 */
	/* --- cacheline 1 boundary (64 bytes) was 12 bytes ago --- */
	struct in6_addr            mp_nexthop_local;     /*    76    16 */
	ifindex_t                  nh_lla_ifindex;       /*    92     4 */
	struct ecommunity *        ecommunity;           /*    96     8 */
	struct ecommunity *        ipv6_ecommunity;      /*   104     8 */
	struct lcommunity *        lcommunity;           /*   112     8 */
	struct cluster_list *      cluster1;             /*   120     8 */
	/* --- cacheline 2 boundary (128 bytes) --- */
	struct transit *           transit;              /*   128     8 */
	struct in_addr             mp_nexthop_global_in; /*   136     4 */
	struct in_addr             aggregator_addr;      /*   140     4 */
	struct in_addr             originator_id;        /*   144     4 */
	uint32_t                   weight;               /*   148     4 */
	as_t                       aggregator_as;        /*   152     4 */
	uint8_t                    mp_nexthop_len;       /*   156     1 */
	uint8_t                    mp_nexthop_prefer_global; /*   157     1 */
	uint8_t                    sticky;               /*   158     1 */
	uint8_t                    distance;             /*   159     1 */
	uint16_t                   encap_tunneltype;     /*   160     2 */
	uint8_t                    df_alg;               /*   162     1 */
	/* XXX 1 byte hole, try to pack */
	route_tag_t                tag;                  /*   164     4 */
	uint32_t                   label_index;          /*   168     4 */
	mpls_label_t               label;                /*   172     4 */
	struct bgp_attr_srv6_vpn * srv6_vpn;             /*   176     8 */
	struct bgp_attr_srv6_l3vpn * srv6_l3vpn;         /*   184     8 */
	/* --- cacheline 3 boundary (192 bytes) --- */
	struct bgp_attr_encap_subtlv * encap_subtlvs;    /*   192     8 */
	struct bgp_attr_encap_subtlv * vnc_subtlvs;      /*   200     8 */
	struct bgp_route_evpn      evpn_overlay;         /*   208    36 */
	uint32_t                   mm_seqnum;            /*   244     4 */
	uint32_t                   mm_sync_seqnum;       /*   248     4 */
	struct ethaddr             rmac;                 /*   252     6 */
	/* --- cacheline 4 boundary (256 bytes) was 2 bytes ago --- */
	uint16_t                   df_pref;              /*   258     2 */
	uint32_t                   rmap_table_id;        /*   260     4 */
	uint32_t                   link_bw;              /*   264     4 */
	esi_t                      esi;                  /*   268    10 */
	/* XXX 2 bytes hole, try to pack */
	uint32_t                   srte_color;           /*   280     4 */
	uint32_t                   otc;                  /*   284     4 */
	enum nexthop_types_t       nh_type;              /*   288     4 */
	enum blackhole_type        bh_type;              /*   292     4 */
	_uint64_t                  aigp_metric;          /*   296     8 */
	/* size: 304, cachelines: 5, members: 53 */
	/* sum members: 301, holes: 2, sum holes: 3 */
	/* last cacheline: 48 bytes */
};   /* saved 16 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-30 08:12:58 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Igor Ryzhov 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							bb957e4c94 
							
						 
					 
					
						
						
							
							Merge pull request  #15248  from LabNConsulting/chopps/fix-comp-warning  
						
						 
						
						... 
						
						
						
						zebra: fix compiler warning about truncation. 
						
					 
					
						2024-01-29 20:52:00 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Mark Stapp 
							
						 
					 
					
						
						
						
						
							
						
						
							cad880c2df 
							
						 
					 
					
						
						
							
							lib: init new bitfield word after realloc  
						
						 
						
						... 
						
						
						
						Realloc doesn't init - ensure a newly-allocated word is inited.
Signed-off-by: Mark Stapp <mjs@labn.net> 
						
					 
					
						2024-01-29 12:56:28 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Quentin Young 
							
						 
					 
					
						
						
						
						
							
						
						
							f9ed1c9c30 
							
						 
					 
					
						
						
							
							doc: fix misformatted list in nbapi docs  
						
						 
						
						... 
						
						
						
						Signed-off-by: Quentin Young <qlyoung@qlyoung.net> 
						
					 
					
						2024-01-29 09:28:32 -08:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							89e124f042 
							
						 
					 
					
						
						
							
							bgpd: Optimize memory usage for bgp_nlri struct  
						
						 
						
						... 
						
						
						
						```
struct bgp_nlri {
	uint16_t                   afi;                  /*     0     2 */
	uint8_t                    safi;                 /*     2     1 */
	/* XXX 1 byte hole, try to pack */
	bgp_size_t                 length;               /*     4     2 */
	/* XXX 2 bytes hole, try to pack */
	uint8_t *                  nlri;                 /*     8     8 */
	/* size: 16, cachelines: 1, members: 4 */
	/* sum members: 13, holes: 2, sum holes: 3 */
	/* last cacheline: 16 bytes */
};   /* saved 8 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-29 15:37:23 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
						
						
							
						
						
							a403a71fbc 
							
						 
					 
					
						
						
							
							zebra: fix compiler warning about truncation.  
						
						 
						
						... 
						
						
						
						Signed-off-by: Christian Hopps <chopps@labn.net> 
						
					 
					
						2024-01-29 08:35:56 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Donatas Abraitis 
							
						 
					 
					
						
						
						
						
							
						
						
							7133cce196 
							
						 
					 
					
						
						
							
							bgpd: Optimize memory usage for bgp_notify struct  
						
						 
						
						... 
						
						
						
						```
struct bgp_notify {
	uint8_t                    code;                 /*     0     1 */
	uint8_t                    subcode;              /*     1     1 */
	bgp_size_t                 length;               /*     2     2 */
	_Bool                      hard_reset;           /*     4     1 */
	/* XXX 3 bytes hole, try to pack */
	char *                     data;                 /*     8     8 */
	uint8_t *                  raw_data;             /*    16     8 */
	/* size: 24, cachelines: 1, members: 6 */
	/* sum members: 21, holes: 1, sum holes: 3 */
	/* last cacheline: 24 bytes */
};   /* saved 16 bytes! */
```
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org> 
						
					 
					
						2024-01-29 15:29:25 +02:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Christian Hopps 
							
						 
					 
					
						
						
							
							
						
						
						
							
						
						
							f8755d7f86 
							
						 
					 
					
						
						
							
							Merge pull request  #15181  from idryzhov/zebra-mgmtd  
						
						 
						
						... 
						
						
						
						zebra interfaces NB conversion 
						
					 
					
						2024-01-29 07:46:23 -05:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Louis Scalbert 
							
						 
					 
					
						
						
						
						
							
						
						
							fb777555d3 
							
						 
					 
					
						
						
							
							topotests: vpnv4 route leaking with import-check  
						
						 
						
						... 
						
						
						
						Test vpnv4 route leaking with import-check
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> 
						
					 
					
						2024-01-29 10:47:00 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Louis Scalbert 
							
						 
					 
					
						
						
						
						
							
						
						
							14e51be394 
							
						 
					 
					
						
						
							
							bgpd: fix VRF leaking with 'network import-check' (4/4)  
						
						 
						
						... 
						
						
						
						The following configuration creates an infinite routing leaking loop
because 'rt vpn both' parameters are the same in both VRFs.
> router bgp 5227 vrf r1-cust4
>    no bgp network import-check
>    bgp router-id 192.168.1.1
>    address-family ipv4 unicast
>      network 28.0.0.0/24
>      rd vpn export 10:12
>      rt vpn both 52:100
>      import vpn
>      export vpn
>    exit-address-family
> !
> router bgp 5227 vrf r1-cust5
>    no bgp network import-check
>    bgp router id 192.168.1.1
>    address-family ipv4 unicast
>      network 29.0.0.0/24
>      rd vpn export 10:13
>      rt vpn both 52:100
>      import vpn
>      export vpn
>    exit-address-family
The previous commit has added a routing leak update when a nexthop
update is received from zebra. It indirectly calls
bgp_find_or_add_nexthop() in which a static route triggers a nexthop
cache entry registration that triggers a nexthop update from zebra.
Do not register again the nexthop cache entry if the BGP_STATIC_ROUTE is
already set.
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> 
						
					 
					
						2024-01-29 10:47:00 +01:00  
					
					
						 
						
							
							
							 
						
					 
				 
			
				
					
						
							
							
								 
								Louis Scalbert 
							
						 
					 
					
						
						
						
						
							
						
						
							879bfc01c8 
							
						 
					 
					
						
						
							
							bgpd: fix VRF leaking with 'network import-check' (3/4)  
						
						 
						
						... 
						
						
						
						If 'bgp network import-check' is defined on the source BGP session,
prefixes that are defined with the network command cannot be leaked to
the other VRFs BGP table even if they are present in the origin VRF RIB
if the 'rt import' statement is defined after the 'network <prefix>'
ones.
When a prefix nexthop is updated, update the prefix route leaking. The
current state of nexthop validation is now stored in the attributes of
the bgp path info. Attributes are compared with the previous ones at
route leaking update so that a nexthop validation change now triggers
the update of destination VRF BGP table.
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com> 
						
					 
					
						2024-01-29 10:46:43 +01:00