Diff for /embedaddon/quagga/lib/zclient.h between versions 1.1 and 1.1.1.3

version 1.1, 2012/02/21 17:26:12 version 1.1.1.3, 2016/11/02 10:09:10
Line 22 Line 22
 #ifndef _ZEBRA_ZCLIENT_H  #ifndef _ZEBRA_ZCLIENT_H
 #define _ZEBRA_ZCLIENT_H  #define _ZEBRA_ZCLIENT_H
   
   /* For struct zapi_ipv{4,6}. */
   #include "prefix.h"
   
 /* For struct interface and struct connected. */  /* For struct interface and struct connected. */
 #include "if.h"  #include "if.h"
   
   /* For vrf_bitmap_t. */
   #include "vrf.h"
   
 /* For input/output buffer to zebra. */  /* For input/output buffer to zebra. */
 #define ZEBRA_MAX_PACKET_SIZ          4096  #define ZEBRA_MAX_PACKET_SIZ          4096
   
 /* Zebra header size. */  /* Zebra header size. */
#define ZEBRA_HEADER_SIZE             6#define ZEBRA_HEADER_SIZE             8
   
 /* Structure for the zebra client. */  /* Structure for the zebra client. */
 struct zclient  struct zclient
 {  {
     /* The thread master we schedule ourselves on */
     struct thread_master *master;
   
   /* Socket to zebra daemon. */    /* Socket to zebra daemon. */
   int sock;    int sock;
   
Line 62  struct zclient Line 71  struct zclient
   
   /* Redistribute information. */    /* Redistribute information. */
   u_char redist_default;    u_char redist_default;
  u_char redist[ZEBRA_ROUTE_MAX];  vrf_bitmap_t redist[ZEBRA_ROUTE_MAX];
   
   /* Redistribute defauilt. */    /* Redistribute defauilt. */
  u_char default_information;  vrf_bitmap_t default_information;
   
   /* Pointer to the callback functions. */    /* Pointer to the callback functions. */
  int (*router_id_update) (int, struct zclient *, uint16_t);  void (*zebra_connected) (struct zclient *);
  int (*interface_add) (int, struct zclient *, uint16_t);  int (*router_id_update) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*interface_delete) (int, struct zclient *, uint16_t);  int (*interface_add) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*interface_up) (int, struct zclient *, uint16_t);  int (*interface_delete) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*interface_down) (int, struct zclient *, uint16_t);  int (*interface_up) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*interface_address_add) (int, struct zclient *, uint16_t);  int (*interface_down) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*interface_address_delete) (int, struct zclient *, uint16_t);  int (*interface_address_add) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*ipv4_route_add) (int, struct zclient *, uint16_t);  int (*interface_address_delete) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*ipv4_route_delete) (int, struct zclient *, uint16_t);  int (*ipv4_route_add) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*ipv6_route_add) (int, struct zclient *, uint16_t);  int (*ipv4_route_delete) (int, struct zclient *, uint16_t, vrf_id_t);
  int (*ipv6_route_delete) (int, struct zclient *, uint16_t);  int (*ipv6_route_add) (int, struct zclient *, uint16_t, vrf_id_t);
   int (*ipv6_route_delete) (int, struct zclient *, uint16_t, vrf_id_t);
 };  };
   
 /* Zebra API message flag. */  /* Zebra API message flag. */
Line 86  struct zclient Line 96  struct zclient
 #define ZAPI_MESSAGE_IFINDEX  0x02  #define ZAPI_MESSAGE_IFINDEX  0x02
 #define ZAPI_MESSAGE_DISTANCE 0x04  #define ZAPI_MESSAGE_DISTANCE 0x04
 #define ZAPI_MESSAGE_METRIC   0x08  #define ZAPI_MESSAGE_METRIC   0x08
   #define ZAPI_MESSAGE_MTU      0x10
   
 /* Zserv protocol message header */  /* Zserv protocol message header */
 struct zserv_header  struct zserv_header
Line 95  struct zserv_header Line 106  struct zserv_header
                          * always set to 255 in new zserv.                           * always set to 255 in new zserv.
                          */                           */
   uint8_t version;    uint8_t version;
#define ZSERV_VERSION   1#define ZSERV_VERSION   3
   vrf_id_t vrf_id;
   uint16_t command;    uint16_t command;
 };  };
   
Line 108  struct zapi_ipv4 Line 120  struct zapi_ipv4
   
   u_char message;    u_char message;
   
     safi_t safi;
   
   u_char nexthop_num;    u_char nexthop_num;
   struct in_addr **nexthop;    struct in_addr **nexthop;
   
   u_char ifindex_num;    u_char ifindex_num;
  unsigned int *ifindex;  ifindex_t *ifindex;
   
   u_char distance;    u_char distance;
   
   u_int32_t metric;    u_int32_t metric;
   
     u_int32_t mtu;
   
     vrf_id_t vrf_id;
 };  };
   
 /* Prototypes of zebra client service functions. */  /* Prototypes of zebra client service functions. */
