summaryrefslogtreecommitdiff
path: root/bgpd/rfapi/vnc_import_bgp.c
diff options
context:
space:
mode:
Diffstat (limited to 'bgpd/rfapi/vnc_import_bgp.c')
-rw-r--r--bgpd/rfapi/vnc_import_bgp.c84
1 files changed, 43 insertions, 41 deletions
diff --git a/bgpd/rfapi/vnc_import_bgp.c b/bgpd/rfapi/vnc_import_bgp.c
index 72363f7cfe..6022e4cc24 100644
--- a/bgpd/rfapi/vnc_import_bgp.c
+++ b/bgpd/rfapi/vnc_import_bgp.c
@@ -25,7 +25,7 @@
#include "lib/zebra.h"
#include "lib/prefix.h"
-#include "lib/table.h"
+#include "lib/agg_table.h"
#include "lib/vty.h"
#include "lib/log.h"
#include "lib/memory.h"
@@ -1737,9 +1737,9 @@ static void vnc_import_bgp_exterior_add_route_it(
rfapiUnicastNexthop2Prefix(afi, info->attr, &pfx_orig_nexthop);
for (it = h->imports; it; it = it->next) {
- struct route_table *table;
- struct route_node *rn;
- struct route_node *par;
+ struct agg_table *table;
+ struct agg_node *rn;
+ struct agg_node *par;
struct bgp_info *bi_interior;
int have_usable_route;
@@ -1753,7 +1753,7 @@ static void vnc_import_bgp_exterior_add_route_it(
table = it->imported_vpn[afi];
- for (rn = route_node_match(table, &pfx_orig_nexthop),
+ for (rn = agg_node_match(table, &pfx_orig_nexthop),
have_usable_route = 0;
(!have_usable_route) && rn;) {
@@ -1821,9 +1821,9 @@ static void vnc_import_bgp_exterior_add_route_it(
0, NULL,
(void (*)(void *))
prefix_free);
- route_lock_node(rn); /* for skiplist */
+ agg_lock_node(rn); /* for skiplist */
}
- route_lock_node(rn); /* for skiplist entry */
+ agg_lock_node(rn); /* for skiplist entry */
prefix_copy(pfx_mon, prefix);
if (!skiplist_insert(
RFAPI_MONITOR_EXTERIOR(rn)->source,
@@ -1832,14 +1832,14 @@ static void vnc_import_bgp_exterior_add_route_it(
bgp_info_lock(info);
}
}
- par = rn->parent;
+ par = agg_node_parent(rn);
if (par)
- route_lock_node(par);
- route_unlock_node(rn);
+ agg_lock_node(par);
+ agg_unlock_node(rn);
rn = par;
}
if (rn)
- route_unlock_node(rn);
+ agg_unlock_node(rn);
if (!have_usable_route) {
struct prefix *pfx_mon = prefix_new();
@@ -1928,15 +1928,15 @@ void vnc_import_bgp_exterior_del_route(
rfapiUnicastNexthop2Prefix(afi, info->attr, &pfx_orig_nexthop);
for (it = h->imports; it; it = it->next) {
- struct route_table *table;
- struct route_node *rn;
- struct route_node *par;
+ struct agg_table *table;
+ struct agg_node *rn;
+ struct agg_node *par;
struct bgp_info *bi_interior;
int have_usable_route;
table = it->imported_vpn[afi];
- for (rn = route_node_match(table, &pfx_orig_nexthop),
+ for (rn = agg_node_match(table, &pfx_orig_nexthop),
have_usable_route = 0;
(!have_usable_route) && rn;) {
@@ -1987,9 +1987,9 @@ void vnc_import_bgp_exterior_del_route(
info, NULL)) {
bgp_info_unlock(info);
- route_unlock_node(
+ agg_unlock_node(
rn); /* sl entry
- */
+ */
}
if (skiplist_empty(
RFAPI_MONITOR_EXTERIOR(
@@ -2002,7 +2002,7 @@ void vnc_import_bgp_exterior_del_route(
RFAPI_MONITOR_EXTERIOR(
rn)
->source = NULL;
- route_unlock_node(
+ agg_unlock_node(
rn); /* skiplist
itself
*/
@@ -2010,14 +2010,14 @@ void vnc_import_bgp_exterior_del_route(
}
}
}
- par = rn->parent;
+ par = agg_node_parent(rn);
if (par)
- route_lock_node(par);
- route_unlock_node(rn);
+ agg_lock_node(par);
+ agg_unlock_node(rn);
rn = par;
}
if (rn)
- route_unlock_node(rn);
+ agg_unlock_node(rn);
if (!have_usable_route) {
if (!skiplist_delete(it->monitor_exterior_orphans, info,
@@ -2038,11 +2038,11 @@ void vnc_import_bgp_exterior_del_route(
*/
void vnc_import_bgp_exterior_add_route_interior(
struct bgp *bgp, struct rfapi_import_table *it,
- struct route_node *rn_interior, /* VPN IT node */
- struct bgp_info *bi_interior) /* VPN IT route */
+ struct agg_node *rn_interior, /* VPN IT node */
+ struct bgp_info *bi_interior) /* VPN IT route */
{
afi_t afi = family2afi(rn_interior->p.family);
- struct route_node *par;
+ struct agg_node *par;
struct bgp_info *bi_exterior;
struct prefix *pfx_exterior; /* exterior pfx */
void *cursor;
@@ -2161,7 +2161,8 @@ void vnc_import_bgp_exterior_add_route_interior(
* Look up the tree for possible pulldown candidates.
* Find nearest parent with an exterior route monitor
*/
- for (par = rn_interior->parent; par; par = par->parent) {
+ for (par = agg_node_parent(rn_interior); par;
+ par = agg_node_parent(par)) {
if (RFAPI_HAS_MONITOR_EXTERIOR(par))
break;
}
@@ -2211,13 +2212,13 @@ void vnc_import_bgp_exterior_add_route_interior(
->source = skiplist_new(
0, NULL,
(void (*)(void *))prefix_free);
- route_lock_node(rn_interior);
+ agg_lock_node(rn_interior);
}
skiplist_insert(
RFAPI_MONITOR_EXTERIOR(rn_interior)
->source,
bi_exterior, pfx_mon);
- route_lock_node(rn_interior);
+ agg_lock_node(rn_interior);
/*
* Delete constructed exterior routes based on
@@ -2291,12 +2292,12 @@ void vnc_import_bgp_exterior_add_route_interior(
skiplist_delete(RFAPI_MONITOR_EXTERIOR(par)->source,
bi_exterior, NULL);
- route_unlock_node(par); /* sl entry */
+ agg_unlock_node(par); /* sl entry */
}
if (skiplist_empty(RFAPI_MONITOR_EXTERIOR(par)->source)) {
skiplist_free(RFAPI_MONITOR_EXTERIOR(par)->source);
RFAPI_MONITOR_EXTERIOR(par)->source = NULL;
- route_unlock_node(par); /* sl itself */
+ agg_unlock_node(par); /* sl itself */
}
}
@@ -2353,12 +2354,12 @@ void vnc_import_bgp_exterior_add_route_interior(
skiplist_new(
0, NULL,
(void (*)(void *))prefix_free);
- route_lock_node(rn_interior); /* sl */
+ agg_lock_node(rn_interior); /* sl */
}
skiplist_insert(
RFAPI_MONITOR_EXTERIOR(rn_interior)->source,
bi_exterior, pfx_mon);
- route_lock_node(rn_interior); /* sl entry */
+ agg_lock_node(rn_interior); /* sl entry */
if (!list_adopted) {
list_adopted = list_new();
}
@@ -2397,7 +2398,7 @@ void vnc_import_bgp_exterior_add_route_interior(
}
if (list_adopted) {
struct listnode *node;
- struct route_node *bi_exterior;
+ struct agg_node *bi_exterior;
for (ALL_LIST_ELEMENTS_RO(list_adopted, node, bi_exterior)) {
skiplist_delete(it->monitor_exterior_orphans,
@@ -2419,11 +2420,11 @@ void vnc_import_bgp_exterior_add_route_interior(
*/
void vnc_import_bgp_exterior_del_route_interior(
struct bgp *bgp, struct rfapi_import_table *it,
- struct route_node *rn_interior, /* VPN IT node */
- struct bgp_info *bi_interior) /* VPN IT route */
+ struct agg_node *rn_interior, /* VPN IT node */
+ struct bgp_info *bi_interior) /* VPN IT route */
{
afi_t afi = family2afi(rn_interior->p.family);
- struct route_node *par;
+ struct agg_node *par;
struct bgp_info *bi_exterior;
struct prefix *pfx_exterior; /* exterior pfx */
void *cursor;
@@ -2509,7 +2510,8 @@ void vnc_import_bgp_exterior_del_route_interior(
* If none is found, par will end up NULL, and we will move
* the monitors to the orphan list for this import table
*/
- for (par = rn_interior->parent; par; par = par->parent) {
+ for (par = agg_node_parent(rn_interior); par;
+ par = agg_node_parent(par)) {
if (RFAPI_MONITOR_EXTERIOR(par)->valid_interior_count)
break;
}
@@ -2540,11 +2542,11 @@ void vnc_import_bgp_exterior_del_route_interior(
skiplist_new(
0, NULL,
(void (*)(void *))prefix_free);
- route_lock_node(par); /* sl */
+ agg_lock_node(par); /* sl */
}
skiplist_insert(RFAPI_MONITOR_EXTERIOR(par)->source,
bi_exterior, pfx_mon);
- route_lock_node(par); /* sl entry */
+ agg_lock_node(par); /* sl entry */
/* Add constructed exterior routes based on parent */
for (bi = par->info; bi; bi = bi->next) {
@@ -2596,12 +2598,12 @@ void vnc_import_bgp_exterior_del_route_interior(
skiplist_delete_first(
RFAPI_MONITOR_EXTERIOR(rn_interior)->source);
- route_unlock_node(rn_interior); /* sl entry */
+ agg_unlock_node(rn_interior); /* sl entry */
}
if (skiplist_empty(RFAPI_MONITOR_EXTERIOR(rn_interior)->source)) {
skiplist_free(RFAPI_MONITOR_EXTERIOR(rn_interior)->source);
RFAPI_MONITOR_EXTERIOR(rn_interior)->source = NULL;
- route_unlock_node(rn_interior); /* sl itself */
+ agg_unlock_node(rn_interior); /* sl itself */
}
}