/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: fpm/fpm.proto */

#ifndef PROTOBUF_C_fpm_2ffpm_2eproto__INCLUDED
#define PROTOBUF_C_fpm_2ffpm_2eproto__INCLUDED

#include <protobuf-c/protobuf-c.h>

PROTOBUF_C__BEGIN_DECLS

#if PROTOBUF_C_VERSION_NUMBER < 1003000
# error This file was generated by a newer version of protobuf-c which is incompatible with your libprotobuf-c headers. Please update your headers.
#elif 1005002 < PROTOBUF_C_MIN_COMPILER_VERSION
# error This file was generated by an older version of protobuf-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protobuf-c.
#endif

#include "qpb/qpb.pb-c.h"

typedef struct Fpm__Nexthop Fpm__Nexthop;
typedef struct Fpm__RouteKey Fpm__RouteKey;
typedef struct Fpm__DeleteRoute Fpm__DeleteRoute;
typedef struct Fpm__AddRoute Fpm__AddRoute;
typedef struct Fpm__SRv6SIDFormat Fpm__SRv6SIDFormat;
typedef struct Fpm__SRv6LocalSID Fpm__SRv6LocalSID;
typedef struct Fpm__SRv6LocalSID__End Fpm__SRv6LocalSID__End;
typedef struct Fpm__SRv6LocalSID__EndX Fpm__SRv6LocalSID__EndX;
typedef struct Fpm__SRv6LocalSID__EndT Fpm__SRv6LocalSID__EndT;
typedef struct Fpm__SRv6LocalSID__EndDX6 Fpm__SRv6LocalSID__EndDX6;
typedef struct Fpm__SRv6LocalSID__EndDX4 Fpm__SRv6LocalSID__EndDX4;
typedef struct Fpm__SRv6LocalSID__EndDT6 Fpm__SRv6LocalSID__EndDT6;
typedef struct Fpm__SRv6LocalSID__EndDT4 Fpm__SRv6LocalSID__EndDT4;
typedef struct Fpm__SRv6LocalSID__EndDT46 Fpm__SRv6LocalSID__EndDT46;
typedef struct Fpm__SRv6LocalSID__UN Fpm__SRv6LocalSID__UN;
typedef struct Fpm__SRv6LocalSID__UA Fpm__SRv6LocalSID__UA;
typedef struct Fpm__SRv6LocalSID__UDT6 Fpm__SRv6LocalSID__UDT6;
typedef struct Fpm__SRv6LocalSID__UDT4 Fpm__SRv6LocalSID__UDT4;
typedef struct Fpm__SRv6LocalSID__UDT46 Fpm__SRv6LocalSID__UDT46;
typedef struct Fpm__Message Fpm__Message;


/* --- enums --- */

typedef enum _Fpm__Message__Type {
  FPM__MESSAGE__TYPE__UNKNOWN_MSG = 0,
  FPM__MESSAGE__TYPE__ADD_ROUTE = 1,
  FPM__MESSAGE__TYPE__DELETE_ROUTE = 2,
  /*
   * Install an SRv6 Local SID 
   */
  FPM__MESSAGE__TYPE__ADD_SRV6_LOCALSID = 3,
  /*
   * Remove an SRv6 Local SID 
   */
  FPM__MESSAGE__TYPE__DELETE_SRV6_LOCALSID = 4
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FPM__MESSAGE__TYPE)
} Fpm__Message__Type;
typedef enum _Fpm__RouteType {
  FPM__ROUTE_TYPE__UNKNOWN = 0,
  FPM__ROUTE_TYPE__NORMAL = 1,
  FPM__ROUTE_TYPE__UNREACHABLE = 2,
  FPM__ROUTE_TYPE__BLACKHOLE = 3
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FPM__ROUTE_TYPE)
} Fpm__RouteType;

/* --- messages --- */

/*
 * A Nexthop for a route. It indicates how packets to a given prefix
 * should be forwarded (for instance, send them out of a specified
 * interface to a specified address).
 */
