mirror_frr/zebra
Stephen Worley 3d30f6defb zebra: disallow resolution to duplicate nexthops
Disallow the resolution to nexthops that are marked duplicate.
When we are resolving to an ecmp group, it's possible this
group has duplicates.

I found this when I hit a bug where we can have groups resolving
to each other and cause the resolved->next->next pointer to increase
exponentially. Sufficiently large ecmp and zebra will grind to a hault.

Like so:

```
D>  4.4.4.14/32 [150/0] via 1.1.1.1 (recursive), weight 1, 00:00:02
  *                       via 1.1.1.1, dummy1 onlink, weight 1, 00:00:02
                        via 4.4.4.1 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.2 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.3 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.4 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.5 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.6 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.7 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.8 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.9 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.10 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.11 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.12 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.13 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.15 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1 onlink, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1 onlink, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                        via 4.4.4.16 (recursive), weight 1, 00:00:02
                          via 1.1.1.1, dummy1 onlink, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
                          via 1.1.1.1, dummy1, weight 1, 00:00:02
D>  4.4.4.15/32 [150/0] via 1.1.1.1 (recursive), weight 1, 00:00:09
  *                       via 1.1.1.1, dummy1 onlink, weight 1, 00:00:09
                        via 4.4.4.1 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.2 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.3 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.4 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.5 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.6 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.7 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.8 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.9 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.10 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.11 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.12 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.13 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.14 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                        via 4.4.4.16 (recursive), weight 1, 00:00:09
                          via 1.1.1.1, dummy1 onlink, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
                          via 1.1.1.1, dummy1, weight 1, 00:00:09
D>  4.4.4.16/32 [150/0] via 1.1.1.1 (recursive), weight 1, 00:00:19
  *                       via 1.1.1.1, dummy1 onlink, weight 1, 00:00:19
                        via 4.4.4.1 (recursive), weight 1, 00:00:19
                          via 1.1.1.1, dummy1, weight 1, 00:00:19
                        via 4.4.4.2 (recursive), weight 1, 00:00:19

...............
................

and on...

```

You can repro the above via:

```
kernel routes:

1.1.1.1 dev dummy1 scope link

4.4.4.0/24 via 1.1.1.1 dev dummy1

==============================

config:

nexthop-group doof
 nexthop 1.1.1.1
 nexthop 4.4.4.1
 nexthop 4.4.4.10
 nexthop 4.4.4.11
 nexthop 4.4.4.12
 nexthop 4.4.4.13
 nexthop 4.4.4.14
 nexthop 4.4.4.15
 nexthop 4.4.4.16
 nexthop 4.4.4.2
 nexthop 4.4.4.3
 nexthop 4.4.4.4
 nexthop 4.4.4.5
 nexthop 4.4.4.6
 nexthop 4.4.4.7
 nexthop 4.4.4.8
 nexthop 4.4.4.9
!

===========================

Then use sharpd to install 4.4.4.16 -> 4.4.4.1 pointing to that nexthop
group in decending order.
```

With these changes it prevents the growing ecmp above by disallowing
duplicates to be in the resolution decision. These nexthops are not
installed anyways so why should we be resolving to them?

