mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-09 11:18:52 +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 as_external_lsa *al;
|
||||||
struct prefix_ipv4 p;
|
struct prefix_ipv4 p;
|
||||||
struct route_node *rn;
|
struct route_node *rn;
|
||||||
|
struct list *ext_list;
|
||||||
|
struct listnode *node;
|
||||||
|
struct ospf_external *ext;
|
||||||
int type;
|
int type;
|
||||||
|
|
||||||
al = (struct as_external_lsa *)lsa->data;
|
al = (struct as_external_lsa *)lsa->data;
|
||||||
@ -105,10 +108,6 @@ struct external_info *ospf_external_info_check(struct ospf *ospf,
|
|||||||
ospf->vrf_id));
|
ospf->vrf_id));
|
||||||
// Pending: check for MI above.
|
// Pending: check for MI above.
|
||||||
if (redist_on) {
|
if (redist_on) {
|
||||||
struct list *ext_list;
|
|
||||||
struct listnode *node;
|
|
||||||
struct ospf_external *ext;
|
|
||||||
|
|
||||||
ext_list = ospf->external[type];
|
ext_list = ospf->external[type];
|
||||||
if (!ext_list)
|
if (!ext_list)
|
||||||
continue;
|
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;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user