struct  Fpm__Nexthop
{
  ProtobufCMessage base;
  Qpb__IfIdentifier *if_id;
  Qpb__L3Address *address;
};
#define FPM__NEXTHOP__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__nexthop__descriptor) \
, NULL, NULL }


struct  Fpm__RouteKey
{
  ProtobufCMessage base;
  Qpb__L3Prefix *prefix;
};
#define FPM__ROUTE_KEY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__route_key__descriptor) \
, NULL }


struct  Fpm__DeleteRoute
{
  ProtobufCMessage base;
  uint32_t vrf_id;
  Qpb__AddressFamily address_family;
  Qpb__SubAddressFamily sub_address_family;
  Fpm__RouteKey *key;
};
#define FPM__DELETE_ROUTE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__delete_route__descriptor) \
, 0, QPB__ADDRESS_FAMILY__UNKNOWN_AF, QPB__SUB_ADDRESS_FAMILY__UNKNOWN_SAF, NULL }


struct  Fpm__AddRoute
{
  ProtobufCMessage base;
  uint32_t vrf_id;
  Qpb__AddressFamily address_family;
  Qpb__SubAddressFamily sub_address_family;
  Fpm__RouteKey *key;
  protobuf_c_boolean has_route_type;
  Fpm__RouteType route_type;
  Qpb__Protocol protocol;
  int32_t metric;
  size_t n_nexthops;
  Fpm__Nexthop **nexthops;
  /*
   * Source Address of outer encapsulating IPv6 header 
   */
  Qpb__Ipv6Address *srv6_encap_source_address;
  /*
   * SRv6 SID for VPN use cases 
   */
  Qpb__Ipv6Address *srv6_vpn_sid;
};
#define FPM__ADD_ROUTE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__add_route__descriptor) \
, 0, QPB__ADDRESS_FAMILY__UNKNOWN_AF, QPB__SUB_ADDRESS_FAMILY__UNKNOWN_SAF, NULL, 0, FPM__ROUTE_TYPE__UNKNOWN, QPB__PROTOCOL__UNKNOWN_PROTO, 0, 0,NULL, NULL, NULL }


/*
 * SID Format - as per RFC 8986 section #3.1 
 */
struct  Fpm__SRv6SIDFormat
{
  ProtobufCMessage base;
  /*
   * Locator block length 
   */
  uint32_t locator_block_length;
  /*
   * Locator node length 
   */
  uint32_t locator_node_length;
  /*
   * Function length 
   */
  uint32_t function_length;
  /*
   * Argument length 
   */
  uint32_t argument_length;
};
#define FPM__SRV6_SIDFORMAT__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_sidformat__descriptor) \
, 0, 0, 0, 0 }


/*
 * Endpoint 
 */
struct  Fpm__SRv6LocalSID__End
{
  ProtobufCMessage base;
};
#define FPM__SRV6_LOCAL_SID__END__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end__descriptor) \
 }


/*
 * Endpoint with L3 cross-connect 
 */
struct  Fpm__SRv6LocalSID__EndX
{
  ProtobufCMessage base;
  Fpm__Nexthop *nexthop;
};
#define FPM__SRV6_LOCAL_SID__END_X__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_x__descriptor) \
, NULL }


/*
 * Endpoint with specific IPv6 table lookup 
 */
struct  Fpm__SRv6LocalSID__EndT
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__END_T__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_t__descriptor) \
, 0 }


/*
 * Endpoint with decapsulation and IPv6 cross-connect 
 */
struct  Fpm__SRv6LocalSID__EndDX6
{
  ProtobufCMessage base;
  Fpm__Nexthop *nexthop;
};
#define FPM__SRV6_LOCAL_SID__END_DX6__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_dx6__descriptor) \
, NULL }


/*
 * Endpoint with decapsulation and IPv4 cross-connect 
 */
struct  Fpm__SRv6LocalSID__EndDX4
{
  ProtobufCMessage base;
  Fpm__Nexthop *nexthop;
};
#define FPM__SRV6_LOCAL_SID__END_DX4__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_dx4__descriptor) \
, NULL }


