aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlibapi
diff options
context:
space:
mode:
Diffstat (limited to 'src/vlibapi')
-rw-r--r--src/vlibapi/api.h2
-rw-r--r--src/vlibapi/api_common.h11
-rw-r--r--src/vlibapi/api_shared.c9
3 files changed, 22 insertions, 0 deletions
diff --git a/src/vlibapi/api.h b/src/vlibapi/api.h
index 49f5d5fb085..6820a541cba 100644
--- a/src/vlibapi/api.h
+++ b/src/vlibapi/api.h
@@ -114,6 +114,8 @@ vl_api_trace_t *vl_msg_api_trace_get (api_main_t * am,
vl_api_trace_which_t which);
void vl_msg_api_add_msg_name_crc (api_main_t * am, const char *string,
u32 id);
+void vl_msg_api_add_version (api_main_t * am, const char *string,
+ u32 major, u32 minor, u32 patch);
/* node_serialize.c prototypes */
u8 *vlib_node_serialize (vlib_node_main_t * nm, u8 * vector,
u32 max_threads, int include_nexts,
diff --git a/src/vlibapi/api_common.h b/src/vlibapi/api_common.h
index 845199efcd0..56b036d7f07 100644
--- a/src/vlibapi/api_common.h
+++ b/src/vlibapi/api_common.h
@@ -186,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
{
@@ -312,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;
diff --git a/src/vlibapi/api_shared.c b/src/vlibapi/api_shared.c
index 27898c3b952..831e863393b 100644
--- a/src/vlibapi/api_shared.c
+++ b/src/vlibapi/api_shared.c
@@ -915,6 +915,15 @@ vl_msg_api_add_msg_name_crc (api_main_t * am, const char *string, u32 id)
hash_set_mem (am->msg_index_by_name_and_crc, string, id);
}
+void
+vl_msg_api_add_version (api_main_t * am, const char *string,
+ u32 major, u32 minor, u32 patch)
+{
+ api_version_t version = {.major = major,.minor = minor,.patch = patch };
+ ASSERT (strlen (string) < 64);
+ strncpy (version.name, string, 64);
+ vec_add1 (am->api_version_list, version);
+}
/*
* fd.io coding-style-patch-verification: ON