mirror_frr/zebra
Stephen Worley b991a37262 zebra: nhg resolution handler for d-vni
Add code in the nhg resolution path for determining if Downstream
VNI is in play. This is the only place in all of zebra where
we should be arbitrarily setting the ifindex/labels since
this is where new nhgs are created/destroyed. If something
changes, it must happen here.

We determine if D-VNI is being used by matching the carried
label (VNI) on the nexthop with the vrf VNI from the route.
If they do not match, we can assume this is a D-VNI labeled
nexthop.

We loop through all of the group to see if any are D-VNI. If even
one is, we must treat them all as such. Otherwise, fallback to
traditional EVPN route handling and remove all the labels.

If they are going to be treated as D-VNI we retain the labels and
verify the underlying VRF vxlan interface is a Single VXlan Device.
If it is not, we cannot use D-VNI. If it is, continue on. The VNI label
will encapped via LWTUNNEL and sent to the kernel.

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2023-02-13 18:12:05 -05:00
..
dpdk build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
.gitignore
connected.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
connected.h
debug_nl.c zebra: add tc netlink and dplane ops 2022-08-11 02:32:43 +08:00
debug.c zebra: fix flags used for debug dpdk 2022-12-13 17:02:29 -05:00
debug.h zebra: fix flags used for debug dpdk 2022-12-13 17:02:29 -05:00
dplane_fpm_nl.c zebra: single vxlan device dataplace vni update changes 2023-02-13 18:12:04 -05:00
if_ioctl.c zebra: changes for code maintainability 2022-09-15 14:18:48 +05:30
if_netlink.c zebra: fix for issues found during static analysis 2023-02-13 18:12:04 -05:00
if_netlink.h zebra: netlink rtm tunnel msg parsing 2022-06-24 07:33:34 -04:00
if_socket.c zebra: Add a mpls enable interface node command 2022-08-08 09:15:22 -04:00
if_sysctl.c zebra: changes for code maintainability 2022-09-15 14:18:48 +05:30
interface.c zebra: Add ifdump vty json extension for vxlan/vni 2023-02-13 18:12:04 -05:00
interface.h zebra: Refactoring changes for zebra_evpn_map_vlan zebra_evpn_from_svi and zl3vni_from_svi 2023-02-13 18:12:04 -05:00
ioctl.c zebra: Attempt to make ioctl.c have a bit more useful log messges 2022-06-15 10:34:30 -04:00
ioctl.h
ipforward_proc.c
ipforward_sysctl.c
ipforward.h
irdp_interface.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
irdp_main.c zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04:00
irdp_packet.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
irdp.h *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
kernel_netlink.c zebra: encode vni label via lwt encap 2023-02-13 18:12:05 -05:00
kernel_netlink.h zebra: encode vni label via lwt encap 2023-02-13 18:12:05 -05:00
kernel_socket.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
kernel_socket.h
label_manager.c
label_manager.h
main.c zebra: Ensure memory is not freed that dplane depends on in shutdown 2022-12-17 14:09:29 -05:00
Makefile
netconf_netlink.c zebra/netconf_netlink.c: fix build without AF_MPLS 2022-11-08 18:48:41 +01:00
netconf_netlink.h zebra: Add a mpls enable interface node command 2022-08-08 09:15:22 -04:00
redistribute.c zebra: Create a zebra_rib_route_entry_new function and use it 2022-08-17 16:04:50 -04:00
redistribute.h zebra: Fix redistribute.h up to our standards 2022-01-18 08:39:40 -05:00
rib.h zebra: Fix handling of recursive routes when processing closely in time 2022-10-26 15:06:23 -04:00
router-id.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
router-id.h
rt_netlink.c zebra: encode vni label via lwt encap 2023-02-13 18:12:05 -05:00
rt_netlink.h zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
rt_socket.c zebra: Do not complain if deletion fails 2022-03-19 07:44:54 -04:00
rt.h zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
rtadv.c zebra: Notice Optional Router Advertisement types that are not handled 2022-12-17 16:32:13 -05:00
rtadv.h zebra: Notice Optional Router Advertisement types that are not handled 2022-12-17 16:32:13 -05:00
rtread_netlink.c zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
rtread_sysctl.c zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
rule_netlink.c zebra: Add tracepoint for netlink_rule_change 2022-04-20 09:43:47 -04:00
rule_netlink.h
rule_socket.c
sample_plugin.c
subdir.am zebra: add zebra_vxlan_if.h header file to noinst_HEADER 2023-02-13 18:12:04 -05:00
table_manager.c zebra, ospf6d: Do not check if NULL for XCALLOC() 2022-05-08 15:43:21 +03:00
table_manager.h
tc_netlink.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
tc_netlink.h zebra: traffic control state management 2022-11-22 22:35:35 +08:00
tc_socket.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
testrib.conf
zapi_msg.c lib: add label_type as field in zapi_nexthop 2023-02-13 18:12:05 -05:00
zapi_msg.h zebra: name the route_entry opaque struct more specifically 2022-01-31 08:50:50 -05:00
zebra_dplane.c zebra: single vxlan device dataplace vni update changes 2023-02-13 18:12:04 -05:00
zebra_dplane.h zebra: single vxlan device dataplace vni update changes 2023-02-13 18:12:04 -05:00
zebra_errors.c zebra: add support for protodown reason code 2022-03-09 17:52:44 -05:00
zebra_errors.h zebra: add support for protodown reason code 2022-03-09 17:52:44 -05:00
zebra_evpn_mac.c zebra: vxlan interface refactoring changes 2023-02-13 18:12:04 -05:00
zebra_evpn_mac.h bgpd,zebra,lib: bgp evpn vni macip into two tables 2022-10-11 16:18:21 -04:00
zebra_evpn_mh.c zebra: Handle vni determination for non-vlan-aware bridges 2023-02-13 18:12:04 -05:00
zebra_evpn_mh.h zebra: multiple vlan aware bridge data structure and related changes 2023-02-13 18:12:04 -05:00
zebra_evpn_neigh.c zebra: vxlan interface refactoring changes 2023-02-13 18:12:04 -05:00
zebra_evpn_neigh.h zebra: install neigh entries on SVD 2023-02-13 18:12:05 -05:00
zebra_evpn_vxlan.h zebra: Refactoring changes for zebra_evpn_map_vlan zebra_evpn_from_svi and zl3vni_from_svi 2023-02-13 18:12:04 -05:00
zebra_evpn.c zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
zebra_evpn.h zebra: Refactoring changes for zebra_evpn_map_vlan zebra_evpn_from_svi and zl3vni_from_svi 2023-02-13 18:12:04 -05:00
zebra_fpm_dt.c
zebra_fpm_netlink.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_fpm_private.h
zebra_fpm_protobuf.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_fpm.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_gr.c zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_l2_bridge_if.c zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
zebra_l2_bridge_if.h zebra: multiple vlan aware bridge data structure and related changes 2023-02-13 18:12:04 -05:00
zebra_l2.c zebra: Refactoring changes for zebra_evpn_map_vlan zebra_evpn_from_svi and zl3vni_from_svi 2023-02-13 18:12:04 -05:00
zebra_l2.h zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
zebra_mlag_private.c *: Change thread->func to return void instead of int 2022-02-23 19:56:04 -05:00
zebra_mlag_vty.c build, vtysh: extract vtysh commands from .xref 2022-10-26 17:12:34 +01:00
zebra_mlag_vty.h
zebra_mlag.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_mlag.h
zebra_mpls_netlink.c
zebra_mpls_null.c
zebra_mpls_openbsd.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_mpls_vty.c *: Properly use memset() when zeroing 2022-05-11 14:08:47 +03:00
zebra_mpls.c lib,zebra,bgpd,staticd: use label code to store VNI info 2023-02-13 18:12:05 -05:00
zebra_mpls.h lib,zebra,bgpd,staticd: use label code to store VNI info 2023-02-13 18:12:05 -05:00
zebra_mroute.c zebra, pimd: Add a field family in the message ZEBRA_IPMR_ROUTE_STATS 2022-04-28 01:10:49 -07:00
zebra_mroute.h zebra: Modify base code to get ipv6 stats from kernel 2022-04-28 01:10:49 -07:00
zebra_nb_config.c zebra: remove one unnecessary check for l3vni nb 2022-05-20 03:11:27 -04:00
zebra_nb_rpcs.c
zebra_nb_state.c zebra: vxlan interface refactoring changes 2023-02-13 18:12:04 -05:00
zebra_nb.c
zebra_nb.h
zebra_neigh.c zebra: free neighbor state before exit to avoid memleaks 2022-07-14 12:20:01 -04:00
zebra_neigh.h zebra: add support for maintaining local neigh entries 2022-06-27 07:56:55 -04:00
zebra_netns_id.c *: introduce function for sequence numbers 2023-01-20 15:40:28 -03:00
zebra_netns_id.h
zebra_netns_notify.c zebra: make sure string is null terminated 2023-01-17 17:08:23 -03:00
zebra_netns_notify.h
zebra_nhg_private.h
zebra_nhg.c zebra: nhg resolution handler for d-vni 2023-02-13 18:12:05 -05:00
zebra_nhg.h lib, zebra: Add ability to encode/decode resilient nhg's 2022-11-04 13:29:36 -04:00
zebra_ns.c zebra: Cleanup use after free in shutdown 2022-12-05 08:49:57 -05:00
zebra_ns.h zebra: Make netlink buffer reads resizeable when needed 2022-02-08 17:28:19 -05:00
zebra_opaque.c *: frr_with_mutex change to follow our standard 2022-07-20 15:50:32 -04:00
zebra_opaque.h
zebra_pbr.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_pbr.h zebra: use real MTYPEs for various objects 2022-12-05 10:55:35 -05:00
zebra_ptm_redistribute.c
zebra_ptm_redistribute.h
zebra_ptm.c zebra: Convert thread_cancel to THREAD_OFF 2022-07-21 08:30:50 -04:00
zebra_ptm.h zebra: send BFD messages to staticd 2023-01-13 15:32:12 -03:00
zebra_pw.c zebra: Fix crash in shutdown w/ pw thread still running 2022-08-11 16:31:28 -04:00
zebra_pw.h *: use FRR interface name definition everywhere 2022-05-02 13:00:12 -03:00
zebra_rib.c lib,zebra,bgpd,staticd: use label code to store VNI info 2023-02-13 18:12:05 -05:00
zebra_rnh.c lib,zebra,bgpd,staticd: use label code to store VNI info 2023-02-13 18:12:05 -05:00
zebra_rnh.h zebra: fix JSON fields for "show ip/ipv6 nht" 2023-01-24 18:15:36 -08:00
zebra_routemap_nb_config.c
zebra_routemap_nb.c
zebra_routemap_nb.h
zebra_routemap.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_routemap.h zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_router.c zebra: Add zrouter.asic_notification_nexthop_control 2022-12-12 10:44:57 -05:00
zebra_router.h zebra: Add zrouter.asic_notification_nexthop_control 2022-12-12 10:44:57 -05:00
zebra_script.c zebra: Replace TC definitions for dplane 2022-11-23 17:35:33 +02:00
zebra_script.h zebra: Add encoders/decoders for zebra 2021-10-20 00:56:00 +08:00
zebra_snmp.c
zebra_srte.c zebra: Add missing enums to switch statements 2023-01-31 15:15:42 -05:00
zebra_srte.h zebra: upon srte leave, flush sr policies 2022-10-19 08:40:01 +02:00
zebra_srv6_vty.c zebra: Add missing newline in SRv6 config write 2022-12-05 10:22:06 +01:00
zebra_srv6_vty.h zebra: add default SRv6 Function length 2022-10-07 11:34:20 +09:00
zebra_srv6.c zebra: Add helpers to notify locator add/delete 2022-11-08 22:44:23 +01:00
zebra_srv6.h zebra: Add helpers to notify locator add/delete 2022-11-08 22:44:23 +01:00
zebra_tc.c zebra: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_tc.h zebra: traffic control state management 2022-11-22 22:35:35 +08:00
zebra_trace.c zebra: Add initial zebra tracepoint support 2022-04-20 09:39:47 -04:00
zebra_trace.h zebra: Fix tracepoint changes for lttng 2022-11-26 09:30:48 -05:00
zebra_vrf.c zebra: Free up routemap name memory on vrf deletion event 2022-12-09 09:47:06 -05:00
zebra_vrf.h zebra: clean up rtadv integration 2022-05-21 14:14:01 +02:00
zebra_vty.c lib,zebra,bgpd,staticd: use label code to store VNI info 2023-02-13 18:12:05 -05:00
zebra_vxlan_if.c zebra: Bug fixes in fdb read for flooded traffic and remote fdb cleanup upon vni removal 2023-02-13 18:12:04 -05:00
zebra_vxlan_if.h zebra: Handle vni determination for non-vlan-aware bridges 2023-02-13 18:12:04 -05:00
zebra_vxlan_private.h zebra: install neigh entries on SVD 2023-02-13 18:12:05 -05:00
zebra_vxlan.c zebra: install neigh entries on SVD 2023-02-13 18:12:05 -05:00
zebra_vxlan.h zebra: install neigh entries on SVD 2023-02-13 18:12:05 -05:00
zserv.c zebra: do not load/store wider-than-ptr atomics 2023-01-06 16:59:02 +01:00
zserv.h zebra: do not load/store wider-than-ptr atomics 2023-01-06 16:59:02 +01:00