summaryrefslogtreecommitdiff
path: root/zebra/interface.h
AgeCommit message (Collapse)Author
2023-06-23Merge pull request #13545 from idryzhov/remove-bond-slaveDonatas Abraitis
zebra: remove ZEBRA_IF_BOND_SLAVE interface type
2023-06-12zebra: clarify interface-level mpls configMark Stapp
We have both interface-level configuration to enable mpls, and runtime mpls status. They need to be distinct. Signed-off-by: Mark Stapp <mjs@labn.net>
2023-05-21zebra: remove ZEBRA_IF_BOND_SLAVE interface typeIgor Ryzhov
It is never actually used in the code. Closes #13532. Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
2023-04-11Merge pull request #12959 from leonshaw/fix/zif-link-nsidJafar Al-Gharaibeh
zebra: Add link_nsid to zebra interface
2023-03-24*: Rename `struct thread` to `struct event`Donald Sharp
Effectively a massive search and replace of `struct thread` to `struct event`. Using the term `thread` gives people the thought that this event system is a pthread when it is not Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2023-03-08zebra: Add link_nsid to zebra interfaceXiao Liang
Create VRF and interfaces: ip netns add vrf1 ip link add veth1 index 100 type veth ip link add link veth1 veth1.200 type vlan id 200 ip link set veth1.200 netns vrf1 ip -n vrf1 link add veth2 index 100 type veth After reloading zebra, "show interface veth1.200" shows wrong parent interface: test# show interface veth1.200 Interface veth1.200 is down ... Parent interface: veth2 This is because veth1.200 and veth1 are in different netns, and veth2 happens to have the same ifindex as veth1, in the same netns of veth1.200. When looking for parent, link-ifindex 100 should be looked up within link-netns, rather than that of the child interface. Add link_nsid to zebra interface, so that the <link_nsid, link_ifindex> pair can uniquely identify the link interface. Signed-off-by: Xiao Liang <shaw.leon@gmail.com>
2023-02-17Merge pull request #12780 from opensourcerouting/spdx-license-idDonald Sharp
*: convert to SPDX License identifiers
2023-02-15Merge pull request #12494 from louis-6wind/ext_admin_groupOlivier Dugeon
lib,zebra,isisd: add support for extended admin group RFC7308
2023-02-13zebra: Refactoring changes for zebra_evpn_map_vlan zebra_evpn_from_svi and ↵Sharath Ramamurthy
zl3vni_from_svi Today to find the vni for a given (vlan, bridge) we walk over all interfaces and filter the vxlan device associated with the bridge. With multiple vlan aware bridge changes, we can derive the vni directly by looking up the hash table i.e. the vlan_table of the associated (vlan, bridge) which would give the vni. During vrf_terminate() call zebra_l2_bridge_if_cleanup if the interface that we are removing is of type bridge. In this case, we walk over all the vlan<->access_bd association and clean them up. zebra_evpn_t is modified to record (vlan, bridge) details and the corresponding vty is modified to print the same. zevpn_bridge_if_set and zl3vni_bridge_if_set is used to set/unset the association. Signed-off-by: Sharath Ramamurthy <sramamurthy@nvidia.com>
2023-02-10lib,yang,zebra: add extended admin-group supportLouis Scalbert
Add the support of Extended Admin-Group (RFC7308) to the zebra interface link-params Traffic-Engineering context. Extended admin-groups can be configured with the affinity-map: > affinity-map blue bit-position 221 > int eth-rt1 > link-params > affinity blue > exit-link-params Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
2023-02-09*: auto-convert to SPDX License IDsDavid Lamparter
Done with a combination of regex'ing and banging my head against a wall. Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-12-05zebra: use real MTYPEs for various objectsMark Stapp
Don't use MTYPE_TMP for many things in zebra: add specific mem types. Signed-off-by: Mark Stapp <mjs@labn.net>
2022-08-08zebra: Add IF_ZEBRA_DATA_X defineDonald Sharp
There are 2 defines IF_ZEBRA_MULTICAST_X and IF_ZEBRA_SHUTDOWN_X macros that do the same thing. Combine into one. Future commits will use the IF_ZEBRA_DATA_X macro as well. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-27zebra: Pass afi received for netconf updatesDonald Sharp
When Zebra receives the netconf update an afi is passed let's seperate that out and track the v4/v6 specific data to save and store appropriately. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-27zebra: mc_forwarding was being sent but not retrieved across dataplaneDonald Sharp
The mc_forwarding status for an interface was being sent but not properly retrieved on the zebra master side of the dplane. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-06-23zebra: Add interface sysctl ignore on linkdown statusDonald Sharp
Add the ability to decode the ignore on linkdown nexthop status for an interface. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-05-21zebra: clean up rtadv integrationDavid Lamparter
Move a few things into places they actually belong, and reduce the number of places we have `#ifdev HAVE_RTADV`. Just overall code prettification. ... I had actually done this quite a while ago while doing some other random hacking and thought it more useful to not be sitting on it on my disk... Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2022-03-24zebra: Fix use after deletion event in freebsdDonald Sharp
In the FreeBSD code if you delete the interface and it has no configuration, the ifp pointer will be deleted from the system *but* zebra continues to dereference the just freed pointer. ==58624== Invalid read of size 1 ==58624== at 0x48539F3: strlcpy (in /usr/local/libexec/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==58624== by 0x2B0565: ifreq_set_name (ioctl.c:48) ==58624== by 0x2B0565: if_get_flags (ioctl.c:416) ==58624== by 0x2B2D9E: ifan_read (kernel_socket.c:455) ==58624== by 0x2B2D9E: kernel_read (kernel_socket.c:1403) ==58624== by 0x499F46E: thread_call (thread.c:2002) ==58624== by 0x495D2B7: frr_run (libfrr.c:1196) ==58624== by 0x2B40B8: main (main.c:471) ==58624== Address 0x6baa7f0 is 64 bytes inside a block of size 432 free'd ==58624== at 0x484ECDC: free (in /usr/local/libexec/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==58624== by 0x4953A64: if_delete (if.c:283) ==58624== by 0x2A93C1: if_delete_update (interface.c:874) ==58624== by 0x2B2DF3: ifan_read (kernel_socket.c:453) ==58624== by 0x2B2DF3: kernel_read (kernel_socket.c:1403) ==58624== by 0x499F46E: thread_call (thread.c:2002) ==58624== by 0x495D2B7: frr_run (libfrr.c:1196) ==58624== by 0x2B40B8: main (main.c:471) ==58624== Block was alloc'd at ==58624== at 0x4851381: calloc (in /usr/local/libexec/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==58624== by 0x496A022: qcalloc (memory.c:116) ==58624== by 0x49546BC: if_new (if.c:164) ==58624== by 0x49546BC: if_create_name (if.c:218) ==58624== by 0x49546BC: if_get_by_name (if.c:603) ==58624== by 0x2B1295: ifm_read (kernel_socket.c:628) ==58624== by 0x2A7FB6: interface_list (if_sysctl.c:129) ==58624== by 0x2E99C8: zebra_ns_enable (zebra_ns.c:127) ==58624== by 0x2E99C8: zebra_ns_init (zebra_ns.c:214) ==58624== by 0x2B3FF2: main (main.c:401) ==58624== Zebra needs to pass back whether or not the ifp pointer was freed when if_delete_update is called and it should then check in ifan_read as well as ifm_read that the ifp pointer is still valid for use. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-03-09zebra: wrap macro zif argument in paransStephen Worley
Missing parenthesis for macro ZIF argument. Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-03-09zebra: extern setting protodown reason directlyStephen Worley
Extern the api for setting the protodown reason code bitfield directly. Some places may want to completely update the bitfield with more than one reason at a time. Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-03-09zebra: clear protodown_rc on shutdown and sweepStephen Worley
Add functionality to clear any reason code set on shutdown of zebra when we are freeing the interface, in case a bad client didn't tell us to clear it when the shutdown. Also, in case of a crash or failure to do the above, clear reason on startup if it is set. Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-03-09zebra: add enum set/unset states for queingStephen Worley
Add enums for set/unset of prodown state to handle the mainthread knowing an update is already queued without actually marking it as complete. This is to make the logic confirm a bit more with other parts of the code where we queue dplane updates and not update our internal structs until success callback is received. Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-03-09zebra: add support for protodown reason codeStephen Worley
Add support for setting the protodown reason code. https://github.com/torvalds/linux/commit/829eb208e80d6db95c0201cb8fa00c2f9ad87faf These patches handle all our netlink code for setting the reason. For protodown reason we only set `frr` as the reason externally but internally we have more descriptive reasoning available via `show interface IFNAME`. The kernel only provides a bitwidth of 32 that all userspace programs have to share so this makes the most sense. Since this is new functionality, it needs to be added to the dplane pthread instead. So these patches, also move the protodown setting we were doing before into the dplane pthread. For this, we abstract it a bit more to make it a general interface LINK update dplane API. This API can be expanded to support gernal link creation/updating when/if someone ever adds that code. We also move a more common entrypoint for evpn-mh and from zapi clients like vrrpd. They both call common code now to set our internal flags for protodown and protodown reason. Also add debugging code for dumping netlink packets with protodown/protodown_reason. Signed-off-by: Stephen Worley <sworley@nvidia.com>
2022-03-02zebra: Prevent installation of connected multiple timesDonald Sharp
With recent changes to interface up mechanics in if_netlink.c FRR was receiving as many as 4 up events for an interface on ifdown/ifup events. This was causing timing issues in FRR based upon some fun timings. Remove this from happening. Ticket: CM-31623 Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-02-28zebra: Limit speed lookup to at most 4 minutesDonald Sharp
There exists some interface types that are slow on startup to fully register their link speed. Especially those that are working with an asic backend. The speed_update timer associated with each interface would keep trying if the system returned a MAX_UINT32 as the speed. This speed means both unknown or there is none under linux. Since some interface types are slow on startup let's modify FRR to try for at most 4 minutes and give up trying on those interfaces where we never get any useful data. Why 4 minutes? I wanted to balance the time associated with slow interfaces coming up with those that will never give us a value. So I choose 4 minutes as a good ballpark of time to keep trying Why not track all those interfaces and just not attempt to do the speed lookup? I would prefer to not keep track of these as that I do not know all the interface types, nor do I wish to keep programming as new ones come in. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2022-02-25zebra: use dataplane to read interface NETCONF infoMark Stapp
Use the dataplane to query and read interface NETCONF data; add netconf-oriented data to the dplane context object, and add accessors for it. Add handler for incoming update processing. Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2022-02-25zebra: include mpls enabled status in interface outputMark Stapp
Add mpls status to the zebra interface struct; include mpls status in show interface output. Signed-off-by: Mark Stapp <mstapp@nvidia.com>
2022-01-28zebra: Make Router Advertisement warnings show up once every 6 hoursDonald Sharp
RA packets are pretty chatty and when there is a warning from a missconfiguration on the network, the log file gets filed up with warnings. Modify the code in rtadv.c to only spit out the warning in these cases at most every 6 hours. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-11-11*: Rename quagga_timestamp with frr_timestampDonald Sharp
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-14zebra: use the dataplane to read netlink intf addr changesMark Stapp
Read incoming interface address change notifications in the dplane pthread; enqueue the events to the main pthread for processing. This is netlink-only for now - the bsd kernel socket path remains unchanged. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
2021-09-02zebra: Convert to `enum zebra_slave_iftype` as per our internal standardDonald Sharp
We do not use typedef's to talk about structures as per our standard. Fixing. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-09-02zebra: Convert to `enum zebra_iftype` as per our internal standardDonald Sharp
We do not use typedef's to talk about structures as per our standard. Fixing. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-05-05Merge pull request #8237 from pguibert6WIND/nhrp_use_zebra_2Mark Stapp
Nhrp use zebra 2
2021-04-30zebra: storage of gre information in zebra layerPhilippe Guibert
zebra is able to get information about gre tunnels. zebra_gre file is created to handle hooks, but is not yet used. also, debug zebra gre command is done to add gre traces. A zebra_gre file is used for complementary actions that may be needed. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2021-04-30zebra: at startup, fix links on all namespacesPhilippe Guibert
when zebra has vrf backend mapped to namespaces, the polling of interfaces leads to fix all linkages of interfaces. This was not done on non default namespace. do it for other namespaces. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2021-03-17*: require semicolon after DEFINE_HOOK & co.David Lamparter
See previous commit. Signed-off-by: David Lamparter <equinox@diac24.net>
2021-02-24zebra: link local MACs to destination port for efficient lacp-bypass processingAnuradha Karuppiah
When an ES-bond comes out of bypass FRR needs to flush the local MACs learnt while the bond was in bypass. To do that efficiently local MACs are linked to the dest-access port. This only happens if the access-port is in LACP-bypass or if it is non-ES. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2021-02-24zebra: support for lacp bypass with EVPN MHAnuradha Karuppiah
Feature overview: ================= A 802.3ad bond can be setup to allow lacp-bypass. This is done to enable servers to pxe boot without a LACP license i.e. allows the bond to go oper up (with a single link) without LACP converging. If an ES-bond is oper-up in an "LACP-bypass" state MH treats it as a non-ES bond. This involves the following special handling - 1. If the bond is in a bypass-state the associated ES is placed in a bypass state. 2. If an ES is in a bypass state - a. DF election is disabled (i.e. assumed DF) b. SPH filter is not installed. 3. MACs learnt via the host bond are advertised with a zero ESI. When the ES moves out of "bypass" the MACs are moved from a zero-ESI to the correct non-zero id. This is treated as a local station move. Implementation: =============== When (a) an ES is detached from a hostbond or (b) an ES-bond goes into LACP bypass zebra deletes all the local macs (with that ES as destination) in the kernel and its local db. BGP re-sends any imported MAC-IP routes that may exist with this ES destination as remote routes i.e. zebra can end up programming a MAC that was perviously local as remote pointing to a VTEP-ECMP group. When an ES is attached to a hostbond or an ES-bond goes LACP-up (out of bypss) zebra again deletes all the local macs in the kernel and its local db. At this point BGP resends any imported MAC-IP routes that may exist with this ES destination as sync routes i.e. zebra can end up programming a MAC that was perviously remote as local pointing to an access port. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-11-30zebra: support for type-0 ESIAnuradha Karuppiah
Earlier type-3 ESI was the only format supported for evpn-mh. Updated the CLI to allow a 10-byte type-0 ESI. Both type-0 and type-3 ESIs are statically configured; just in two different ways - 1. type-0 is configured as a complete 10-byte string 2. type-3 is configured as a 6-byte es-sys-mac and a 3-byte local-discriminator. Sample config - ! interface hostbond1 evpn mh es-id 00:44:38:39:ff:ff:01:00:00:01 ! This is a CLI-only change and has no functional impact. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-10-29zebra: clean up zebra_protodown_rc_str()Mark Stapp
Clean up api SA warning, use 'const', and replace snprintf+ pointer math with strlcat. Signed-off-by: Mark Stapp <mjs@voltanet.io>
2020-10-27zebra: uplink tracking and startup delay for EVPN-MHAnuradha Karuppiah
Local ethernet segments are held in a protodown or error-disabled state if access to the VxLAN overlay is not ready - 1. When FRR comes up the local-ESs/access-port are kept protodown for the startup-delay duration. During this time the underlay and EVPN routes via it are expected to converge. 2. When all the uplinks/core-links attached to the underlay go down the access-ports are similarly protodowned. The ES-bond protodown state is propagated to each ES-bond member and programmed in the dataplane/kernel (per-bond-member). Configuring uplinks - vtysh -c "conf t" vtysh -c "interface swp4" vtysh -c "evpn mh uplink" Configuring startup delay - vtysh -c "conf t" vtysh -c "evpn mh startup-delay 100" >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> EVPN protodown display - ======================== root@torm-11:mgmt:~# vtysh -c "show evpn" L2 VNIs: 10 L3 VNIs: 3 Advertise gateway mac-ip: No Advertise svi mac-ip: No Duplicate address detection: Disable Detection max-moves 5, time 180 EVPN MH: mac-holdtime: 60s, neigh-holdtime: 60s startup-delay: 180s, start-delay-timer: 00:01:14 <<<<<<<<<<<< uplink-cfg-cnt: 4, uplink-active-cnt: 4 protodown: startup-delay <<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ES-bond protodown display - =========================== root@torm-11:mgmt:~# vtysh -c "show interface hostbond1" Interface hostbond1 is up, line protocol is down Link ups: 0 last: (never) Link downs: 1 last: 2020/04/26 20:38:03.53 PTM status: disabled vrf: default OS Description: Local Node/s torm-11 and Ports swp5 <==> Remote Node/s hostd-11 and Ports swp1 index 58 metric 0 mtu 9152 speed 4294967295 flags: <UP,BROADCAST,MULTICAST> Type: Ethernet HWaddr: 00:02:00:00:00:35 Interface Type bond Master interface: bridge EVPN-MH: ES id 1 ES sysmac 00:00:00:00:01:11 protodown: off rc: startup-delay <<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ES-bond member protodown display - ================================== root@torm-11:mgmt:~# vtysh -c "show interface swp5" Interface swp5 is up, line protocol is down Link ups: 0 last: (never) Link downs: 3 last: 2020/04/26 20:38:03.52 PTM status: disabled vrf: default index 7 metric 0 mtu 9152 speed 10000 flags: <UP,BROADCAST,MULTICAST> Type: Ethernet HWaddr: 00:02:00:00:00:35 Interface Type Other Master interface: hostbond1 protodown: on rc: startup-delay <<<<<<<<<<<<<<<< root@torm-11:mgmt:~# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-10-26zebra: changes to run DF electionAnuradha Karuppiah
1. DF preference is configurable per-ES ! interface hostbond1 evpn mh es-df-pref 100 >>>>>>>>>>> evpn mh es-id 1 evpn mh es-sys-mac 00:00:00:00:01:11 ! 2. This parameter is sent to BGP and advertised via the ESR. 3. The peer-ESs' DF params are sent to zebra (by BGP) and used for running the DF election. 4. If the local VTEP becomes non-DF on an ES a block filter is programmed in the dataplane to drop de-capsulated BUM packets destined to that ES. Sample output ============= >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> torm-11# sh evpn es Type: L local, R remote, N non-DF ESI Type ES-IF VTEPs 03:00:00:00:00:01:11:00:00:01 LRN hostbond1 27.0.0.16 03:00:00:00:00:01:22:00:00:02 LR hostbond2 27.0.0.16 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> torm-11# sh evpn es 03:00:00:00:00:01:11:00:00:01 ESI: 03:00:00:00:00:01:11:00:00:01 Type: Local,Remote Interface: hostbond1 State: up Ready for BGP: yes VNI Count: 10 MAC Count: 2 DF: status: non-df preference: 100 >>>>>>>> Nexthop group: 0x2000001 VTEPs: 27.0.0.16 df_alg: preference df_pref: 32767 nh: 0x100000d >>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-09-21*: Remove solaris from FRRDonald Sharp
The Solaris code has gone through a deprecation cycle. No-one has said anything to us and worse of all we don't have any test systems running Solaris to know if we are making changes that are breaking on Solaris. Remove it from the system so we can clean up a bit. Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2020-08-05zebra: Ethernet segment management and support for MAC-ECMPAnuradha Karuppiah
1. Local ethernet segments are configured in zebra by attaching a local-es-id and sys-mac to a access interface - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! interface hostbond1 evpn mh es-id 1 evpn mh es-sys-mac 00:00:00:00:01:11 ! >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> This info is then sent to BGP and used for the generation of EAD-per-ES routes. 2. Access VLANs associated with an (ES) access port are translated into ES-EVI objects and sent to BGP. This is used by BGP for the generation of EAD-EVI routes. 3. Remote ESs are imported by BGP and sent to zebra. A list of VTEPs is maintained per-remote ES in zebra. This list is used for the creation of the L2-NHG that is used for forwarding traffic. 4. MAC entries with a non-zero ESI destination use the L2-NHG associated with the ESI for forwarding traffic over the VxLAN overlay. Please see zebra_evpn_mh.h for the datastruct organization details. Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
2020-04-18Merge pull request #6231 from dslicenc/v6-ra-hoplimitDonatas Abraitis
zebra: add ability to set hoplimit for IPv6 RAs
2020-04-16zebra: add northbound support for zebra interfaceChirag Shah
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2020-04-15zebra: add ability to set hoplimit for IPv6 RAsDon Slice
Reported by testing agency that rfc 4861 section 6.2.1 states that all implementations must have a configuration knob to change the setting of the advertised hop limit. This fix adds that capability. Ticket: CM-29200 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2019-11-22zebra: knob to make ra retransmit interval rfc compliantDon Slice
Problem reported by testing facility that our sending of Router Advertisements more frequently than once very three seconds is not compliant with rfc4861. Added a knob to turn off fast retransmits in order to meet the requirement of the RFC. Ticket: CM-27063 Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
2019-10-25zebra: Cleanup zebra_nhg APIsStephen Worley
Add a private header file for functions that are internal/special case like how we do it for `lib/nexthop_group_private.h`. Remove a bunch of functions from the header file only being used statically and add some comments for those remaining to indicate better what their use is. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-10-25zebra: Switch nhg_connected to use new RB treeStephen Worley
Switch the nhg_connected tree structures to use the new RB tree API in `lib/typerb.h`. We were using the openbsd-tree implementation before. Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>