mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 10:37:29 +00:00
*: Consolidate vrf_hooks into vrf_init
We only needed to add/change the vrf callbacks when we initialize the vrf subsystem. As such it is not necessary to handle the callbacks in any other way than through the init function. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
759927a1b9
commit
6df8536487
@ -327,22 +327,15 @@ bgp_vrf_disable (struct vrf *vrf)
|
||||
static void
|
||||
bgp_vrf_init (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, bgp_vrf_new);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, bgp_vrf_enable);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, bgp_vrf_disable);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, bgp_vrf_delete);
|
||||
|
||||
vrf_init ();
|
||||
vrf_init (bgp_vrf_new,
|
||||
bgp_vrf_enable,
|
||||
bgp_vrf_disable,
|
||||
bgp_vrf_delete);
|
||||
}
|
||||
|
||||
static void
|
||||
bgp_vrf_terminate (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, NULL);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, NULL);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, NULL);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, NULL);
|
||||
|
||||
vrf_terminate ();
|
||||
}
|
||||
|
||||
|
@ -182,7 +182,7 @@ main (int argc, char **argv, char **envp)
|
||||
eigrp_om->master = frr_init();
|
||||
master = eigrp_om->master;
|
||||
|
||||
vrf_init ();
|
||||
vrf_init (NULL, NULL, NULL, NULL);
|
||||
|
||||
/*EIGRPd init*/
|
||||
eigrp_if_init ();
|
||||
|
@ -206,7 +206,7 @@ main (int argc, char **argv, char **envp)
|
||||
* initializations
|
||||
*/
|
||||
access_list_init();
|
||||
vrf_init ();
|
||||
vrf_init (NULL, NULL, NULL, NULL);
|
||||
prefix_list_init();
|
||||
isis_init ();
|
||||
isis_circuit_init ();
|
||||
|
@ -329,7 +329,7 @@ main(int argc, char *argv[])
|
||||
cmd_init(1);
|
||||
vty_config_lockless();
|
||||
vty_init(master);
|
||||
vrf_init();
|
||||
vrf_init(NULL, NULL, NULL, NULL);
|
||||
access_list_init();
|
||||
ldp_vty_init();
|
||||
ldp_zebra_init(master);
|
||||
|
37
lib/vrf.c
37
lib/vrf.c
@ -238,33 +238,6 @@ vrf_disable (struct vrf *vrf)
|
||||
(*vrf_master.vrf_disable_hook) (vrf);
|
||||
}
|
||||
|
||||
|
||||
/* Add a VRF hook. Please add hooks before calling vrf_init(). */
|
||||
void
|
||||
vrf_add_hook (int type, int (*func)(struct vrf *))
|
||||
{
|
||||
if (debug_vrf)
|
||||
zlog_debug ("%s: Add Hook %d to function %p", __PRETTY_FUNCTION__,
|
||||
type, func);
|
||||
|
||||
switch (type) {
|
||||
case VRF_NEW_HOOK:
|
||||
vrf_master.vrf_new_hook = func;
|
||||
break;
|
||||
case VRF_DELETE_HOOK:
|
||||
vrf_master.vrf_delete_hook = func;
|
||||
break;
|
||||
case VRF_ENABLE_HOOK:
|
||||
vrf_master.vrf_enable_hook = func;
|
||||
break;
|
||||
case VRF_DISABLE_HOOK:
|
||||
vrf_master.vrf_disable_hook = func;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
vrf_id_t
|
||||
vrf_name_to_id (const char *name)
|
||||
{
|
||||
@ -407,13 +380,21 @@ vrf_bitmap_check (vrf_bitmap_t bmap, vrf_id_t vrf_id)
|
||||
|
||||
/* Initialize VRF module. */
|
||||
void
|
||||
vrf_init (void)
|
||||
vrf_init (int (*create)(struct vrf *),
|
||||
int (*enable)(struct vrf *),
|
||||
int (*disable)(struct vrf *),
|
||||
int (*delete)(struct vrf *))
|
||||
{
|
||||
struct vrf *default_vrf;
|
||||
|
||||
if (debug_vrf)
|
||||
zlog_debug ("%s: Initializing VRF subsystem", __PRETTY_FUNCTION__);
|
||||
|
||||
vrf_master.vrf_new_hook = create;
|
||||
vrf_master.vrf_enable_hook = enable;
|
||||
vrf_master.vrf_disable_hook = disable;
|
||||
vrf_master.vrf_delete_hook = delete;
|
||||
|
||||
/* The default VRF always exists. */
|
||||
default_vrf = vrf_get (VRF_DEFAULT, VRF_DEFAULT_NAME);
|
||||
if (!default_vrf)
|
||||
|
26
lib/vrf.h
26
lib/vrf.h
@ -57,15 +57,6 @@ enum {
|
||||
#define VRF_CMD_HELP_STR "Specify the VRF\nThe VRF name\n"
|
||||
#define VRF_ALL_CMD_HELP_STR "Specify the VRF\nAll VRFs\n"
|
||||
|
||||
/*
|
||||
* VRF hooks
|
||||
*/
|
||||
|
||||
#define VRF_NEW_HOOK 0 /* a new VRF is just created */
|
||||
#define VRF_DELETE_HOOK 1 /* a VRF is to be deleted */
|
||||
#define VRF_ENABLE_HOOK 2 /* a VRF is ready to use */
|
||||
#define VRF_DISABLE_HOOK 3 /* a VRF is to be unusable */
|
||||
|
||||
struct vrf
|
||||
{
|
||||
RB_ENTRY(vrf) id_entry, name_entry;
|
||||
@ -98,18 +89,6 @@ DECLARE_QOBJ_TYPE(vrf)
|
||||
extern struct vrf_id_head vrfs_by_id;
|
||||
extern struct vrf_name_head vrfs_by_name;
|
||||
|
||||
/*
|
||||
* Add a specific hook to VRF module.
|
||||
* @param1: hook type
|
||||
* @param2: the callback function
|
||||
* - param 1: the VRF ID
|
||||
* - param 2: the address of the user data pointer (the user data
|
||||
* can be stored in or freed from there)
|
||||
*/
|
||||
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 *);
|
||||
@ -166,7 +145,10 @@ extern int vrf_bitmap_check (vrf_bitmap_t, vrf_id_t);
|
||||
* VRF initializer/destructor
|
||||
*/
|
||||
/* Please add hooks before calling vrf_init(). */
|
||||
extern void vrf_init (void);
|
||||
extern void vrf_init (int (*create)(struct vrf *),
|
||||
int (*enable)(struct vrf *),
|
||||
int (*disable)(struct vrf *),
|
||||
int (*delete)(struct vrf *));
|
||||
extern void vrf_terminate (void);
|
||||
|
||||
extern void vrf_cmd_init (int (*writefunc)(struct vty *vty));
|
||||
|
@ -129,7 +129,7 @@ int main(int argc, char **argv)
|
||||
/* Library inits. */
|
||||
master = frr_init();
|
||||
nhrp_interface_init();
|
||||
vrf_init();
|
||||
vrf_init(NULL, NULL, NULL, NULL);
|
||||
resolver_init();
|
||||
|
||||
/* Run with elevated capabilities, as for all netlink activity
|
||||
|
@ -222,7 +222,7 @@ main (int argc, char *argv[], char *envp[])
|
||||
/* thread master */
|
||||
master = frr_init ();
|
||||
|
||||
vrf_init ();
|
||||
vrf_init (NULL, NULL, NULL, NULL);
|
||||
access_list_init ();
|
||||
prefix_list_init ();
|
||||
|
||||
|
@ -207,7 +207,7 @@ main (int argc, char **argv)
|
||||
|
||||
/* Library inits. */
|
||||
debug_init ();
|
||||
vrf_init ();
|
||||
vrf_init (NULL, NULL, NULL, NULL);
|
||||
|
||||
access_list_init ();
|
||||
prefix_list_init ();
|
||||
|
15
pimd/pimd.c
15
pimd/pimd.c
@ -141,22 +141,15 @@ pim_vrf_disable (struct vrf *vrf)
|
||||
void
|
||||
pim_vrf_init (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, pim_vrf_new);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, pim_vrf_enable);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, pim_vrf_disable);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, pim_vrf_delete);
|
||||
|
||||
vrf_init ();
|
||||
vrf_init (pim_vrf_new,
|
||||
pim_vrf_enable,
|
||||
pim_vrf_disable,
|
||||
pim_vrf_delete);
|
||||
}
|
||||
|
||||
static void
|
||||
pim_vrf_terminate (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, NULL);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, NULL);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, NULL);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, NULL);
|
||||
|
||||
vrf_terminate ();
|
||||
}
|
||||
|
||||
|
@ -178,7 +178,7 @@ main (int argc, char **argv)
|
||||
|
||||
/* Library initialization. */
|
||||
keychain_init ();
|
||||
vrf_init ();
|
||||
vrf_init (NULL, NULL, NULL, NULL);
|
||||
|
||||
/* RIP related initialization. */
|
||||
rip_init ();
|
||||
|
@ -178,7 +178,7 @@ main (int argc, char **argv)
|
||||
master = frr_init ();
|
||||
|
||||
/* Library inits. */
|
||||
vrf_init ();
|
||||
vrf_init (NULL, NULL, NULL, NULL);
|
||||
|
||||
/* RIPngd inits. */
|
||||
ripng_init ();
|
||||
|
@ -536,11 +536,10 @@ vrf_config_write (struct vty *vty)
|
||||
void
|
||||
zebra_vrf_init (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, zebra_vrf_new);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, zebra_vrf_enable);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, zebra_vrf_disable);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, zebra_vrf_delete);
|
||||
vrf_init (zebra_vrf_new,
|
||||
zebra_vrf_enable,
|
||||
zebra_vrf_disable,
|
||||
zebra_vrf_delete);
|
||||
|
||||
vrf_init ();
|
||||
vrf_cmd_init (vrf_config_write);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user