mirror_frr/bgpd
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
..
rfapi bgpd: Convert free/strdup to XSTRDUP in bgp_rfapi_cfg.c 2024-01-24 19:03:11 -05:00
rfp-example *: Convert struct event_master to struct event_loop 2023-03-24 08:32:17 -04:00
.gitignore
bgp_addpath_types.h bgpd: Implement neighbor X addpath-tx-best-selected command 2023-06-07 22:27:29 +03:00
bgp_addpath.c bgpd: Handle Addpath capability using dynamic capabilities 2023-10-03 17:44:19 +03:00
bgp_addpath.h bgpd: Handle Addpath capability using dynamic capabilities 2023-10-03 17:44:19 +03:00
bgp_advertise.c bgpd: fix attr comparaison bgp_adj_in_set 2024-01-30 15:24:32 +01:00
bgp_advertise.h bgpd: Convert the bgp_advertise_attr->adv to a fifo 2023-10-10 10:09:10 -04:00
bgp_aspath.c bgpd:aspath leak fix 2023-11-14 20:39:08 +04:00
bgp_aspath.h bgpd: add set as-path exclude acl-list command 2023-08-07 12:30:34 +02:00
bgp_attr_evpn.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_attr_evpn.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_attr.c bgpd: fix VRF leaking with 'network import-check' (3/4) 2024-01-29 10:46:43 +01:00
bgp_attr.h Merge pull request #15250 from opensourcerouting/fix/memory_optimizations 2024-01-30 10:56:35 -05:00
bgp_bfd.c bgpd: Move the peer->su to connection->su 2023-09-10 08:31:25 -04:00
bgp_bfd.h *: Convert struct event_master to struct event_loop 2023-03-24 08:32:17 -04:00
bgp_bmp.c lib, bgpd, nhrpd: Cleanup memory in lib/resolver on shutdown 2023-12-16 09:18:41 -05:00
bgp_bmp.h bgpd: loc-rib uptime moved to bgp_path_info_extra and set in header 2023-11-04 12:17:48 +01:00
bgp_btoa.c *: zebra.h should not have fcntl.h 2024-01-09 12:50:40 -05:00
bgp_clist.c build: add -Wimplicit-fallthrough 2023-10-12 21:23:18 +03:00
bgp_clist.h bgpd: add 'match community-list any' function 2023-10-02 15:24:18 +02:00
bgp_community_alias.c *: Add a hash_clean_and_free() function 2023-03-21 08:54:21 -04:00
bgp_community_alias.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_community.c bgpd: Remove deprecated COMMUNITY_INTERNET community 2023-08-03 17:12:19 +03:00
bgp_community.h bgpd: Remove deprecated COMMUNITY_INTERNET community 2023-08-03 17:12:19 +03:00
bgp_conditional_adv.c bgpd: Flush attrs only if we don't have to announce a conditional route 2023-11-21 10:49:36 +02:00
bgp_conditional_adv.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_damp.c bgpd: Initialise timebuf arrays to zeros for dampening reuse timer 2023-09-22 12:04:17 +03:00
bgp_damp.h bgpd: Optimize memory usage for bgp_damp_config struct 2024-01-30 08:12:59 +02:00
bgp_debug.c bgpd: add hooks for displaying module debug messages 2024-01-11 14:38:23 +01:00
bgp_debug.h bgpd: add hooks for displaying module debug messages 2024-01-11 14:38:23 +01:00
bgp_dump.c *: remove sys/stat.h from zebra.h 2024-01-09 12:39:23 -05:00
bgp_dump.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_ecommunity.c bgpd: fix ecommunity_fill_pbr_action heap-buffer-overflow 2024-01-04 17:32:01 +01:00
bgp_ecommunity.h bgpd: fix export prefixes when rt extcomm set by route-map 2023-11-21 18:10:38 +01:00
bgp_encap_tlv.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_encap_tlv.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_encap_types.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_errors.c Revert "bgpd: store bgp link-state prefixes" 2023-10-10 16:45:00 -04:00
bgp_errors.h Revert "bgpd: store bgp link-state prefixes" 2023-10-10 16:45:00 -04:00
bgp_evpn_mh.c bgpd: revamp evpn debugs nexthop and l3vni 2023-12-27 16:13:13 -08:00
bgp_evpn_mh.h *: Rename struct thread to struct event 2023-03-24 08:32:17 -04:00
bgp_evpn_private.h bgpd: Convert from struct bgp_node to struct bgp_dest 2023-08-22 09:35:46 +08:00
bgp_evpn_vty.c bgpd: MTYPE_BGP was being overused split up 2023-11-21 12:41:18 -05:00
bgp_evpn_vty.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_evpn.c Merge pull request #15068 from chiragshah6/zdev 2024-01-02 10:42:28 +02:00
bgp_evpn.h bgpd: aggr summary-only suppressed export to evpn 2023-11-29 21:44:08 -08:00
bgp_filter.c bgpd: add set as-path exclude acl-list command 2023-07-19 10:57:48 +02:00
bgp_filter.h bgpd: add set as-path exclude acl-list command 2023-07-19 10:57:48 +02:00
bgp_flowspec_private.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_flowspec_util.c bgpd: add some flowspec sanity returns 2023-04-28 22:28:16 +02:00
bgp_flowspec_util.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_flowspec_vty.c *: Let's use the native IFNAMSIZ instead of INTERFACE_NAMSIZ 2023-11-21 08:08:29 -05:00
bgp_flowspec.c bgpd: Free temp memory 2023-05-29 13:39:14 +04:00
bgp_flowspec.h bgpd: Treat withdraw variable as a bool 2023-04-06 17:41:32 -04:00
bgp_fsm.c bgpd: Fix format overflow for graceful-restart debug logs 2024-01-24 09:06:43 +02:00
bgp_fsm.h bgpd: Fix format overflow for graceful-restart debug logs 2024-01-24 09:06:43 +02:00
bgp_io.c bgpd: bgp_fsm_change_status/BGP_TIMER_ON and BGP_EVENT_ADD 2023-09-10 08:31:25 -04:00
bgp_io.h bgpd: Convert bgp_io.c to take struct peer_connection 2023-08-18 09:29:04 -04:00
bgp_keepalives.c bgpd: make bgp_keepalives_on|off connection oriented 2023-09-10 08:31:25 -04:00
bgp_keepalives.h bgpd: make bgp_keepalives_on|off connection oriented 2023-09-10 08:31:25 -04:00
bgp_label.c bgpd: Used %pBD instead of %pRN 2023-11-13 10:28:28 -05:00
bgp_label.h bgpd: add a function to compare two label lists 2023-06-16 10:54:58 +02:00
bgp_labelpool.c bgpd: bgp_sync_label_manager failure case 2024-01-06 20:26:14 -05:00
bgp_labelpool.h bgpd: Use synchronous way to get labels from Zebra 2023-06-20 20:50:10 +03:00
bgp_lcommunity.c bgpd: Fix lcom->str string length to correctly cover aliases 2023-04-20 16:51:56 -04:00
bgp_lcommunity.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_mac.c bgpd: peer_established should be connection oriented 2023-09-10 08:31:25 -04:00
bgp_mac.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_main.c *: fix frr_daemon_info indentation 2024-01-27 19:02:51 +01:00
bgp_memory.c bgpd: MTYPE_BGP was being overused split up 2023-11-21 12:41:18 -05:00
bgp_memory.h bgpd: MTYPE_BGP was being overused split up 2023-11-21 12:41:18 -05:00
bgp_mpath.c bgpd: Used %pBD instead of %pRN 2023-11-13 10:28:28 -05:00
bgp_mpath.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_mplsvpn_snmp.c bgpd: MTYPE_BGP was being overused split up 2023-11-21 12:41:18 -05:00
bgp_mplsvpn_snmp.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_mplsvpn.c bgpd: fix interface on leaks from network statement 2024-02-01 10:21:43 +01:00
bgp_mplsvpn.h bgpd: fix export prefixes when rt extcomm set by route-map 2023-11-21 18:10:38 +01:00
bgp_network.c bgpd: Set correct TTL for the dynamic neighbor peers 2024-01-11 10:18:03 -08:00
bgp_network.h bgpd: Set TCP min MSS per listener 2023-09-18 22:34:45 +03:00
bgp_nexthop.c Revert "bgpd: combine import_check_table and nexthop_check_table" 2023-11-06 10:07:58 -05:00
bgp_nexthop.h bgpd: Ensure BGP does not stop monitoring nexthops 2023-12-06 11:42:01 -05:00
bgp_nhg.c bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00
bgp_nhg.h bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00
bgp_nht.c bgpd: fix VRF leaking with 'network import-check' (4/4) 2024-01-29 10:47:00 +01:00
bgp_nht.h bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00
bgp_open.c bgpd: Send notification if AS4 capability failed to parse (malformed) 2024-01-16 15:29:32 +02:00
bgp_open.h bgpd: Reuse orf_type_str/orf_mode_str for dynamic capabilities code 2023-10-17 16:01:00 +03:00
bgp_packet.c bgpd: data is set but never used 2024-01-09 13:03:43 -05:00
bgp_packet.h bgpd: First pass of BGP_EVENT_ADD 2023-09-10 08:31:25 -04:00
bgp_pbr.c bgpd: bgp_path_info_extra memory optimization 2023-08-08 10:48:07 +00:00
bgp_pbr.h *: Let's use the native IFNAMSIZ instead of INTERFACE_NAMSIZ 2023-11-21 08:08:29 -05:00
bgp_rd.c Merge pull request #12248 from pguibert6WIND/bgpasdot 2023-02-21 08:01:03 -05:00
bgp_rd.h Merge pull request #12248 from pguibert6WIND/bgpasdot 2023-02-21 08:01:03 -05:00
bgp_regex.c *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_regex.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_route.c bgpd: Reinstall aggregated routes if using route-maps and it was changed 2024-01-30 15:47:49 +02:00
bgp_route.h Merge pull request #15257 from opensourcerouting/fix/reinstall_aggregate_route_if_rmap 2024-01-30 15:08:08 -05:00
bgp_routemap_nb_config.c bgpd: fix route-map match probability deconfiguration callback 2024-01-22 22:31:21 +02:00
bgp_routemap_nb.c bgpd: add 'match community-list any' function 2023-10-02 15:24:18 +02:00
bgp_routemap_nb.h bgpd: add 'match community-list any' function 2023-10-02 15:24:18 +02:00
bgp_routemap.c bgpd: Reinstall aggregated routes if using route-maps and it was changed 2024-01-30 15:47:49 +02:00
bgp_rpki.c bgpd: Fix printf formatter mistake 2024-01-24 09:11:09 -05:00
bgp_rpki.h bgpd: create cache server socket in vrf 2024-01-18 13:22:19 +01:00
bgp_script.c bgpd: Convert struct peer_connection to dynamically allocated 2023-08-18 09:29:04 -04:00
bgp_script.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_snmp_bgp4.c bgpd: add [no] bgp snmp traps bgp4-mibv2 command 2023-10-24 17:16:47 +02:00
bgp_snmp_bgp4.h bgpd: add snmp traps for bgp4-mibv2 2023-10-24 17:16:47 +02:00
bgp_snmp_bgp4v2.c bgpd: Clean up issues found in SA with clang 14 2024-01-09 13:03:43 -05:00
bgp_snmp_bgp4v2.h bgpd: add snmp traps for bgp4-mibv2 2023-10-24 17:16:47 +02:00
bgp_snmp.c bgpd: fix new Formatting / Styling warning 2023-10-24 17:16:47 +02:00
bgp_snmp.h bgpd: add [no] bgp snmp traps bgp4-mibv2 command 2023-10-24 17:16:47 +02:00
bgp_table.c Revert "bgpd: store bgp link-state prefixes" 2023-10-10 16:45:00 -04:00
bgp_table.h bgpd: bgp_clear_adj_in|remove dest may be freed 2023-09-10 12:14:00 -04:00
bgp_trace.c *: make sure config.h or zebra.h is first 2021-04-23 12:06:35 +02:00
bgp_trace.h bgpd: lttng tp add ethtag to macip zebra send 2023-12-27 18:01:50 -08:00
bgp_updgrp_adv.c bgpd: Fix memory leak for default-originate with route-map 2024-01-08 20:48:56 +02:00
bgp_updgrp_packet.c bgpd: Assign explicit-null for default-originate according to the AFI 2023-08-11 10:52:40 +03:00
bgp_updgrp.c bgpd: Increase peer's struct cap from uint32 to uint64 2024-01-24 23:09:52 +02:00
bgp_updgrp.h bgpd: Convert variable withdraw integer to bool 2023-12-08 11:58:59 +02:00
bgp_vnc_types.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_vpn.c bgpd: show_adj_route_vpn always leaked json memory 2024-01-07 15:55:15 -05:00
bgp_vpn.h *: auto-convert to SPDX License IDs 2023-02-09 14:09:11 +01:00
bgp_vty.c bgpd: Drop redundant VRF name printing for show bgp summary 2023-12-14 09:56:39 +02:00
bgp_vty.h Revert "bgpd: add show bgp link-state link-state commands" 2023-10-10 16:43:38 -04:00
bgp_zebra.c Merge pull request #15001 from pguibert6WIND/zebra_nexthop_rework 2024-01-09 10:11:35 -05:00
bgp_zebra.h bgpd: fix hardset l3vpn label available in mpls pool 2023-10-18 09:41:02 +02:00
bgpd.c bgpd: Make suppress-fib-pending clear peering 2023-12-12 13:48:10 -05:00
bgpd.h bgpd: Optimize memory usage for bgp_nlri struct 2024-01-29 15:37:23 +02:00
Makefile
subdir.am bgpd: move l3nhg functions in separate bgp_nhg.[ch] file 2023-12-11 21:03:33 +01:00