/*
 * Endpoint with decapsulation and specific IPv6 table lookup 
 */
struct  Fpm__SRv6LocalSID__EndDT6
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__END_DT6__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_dt6__descriptor) \
, 0 }


/*
 * Endpoint with decapsulation and specific IPv4 table lookup 
 */
struct  Fpm__SRv6LocalSID__EndDT4
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__END_DT4__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_dt4__descriptor) \
, 0 }


/*
 * Endpoint with decapsulation and specific IP table lookup 
 */
struct  Fpm__SRv6LocalSID__EndDT46
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__END_DT46__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__end_dt46__descriptor) \
, 0 }


/*
 * Endpoint behavior with NEXT-CSID, PSP and USD flavors 
 */
struct  Fpm__SRv6LocalSID__UN
{
  ProtobufCMessage base;
};
#define FPM__SRV6_LOCAL_SID__UN__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__un__descriptor) \
 }


/*
 * End.X behavior with NEXT-CSID, PSP and USD flavors 
 */
struct  Fpm__SRv6LocalSID__UA
{
  ProtobufCMessage base;
  Fpm__Nexthop *nexthop;
};
#define FPM__SRV6_LOCAL_SID__UA__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__ua__descriptor) \
, NULL }


/*
 * End.DT6 behavior with NEXT-CSID flavor 
 */
struct  Fpm__SRv6LocalSID__UDT6
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__UDT6__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__udt6__descriptor) \
, 0 }


/*
 * End.DT4 behavior with NEXT-CSID flavor 
 */
struct  Fpm__SRv6LocalSID__UDT4
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__UDT4__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__udt4__descriptor) \
, 0 }


/*
 * End.DT46 behavior with NEXT-CSID flavor 
 */
struct  Fpm__SRv6LocalSID__UDT46
{
  ProtobufCMessage base;
  uint32_t vrf_id;
};
#define FPM__SRV6_LOCAL_SID__UDT46__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__udt46__descriptor) \
, 0 }


typedef enum {
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR__NOT_SET = 0,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END = 3,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_X = 4,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_T = 5,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_DX6 = 7,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_DX4 = 8,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_DT6 = 9,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_DT4 = 10,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_END_DT46 = 11,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_UN = 12,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_UA = 13,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_UDT6 = 14,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_UDT4 = 15,
  FPM__SRV6_LOCAL_SID__END_BEHAVIOR_UDT46 = 16
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(FPM__SRV6_LOCAL_SID__END_BEHAVIOR__CASE)
} Fpm__SRv6LocalSID__EndBehaviorCase;

/*
 * SRv6 Local SID 
 */
