summaryrefslogtreecommitdiffstats
path: root/lib/vrf_int.h
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2017-05-16 01:02:34 +0200
committerDonald Sharp <sharpd@cumulusnetworks.com>2017-05-16 01:02:34 +0200
commit7922fc65ae0bf5ec211064d8610d4122ddbb4e20 (patch)
treec3bc6ecb0418fe2ce1faa11807c800d440637919 /lib/vrf_int.h
parenteigrpd: Cleanup a bunch SA warnings. (diff)
downloadfrr-7922fc65ae0bf5ec211064d8610d4122ddbb4e20.tar.xz
frr-7922fc65ae0bf5ec211064d8610d4122ddbb4e20.zip
lib, zebra: Cleanup vrf api some
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>
Diffstat (limited to 'lib/vrf_int.h')
-rw-r--r--lib/vrf_int.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/vrf_int.h b/lib/vrf_int.h
new file mode 100644
index 000000000..f0301b767
--- /dev/null
+++ b/lib/vrf_int.h
@@ -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
+