]> git.puffer.fish Git - matthieu/frr.git/commitdiff
*: Consolidate vrf_hooks into vrf_init
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 15 May 2017 23:31:27 +0000 (19:31 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 15 May 2017 23:31:27 +0000 (19:31 -0400)
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>
13 files changed:
bgpd/bgp_main.c
eigrpd/eigrp_main.c
isisd/isis_main.c
ldpd/ldpd.c
lib/vrf.c
lib/vrf.h
nhrpd/nhrp_main.c
ospf6d/ospf6_main.c
ospfd/ospf_main.c
pimd/pimd.c
ripd/rip_main.c
ripngd/ripng_main.c
zebra/zebra_vrf.c

index 3b844cf70ec8966e678e7085e1598e405e929248..644a091c31bab305b3e5d039861aca0564eb02fc 100644 (file)
@@ -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 ();
 }
 
index 6a5e3b1a04f4da091525569d43fb65691610ff5d..e71464fdbb3cbdffc17e27810d48c9012ad098af 100644 (file)
@@ -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 ();
index 644b652d44c2e3e8228ad1877906f4b77f875fda..b895f61dceb48e03df6f560ce53b4f25a557b018 100644 (file)
@@ -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 ();
index a0b021dfd9b3dda13f05a6dba5124468c42340d9..710dcd15f41d49853d672df5ef1e70d58f403387 100644 (file)
@@ -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);
index 41b6a05b3ab45e3ab69c29086e22d4e5cbaaad26..7d8a1187631a98e2b9023e96298d62755e51c59c 100644 (file)
--- a/lib/vrf.c
+++ b/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)
index 053be89684bade40e83d2f32800fd7582b654925..a08258a9293553f554f604c6a3a1133f581b328d 100644 (file)
--- a/lib/vrf.h
+++ b/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));
index a44ce35bb8e91f933b965c204bb32b2a063f74fd..7c5d80336c01b0268a1d02c2066cd80982bb4a64 100644 (file)
@@ -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
index 54ae4645adc90f2aceae35a2564a770fe6410425..198a881106692e05f2967fe6a72bd90966a798e4 100644 (file)
@@ -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 ();
 
index 38718b35d5a491fc7b9053945926286c6c70c4a6..a5f430e0517eb14dc8e8fad98436768d3425fb3f 100644 (file)
@@ -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 ();
index fc6663776b9e861620e6b5f3d51ab23f1b4fc35c..6b75a939144a2f9a3b07d06e267dc565c2b2c115 100644 (file)
@@ -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 ();
 }
 
index 62ea6dd07853f6ca33839445d4cca489c75db751..a4509cc06484b2b2155b2657d569c46a8e18f872 100644 (file)
@@ -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 ();
index 9d97df5c412e1a412ac3d9d3efbb4f0dcebc180c..5767b0863678f5c5164a65a9fa9e273a96114405 100644 (file)
@@ -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 ();
index 6b36891056944cf2e8c1fb60aedd94129cd68021..1e6142038db3b612acbd51c1725b2a62820d0cc5 100644 (file)
@@ -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);
 }