]> git.proxmox.com Git - mirror_frr.git/commitdiff
lib, zebra: Cleanup vrf api some
authorDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 15 May 2017 23:02:34 +0000 (19:02 -0400)
committerDonald Sharp <sharpd@cumulusnetworks.com>
Mon, 15 May 2017 23:02:34 +0000 (19:02 -0400)
Segregate the vrf enable/disable functionality from other vrf
code.  This is to ensure that people are not actually using
the functions when they should not be.  Also document the
why of it properly in the new vrf_int.h header.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
lib/vrf.c
lib/vrf.h
lib/vrf_int.h [new file with mode: 0644]
lib/zclient.c
zebra/if_netlink.c

index ce57bb6e7a1c3d84da250526fdfb1a77c7f97691..4fde134e447e0a99625dbd3340c5d97fa2bd71fe 100644 (file)
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -24,6 +24,7 @@
 
 #include "if.h"
 #include "vrf.h"
+#include "vrf_int.h"
 #include "prefix.h"
 #include "table.h"
 #include "log.h"
index f8bb07ef48f72d9c2721940df135cdbed3dc7b1f..418d891a3584100e36ef91422a3e69028ee50aa0 100644 (file)
--- a/lib/vrf.h
+++ b/lib/vrf.h
@@ -111,8 +111,6 @@ extern void vrf_add_hook (int, int (*)(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 void vrf_delete (struct vrf *);
-extern int vrf_enable (struct vrf *);
 extern vrf_id_t vrf_name_to_id (const char *);
 
 #define VRF_GET_ID(V,NAME)      \
diff --git a/lib/vrf_int.h b/lib/vrf_int.h
new file mode 100644 (file)
index 0000000..f0301b7
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * VRF Internal Header
+ * Copyright (C) 2017 Cumulus Networks, Inc.
+ *                    Donald Sharp
+ *
+ * This file is part of FRR.
+ *
+ * FRR is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * FRR is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with FRR; see the file COPYING.  If not, write to the Free
+ * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ */
+#ifndef __LIB_VRF_PRIVATE_H__
+#define __LIB_VRF_PRIVATE_H__
+
+#include "vrf.h"
+
+/*
+ * These functions should only be called by:
+ * zebra/if_netlink.c -> The interface from OS into Zebra
+ * lib/zclient.c -> The interface from Zebra to each daemon
+ *
+ * Why you ask?  Well because these are the turn on/off
+ * functions and the only place we can really turn a
+ * vrf on properly is in the call up from the os -> zebra
+ * and the pass through of this informatoin from zebra -> protocols
+ */
+
+/*
+ * vrf_enable
+ *
+ * Given a newly running vrf enable it to be used
+ * by interested routing protocols
+ */
+extern int vrf_enable (struct vrf *);
+
+/*
+ * vrf_delete
+ *
+ * Given a vrf that is being deleted, delete it
+ * from interested parties
+ */
+extern void vrf_delete (struct vrf *);
+
+#endif
+
index 1d3c93d85d193d4126375492c75d714613853c6e..5d1ca00c921d7a4e9916ad703fe90f68c43dcd27 100644 (file)
@@ -26,6 +26,8 @@
 #include "stream.h"
 #include "buffer.h"
 #include "network.h"
+#include "vrf.h"
+#include "vrf_int.h"
 #include "if.h"
 #include "log.h"
 #include "thread.h"
index 006fcf16f40c128b4a954d37eb99a65b3cc745af..256f4d65677be7e0c5c0e66282c506f6d8861c2c 100644 (file)
@@ -38,6 +38,7 @@
 #include "privs.h"
 #include "nexthop.h"
 #include "vrf.h"
+#include "vrf_int.h"
 #include "mpls.h"
 
 #include "vty.h"