diff options
| -rw-r--r-- | pimd/pim_iface.c | 11 | ||||
| -rw-r--r-- | pimd/pim_nht.c | 6 | ||||
| -rw-r--r-- | pimd/pim_zebra.c | 6 |
3 files changed, 19 insertions, 4 deletions
diff --git a/pimd/pim_iface.c b/pimd/pim_iface.c index 5dc64a1b3f..b2a8a6ff8f 100644 --- a/pimd/pim_iface.c +++ b/pimd/pim_iface.c @@ -797,7 +797,11 @@ void pim_if_addr_del_all(struct interface *ifp) struct listnode *node; struct listnode *nextnode; struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); - struct pim_instance *pim = vrf->info; + struct pim_instance *pim; + + if (!vrf) + return; + pim = vrf->info; /* PIM/IGMP enabled ? */ if (!ifp->info) @@ -860,12 +864,15 @@ struct in_addr pim_find_primary_addr(struct interface *ifp) { struct connected *ifc; struct listnode *node; - struct in_addr addr; + struct in_addr addr = {0}; int v4_addrs = 0; int v6_addrs = 0; struct pim_interface *pim_ifp = ifp->info; struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); + if (!vrf) + return addr; + if (pim_ifp && PIM_INADDR_ISNOT_ANY(pim_ifp->update_source)) { return pim_ifp->update_source; } diff --git a/pimd/pim_nht.c b/pimd/pim_nht.c index 8f9058d994..e2984e1d13 100644 --- a/pimd/pim_nht.c +++ b/pimd/pim_nht.c @@ -648,7 +648,11 @@ int pim_parse_nexthop_update(int command, struct zclient *zclient, struct interface *ifp = NULL; struct interface *ifp1 = NULL; struct vrf *vrf = vrf_lookup_by_id(vrf_id); - struct pim_instance *pim = vrf->info; + struct pim_instance *pim; + + if (!vrf) + return 0; + pim = vrf->info; s = zclient->ibuf; memset(&p, 0, sizeof(struct prefix)); diff --git a/pimd/pim_zebra.c b/pimd/pim_zebra.c index 8c90ccbed1..bee6521b6c 100644 --- a/pimd/pim_zebra.c +++ b/pimd/pim_zebra.c @@ -348,7 +348,11 @@ static int pim_zebra_if_address_del(int command, struct zclient *client, struct connected *c; struct prefix *p; struct vrf *vrf = vrf_lookup_by_id(vrf_id); - struct pim_instance *pim = vrf->info; + struct pim_instance *pim; + + if (!vrf) + return 0; + pim = vrf->info; /* zebra api notifies address adds/dels events by using the same call |
