mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 17:36:36 +00:00
ospf_spf_process_stubs: use LSA pos to find OSFP interface
This is better than a prefix lookup as prefixes may not be unique, that is, the same prefix can exist on several interfaces. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
parent
c81ee5c94f
commit
57c639f01e
@ -429,7 +429,7 @@ ospf_intra_add_transit (struct route_table *rt, struct vertex *v,
|
||||
void
|
||||
ospf_intra_add_stub (struct route_table *rt, struct router_lsa_link *link,
|
||||
struct vertex *v, struct ospf_area *area,
|
||||
int parent_is_root)
|
||||
int parent_is_root, int lsa_pos)
|
||||
{
|
||||
u_int32_t cost;
|
||||
struct route_node *rn;
|
||||
@ -577,7 +577,7 @@ ospf_intra_add_stub (struct route_table *rt, struct router_lsa_link *link,
|
||||
if (IS_DEBUG_OSPF_EVENT)
|
||||
zlog_debug ("ospf_intra_add_stub(): this network is on this router");
|
||||
|
||||
if ((oi = ospf_if_lookup_by_prefix (area->ospf, &p)))
|
||||
if ((oi = ospf_if_lookup_by_lsa_pos (area, lsa_pos)))
|
||||
{
|
||||
if (IS_DEBUG_OSPF_EVENT)
|
||||
zlog_debug ("ospf_intra_add_stub(): the interface is %s",
|
||||
|
@ -141,7 +141,7 @@ extern void ospf_intra_add_transit (struct route_table *, struct vertex *,
|
||||
extern void ospf_intra_add_stub (struct route_table *,
|
||||
struct router_lsa_link *, struct vertex *,
|
||||
struct ospf_area *,
|
||||
int parent_is_root);
|
||||
int parent_is_root, int);
|
||||
|
||||
extern int ospf_route_cmp (struct ospf *, struct ospf_route *,
|
||||
struct ospf_route *);
|
||||
|
@ -973,6 +973,7 @@ ospf_spf_process_stubs (struct ospf_area *area, struct vertex *v,
|
||||
u_char *lim;
|
||||
struct router_lsa_link *l;
|
||||
struct router_lsa *rlsa;
|
||||
int lsa_pos = 0;
|
||||
|
||||
if (IS_DEBUG_OSPF_EVENT)
|
||||
zlog_debug ("ospf_process_stubs():processing router LSA, id: %s",
|
||||
@ -994,7 +995,8 @@ ospf_spf_process_stubs (struct ospf_area *area, struct vertex *v,
|
||||
(l->m[0].tos_count * OSPF_ROUTER_LSA_TOS_SIZE));
|
||||
|
||||
if (l->m[0].type == LSA_LINK_TYPE_STUB)
|
||||
ospf_intra_add_stub (rt, l, v, area, parent_is_root);
|
||||
ospf_intra_add_stub (rt, l, v, area, parent_is_root, lsa_pos);
|
||||
lsa_pos++;
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user