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>
This commit is contained in:
Donald Sharp 2017-05-15 19:02:34 -04:00
parent 057fad8dfb
commit 7922fc65ae
5 changed files with 60 additions and 2 deletions

View File

@ -24,6 +24,7 @@
#include "if.h"
#include "vrf.h"
#include "vrf_int.h"
#include "prefix.h"
#include "table.h"
#include "log.h"

View File

@ -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) \

56
lib/vrf_int.h Normal file
View File

@ -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

View 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"

View File

@ -38,6 +38,7 @@
#include "privs.h"
#include "nexthop.h"
#include "vrf.h"
#include "vrf_int.h"
#include "mpls.h"
#include "vty.h"