struct  Fpm__SRv6LocalSID
{
  ProtobufCMessage base;
  /*
   * SRv6 SID value 
   */
  Qpb__Ipv6Address *sid;
  /*
   * SID Format - as per RFC 8986 section #3.1 
   */
  Fpm__SRv6SIDFormat *sid_format;
  Fpm__SRv6LocalSID__EndBehaviorCase end_behavior_case;
  union {
    /*
     * Endpoint 
     */
    Fpm__SRv6LocalSID__End *end;
    /*
     * Endpoint with decapsulation and specific IPv4 table lookup 
     */
    Fpm__SRv6LocalSID__EndDT4 *end_dt4;
    /*
     * Endpoint with decapsulation and specific IP table lookup 
     */
    Fpm__SRv6LocalSID__EndDT46 *end_dt46;
    /*
     * Endpoint with decapsulation and specific IPv6 table lookup 
     */
    Fpm__SRv6LocalSID__EndDT6 *end_dt6;
    /*
     * Endpoint with decapsulation and IPv4 cross-connect 
     */
    Fpm__SRv6LocalSID__EndDX4 *end_dx4;
    /*
     * Endpoint with decapsulation and IPv6 cross-connect 
     */
    Fpm__SRv6LocalSID__EndDX6 *end_dx6;
    /*
     * Endpoint with specific IPv6 table lookup 
     */
    Fpm__SRv6LocalSID__EndT *end_t;
    /*
     * Endpoint with L3 cross-connect 
     */
    Fpm__SRv6LocalSID__EndX *end_x;
    /*
     * End.X behavior with NEXT-CSID, PSP and USD flavors 
     */
    Fpm__SRv6LocalSID__UA *ua;
    /*
     * End.DT4 behavior with NEXT-CSID flavor 
     */
    Fpm__SRv6LocalSID__UDT4 *udt4;
    /*
     * End.DT46 behavior with NEXT-CSID flavor 
     */
    Fpm__SRv6LocalSID__UDT46 *udt46;
    /*
     * End.DT6 behavior with NEXT-CSID flavor 
     */
    Fpm__SRv6LocalSID__UDT6 *udt6;
    /*
     * Endpoint behavior with NEXT-CSID, PSP and USD flavors 
     */
    Fpm__SRv6LocalSID__UN *un;
  };
};
#define FPM__SRV6_LOCAL_SID__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__srv6_local_sid__descriptor) \
, NULL, NULL, FPM__SRV6_LOCAL_SID__END_BEHAVIOR__NOT_SET, {0} }


/*
 * Any message from the FPM.
 */
struct  Fpm__Message
{
  ProtobufCMessage base;
  protobuf_c_boolean has_type;
  Fpm__Message__Type type;
  Fpm__AddRoute *add_route;
  Fpm__DeleteRoute *delete_route;
  /*
   * SRv6 Local SID 
   */
  Fpm__SRv6LocalSID *srv6_localsid;
};
#define FPM__MESSAGE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&fpm__message__descriptor) \
, 0, FPM__MESSAGE__TYPE__UNKNOWN_MSG, NULL, NULL, NULL }


/* Fpm__Nexthop methods */
void   fpm__nexthop__init
                     (Fpm__Nexthop         *message);
size_t fpm__nexthop__get_packed_size
                     (const Fpm__Nexthop   *message);
size_t fpm__nexthop__pack
                     (const Fpm__Nexthop   *message,
                      uint8_t             *out);
size_t fpm__nexthop__pack_to_buffer
                     (const Fpm__Nexthop   *message,
                      ProtobufCBuffer     *buffer);
Fpm__Nexthop *
       fpm__nexthop__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__nexthop__free_unpacked
                     (Fpm__Nexthop *message,
                      ProtobufCAllocator *allocator);
/* Fpm__RouteKey methods */
void   fpm__route_key__init
                     (Fpm__RouteKey         *message);
size_t fpm__route_key__get_packed_size
                     (const Fpm__RouteKey   *message);
size_t fpm__route_key__pack
                     (const Fpm__RouteKey   *message,
                      uint8_t             *out);
size_t fpm__route_key__pack_to_buffer
                     (const Fpm__RouteKey   *message,
                      ProtobufCBuffer     *buffer);
Fpm__RouteKey *
       fpm__route_key__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__route_key__free_unpacked
                     (Fpm__RouteKey *message,
                      ProtobufCAllocator *allocator);
/* Fpm__DeleteRoute methods */
void   fpm__delete_route__init
                     (Fpm__DeleteRoute         *message);
size_t fpm__delete_route__get_packed_size
                     (const Fpm__DeleteRoute   *message);
size_t fpm__delete_route__pack
                     (const Fpm__DeleteRoute   *message,
                      uint8_t             *out);
size_t fpm__delete_route__pack_to_buffer
                     (const Fpm__DeleteRoute   *message,
                      ProtobufCBuffer     *buffer);
Fpm__DeleteRoute *
       fpm__delete_route__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__delete_route__free_unpacked
                     (Fpm__DeleteRoute *message,
                      ProtobufCAllocator *allocator);
/* Fpm__AddRoute methods */
void   fpm__add_route__init
                     (Fpm__AddRoute         *message);
