ospfd: Change struct ospf_path *oi to ifindex.
* global: In struct ospf_path, change struct ospf_interface *oi to int
ifindex. It is unsafe to reference *oi as an ospf interface can be
deleted under your feet. Use a weak reference instead.
diff --git a/ospfd/ospf_vty.c b/ospfd/ospf_vty.c
index 2e4b607..7c3dec8 100644
--- a/ospfd/ospf_vty.c
+++ b/ospfd/ospf_vty.c
@@ -7138,15 +7138,15 @@
if (or->type == OSPF_DESTINATION_NETWORK)
for (ALL_LIST_ELEMENTS (or->paths, pnode, pnnode, path))
{
- if (path->oi != NULL && ospf_if_exists(path->oi))
+ if (if_lookup_by_index(path->ifindex))
{
if (path->nexthop.s_addr == 0)
vty_out (vty, "%24s directly attached to %s%s",
- "", path->oi->ifp->name, VTY_NEWLINE);
+ "", ifindex2ifname (path->ifindex), VTY_NEWLINE);
else
vty_out (vty, "%24s via %s, %s%s", "",
- inet_ntoa (path->nexthop), path->oi->ifp->name,
- VTY_NEWLINE);
+ inet_ntoa (path->nexthop),
+ ifindex2ifname (path->ifindex), VTY_NEWLINE);
}
}
}
@@ -7188,15 +7188,17 @@
for (ALL_LIST_ELEMENTS_RO (or->paths, pnode, path))
{
- if (path->oi != NULL && ospf_if_exists(path->oi))
+ if (if_lookup_by_index(path->ifindex))
{
if (path->nexthop.s_addr == 0)
vty_out (vty, "%24s directly attached to %s%s",
- "", path->oi->ifp->name, VTY_NEWLINE);
+ "", ifindex2ifname (path->ifindex),
+ VTY_NEWLINE);
else
vty_out (vty, "%24s via %s, %s%s", "",
inet_ntoa (path->nexthop),
- path->oi->ifp->name, VTY_NEWLINE);
+ ifindex2ifname (path->ifindex),
+ VTY_NEWLINE);
}
}
}
@@ -7235,14 +7237,15 @@
for (ALL_LIST_ELEMENTS (er->paths, pnode, pnnode, path))
{
- if (path->oi != NULL && ospf_if_exists(path->oi))
+ if (if_lookup_by_index(path->ifindex))
{
if (path->nexthop.s_addr == 0)
vty_out (vty, "%24s directly attached to %s%s",
- "", path->oi->ifp->name, VTY_NEWLINE);
+ "", ifindex2ifname (path->ifindex), VTY_NEWLINE);
else
vty_out (vty, "%24s via %s, %s%s", "",
- inet_ntoa (path->nexthop), path->oi->ifp->name,
+ inet_ntoa (path->nexthop),
+ ifindex2ifname (path->ifindex),
VTY_NEWLINE);
}
}