mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 16:20:08 +00:00
ospfd: re-fix default origination check
ospf->external[DEFAULT_ROUTE] and zclient->default_information don't line up with each other; the former is only used for "originate always". Fixes: #4237 Signed-off-by: David Lamparter <equinox@diac24.net>
This commit is contained in:
parent
fd9a1d5afe
commit
5af13f54dc
@ -83,6 +83,9 @@ struct external_info *ospf_external_info_check(struct ospf *ospf,
|
||||
struct as_external_lsa *al;
|
||||
struct prefix_ipv4 p;
|
||||
struct route_node *rn;
|
||||
struct list *ext_list;
|
||||
struct listnode *node;
|
||||
struct ospf_external *ext;
|
||||
int type;
|
||||
|
||||
al = (struct as_external_lsa *)lsa->data;
|
||||
@ -105,10 +108,6 @@ struct external_info *ospf_external_info_check(struct ospf *ospf,
|
||||
ospf->vrf_id));
|
||||
// Pending: check for MI above.
|
||||
if (redist_on) {
|
||||
struct list *ext_list;
|
||||
struct listnode *node;
|
||||
struct ospf_external *ext;
|
||||
|
||||
ext_list = ospf->external[type];
|
||||
if (!ext_list)
|
||||
continue;
|
||||
@ -129,6 +128,22 @@ struct external_info *ospf_external_info_check(struct ospf *ospf,
|
||||
}
|
||||
}
|
||||
|
||||
if (is_prefix_default(&p) && ospf->external[DEFAULT_ROUTE]) {
|
||||
ext_list = ospf->external[DEFAULT_ROUTE];
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO(ext_list, node, ext)) {
|
||||
if (!ext->external_info)
|
||||
continue;
|
||||
|
||||
rn = route_node_lookup(ext->external_info,
|
||||
(struct prefix *)&p);
|
||||
if (!rn)
|
||||
continue;
|
||||
route_unlock_node(rn);
|
||||
if (rn->info != NULL)
|
||||
return (struct external_info *)rn->info;
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user