#include "config.h"
/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: mlag/mlag.proto */

#ifndef PROTOBUF_C_mlag_2fmlag_2eproto__INCLUDED
#define PROTOBUF_C_mlag_2fmlag_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


typedef struct ZebraMlagHeader ZebraMlagHeader;
typedef struct ZebraMlagStatusUpdate ZebraMlagStatusUpdate;
typedef struct ZebraMlagVxlanUpdate ZebraMlagVxlanUpdate;
typedef struct ZebraMlagZebraStatusUpdate ZebraMlagZebraStatusUpdate;
typedef struct ZebraMlagMrouteAdd ZebraMlagMrouteAdd;
typedef struct ZebraMlagMrouteDel ZebraMlagMrouteDel;
typedef struct ZebraMlagMrouteAddBulk ZebraMlagMrouteAddBulk;
typedef struct ZebraMlagMrouteDelBulk ZebraMlagMrouteDelBulk;


/* --- enums --- */

typedef enum _ZebraMlagHeader__MessageType {
  /*
   *Invalid message-type
   */
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_NONE = 0,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_REGISTER = 1,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_DEREGISTER = 2,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_STATUS_UPDATE = 3,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_MROUTE_ADD = 4,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_MROUTE_DEL = 5,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_DUMP = 6,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_MROUTE_ADD_BULK = 7,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_MROUTE_DEL_BULK = 8,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_PIM_CFG_DUMP = 10,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_VXLAN_UPDATE = 11,
  ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_ZEBRA_STATUS_UPDATE = 12
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ZEBRA_MLAG__HEADER__MESSAGE_TYPE)
} ZebraMlagHeader__MessageType;
typedef enum _ZebraMlagStatusUpdate__ClagState {
  ZEBRA_MLAG_STATUS_UPDATE__CLAG_STATE__CLAG_STATE_DOWN = 0,
  ZEBRA_MLAG_STATUS_UPDATE__CLAG_STATE__CLAG_STATE_RUNNING = 1
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ZEBRA_MLAG_STATUS_UPDATE__CLAG_STATE)
} ZebraMlagStatusUpdate__ClagState;
typedef enum _ZebraMlagStatusUpdate__ClagRole {
  ZEBRA_MLAG_STATUS_UPDATE__CLAG_ROLE__CLAG_ROLE_NONE = 0,
  ZEBRA_MLAG_STATUS_UPDATE__CLAG_ROLE__CLAG_ROLE_PRIMAY = 1,
  ZEBRA_MLAG_STATUS_UPDATE__CLAG_ROLE__CLAG_ROLE_SECONDARY = 2
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ZEBRA_MLAG_STATUS_UPDATE__CLAG_ROLE)
} ZebraMlagStatusUpdate__ClagRole;
typedef enum _ZebraMlagZebraStatusUpdate__FrrState {
  ZEBRA_MLAG_ZEBRA_STATUS_UPDATE__FRR_STATE__FRR_STATE_NONE = 0,
  ZEBRA_MLAG_ZEBRA_STATUS_UPDATE__FRR_STATE__FRR_STATE_DOWN = 1,
  ZEBRA_MLAG_ZEBRA_STATUS_UPDATE__FRR_STATE__FRR_STATE_UP = 2
    PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ZEBRA_MLAG_ZEBRA_STATUS_UPDATE__FRR_STATE)
} ZebraMlagZebraStatusUpdate__FrrState;

/* --- messages --- */

/*
 * [START messages]
 */
struct  ZebraMlagHeader
{
  ProtobufCMessage base;
  /*
   * tells what type of message this payload carries
   */
  ZebraMlagHeader__MessageType type;
  /*
   * Length of payload
   */
  uint32_t len;
  /*
   * Actual Encoded payload
   */
  ProtobufCBinaryData data;
};
#define ZEBRA_MLAG__HEADER__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag__header__descriptor) \
, ZEBRA_MLAG__HEADER__MESSAGE_TYPE__ZEBRA_MLAG_NONE, 0, {0,NULL} }


struct  ZebraMlagStatusUpdate
{
  ProtobufCMessage base;
  char *peerlink;
  ZebraMlagStatusUpdate__ClagRole my_role;
  ZebraMlagStatusUpdate__ClagState peer_state;
};
#define ZEBRA_MLAG_STATUS_UPDATE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_status_update__descriptor) \
, (char *)protobuf_c_empty_string, ZEBRA_MLAG_STATUS_UPDATE__CLAG_ROLE__CLAG_ROLE_NONE, ZEBRA_MLAG_STATUS_UPDATE__CLAG_STATE__CLAG_STATE_DOWN }


/*
 * ZEBRA_MLAG_VXLAN_UPDATE
 * This message will be posted by CLAGD(an external control plane Manager
 * which is responsible for MCLAG) to inform zebra obout anycast/local
 * ip updates.
 */
