diff options
author | Avneesh Sachdev <avneesh@sproute.com> | 2016-04-04 19:54:57 +0200 |
---|---|---|
committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-09-23 18:12:16 +0200 |
commit | 93c7bed1c9e0ce297e966851ef778ed8bcbe3b6e (patch) | |
tree | cd46873b2f0fd24c8412ccbfa959ba54454dcee1 /fpm/fpm_pb.h | |
parent | build: turn off automake portability warnings (diff) | |
download | frr-93c7bed1c9e0ce297e966851ef778ed8bcbe3b6e.tar.xz frr-93c7bed1c9e0ce297e966851ef778ed8bcbe3b6e.zip |
fpm: Add protobuf support for FPM.
Code that allows a client to convey routes to a Forwarding Plane
Manager component using protobuf instead of netlink..
* fpm/fpm.proto
Protobuf definitions pertaining to the Forwarding Plane Manager.
In particular, this file defines the AddRoute and DeleteRoute
messages.
* fpm/fpm.h
Tweak FPM message header definition to also allow messages to be
encoded in protobuf format.
* fpm/{fpm_pb.h,.gitignore,.Makefile.am}
Add the fpm_pb library, which contains code for interfacing with
the FPM using protobuf.
* configure.ac
Generate fpm/Makefile.
* Makefile.am
Add fpm subdirectory to build.
* common.am
Add flags to be used by clients of the fpm_pb library.
Signed-off-by: Avneesh Sachdev <avneesh@sproute.com>
Diffstat (limited to 'fpm/fpm_pb.h')
-rw-r--r-- | fpm/fpm_pb.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/fpm/fpm_pb.h b/fpm/fpm_pb.h new file mode 100644 index 000000000..8f74ac06e --- /dev/null +++ b/fpm/fpm_pb.h @@ -0,0 +1,63 @@ +/* + * fpm_pb.h + * + * @copyright Copyright (C) 2016 Sproute Networks, Inc. + * + * @author Avneesh Sachdev <avneesh@sproute.com> + * + * This file is part of Quagga. + * + * Quagga 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. + * + * Quagga 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 Quagga; see the file COPYING. If not, write to the Free + * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +/* + * Public header file for fpm protobuf definitions. + */ + +#ifndef _FPM_PB_H +#define _FPM_PB_H + +#include "route_types.h" +#include "qpb/qpb.h" + +#include "fpm/fpm.pb-c.h" + +/* + * fpm__route_key__create + */ +#define fpm_route_key_create fpm__route_key__create +static inline Fpm__RouteKey * +fpm__route_key__create (qpb_allocator_t *allocator, struct prefix *prefix) +{ + Fpm__RouteKey *key; + + key = QPB_ALLOC (allocator, typeof (*key)); + if (!key) + { + return NULL; + } + fpm__route_key__init (key); + + key->prefix = qpb__l3_prefix__create (allocator, prefix); + if (!key->prefix) + { + return NULL; + } + + return key; +} + +#endif |