diff options
| author | Avneesh Sachdev <avneesh@sproute.com> | 2016-04-04 10:54:57 -0700 | 
|---|---|---|
| committer | Donald Sharp <sharpd@cumulusnetworks.com> | 2016-09-23 12:12:16 -0400 | 
| commit | 93c7bed1c9e0ce297e966851ef778ed8bcbe3b6e (patch) | |
| tree | cd46873b2f0fd24c8412ccbfa959ba54454dcee1 /fpm/fpm_pb.h | |
| parent | f77cba1bf5ead6a07a734e533895bc5f43516957 (diff) | |
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 0000000000..8f74ac06eb --- /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  | 