struct  ZebraMlagVxlanUpdate
{
  ProtobufCMessage base;
  uint32_t anycast_ip;
  uint32_t local_ip;
};
#define ZEBRA_MLAG_VXLAN_UPDATE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_vxlan_update__descriptor) \
, 0, 0 }


struct  ZebraMlagZebraStatusUpdate
{
  ProtobufCMessage base;
  ZebraMlagZebraStatusUpdate__FrrState peer_frrstate;
};
#define ZEBRA_MLAG_ZEBRA_STATUS_UPDATE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_zebra_status_update__descriptor) \
, ZEBRA_MLAG_ZEBRA_STATUS_UPDATE__FRR_STATE__FRR_STATE_NONE }


struct  ZebraMlagMrouteAdd
{
  ProtobufCMessage base;
  char *vrf_name;
  uint32_t source_ip;
  uint32_t group_ip;
  /*
   * This is the IGP Cost to reach Configured RP in case of (*,G) or
   * Cost to the source in case of (S,G) entry
   */
  uint32_t cost_to_rp;
  uint32_t owner_id;
  protobuf_c_boolean am_i_dr;
  protobuf_c_boolean am_i_dual_active;
  uint32_t vrf_id;
  char *intf_name;
};
#define ZEBRA_MLAG_MROUTE_ADD__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_mroute_add__descriptor) \
, (char *)protobuf_c_empty_string, 0, 0, 0, 0, 0, 0, 0, (char *)protobuf_c_empty_string }


struct  ZebraMlagMrouteDel
{
  ProtobufCMessage base;
  char *vrf_name;
  uint32_t source_ip;
  uint32_t group_ip;
  uint32_t owner_id;
  uint32_t vrf_id;
  char *intf_name;
};
#define ZEBRA_MLAG_MROUTE_DEL__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_mroute_del__descriptor) \
, (char *)protobuf_c_empty_string, 0, 0, 0, 0, (char *)protobuf_c_empty_string }


struct  ZebraMlagMrouteAddBulk
{
  ProtobufCMessage base;
  size_t n_mroute_add;
  ZebraMlagMrouteAdd **mroute_add;
};
#define ZEBRA_MLAG_MROUTE_ADD_BULK__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_mroute_add_bulk__descriptor) \
, 0,NULL }


struct  ZebraMlagMrouteDelBulk
{
  ProtobufCMessage base;
  size_t n_mroute_del;
  ZebraMlagMrouteDel **mroute_del;
};
#define ZEBRA_MLAG_MROUTE_DEL_BULK__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&zebra_mlag_mroute_del_bulk__descriptor) \
, 0,NULL }


/* ZebraMlagHeader methods */
void   zebra_mlag__header__init
                     (ZebraMlagHeader         *message);
size_t zebra_mlag__header__get_packed_size
                     (const ZebraMlagHeader   *message);
size_t zebra_mlag__header__pack
                     (const ZebraMlagHeader   *message,
                      uint8_t             *out);
