From: Donald Sharp Date: Mon, 15 May 2017 23:02:34 +0000 (-0400) Subject: lib, zebra: Cleanup vrf api some X-Git-Tag: reindent-master-before~149^2~7 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=7922fc65ae0bf5ec211064d8610d4122ddbb4e20;p=matthieu%2Ffrr.git 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 --- diff --git a/lib/vrf.c b/lib/vrf.c index ce57bb6e7a..4fde134e44 100644 --- 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" diff --git a/lib/vrf.h b/lib/vrf.h index f8bb07ef48..418d891a35 100644 --- 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 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"