vppapigen: support per-file (major,minor,patch) version stamps
[vpp.git] / src / vlibapi / api_common.h
index 770cf47..56b036d 100644 (file)
@@ -50,14 +50,22 @@ typedef struct vl_api_registration_
 
   u8 *name;                    /**< Client name */
 
+  /* Zombie apocalypse checking */
+  f64 last_heard;
+  int last_queue_head;
+  int unanswered_pings;
+
   /** shared memory only: pointer to client input queue */
   unix_shared_memory_queue_t *vl_input_queue;
+  svm_region_t *vlib_rp;
+  void *shmem_hdr;
 
   /* socket server and client */
   u32 clib_file_index;         /**< Socket only: file index */
   i8 *unprocessed_input;       /**< Socket only: pending input */
   u32 unprocessed_msg_length;  /**< Socket only: unprocssed length */
   u8 *output_vector;           /**< Socket only: output vecto  */
+  int *additional_fds_to_close;
 
   /* socket client only */
   u32 server_handle;           /**< Socket client only: server handle */
@@ -144,6 +152,7 @@ void vl_msg_api_set_handlers (int msg_id, char *msg_name,
                              void *cleanup,
                              void *endian,
                              void *print, int msg_size, int traced);
+void vl_msg_api_clean_handlers (int msg_id);
 void vl_msg_api_config (vl_msg_api_msg_config_t *);
 void vl_msg_api_set_cleanup_handler (int msg_id, void *fp);
 void vl_msg_api_queue_handler (unix_shared_memory_queue_t * q);
@@ -177,6 +186,14 @@ typedef struct _vl_msg_api_init_function_list_elt
   vl_msg_api_init_function_t *f;
 } _vl_msg_api_function_list_elt_t;
 
+typedef struct
+{
+  u32 major;
+  u32 minor;
+  u32 patch;
+  char name[64];
+} api_version_t;
+
 /** API main structure, used by both vpp and binary API clients */
 typedef struct
 {
@@ -230,10 +247,14 @@ typedef struct
   /** Current process PID */
   int our_pid;
 
-  /** Binary api segment descriptor */
+  /** Current binary api segment descriptor */
   svm_region_t *vlib_rp;
 
+  /** Primary api segment descriptor */
+  svm_region_t *vlib_primary_rp;
+
   /** Vector of all mapped shared-VM segments */
+  svm_region_t **vlib_private_rps;
   svm_region_t **mapped_shmem_regions;
 
   /** Binary API shared-memory segment header pointer */
@@ -299,6 +320,9 @@ typedef struct
   /** client message index hash table */
   uword *msg_index_by_name_and_crc;
 
+  /** api version list */
+  api_version_t *api_version_list;
+
   /** Shared VM binary API region name */
   const char *region_name;