]> git.proxmox.com Git - mirror_frr.git/blobdiff - ripngd/ripng_route.c
*: make all route_map_rule_cmd const
[mirror_frr.git] / ripngd / ripng_route.c
index 83cb59c8b897d1f0ca5d5b7264745e5ac9972fed..ed9d77a3783de0f4e02b0c0c92178853d12e6e37 100644 (file)
@@ -22,7 +22,7 @@
 #include <zebra.h>
 
 #include "prefix.h"
-#include "table.h"
+#include "agg_table.h"
 #include "memory.h"
 #include "if.h"
 #include "vty.h"
@@ -30,6 +30,8 @@
 #include "ripngd/ripngd.h"
 #include "ripngd/ripng_route.h"
 
+DEFINE_MTYPE_STATIC(RIPNGD, RIPNG_AGGREGATE, "RIPng aggregate")
+
 static struct ripng_aggregate *ripng_aggregate_new(void)
 {
        struct ripng_aggregate *new;
@@ -44,13 +46,12 @@ void ripng_aggregate_free(struct ripng_aggregate *aggregate)
 }
 
 /* Aggregate count increment check. */
-void ripng_aggregate_increment(struct route_node *child,
-                              struct ripng_info *rinfo)
+void ripng_aggregate_increment(struct agg_node *child, struct ripng_info *rinfo)
 {
-       struct route_node *np;
+       struct agg_node *np;
        struct ripng_aggregate *aggregate;
 
-       for (np = child; np; np = np->parent)
+       for (np = child; np; np = agg_node_parent(np))
                if ((aggregate = np->aggregate) != NULL) {
                        aggregate->count++;
                        rinfo->suppress++;
@@ -58,13 +59,12 @@ void ripng_aggregate_increment(struct route_node *child,
 }
 
 /* Aggregate count decrement check. */
-void ripng_aggregate_decrement(struct route_node *child,
-                              struct ripng_info *rinfo)
+void ripng_aggregate_decrement(struct agg_node *child, struct ripng_info *rinfo)
 {
-       struct route_node *np;
+       struct agg_node *np;
        struct ripng_aggregate *aggregate;
 
-       for (np = child; np; np = np->parent)
+       for (np = child; np; np = agg_node_parent(np))
                if ((aggregate = np->aggregate) != NULL) {
                        aggregate->count--;
                        rinfo->suppress--;
@@ -72,14 +72,14 @@ void ripng_aggregate_decrement(struct route_node *child,
 }
 
 /* Aggregate count decrement check for a list. */
-void ripng_aggregate_decrement_list(struct route_node *child, struct list *list)
+void ripng_aggregate_decrement_list(struct agg_node *child, struct list *list)
 {
-       struct route_node *np;
+       struct agg_node *np;
        struct ripng_aggregate *aggregate;
        struct ripng_info *rinfo = NULL;
        struct listnode *node = NULL;
 
-       for (np = child; np; np = np->parent)
+       for (np = child; np; np = agg_node_parent(np))
                if ((aggregate = np->aggregate) != NULL)
                        aggregate->count -= listcount(list);
 
@@ -88,10 +88,10 @@ void ripng_aggregate_decrement_list(struct route_node *child, struct list *list)
 }
 
 /* RIPng routes treatment. */
-int ripng_aggregate_add(struct prefix *p)
+int ripng_aggregate_add(struct ripng *ripng, struct prefix *p)
 {
-       struct route_node *top;
-       struct route_node *rp;
+       struct agg_node *top;
+       struct agg_node *rp;
        struct ripng_info *rinfo;
        struct ripng_aggregate *aggregate;
        struct ripng_aggregate *sub;
@@ -99,7 +99,7 @@ int ripng_aggregate_add(struct prefix *p)
        struct listnode *node = NULL;
 
        /* Get top node for aggregation. */
-       top = route_node_get(ripng->table, p);
+       top = agg_node_get(ripng->table, p);
 
        /* Allocate new aggregate. */
        aggregate = ripng_aggregate_new();
@@ -108,7 +108,7 @@ int ripng_aggregate_add(struct prefix *p)
        top->aggregate = aggregate;
 
        /* Suppress routes match to the aggregate. */
-       for (rp = route_lock_node(top); rp; rp = route_next_until(rp, top)) {
+       for (rp = agg_lock_node(top); rp; rp = agg_route_next_until(rp, top)) {
                /* Suppress normal route. */
                if ((list = rp->info) != NULL)
                        for (ALL_LIST_ELEMENTS_RO(list, node, rinfo)) {
@@ -126,10 +126,10 @@ int ripng_aggregate_add(struct prefix *p)
 }
 
 /* Delete RIPng static route. */
-int ripng_aggregate_delete(struct prefix *p)
+int ripng_aggregate_delete(struct ripng *ripng, struct prefix *p)
 {
-       struct route_node *top;
-       struct route_node *rp;
+       struct agg_node *top;
+       struct agg_node *rp;
        struct ripng_info *rinfo;
        struct ripng_aggregate *aggregate;
        struct ripng_aggregate *sub;
@@ -137,13 +137,13 @@ int ripng_aggregate_delete(struct prefix *p)
        struct listnode *node = NULL;
 
        /* Get top node for aggregation. */
-       top = route_node_get(ripng->table, p);
+       top = agg_node_get(ripng->table, p);
 
        /* Allocate new aggregate. */
        aggregate = top->aggregate;
 
        /* Suppress routes match to the aggregate. */
-       for (rp = route_lock_node(top); rp; rp = route_next_until(rp, top)) {
+       for (rp = agg_lock_node(top); rp; rp = agg_route_next_until(rp, top)) {
                /* Suppress normal route. */
                if ((list = rp->info) != NULL)
                        for (ALL_LIST_ELEMENTS_RO(list, node, rinfo)) {
@@ -160,8 +160,8 @@ int ripng_aggregate_delete(struct prefix *p)
        top->aggregate = NULL;
        ripng_aggregate_free(aggregate);
 
-       route_unlock_node(top);
-       route_unlock_node(top);
+       agg_unlock_node(top);
+       agg_unlock_node(top);
 
        return 0;
 }