From 0d056e5ede136cd0111dc3f9f41ef7b36a938027 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Thu, 28 Sep 2017 15:11:16 -0400 Subject: 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 Signed-off-by: Ole Troan --- src/vlibapi/api.h | 2 ++ src/vlibapi/api_common.h | 11 +++++++++++ src/vlibapi/api_shared.c | 9 +++++++++ 3 files changed, 22 insertions(+) (limited to 'src/vlibapi') 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 -- cgit 1.2.3-korg