size_t fpm__add_route__get_packed_size
                     (const Fpm__AddRoute   *message);
size_t fpm__add_route__pack
                     (const Fpm__AddRoute   *message,
                      uint8_t             *out);
size_t fpm__add_route__pack_to_buffer
                     (const Fpm__AddRoute   *message,
                      ProtobufCBuffer     *buffer);
Fpm__AddRoute *
       fpm__add_route__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__add_route__free_unpacked
                     (Fpm__AddRoute *message,
                      ProtobufCAllocator *allocator);
/* Fpm__SRv6SIDFormat methods */
void   fpm__srv6_sidformat__init
                     (Fpm__SRv6SIDFormat         *message);
size_t fpm__srv6_sidformat__get_packed_size
                     (const Fpm__SRv6SIDFormat   *message);
size_t fpm__srv6_sidformat__pack
                     (const Fpm__SRv6SIDFormat   *message,
                      uint8_t             *out);
size_t fpm__srv6_sidformat__pack_to_buffer
                     (const Fpm__SRv6SIDFormat   *message,
                      ProtobufCBuffer     *buffer);
Fpm__SRv6SIDFormat *
       fpm__srv6_sidformat__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__srv6_sidformat__free_unpacked
                     (Fpm__SRv6SIDFormat *message,
                      ProtobufCAllocator *allocator);
/* Fpm__SRv6LocalSID__End methods */
void   fpm__srv6_local_sid__end__init
                     (Fpm__SRv6LocalSID__End         *message);
/* Fpm__SRv6LocalSID__EndX methods */
void   fpm__srv6_local_sid__end_x__init
                     (Fpm__SRv6LocalSID__EndX         *message);
/* Fpm__SRv6LocalSID__EndT methods */
void   fpm__srv6_local_sid__end_t__init
                     (Fpm__SRv6LocalSID__EndT         *message);
/* Fpm__SRv6LocalSID__EndDX6 methods */
void   fpm__srv6_local_sid__end_dx6__init
                     (Fpm__SRv6LocalSID__EndDX6         *message);
/* Fpm__SRv6LocalSID__EndDX4 methods */
void   fpm__srv6_local_sid__end_dx4__init
                     (Fpm__SRv6LocalSID__EndDX4         *message);
/* Fpm__SRv6LocalSID__EndDT6 methods */
void   fpm__srv6_local_sid__end_dt6__init
                     (Fpm__SRv6LocalSID__EndDT6         *message);
/* Fpm__SRv6LocalSID__EndDT4 methods */
void   fpm__srv6_local_sid__end_dt4__init
                     (Fpm__SRv6LocalSID__EndDT4         *message);
/* Fpm__SRv6LocalSID__EndDT46 methods */
void   fpm__srv6_local_sid__end_dt46__init
                     (Fpm__SRv6LocalSID__EndDT46         *message);
/* Fpm__SRv6LocalSID__UN methods */
void   fpm__srv6_local_sid__un__init
                     (Fpm__SRv6LocalSID__UN         *message);
/* Fpm__SRv6LocalSID__UA methods */
void   fpm__srv6_local_sid__ua__init
                     (Fpm__SRv6LocalSID__UA         *message);
/* Fpm__SRv6LocalSID__UDT6 methods */
void   fpm__srv6_local_sid__udt6__init
                     (Fpm__SRv6LocalSID__UDT6         *message);
/* Fpm__SRv6LocalSID__UDT4 methods */
void   fpm__srv6_local_sid__udt4__init
                     (Fpm__SRv6LocalSID__UDT4         *message);
/* Fpm__SRv6LocalSID__UDT46 methods */
void   fpm__srv6_local_sid__udt46__init
                     (Fpm__SRv6LocalSID__UDT46         *message);
/* Fpm__SRv6LocalSID methods */
void   fpm__srv6_local_sid__init
                     (Fpm__SRv6LocalSID         *message);
size_t fpm__srv6_local_sid__get_packed_size
                     (const Fpm__SRv6LocalSID   *message);
