unsigned int multipath_num = MULTIPATH_NUM;
-static void bgp_if_init (struct bgp *bgp);
static void bgp_if_finish (struct bgp *bgp);
extern struct zclient *zclient;
vrf = bgp_vrf_lookup_by_instance_type (bgp);
if (vrf)
- {
- bgp_vrf_link (bgp, vrf);
- bgp_if_init (bgp);
- }
+ bgp_vrf_link (bgp, vrf);
}
/* Register with Zebra, if needed */
QOBJ_REG (bm, bgp_master);
}
-/*
- * Initialize interface list for instance, if needed. Invoked upon
- * instance create.
- */
-static void
-bgp_if_init (struct bgp *bgp)
-{
- if (bgp->inst_type == BGP_INSTANCE_TYPE_VIEW)
- return;
-
- vrf_iflist_create (bgp->vrf_id);
-}
-
/*
* Free up connected routes and interfaces for a BGP instance. Invoked upon
* instance delete (non-default only) or BGP exit.
return vrf->iflist;
}
-/* Create the interface list for the specified VRF, if needed. */
-void
-vrf_iflist_create (vrf_id_t vrf_id)
-{
- struct vrf * vrf = vrf_lookup_by_id (vrf_id);
- if (vrf && !vrf->iflist)
- if_init (&vrf->iflist);
-}
-
-/* Free the interface list of the specified VRF. */
-void
-vrf_iflist_terminate (vrf_id_t vrf_id)
-{
- struct vrf * vrf = vrf_lookup_by_id (vrf_id);
- if (vrf && vrf->iflist)
- if_terminate (&vrf->iflist);
-}
-
/*
* VRF bit-map
*/
*/
extern void vrf_add_hook (int, int (*)(struct vrf *));
+int (*vrf_callback)(struct vrf *);
+
extern struct vrf *vrf_lookup_by_id (vrf_id_t);
extern struct vrf *vrf_lookup_by_name (const char *);
extern struct vrf *vrf_get (vrf_id_t, const char *);
extern struct list *vrf_iflist (vrf_id_t);
/* Get the interface list of the specified VRF. Create one if not find. */
extern struct list *vrf_iflist_get (vrf_id_t);
-/* Create the interface list for the specified VRF, if needed. */
-extern void vrf_iflist_create (vrf_id_t vrf_id);
-/* Free the interface list of the specified VRF. */
-extern void vrf_iflist_terminate (vrf_id_t vrf_id);
/*
* VRF bit-map: maintaining flags, one bit per VRF ID
for (i = 0; i < MAXVIFS; i++)
pim_iface_vif_index[i] = 0;
- vrf_iflist_create(VRF_DEFAULT);
pim_ifchannel_list = list_new();
pim_ifchannel_list->cmp = (int (*)(void *, void *))pim_ifchannel_compare;
}