size_t zebra_mlag__header__pack_to_buffer
                     (const ZebraMlagHeader   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagHeader *
       zebra_mlag__header__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag__header__free_unpacked
                     (ZebraMlagHeader *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagStatusUpdate methods */
void   zebra_mlag_status_update__init
                     (ZebraMlagStatusUpdate         *message);
size_t zebra_mlag_status_update__get_packed_size
                     (const ZebraMlagStatusUpdate   *message);
size_t zebra_mlag_status_update__pack
                     (const ZebraMlagStatusUpdate   *message,
                      uint8_t             *out);
size_t zebra_mlag_status_update__pack_to_buffer
                     (const ZebraMlagStatusUpdate   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagStatusUpdate *
       zebra_mlag_status_update__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_status_update__free_unpacked
                     (ZebraMlagStatusUpdate *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagVxlanUpdate methods */
void   zebra_mlag_vxlan_update__init
                     (ZebraMlagVxlanUpdate         *message);
size_t zebra_mlag_vxlan_update__get_packed_size
                     (const ZebraMlagVxlanUpdate   *message);
size_t zebra_mlag_vxlan_update__pack
                     (const ZebraMlagVxlanUpdate   *message,
                      uint8_t             *out);
size_t zebra_mlag_vxlan_update__pack_to_buffer
                     (const ZebraMlagVxlanUpdate   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagVxlanUpdate *
       zebra_mlag_vxlan_update__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_vxlan_update__free_unpacked
                     (ZebraMlagVxlanUpdate *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagZebraStatusUpdate methods */
void   zebra_mlag_zebra_status_update__init
                     (ZebraMlagZebraStatusUpdate         *message);
size_t zebra_mlag_zebra_status_update__get_packed_size
                     (const ZebraMlagZebraStatusUpdate   *message);
size_t zebra_mlag_zebra_status_update__pack
                     (const ZebraMlagZebraStatusUpdate   *message,
                      uint8_t             *out);
size_t zebra_mlag_zebra_status_update__pack_to_buffer
                     (const ZebraMlagZebraStatusUpdate   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagZebraStatusUpdate *
       zebra_mlag_zebra_status_update__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_zebra_status_update__free_unpacked
                     (ZebraMlagZebraStatusUpdate *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagMrouteAdd methods */
void   zebra_mlag_mroute_add__init
                     (ZebraMlagMrouteAdd         *message);
size_t zebra_mlag_mroute_add__get_packed_size
                     (const ZebraMlagMrouteAdd   *message);
size_t zebra_mlag_mroute_add__pack
                     (const ZebraMlagMrouteAdd   *message,
                      uint8_t             *out);
size_t zebra_mlag_mroute_add__pack_to_buffer
                     (const ZebraMlagMrouteAdd   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagMrouteAdd *
       zebra_mlag_mroute_add__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_mroute_add__free_unpacked
                     (ZebraMlagMrouteAdd *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagMrouteDel methods */
void   zebra_mlag_mroute_del__init
                     (ZebraMlagMrouteDel         *message);
size_t zebra_mlag_mroute_del__get_packed_size
                     (const ZebraMlagMrouteDel   *message);
size_t zebra_mlag_mroute_del__pack
                     (const ZebraMlagMrouteDel   *message,
                      uint8_t             *out);
size_t zebra_mlag_mroute_del__pack_to_buffer
                     (const ZebraMlagMrouteDel   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagMrouteDel *
       zebra_mlag_mroute_del__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_mroute_del__free_unpacked
                     (ZebraMlagMrouteDel *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagMrouteAddBulk methods */
void   zebra_mlag_mroute_add_bulk__init
                     (ZebraMlagMrouteAddBulk         *message);
size_t zebra_mlag_mroute_add_bulk__get_packed_size
                     (const ZebraMlagMrouteAddBulk   *message);
size_t zebra_mlag_mroute_add_bulk__pack
                     (const ZebraMlagMrouteAddBulk   *message,
                      uint8_t             *out);
size_t zebra_mlag_mroute_add_bulk__pack_to_buffer
                     (const ZebraMlagMrouteAddBulk   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagMrouteAddBulk *
       zebra_mlag_mroute_add_bulk__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_mroute_add_bulk__free_unpacked
                     (ZebraMlagMrouteAddBulk *message,
                      ProtobufCAllocator *allocator);
/* ZebraMlagMrouteDelBulk methods */
void   zebra_mlag_mroute_del_bulk__init
                     (ZebraMlagMrouteDelBulk         *message);
size_t zebra_mlag_mroute_del_bulk__get_packed_size
                     (const ZebraMlagMrouteDelBulk   *message);
size_t zebra_mlag_mroute_del_bulk__pack
                     (const ZebraMlagMrouteDelBulk   *message,
                      uint8_t             *out);
size_t zebra_mlag_mroute_del_bulk__pack_to_buffer
                     (const ZebraMlagMrouteDelBulk   *message,
                      ProtobufCBuffer     *buffer);
ZebraMlagMrouteDelBulk *
       zebra_mlag_mroute_del_bulk__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   zebra_mlag_mroute_del_bulk__free_unpacked
                     (ZebraMlagMrouteDelBulk *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*ZebraMlagHeader_Closure)
                 (const ZebraMlagHeader *message,
                  void *closure_data);
typedef void (*ZebraMlagStatusUpdate_Closure)
                 (const ZebraMlagStatusUpdate *message,
                  void *closure_data);
typedef void (*ZebraMlagVxlanUpdate_Closure)
                 (const ZebraMlagVxlanUpdate *message,
                  void *closure_data);
typedef void (*ZebraMlagZebraStatusUpdate_Closure)
                 (const ZebraMlagZebraStatusUpdate *message,
                  void *closure_data);
typedef void (*ZebraMlagMrouteAdd_Closure)
                 (const ZebraMlagMrouteAdd *message,
                  void *closure_data);
typedef void (*ZebraMlagMrouteDel_Closure)
                 (const ZebraMlagMrouteDel *message,
                  void *closure_data);
typedef void (*ZebraMlagMrouteAddBulk_Closure)
                 (const ZebraMlagMrouteAddBulk *message,
                  void *closure_data);
typedef void (*ZebraMlagMrouteDelBulk_Closure)
                 (const ZebraMlagMrouteDelBulk *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor zebra_mlag__header__descriptor;
extern const ProtobufCEnumDescriptor    zebra_mlag__header__message_type__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_status_update__descriptor;
extern const ProtobufCEnumDescriptor    zebra_mlag_status_update__clag_state__descriptor;
extern const ProtobufCEnumDescriptor    zebra_mlag_status_update__clag_role__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_vxlan_update__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_zebra_status_update__descriptor;
extern const ProtobufCEnumDescriptor    zebra_mlag_zebra_status_update__frr_state__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_mroute_add__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_mroute_del__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_mroute_add_bulk__descriptor;
extern const ProtobufCMessageDescriptor zebra_mlag_mroute_del_bulk__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_mlag_2fmlag_2eproto__INCLUDED */
