From: Renato Westphal Date: Fri, 4 Jan 2019 21:08:10 +0000 (-0200) Subject: ripngd: move "Vripng_passive_interface" to the ripng structure X-Git-Tag: 7.1_pulled~99^2~20 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=0c32404fddcf80034f4fd3d76c7cc12fd71b4e25;p=matthieu%2Ffrr.git ripngd: move "Vripng_passive_interface" to the ripng structure Signed-off-by: Renato Westphal --- diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c index dbf9a2c333..b0a07ab462 100644 --- a/ripngd/ripng_interface.c +++ b/ripngd/ripng_interface.c @@ -762,17 +762,17 @@ void ripng_clean_network() } } -/* Vector to store passive-interface name. */ -vector Vripng_passive_interface; - /* Utility function for looking up passive interface settings. */ static int ripng_passive_interface_lookup(const char *ifname) { unsigned int i; char *str; - for (i = 0; i < vector_active(Vripng_passive_interface); i++) - if ((str = vector_slot(Vripng_passive_interface, i)) != NULL) + if (!ripng) + return -1; + + for (i = 0; i < vector_active(ripng->passive_interface); i++) + if ((str = vector_slot(ripng->passive_interface, i)) != NULL) if (strcmp(str, ifname) == 0) return i; return -1; @@ -807,7 +807,7 @@ int ripng_passive_interface_set(const char *ifname) if (ripng_passive_interface_lookup(ifname) >= 0) return NB_ERR_INCONSISTENCY; - vector_set(Vripng_passive_interface, strdup(ifname)); + vector_set(ripng->passive_interface, strdup(ifname)); ripng_passive_interface_apply_all(); @@ -823,9 +823,9 @@ int ripng_passive_interface_unset(const char *ifname) if (i < 0) return NB_ERR_INCONSISTENCY; - str = vector_slot(Vripng_passive_interface, i); + str = vector_slot(ripng->passive_interface, i); free(str); - vector_unset(Vripng_passive_interface, i); + vector_unset(ripng->passive_interface, i); ripng_passive_interface_apply_all(); @@ -838,10 +838,10 @@ void ripng_passive_interface_clean(void) unsigned int i; char *str; - for (i = 0; i < vector_active(Vripng_passive_interface); i++) - if ((str = vector_slot(Vripng_passive_interface, i)) != NULL) { + for (i = 0; i < vector_active(ripng->passive_interface); i++) + if ((str = vector_slot(ripng->passive_interface, i)) != NULL) { free(str); - vector_slot(Vripng_passive_interface, i) = NULL; + vector_slot(ripng->passive_interface, i) = NULL; } ripng_passive_interface_apply_all(); } @@ -937,9 +937,6 @@ void ripng_if_init() hook_register_prio(if_add, 0, ripng_if_new_hook); hook_register_prio(if_del, 0, ripng_if_delete_hook); - /* RIPng passive interface. */ - Vripng_passive_interface = vector_init(1); - /* Install interface node. */ install_node(&interface_node, interface_config_write); if_cmd_init(); diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c index 9158cdcd3f..7db8bafd38 100644 --- a/ripngd/ripngd.c +++ b/ripngd/ripngd.c @@ -1807,6 +1807,7 @@ int ripng_create(int socket) ripng->table = agg_table_init(); ripng->enable_if = vector_init(1); ripng->enable_network = agg_table_init(); + ripng->passive_interface = vector_init(1); /* Distribute list install. */ ripng->distribute_ctx = distribute_list_ctx_create( @@ -2465,6 +2466,7 @@ void ripng_clean() ripng_passive_interface_clean(); vector_free(ripng->enable_if); agg_table_finish(ripng->enable_network); + vector_free(ripng->passive_interface); ripng_offset_clean(); ripng_interface_clean(); ripng_redistribute_clean(); diff --git a/ripngd/ripngd.h b/ripngd/ripngd.h index 935a9e8591..95b128f4d9 100644 --- a/ripngd/ripngd.h +++ b/ripngd/ripngd.h @@ -114,6 +114,9 @@ struct ripng { /* RIPng enabled networks. */ struct agg_table *enable_network; + /* Vector to store passive-interface name. */ + vector passive_interface; + /* RIPng threads. */ struct thread *t_read; struct thread *t_write;