diff options
Diffstat (limited to 'zebra/zebra_router.c')
| -rw-r--r-- | zebra/zebra_router.c | 67 |
1 files changed, 37 insertions, 30 deletions
diff --git a/zebra/zebra_router.c b/zebra/zebra_router.c index c66849863e..1b3e31ee42 100644 --- a/zebra/zebra_router.c +++ b/zebra/zebra_router.c @@ -1,23 +1,7 @@ +// SPDX-License-Identifier: GPL-2.0-or-later /* Zebra Router Code. * Copyright (C) 2018 Cumulus Networks, Inc. * Donald Sharp - * - * This file is part of FRR. - * - * FRR is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 2, or (at your option) any - * later version. - * - * FRR is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with FRR; see the file COPYING. If not, write to the Free - * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - * 02111-1307, USA. */ #include "zebra.h" @@ -30,6 +14,7 @@ #include "zebra_mlag.h" #include "zebra_nhg.h" #include "zebra_neigh.h" +#include "zebra/zebra_tc.h" #include "debug.h" #include "zebra_script.h" @@ -233,7 +218,7 @@ void zebra_router_terminate(void) { struct zebra_router_table *zrt, *tmp; - THREAD_OFF(zrouter.sweeper); + EVENT_OFF(zrouter.sweeper); RB_FOREACH_SAFE (zrt, zebra_router_table_head, &zrouter.tables, tmp) zebra_router_free_table(zrt); @@ -247,20 +232,15 @@ void zebra_router_terminate(void) /* Free NHE in ID table only since it has unhashable entries as well */ hash_iterate(zrouter.nhgs_id, zebra_nhg_hash_free_zero_id, NULL); - hash_clean(zrouter.nhgs_id, zebra_nhg_hash_free); - hash_free(zrouter.nhgs_id); - hash_clean(zrouter.nhgs, NULL); - hash_free(zrouter.nhgs); + hash_clean_and_free(&zrouter.nhgs_id, zebra_nhg_hash_free); + hash_clean_and_free(&zrouter.nhgs, NULL); - hash_clean(zrouter.rules_hash, zebra_pbr_rules_free); - hash_free(zrouter.rules_hash); + hash_clean_and_free(&zrouter.rules_hash, zebra_pbr_rules_free); - hash_clean(zrouter.ipset_entry_hash, zebra_pbr_ipset_entry_free), - hash_clean(zrouter.ipset_hash, zebra_pbr_ipset_free); - hash_free(zrouter.ipset_hash); - hash_free(zrouter.ipset_entry_hash); - hash_clean(zrouter.iptable_hash, zebra_pbr_iptable_free); - hash_free(zrouter.iptable_hash); + hash_clean_and_free(&zrouter.ipset_entry_hash, + zebra_pbr_ipset_entry_free); + hash_clean_and_free(&zrouter.ipset_hash, zebra_pbr_ipset_free); + hash_clean_and_free(&zrouter.iptable_hash, zebra_pbr_iptable_free); #ifdef HAVE_SCRIPTING zebra_script_destroy(); @@ -279,6 +259,8 @@ void zebra_router_init(bool asic_offload, bool notify_on_ack) { zrouter.sequence_num = 0; + zrouter.protodown_r_bit = FRR_PROTODOWN_REASON_DEFAULT_BIT; + zrouter.allow_delete = false; zrouter.packets_to_process = ZEBRA_ZAPI_PACKETS_TO_PROCESS; @@ -312,9 +294,34 @@ void zebra_router_init(bool asic_offload, bool notify_on_ack) hash_create_size(8, zebra_nhg_id_key, zebra_nhg_hash_id_equal, "Zebra Router Nexthop Groups ID index"); + zrouter.rules_hash = + hash_create_size(8, zebra_pbr_rules_hash_key, + zebra_pbr_rules_hash_equal, "Rules Hash"); + + zrouter.qdisc_hash = + hash_create_size(8, zebra_tc_qdisc_hash_key, + zebra_tc_qdisc_hash_equal, "TC (qdisc) Hash"); + zrouter.class_hash = hash_create_size(8, zebra_tc_class_hash_key, + zebra_tc_class_hash_equal, + "TC (classes) Hash"); + zrouter.filter_hash = hash_create_size(8, zebra_tc_filter_hash_key, + zebra_tc_filter_hash_equal, + "TC (filter) Hash"); + zrouter.asic_offloaded = asic_offload; zrouter.notify_on_ack = notify_on_ack; + /* + * If you start using asic_notification_nexthop_control + * come talk to the FRR community about what you are doing + * We would like to know. + */ +#if CONFDATE > 20251231 + CPP_NOTICE( + "Remove zrouter.asic_notification_nexthop_control as that it's not being maintained or used"); +#endif + zrouter.asic_notification_nexthop_control = false; + #ifdef HAVE_SCRIPTING zebra_script_init(); #endif |
