summaryrefslogtreecommitdiffstats
path: root/src/vlibapi
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2017-09-28 15:11:16 -0400
committerOle Troan <ot@cisco.com>2017-10-09 13:32:40 +0200
commit0d056e5ede136cd0111dc3f9f41ef7b36a938027 (patch)
tree2f7c61d50f922a55ab7da199e0304a581ee7516f /src/vlibapi
parent87da476db0cd804e11463cc453a2bb41c6808542 (diff)
vppapigen: support per-file (major,minor,patch) version stamps
Add one of these statements to foo.api: vl_api_version 1.2.3 to generate a version tuple stanza in foo.api.h: /****** Version tuple *****/ vl_api_version_tuple(foo, 1, 2, 3) Change-Id: Ic514439e4677999daa8463a94f948f76b132ff15 Signed-off-by: Dave Barach <dave@barachs.net> Signed-off-by: Ole Troan <ot@cisco.com>
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