]> git.puffer.fish Git - matthieu/frr.git/commitdiff
ripd: move "rip_offset_list_master" to the rip structure
authorRenato Westphal <renato@opensourcerouting.org>
Fri, 4 Jan 2019 21:08:10 +0000 (19:08 -0200)
committerRenato Westphal <renato@opensourcerouting.org>
Fri, 18 Jan 2019 18:15:41 +0000 (16:15 -0200)
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
ripd/rip_offset.c
ripd/ripd.c
ripd/ripd.h

index 418ec3fc7b73aef8556f559856d61b9eb7c03e5d..94dc175d14d76ebeaac41cb79e7e24810c62d01f 100644 (file)
@@ -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;
-}
index e00b453f9f0288dd0cd7a62b2aab3d3a3e854cf0..79ec8077021f2de8d05182a7f3e59220443d3378 100644 (file)
@@ -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);
index 100c9d14b18359fda7f1165cfd7589cf1001caea..858c8d4f6070930cef8a8fb55b884b64007af5ec 100644 (file)
@@ -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);