summaryrefslogtreecommitdiff
path: root/zebra/zebra_router.c
diff options
context:
space:
mode:
authorDonald Sharp <donaldsharp72@gmail.com>2025-03-06 20:33:21 -0500
committerGitHub <noreply@github.com>2025-03-06 20:33:21 -0500
commita40c800c2e1ade525c7a3fa5f67dedb4c853234f (patch)
tree4a321f052348df4db0c31bf8fd127f74155c1bc8 /zebra/zebra_router.c
parentc9be4cf7464d0e8bb3e1150b34871d4ae35edd56 (diff)
parent2dc730a551ffca1302fec0e2068957399a8e8684 (diff)
Merge pull request #18331 from FRRouting/mergify/bp/dev/10.3/pr-18214
zebra: Bring up 514 BGP neighbor sessions (backport #18214)
Diffstat (limited to 'zebra/zebra_router.c')
-rw-r--r--zebra/zebra_router.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/zebra/zebra_router.c b/zebra/zebra_router.c
index ae2910af41..15b7e317c9 100644
--- a/zebra/zebra_router.c
+++ b/zebra/zebra_router.c
@@ -17,6 +17,7 @@
#include "zebra/zebra_tc.h"
#include "debug.h"
#include "zebra_script.h"
+#include "wheel.h"
DEFINE_MTYPE_STATIC(ZEBRA, RIB_TABLE_INFO, "RIB table info");
DEFINE_MTYPE_STATIC(ZEBRA, ZEBRA_RT_TABLE, "Zebra VRF table");
@@ -220,10 +221,22 @@ uint32_t zebra_router_get_next_sequence(void)
memory_order_relaxed);
}
+static inline unsigned int interface_hash_key(const void *arg)
+{
+ const struct interface *ifp = arg;
+
+ return ifp->ifindex;
+}
+
void zebra_router_terminate(void)
{
struct zebra_router_table *zrt, *tmp;
+ if (zrouter.ra_wheel) {
+ wheel_delete(zrouter.ra_wheel);
+ zrouter.ra_wheel = NULL;
+ }
+
EVENT_OFF(zrouter.t_rib_sweep);
RB_FOREACH_SAFE (zrt, zebra_router_table_head, &zrouter.tables, tmp)
@@ -278,6 +291,11 @@ void zebra_router_init(bool asic_offload, bool notify_on_ack,
zrouter.nhg_keep = ZEBRA_DEFAULT_NHG_KEEP_TIMER;
+ /*Init V6 RA batching stuffs*/
+ zrouter.ra_wheel = wheel_init(zrouter.master, RTADV_TIMER_WHEEL_PERIOD_MS,
+ RTADV_TIMER_WHEEL_SLOTS_NO, interface_hash_key, process_rtadv,
+ NULL);
+
zebra_vxlan_init();
zebra_mlag_init();
zebra_neigh_init();