mirror of
https://github.com/FRRouting/frr.git
synced 2025-04-30 13:37:17 +02:00
ripd: move "rip_offset_list_master" to the rip structure
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
29e897ad33
commit
3f21c8c4cb
|
@ -29,8 +29,6 @@
|
|||
|
||||
#include "ripd/ripd.h"
|
||||
|
||||
static struct list *rip_offset_list_master;
|
||||
|
||||
#define OFFSET_LIST_IN_NAME(O) ((O)->direct[RIP_OFFSET_LIST_IN].alist_name)
|
||||
#define OFFSET_LIST_IN_METRIC(O) ((O)->direct[RIP_OFFSET_LIST_IN].metric)
|
||||
|
||||
|
@ -43,14 +41,14 @@ struct rip_offset_list *rip_offset_list_new(const char *ifname)
|
|||
|
||||
offset = XCALLOC(MTYPE_RIP_OFFSET_LIST, sizeof(struct rip_offset_list));
|
||||
offset->ifname = strdup(ifname);
|
||||
listnode_add_sort(rip_offset_list_master, offset);
|
||||
listnode_add_sort(rip->offset_list_master, offset);
|
||||
|
||||
return offset;
|
||||
}
|
||||
|
||||
void offset_list_del(struct rip_offset_list *offset)
|
||||
{
|
||||
listnode_delete(rip_offset_list_master, offset);
|
||||
listnode_delete(rip->offset_list_master, offset);
|
||||
if (OFFSET_LIST_IN_NAME(offset))
|
||||
free(OFFSET_LIST_IN_NAME(offset));
|
||||
if (OFFSET_LIST_OUT_NAME(offset))
|
||||
|
@ -64,7 +62,7 @@ struct rip_offset_list *rip_offset_list_lookup(const char *ifname)
|
|||
struct rip_offset_list *offset;
|
||||
struct listnode *node, *nnode;
|
||||
|
||||
for (ALL_LIST_ELEMENTS(rip_offset_list_master, node, nnode, offset)) {
|
||||
for (ALL_LIST_ELEMENTS(rip->offset_list_master, node, nnode, offset)) {
|
||||
if (strcmp(offset->ifname, ifname) == 0)
|
||||
return offset;
|
||||
}
|
||||
|
@ -146,24 +144,7 @@ int rip_offset_list_apply_out(struct prefix_ipv4 *p, struct interface *ifp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int offset_list_cmp(struct rip_offset_list *o1,
|
||||
struct rip_offset_list *o2)
|
||||
int offset_list_cmp(struct rip_offset_list *o1, struct rip_offset_list *o2)
|
||||
{
|
||||
return strcmp(o1->ifname, o2->ifname);
|
||||
}
|
||||
|
||||
void rip_offset_init()
|
||||
{
|
||||
rip_offset_list_master = list_new();
|
||||
rip_offset_list_master->cmp = (int (*)(void *, void *))offset_list_cmp;
|
||||
rip_offset_list_master->del = (void (*)(void *))offset_list_del;
|
||||
}
|
||||
|
||||
void rip_offset_clean()
|
||||
{
|
||||
list_delete(&rip_offset_list_master);
|
||||
|
||||
rip_offset_list_master = list_new();
|
||||
rip_offset_list_master->cmp = (int (*)(void *, void *))offset_list_cmp;
|
||||
rip_offset_list_master->del = (void (*)(void *))offset_list_del;
|
||||
}
|
||||
|
|
|
@ -2697,6 +2697,9 @@ int rip_create(int socket)
|
|||
rip->enable_interface = vector_init(1);
|
||||
rip->enable_network = route_table_init();
|
||||
rip->passive_nondefault = vector_init(1);
|
||||
rip->offset_list_master = list_new();
|
||||
rip->offset_list_master->cmp = (int (*)(void *, void *))offset_list_cmp;
|
||||
rip->offset_list_master->del = (void (*)(void *))offset_list_del;
|
||||
|
||||
/* Distribute list install. */
|
||||
rip->distribute_ctx =
|
||||
|
@ -3381,7 +3384,7 @@ void rip_clean(void)
|
|||
vector_free(rip->enable_interface);
|
||||
route_table_finish(rip->enable_network);
|
||||
vector_free(rip->passive_nondefault);
|
||||
rip_offset_clean();
|
||||
list_delete(&rip->offset_list_master);
|
||||
rip_interfaces_clean();
|
||||
rip_distance_reset();
|
||||
rip_redistribute_clean();
|
||||
|
@ -3484,7 +3487,6 @@ void rip_init(void)
|
|||
|
||||
/* Route-map */
|
||||
rip_route_map_init();
|
||||
rip_offset_init();
|
||||
|
||||
route_map_add_hook(rip_routemap_update);
|
||||
route_map_delete_hook(rip_routemap_update);
|
||||
|
|
|
@ -156,6 +156,9 @@ struct rip {
|
|||
/* Vector to store passive-interface name. */
|
||||
vector passive_nondefault;
|
||||
|
||||
/* RIP offset-lists. */
|
||||
struct list *offset_list_master;
|
||||
|
||||
/* For redistribute route map. */
|
||||
struct {
|
||||
char *name;
|
||||
|
@ -462,8 +465,8 @@ extern int rip_offset_list_apply_in(struct prefix_ipv4 *, struct interface *,
|
|||
uint32_t *);
|
||||
extern int rip_offset_list_apply_out(struct prefix_ipv4 *, struct interface *,
|
||||
uint32_t *);
|
||||
extern void rip_offset_init(void);
|
||||
extern void rip_offset_clean(void);
|
||||
extern int offset_list_cmp(struct rip_offset_list *o1,
|
||||
struct rip_offset_list *o2);
|
||||
|
||||
/* YANG notifications */
|
||||
extern void ripd_notif_send_auth_type_failure(const char *ifname);
|
||||
|
|
Loading…
Reference in a new issue