diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-05-15 19:02:34 -0400 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-05-15 19:02:34 -0400 | 
| commit | 7922fc65ae0bf5ec211064d8610d4122ddbb4e20 (patch) | |
| tree | c3bc6ecb0418fe2ce1faa11807c800d440637919 | |
| parent | 057fad8dfb65167925c01237af31e1a4ecadabb3 (diff) | |
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>
| -rw-r--r-- | lib/vrf.c | 1 | ||||
| -rw-r--r-- | lib/vrf.h | 2 | ||||
| -rw-r--r-- | lib/vrf_int.h | 56 | ||||
| -rw-r--r-- | lib/zclient.c | 2 | ||||
| -rw-r--r-- | zebra/if_netlink.c | 1 | 
5 files changed, 60 insertions, 2 deletions
@@ -24,6 +24,7 @@  #include "if.h"  #include "vrf.h" +#include "vrf_int.h"  #include "prefix.h"  #include "table.h"  #include "log.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 index 0000000000..f0301b7670 --- /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 + diff --git a/lib/zclient.c b/lib/zclient.c index 1d3c93d85d..5d1ca00c92 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -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" diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c index 006fcf16f4..256f4d6567 100644 --- a/zebra/if_netlink.c +++ b/zebra/if_netlink.c @@ -38,6 +38,7 @@  #include "privs.h"  #include "nexthop.h"  #include "vrf.h" +#include "vrf_int.h"  #include "mpls.h"  #include "vty.h"  | 
