mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-07 13:33:15 +00:00
ospf6d: Store ospf6 back pointer in route struct
Storing the pointer to ospf6 struct in route struct. Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
This commit is contained in:
parent
789828186e
commit
22813fdb86
@ -715,7 +715,7 @@ void ospf6_abr_defaults_to_stub(struct ospf6 *o)
|
|||||||
if (!o->backbone)
|
if (!o->backbone)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
def = ospf6_route_create();
|
def = ospf6_route_create(o);
|
||||||
def->type = OSPF6_DEST_TYPE_NETWORK;
|
def->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
def->prefix.family = AF_INET6;
|
def->prefix.family = AF_INET6;
|
||||||
def->prefix.prefixlen = 0;
|
def->prefix.prefixlen = 0;
|
||||||
@ -1150,7 +1150,7 @@ void ospf6_abr_examin_summary(struct ospf6_lsa *lsa, struct ospf6_area *oa)
|
|||||||
/* (5),(6): the path preference is handled by the sorting
|
/* (5),(6): the path preference is handled by the sorting
|
||||||
in the routing table. Always install the path by substituting
|
in the routing table. Always install the path by substituting
|
||||||
old route (if any). */
|
old route (if any). */
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(oa->ospf6);
|
||||||
|
|
||||||
route->type = type;
|
route->type = type;
|
||||||
route->prefix = prefix;
|
route->prefix = prefix;
|
||||||
@ -1237,7 +1237,9 @@ void ospf6_abr_examin_summary(struct ospf6_lsa *lsa, struct ospf6_area *oa)
|
|||||||
listcount(old_route->nh_list));
|
listcount(old_route->nh_list));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
struct ospf6_route *tmp_route = ospf6_route_create();
|
struct ospf6_route *tmp_route;
|
||||||
|
|
||||||
|
tmp_route = ospf6_route_create(oa->ospf6);
|
||||||
|
|
||||||
ospf6_copy_nexthops(tmp_route->nh_list,
|
ospf6_copy_nexthops(tmp_route->nh_list,
|
||||||
o_path->nh_list);
|
o_path->nh_list);
|
||||||
|
@ -519,7 +519,7 @@ DEFUN (area_range,
|
|||||||
|
|
||||||
range = ospf6_route_lookup(&prefix, oa->range_table);
|
range = ospf6_route_lookup(&prefix, oa->range_table);
|
||||||
if (range == NULL) {
|
if (range == NULL) {
|
||||||
range = ospf6_route_create();
|
range = ospf6_route_create(ospf6);
|
||||||
range->type = OSPF6_DEST_TYPE_RANGE;
|
range->type = OSPF6_DEST_TYPE_RANGE;
|
||||||
range->prefix = prefix;
|
range->prefix = prefix;
|
||||||
range->path.area_id = oa->area_id;
|
range->path.area_id = oa->area_id;
|
||||||
|
@ -605,7 +605,7 @@ void ospf6_asbr_lsa_add(struct ospf6_lsa *lsa)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(ospf6);
|
||||||
route->type = OSPF6_DEST_TYPE_NETWORK;
|
route->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
route->prefix.family = AF_INET6;
|
route->prefix.family = AF_INET6;
|
||||||
route->prefix.prefixlen = external->prefix.prefix_length;
|
route->prefix.prefixlen = external->prefix.prefix_length;
|
||||||
@ -727,7 +727,7 @@ void ospf6_asbr_lsa_remove(struct ospf6_lsa *lsa,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
route_to_del = ospf6_route_create();
|
route_to_del = ospf6_route_create(ospf6);
|
||||||
route_to_del->type = OSPF6_DEST_TYPE_NETWORK;
|
route_to_del->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
route_to_del->prefix.family = AF_INET6;
|
route_to_del->prefix.family = AF_INET6;
|
||||||
route_to_del->prefix.prefixlen = external->prefix.prefix_length;
|
route_to_del->prefix.prefixlen = external->prefix.prefix_length;
|
||||||
@ -1465,9 +1465,10 @@ void ospf6_asbr_redistribute_add(int type, ifindex_t ifindex,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* create new entry */
|
/* create new entry */
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(ospf6);
|
||||||
route->type = OSPF6_DEST_TYPE_NETWORK;
|
route->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
prefix_copy(&route->prefix, prefix);
|
prefix_copy(&route->prefix, prefix);
|
||||||
|
route->ospf6 = ospf6;
|
||||||
|
|
||||||
info = (struct ospf6_external_info *)XCALLOC(
|
info = (struct ospf6_external_info *)XCALLOC(
|
||||||
MTYPE_OSPF6_EXTERNAL_INFO, sizeof(struct ospf6_external_info));
|
MTYPE_OSPF6_EXTERNAL_INFO, sizeof(struct ospf6_external_info));
|
||||||
@ -2742,7 +2743,7 @@ static void ospf6_originate_new_aggr_lsa(struct ospf6 *ospf6,
|
|||||||
&prefix_id.u.prefix4, &aggr->p, aggr->metric);
|
&prefix_id.u.prefix4, &aggr->p, aggr->metric);
|
||||||
|
|
||||||
/* Create summary route and save it. */
|
/* Create summary route and save it. */
|
||||||
rt_aggr = ospf6_route_create();
|
rt_aggr = ospf6_route_create(ospf6);
|
||||||
rt_aggr->type = OSPF6_DEST_TYPE_NETWORK;
|
rt_aggr->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
/* Needed to install route while calling zebra api */
|
/* Needed to install route while calling zebra api */
|
||||||
SET_FLAG(rt_aggr->flag, OSPF6_ROUTE_BEST);
|
SET_FLAG(rt_aggr->flag, OSPF6_ROUTE_BEST);
|
||||||
|
@ -448,7 +448,7 @@ void ospf6_interface_connected_route_update(struct interface *ifp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(oi->area->ospf6);
|
||||||
memcpy(&route->prefix, c->address, sizeof(struct prefix));
|
memcpy(&route->prefix, c->address, sizeof(struct prefix));
|
||||||
apply_mask(&route->prefix);
|
apply_mask(&route->prefix);
|
||||||
route->type = OSPF6_DEST_TYPE_NETWORK;
|
route->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
|
@ -1347,7 +1347,7 @@ int ospf6_intra_prefix_lsa_originate_transit(struct thread *thread)
|
|||||||
|| current + OSPF6_PREFIX_SIZE(op) > end)
|
|| current + OSPF6_PREFIX_SIZE(op) > end)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(oi->area->ospf6);
|
||||||
|
|
||||||
route->type = OSPF6_DEST_TYPE_NETWORK;
|
route->type = OSPF6_DEST_TYPE_NETWORK;
|
||||||
route->prefix.family = AF_INET6;
|
route->prefix.family = AF_INET6;
|
||||||
@ -1810,7 +1810,7 @@ void ospf6_intra_prefix_lsa_add(struct ospf6_lsa *lsa)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(oa->ospf6);
|
||||||
|
|
||||||
memset(&route->prefix, 0, sizeof(struct prefix));
|
memset(&route->prefix, 0, sizeof(struct prefix));
|
||||||
route->prefix.family = AF_INET6;
|
route->prefix.family = AF_INET6;
|
||||||
|
@ -453,7 +453,7 @@ void ospf6_copy_paths(struct list *dst, struct list *src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ospf6_route *ospf6_route_create(void)
|
struct ospf6_route *ospf6_route_create(struct ospf6 *ospf6)
|
||||||
{
|
{
|
||||||
struct ospf6_route *route;
|
struct ospf6_route *route;
|
||||||
|
|
||||||
@ -464,6 +464,8 @@ struct ospf6_route *ospf6_route_create(void)
|
|||||||
route->paths = list_new();
|
route->paths = list_new();
|
||||||
route->paths->cmp = (int (*)(void *, void *))ospf6_path_cmp;
|
route->paths->cmp = (int (*)(void *, void *))ospf6_path_cmp;
|
||||||
route->paths->del = (void (*)(void *))ospf6_path_free;
|
route->paths->del = (void (*)(void *))ospf6_path_free;
|
||||||
|
route->ospf6 = ospf6;
|
||||||
|
|
||||||
return route;
|
return route;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -482,7 +484,7 @@ struct ospf6_route *ospf6_route_copy(struct ospf6_route *route)
|
|||||||
{
|
{
|
||||||
struct ospf6_route *new;
|
struct ospf6_route *new;
|
||||||
|
|
||||||
new = ospf6_route_create();
|
new = ospf6_route_create(route->ospf6);
|
||||||
new->type = route->type;
|
new->type = route->type;
|
||||||
memcpy(&new->prefix, &route->prefix, sizeof(struct prefix));
|
memcpy(&new->prefix, &route->prefix, sizeof(struct prefix));
|
||||||
new->installed = route->installed;
|
new->installed = route->installed;
|
||||||
|
@ -165,6 +165,9 @@ struct ospf6_route {
|
|||||||
struct ospf6_route *prev;
|
struct ospf6_route *prev;
|
||||||
struct ospf6_route *next;
|
struct ospf6_route *next;
|
||||||
|
|
||||||
|
/* Back pointer to ospf6 */
|
||||||
|
struct ospf6 *ospf6;
|
||||||
|
|
||||||
unsigned int lock;
|
unsigned int lock;
|
||||||
|
|
||||||
/* Destination Type */
|
/* Destination Type */
|
||||||
@ -339,7 +342,7 @@ extern int ospf6_route_get_first_nh_index(struct ospf6_route *route);
|
|||||||
#define ospf6_route_add_nexthop(route, ifindex, addr) \
|
#define ospf6_route_add_nexthop(route, ifindex, addr) \
|
||||||
ospf6_add_nexthop(route->nh_list, ifindex, addr)
|
ospf6_add_nexthop(route->nh_list, ifindex, addr)
|
||||||
|
|
||||||
extern struct ospf6_route *ospf6_route_create(void);
|
extern struct ospf6_route *ospf6_route_create(struct ospf6 *ospf6);
|
||||||
extern void ospf6_route_delete(struct ospf6_route *);
|
extern void ospf6_route_delete(struct ospf6_route *);
|
||||||
extern struct ospf6_route *ospf6_route_copy(struct ospf6_route *route);
|
extern struct ospf6_route *ospf6_route_copy(struct ospf6_route *route);
|
||||||
extern int ospf6_route_cmp(struct ospf6_route *ra, struct ospf6_route *rb);
|
extern int ospf6_route_cmp(struct ospf6_route *ra, struct ospf6_route *rb);
|
||||||
|
@ -374,7 +374,7 @@ static int ospf6_spf_install(struct ospf6_vertex *v,
|
|||||||
up to here. */
|
up to here. */
|
||||||
assert(route == NULL);
|
assert(route == NULL);
|
||||||
|
|
||||||
route = ospf6_route_create();
|
route = ospf6_route_create(v->area->ospf6);
|
||||||
memcpy(&route->prefix, &v->vertex_id, sizeof(struct prefix));
|
memcpy(&route->prefix, &v->vertex_id, sizeof(struct prefix));
|
||||||
route->type = OSPF6_DEST_TYPE_LINKSTATE;
|
route->type = OSPF6_DEST_TYPE_LINKSTATE;
|
||||||
route->path.type = OSPF6_PATH_TYPE_INTRA;
|
route->path.type = OSPF6_PATH_TYPE_INTRA;
|
||||||
|
Loading…
Reference in New Issue
Block a user