extern struct zclient *zclient_new (void);extern struct zclient *zclient_new (struct thread_master *);
 extern void zclient_init (struct zclient *, int);  extern void zclient_init (struct zclient *, int);
 extern int zclient_start (struct zclient *);  extern int zclient_start (struct zclient *);
 extern void zclient_stop (struct zclient *);  extern void zclient_stop (struct zclient *);
 extern void zclient_reset (struct zclient *);  extern void zclient_reset (struct zclient *);
 extern void zclient_free (struct zclient *);  extern void zclient_free (struct zclient *);
   
/* Get TCP socket connection to zebra daemon at loopback address. */extern int  zclient_socket_connect (struct zclient *);
extern int zclient_socket (void);extern void zclient_serv_path_set  (char *path);
 extern const char *zclient_serv_path_get (void);
   
/* Get unix stream socket connection to zebra daemon at given path. */extern void zclient_send_requests (struct zclient *, vrf_id_t);
extern int zclient_socket_un (const char *); 
   
 /* Send redistribute command to zebra daemon. Do not update zclient state. */  /* Send redistribute command to zebra daemon. Do not update zclient state. */
extern int zebra_redistribute_send (int command, struct zclient *, int type);extern int zebra_redistribute_send (int command, struct zclient *, int type,
     vrf_id_t vrf_id);
   
 /* If state has changed, update state and call zebra_redistribute_send. */  /* If state has changed, update state and call zebra_redistribute_send. */
extern void zclient_redistribute (int command, struct zclient *, int type);extern void zclient_redistribute (int command, struct zclient *, int type,
     vrf_id_t vrf_id);
   
 /* If state has changed, update state and send the command to zebra. */  /* If state has changed, update state and send the command to zebra. */
extern void zclient_redistribute_default (int command, struct zclient *);extern void zclient_redistribute_default (int command, struct zclient *,
     vrf_id_t vrf_id);
   
 /* Send the message in zclient->obuf to the zebra daemon (or enqueue it).  /* Send the message in zclient->obuf to the zebra daemon (or enqueue it).
    Returns 0 for success or -1 on an I/O error. */     Returns 0 for success or -1 on an I/O error. */
 extern int zclient_send_message(struct zclient *);  extern int zclient_send_message(struct zclient *);
   
 /* create header for command, length to be filled in by user later */  /* create header for command, length to be filled in by user later */
extern void zclient_create_header (struct stream *, uint16_t);extern void zclient_create_header (struct stream *, uint16_t, vrf_id_t);
 extern int zclient_read_header (struct stream *s, int sock, u_int16_t *size,
                                 u_char *marker, u_char *version,
                                 u_int16_t *vrf_id, u_int16_t *cmd);
   
extern struct interface *zebra_interface_add_read (struct stream *);extern struct interface *zebra_interface_add_read (struct stream *,
extern struct interface *zebra_interface_state_read (struct stream *s);    vrf_id_t);
extern struct connected *zebra_interface_address_read (int, struct stream *);extern struct interface *zebra_interface_state_read (struct stream *,
     vrf_id_t);
 extern struct connected *zebra_interface_address_read (int, struct stream *,
     vrf_id_t);
 extern void zebra_interface_if_set_value (struct stream *, struct interface *);  extern void zebra_interface_if_set_value (struct stream *, struct interface *);
 extern void zebra_router_id_update_read (struct stream *s, struct prefix *rid);  extern void zebra_router_id_update_read (struct stream *s, struct prefix *rid);
 extern int zapi_ipv4_route (u_char, struct zclient *, struct prefix_ipv4 *,   extern int zapi_ipv4_route (u_char, struct zclient *, struct prefix_ipv4 *, 
Line 168  struct zapi_ipv6 Line 195  struct zapi_ipv6
   
   u_char message;    u_char message;
   
     safi_t safi;
   
   u_char nexthop_num;    u_char nexthop_num;
   struct in6_addr **nexthop;    struct in6_addr **nexthop;
   
   u_char ifindex_num;    u_char ifindex_num;
  unsigned int *ifindex;  ifindex_t *ifindex;
   
   u_char distance;    u_char distance;
   
   u_int32_t metric;    u_int32_t metric;
   
     u_int32_t mtu;
   
     vrf_id_t vrf_id;
 };  };
   
 extern int zapi_ipv6_route (u_char cmd, struct zclient *zclient,   extern int zapi_ipv6_route (u_char cmd, struct zclient *zclient, 

Removed from v.1.1  
changed lines
  Added in v.1.1.1.3


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>