Signed-off-by: Stephen Worley <sworley@nvidia.com>
2021-02-01 13:02:40 -05:00
..
.gitignore
connected.c Revert "zebra: When shutting down an interface immediately notify about rnh" 2020-12-11 20:45:43 -05:00
connected.h zebra: Do not use connection dest for bcast 2019-08-18 18:54:46 +02:00
debug_nl.c zebra: human readable netlink dumps 2020-09-23 23:07:02 -03:00
debug.c *: move "show debugging ..." commands to enable node 2020-10-02 15:06:05 +03:00
debug.h zebra: debug flags for MAC-IP sync 2020-08-05 06:46:13 -07:00
dplane_fpm_nl.c zebra: Tell SA that we are intentionally ignoring the return 2021-01-18 09:06:49 -05:00
if_ioctl.c Revert "Ospf missing interface handling 2" 2019-06-23 19:46:39 -04:00
if_netlink.c zebra: re-sync protodown state with the dplane on new ES add 2020-12-14 10:32:40 -08:00
if_netlink.h zebra: netlink message batching 2020-08-10 21:42:43 +02:00
if_sysctl.c *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
interface.c zebra: update protodown display 2020-12-14 10:32:40 -08:00
interface.h zebra: support for type-0 ESI 2020-11-30 12:36:41 -08:00
ioctl.c zebra: ifi_link_state is the link state 2020-10-13 11:32:36 +01:00
ioctl.h *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
ipforward_proc.c zebra: Cleanup set but unused variables 2020-02-27 09:41:58 -05:00
ipforward_sysctl.c *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
ipforward.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
irdp_interface.c *: un-split strings across lines 2020-07-14 10:37:25 +02:00
irdp_main.c * : update signature of thread_cancel api 2020-10-23 08:59:34 -04:00
irdp_packet.c zebra: replace inet_ntoa 2020-10-22 13:37:25 -04:00
irdp.h *: strip trailing whitespace 2019-09-30 16:44:43 +00:00
kernel_netlink.c zebra: debug messages go under conditionals 2021-01-26 12:29:39 -05:00
kernel_netlink.h zebra: move from NDA_NOTIFY to NDA_FDB_EXT_ATTRS 2020-12-11 12:13:36 -08:00
kernel_socket.c Revert "zebra: When shutting down an interface immediately notify about rnh" 2020-12-11 20:45:43 -05:00
kernel_socket.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
label_manager.c Merge pull request #7756 from pjdruddy/bgplu-fixes 2021-01-09 15:48:22 -05:00
label_manager.h zebra: expose label-manager util-funcs 2021-01-05 18:19:44 +00:00
main.c zebra: Add --asic-offload command 2020-11-15 10:19:25 -05:00
Makefile
redistribute.c Revert "zebra: When shutting down an interface immediately notify about rnh" 2020-12-11 20:45:43 -05:00
redistribute.h zebra: revise redistribution delete to improve update case 2019-09-12 08:51:05 -04:00
rib.h zebra: Allow rib_update_table to receive a specified route type 2021-01-15 19:34:33 -05:00
router-id.c *: Replace s_addr check agains 0 with INADDR_ANY 2020-12-14 21:03:38 +02:00
router-id.h zebra: add IPv6 router-id 2020-07-17 17:39:05 +02:00
rt_netlink.c zebra: Remove #if 0 code 2021-01-28 13:57:49 -05:00
rt_netlink.h Merge pull request #7162 from opensourcerouting/zebra-human-netlink 2020-12-14 14:03:35 -05:00
rt_socket.c :* Convert prefix2str to %pFX 2020-10-22 09:07:41 +03:00
rt.h zebra: remove old kernel one-update-at-a-time api 2020-08-10 21:57:04 +02:00
rtadv.c :* Convert prefix2str to %pFX 2020-10-22 09:07:41 +03:00
rtadv.h zebra: Remove enum around ipv6_nd_suppress_ra_status 2020-05-08 08:08:04 -04:00
rtread_netlink.c
rtread_sysctl.c *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
rule_netlink.c zebra: derive rule family from src->dst->ipv4 2020-12-18 11:53:18 -05:00
rule_netlink.h zebra: netlink message batching 2020-08-10 21:42:43 +02:00
rule_socket.c zebra: convert ip rule installation to use dplane thread 2020-06-10 16:18:45 +02:00
sample_plugin.c zebra: remove unused local in dplane sample plugin 2021-01-11 16:33:27 -05:00
subdir.am zebra: add the sample dataplane plugin to the build 2021-01-11 16:33:55 -05:00
table_manager.c *: Remove solaris from FRR 2020-09-21 10:02:20 -04:00
table_manager.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
testrib.conf
zapi_msg.c zebra: send async nhg update results 2021-01-22 16:33:01 -05:00
zapi_msg.h zebra: send async nhg update results 2021-01-22 16:33:01 -05:00
zebra_dplane.c Merge pull request #6853 from mjstapp/fix_rib_dups 2021-01-13 09:42:34 -05:00
zebra_dplane.h zebra: dplane API to get provider output q length 2020-12-11 15:04:11 +00:00
zebra_errors.c zebra: remove unused EC_ZEBRA_IF_LOOKUP_FAILED 2020-12-01 13:05:36 -05:00
zebra_errors.h zebra: remove unused EC_ZEBRA_IF_LOOKUP_FAILED 2020-12-01 13:05:36 -05:00
zebra_evpn_mac.c zebra: in zebra_evpn_mac.c use size_t for buffer length 2021-01-13 13:22:29 -05:00
zebra_evpn_mac.h zebra: Create a dump function for mac->flags and use it 2021-01-13 13:22:29 -05:00
zebra_evpn_mh.c zebra: skip EVI setup if an ES is applied to a pseudo interface 2020-12-21 08:41:17 -08:00
zebra_evpn_mh.h zebra: advertise stale neighs if EVPN-MH is not enabled 2020-12-21 08:41:15 -08:00
zebra_evpn_neigh.c zebra: accept bgp remote mac-ip update if the higher-seq-local mac is not bgp-ready 2020-12-21 08:41:17 -08:00
zebra_evpn_neigh.h zebra: accept bgp remote mac-ip update if the higher-seq-local mac is not bgp-ready 2020-12-21 08:41:17 -08:00
zebra_evpn_vxlan.h zebra: extract core EVPN functions from zebra_vxlan.c 2020-08-12 12:39:34 +01:00
zebra_evpn.c zebra: accept bgp remote mac-ip update if the higher-seq-local mac is not bgp-ready 2020-12-21 08:41:17 -08:00
zebra_evpn.h zebra: support for macvlan interfaces 2020-09-11 18:26:23 +02:00
zebra_fpm_dt.c zebra: replace inet_ntoa 2020-10-22 13:37:25 -04:00
zebra_fpm_netlink.c zebra: set nlmsg_pid in netlink msgs sent by 'fpm' 2021-01-15 16:28:06 +00:00
zebra_fpm_private.h Zebra: Build nelink message for RMAC updates 2019-06-17 12:05:38 -07:00
zebra_fpm_protobuf.c *: Do not cast to the same type 2020-04-08 17:15:06 +03:00
zebra_fpm.c Merge pull request #7868 from mjstapp/fix_fpm_conn_up 2021-01-15 06:55:29 -05:00
zebra_gr.c :* Convert prefix2str to %pFX 2020-10-22 09:07:41 +03:00
zebra_l2.c zebra: uplink tracking and startup delay for EVPN-MH 2020-10-27 09:34:09 -07:00
zebra_l2.h zebra: uplink tracking and startup delay for EVPN-MH 2020-10-27 09:34:09 -07:00
zebra_memory.c zebra: Gather opaque data into the route entry for storage 2020-12-08 09:06:08 -05:00
zebra_memory.h zebra: Gather opaque data into the route entry for storage 2020-12-08 09:06:08 -05:00
zebra_mlag_private.c zebra: Isolate mlag_rd_buf_offset to the actual using function 2020-10-13 16:02:05 -04:00
zebra_mlag_vty.c zebra: Do not build mlag protobuf support if version 3 is not avail 2019-12-15 09:37:51 -05:00
zebra_mlag_vty.h lib, zebra: add missing extern "C" {} blocks to new header files 2020-04-22 23:49:22 -03:00
zebra_mlag.c zebra: Isolate mlag_rd_buf_offset to the actual using function 2020-10-13 16:02:05 -04:00
zebra_mlag.h zebra: Isolate mlag_rd_buf_offset to the actual using function 2020-10-13 16:02:05 -04:00
zebra_mpls_netlink.c zebra: dplane FPM handle LSP install/update/delete 2020-11-27 16:32:01 +00:00
zebra_mpls_null.c
zebra_mpls_openbsd.c *: un-split strings across lines 2020-07-14 10:37:25 +02:00
zebra_mpls_vty.c *: move CLI node names to cmd_node->name 2020-04-16 12:53:59 +02:00
zebra_mpls.c zebra: Fix prefix2str buf and some invalid data output in zebra_mpls.c 2020-10-26 09:38:33 -04:00
zebra_mpls.h zebra: dplane FPM LSP table walk 2020-11-30 12:13:43 +00:00
zebra_mroute.c zebra: replace inet_ntoa 2020-10-22 13:37:25 -04:00
zebra_mroute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_nb_config.c zebra: Allow set src X to work on startup 2020-11-13 16:12:26 -05:00
zebra_nb_rpcs.c zebra: display rpc error msg to vtysh 2020-10-05 13:57:54 -07:00
zebra_nb_state.c staticd: add support for SR Policies 2020-08-12 13:28:48 +02:00
zebra_nb.c staticd: add support for SR Policies 2020-08-12 13:28:48 +02:00
zebra_nb.h staticd: add support for SR Policies 2020-08-12 13:28:48 +02:00
zebra_netns_id.c Merge pull request #7148 from pguibert6WIND/fix_fd_not_closed 2020-09-23 07:40:14 -04:00
zebra_netns_id.h zebra: dynamically detect vxlan link interfaces in other netns 2020-09-11 18:26:23 +02:00
zebra_netns_notify.c * : update signature of thread_cancel api 2020-10-23 08:59:34 -04:00
zebra_netns_notify.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_nhg_private.h lib, zebra: add missing extern "C" {} blocks to new header files 2020-04-22 23:49:22 -03:00
zebra_nhg.c zebra: disallow resolution to duplicate nexthops 2021-02-01 13:02:40 -05:00
zebra_nhg.h zebra: send async nhg update results 2021-01-22 16:33:01 -05:00
zebra_ns.c vrf: VRF_DEFAULT must be 0, remove useless code 2020-09-21 10:17:35 +02:00
zebra_ns.h lib, zebra: reuse and adapt ns_list walk functionality 2020-09-11 18:26:23 +02:00
zebra_opaque.c zebra: quiet the zebra opaque message debugs 2020-10-13 14:07:17 -04:00
zebra_opaque.h zebra: add zebra opaque module 2020-06-02 08:20:54 -04:00
zebra_pbr.c bgpd, lib, pbrd, zebra: Pass by ifname 2020-09-11 20:04:45 -04:00
zebra_pbr.h zebra: add icmpv6 table of type / code 2020-08-21 13:37:08 +02:00
zebra_ptm_redistribute.c zebra: Add missing c-bit uint8_t 2020-03-17 16:01:59 -04:00
zebra_ptm_redistribute.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_ptm.c *: unify thread/event cancel macros 2020-10-23 12:16:52 -04:00
zebra_ptm.h add cplusplus guards to all zebra headers 2019-03-25 16:05:27 +01:00
zebra_pw.c *: unify thread/event cancel macros 2020-10-23 12:16:52 -04:00
zebra_pw.h ldpd: Relay data plane pseudowire status in LDP notification 2020-06-01 13:21:37 -04:00
zebra_rib.c zebra: Remove #if 0 code 2021-01-28 13:57:49 -05:00
zebra_rnh.c zebra: fix writing to pointer instead of value 2020-11-18 19:05:30 +03:00
zebra_rnh.h zebra: cleanup zebra_rnh.c debugs 2020-10-02 12:15:03 -04:00
zebra_routemap.c Merge pull request #7905 from mjstapp/fix_zapi_nhg 2021-01-25 10:29:04 -05:00
zebra_routemap.h zebra: use afi_t for route-map address family arg 2021-01-21 10:13:57 -05:00
zebra_router.c zebra: Add --asic-offload command 2020-11-15 10:19:25 -05:00
zebra_router.h zebra: Add --asic-offload command 2020-11-15 10:19:25 -05:00
zebra_snmp.c zebra: in_addr_cmp and struct prefix are not happy 2020-04-16 20:14:55 -04:00
zebra_srte.c lib, zebra: Add SR-TE policy infrastructure to zebra 2020-08-07 11:08:49 +02:00
zebra_srte.h lib, zebra: Add SR-TE policy infrastructure to zebra 2020-08-07 11:08:49 +02:00
zebra_vrf.c zebra: anticipate zns creation at vrf creation when backend is vrf-lite 2020-12-09 13:26:20 +00:00
zebra_vrf.h zebra: rename vni to evpn where appropriate 2020-08-12 12:39:33 +01:00
zebra_vty.c zebra: nht resolve-via-default doesn't need force 2020-12-17 11:22:09 -05:00
zebra_vxlan_private.h zebra: Keep DAD disabled if EVPN MH is turned on 2020-11-24 10:20:32 -08:00
zebra_vxlan.c Merge pull request #7652 from adharkar/frr-vni_switch 2021-01-10 18:44:49 -05:00
zebra_vxlan.h zebra: support for slow-failover of local MACs on an ES 2020-12-01 09:46:26 -08:00
zebra.conf.sample
zserv.c zebra: Allow show zebra client to give clues about route update status 2020-12-10 12:59:14 -05:00
zserv.h zebra: remove fuzzing stuff 2020-08-25 17:31:07 +02:00