mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 13:27:53 +00:00
staticd: Fix crash with NULL si
Move the call to the static_install_route to inside of the loop, since we have changed the behavior of how we send down routes to zebra a bit. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
8bc8de2c15
commit
0b70cb101c
@ -296,9 +296,9 @@ static void static_ifindex_update_af(struct interface *ifp, bool up, afi_t afi,
|
|||||||
continue;
|
continue;
|
||||||
si->ifindex = IFINDEX_INTERNAL;
|
si->ifindex = IFINDEX_INTERNAL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
static_install_route(rn, si, safi);
|
static_install_route(rn, si, safi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -321,16 +321,13 @@ static void static_fixup_vrf(struct static_vrf *svrf,
|
|||||||
struct route_node *rn;
|
struct route_node *rn;
|
||||||
struct static_route *si;
|
struct static_route *si;
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
bool install;
|
|
||||||
|
|
||||||
for (rn = route_top(stable); rn; rn = route_next(rn)) {
|
for (rn = route_top(stable); rn; rn = route_next(rn)) {
|
||||||
install = false;
|
|
||||||
for (si = rn->info; si; si = si->next) {
|
for (si = rn->info; si; si = si->next) {
|
||||||
if (strcmp(svrf->vrf->name, si->nh_vrfname) != 0)
|
if (strcmp(svrf->vrf->name, si->nh_vrfname) != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
si->nh_vrf_id = svrf->vrf->vrf_id;
|
si->nh_vrf_id = svrf->vrf->vrf_id;
|
||||||
install = true;
|
|
||||||
if (si->ifindex) {
|
if (si->ifindex) {
|
||||||
ifp = if_lookup_by_name(si->ifname,
|
ifp = if_lookup_by_name(si->ifname,
|
||||||
si->nh_vrf_id);
|
si->nh_vrf_id);
|
||||||
@ -339,10 +336,9 @@ static void static_fixup_vrf(struct static_vrf *svrf,
|
|||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (install)
|
|
||||||
static_install_route(rn, si, safi);
|
static_install_route(rn, si, safi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,10 +359,8 @@ static void static_enable_vrf(struct static_vrf *svrf,
|
|||||||
struct static_route *si;
|
struct static_route *si;
|
||||||
struct interface *ifp;
|
struct interface *ifp;
|
||||||
struct vrf *vrf = svrf->vrf;
|
struct vrf *vrf = svrf->vrf;
|
||||||
bool install;
|
|
||||||
|
|
||||||
for (rn = route_top(stable); rn; rn = route_next(rn)) {
|
for (rn = route_top(stable); rn; rn = route_next(rn)) {
|
||||||
install = false;
|
|
||||||
for (si = rn->info; si; si = si->next) {
|
for (si = rn->info; si; si = si->next) {
|
||||||
si->vrf_id = vrf->vrf_id;
|
si->vrf_id = vrf->vrf_id;
|
||||||
if (si->ifindex) {
|
if (si->ifindex) {
|
||||||
@ -377,11 +371,8 @@ static void static_enable_vrf(struct static_vrf *svrf,
|
|||||||
else
|
else
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
install = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (install)
|
|
||||||
static_install_route(rn, si, safi);
|
static_install_route(rn, si, safi);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user