size_t fpm__srv6_local_sid__pack
                     (const Fpm__SRv6LocalSID   *message,
                      uint8_t             *out);
size_t fpm__srv6_local_sid__pack_to_buffer
                     (const Fpm__SRv6LocalSID   *message,
                      ProtobufCBuffer     *buffer);
Fpm__SRv6LocalSID *
       fpm__srv6_local_sid__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__srv6_local_sid__free_unpacked
                     (Fpm__SRv6LocalSID *message,
                      ProtobufCAllocator *allocator);
/* Fpm__Message methods */
void   fpm__message__init
                     (Fpm__Message         *message);
size_t fpm__message__get_packed_size
                     (const Fpm__Message   *message);
size_t fpm__message__pack
                     (const Fpm__Message   *message,
                      uint8_t             *out);
size_t fpm__message__pack_to_buffer
                     (const Fpm__Message   *message,
                      ProtobufCBuffer     *buffer);
Fpm__Message *
       fpm__message__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   fpm__message__free_unpacked
                     (Fpm__Message *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*Fpm__Nexthop_Closure)
                 (const Fpm__Nexthop *message,
                  void *closure_data);
typedef void (*Fpm__RouteKey_Closure)
                 (const Fpm__RouteKey *message,
                  void *closure_data);
typedef void (*Fpm__DeleteRoute_Closure)
                 (const Fpm__DeleteRoute *message,
                  void *closure_data);
typedef void (*Fpm__AddRoute_Closure)
                 (const Fpm__AddRoute *message,
                  void *closure_data);
typedef void (*Fpm__SRv6SIDFormat_Closure)
                 (const Fpm__SRv6SIDFormat *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__End_Closure)
                 (const Fpm__SRv6LocalSID__End *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndX_Closure)
                 (const Fpm__SRv6LocalSID__EndX *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndT_Closure)
                 (const Fpm__SRv6LocalSID__EndT *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndDX6_Closure)
                 (const Fpm__SRv6LocalSID__EndDX6 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndDX4_Closure)
                 (const Fpm__SRv6LocalSID__EndDX4 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndDT6_Closure)
                 (const Fpm__SRv6LocalSID__EndDT6 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndDT4_Closure)
                 (const Fpm__SRv6LocalSID__EndDT4 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__EndDT46_Closure)
                 (const Fpm__SRv6LocalSID__EndDT46 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__UN_Closure)
                 (const Fpm__SRv6LocalSID__UN *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__UA_Closure)
                 (const Fpm__SRv6LocalSID__UA *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__UDT6_Closure)
                 (const Fpm__SRv6LocalSID__UDT6 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__UDT4_Closure)
                 (const Fpm__SRv6LocalSID__UDT4 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID__UDT46_Closure)
                 (const Fpm__SRv6LocalSID__UDT46 *message,
                  void *closure_data);
typedef void (*Fpm__SRv6LocalSID_Closure)
                 (const Fpm__SRv6LocalSID *message,
                  void *closure_data);
typedef void (*Fpm__Message_Closure)
                 (const Fpm__Message *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCEnumDescriptor    fpm__route_type__descriptor;
extern const ProtobufCMessageDescriptor fpm__nexthop__descriptor;
extern const ProtobufCMessageDescriptor fpm__route_key__descriptor;
extern const ProtobufCMessageDescriptor fpm__delete_route__descriptor;
extern const ProtobufCMessageDescriptor fpm__add_route__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_sidformat__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_x__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_t__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_dx6__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_dx4__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_dt6__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_dt4__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__end_dt46__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__un__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__ua__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__udt6__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__udt4__descriptor;
extern const ProtobufCMessageDescriptor fpm__srv6_local_sid__udt46__descriptor;
extern const ProtobufCMessageDescriptor fpm__message__descriptor;
extern const ProtobufCEnumDescriptor    fpm__message__type__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_fpm_2ffpm_2eproto__INCLUDED */
