From f090079390dd8e1aaea288ec1b69f8e8bb22de1a Mon Sep 17 00:00:00 2001 From: Mark Stapp Date: Fri, 5 Apr 2024 13:14:48 -0400 Subject: [PATCH] lib: add simple generic version helpers Add some simple helpers for generic major+minor+sub version values. Signed-off-by: Mark Stapp --- lib/libfrr.c | 9 +++++++++ lib/libfrr.h | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/lib/libfrr.c b/lib/libfrr.c index c5c7e7837a..03025328b7 100644 --- a/lib/libfrr.c +++ b/lib/libfrr.c @@ -1450,3 +1450,12 @@ void _libfrr_version(void) write(1, banner, sizeof(banner) - 1); _exit(0); } + +/* Render simple version tuple to string */ +const char *frr_vers2str(uint32_t version, char *buf, int buflen) +{ + snprintf(buf, buflen, "%d.%d.%d", MAJOR_FRRVERSION(version), + MINOR_FRRVERSION(version), SUB_FRRVERSION(version)); + + return buf; +} diff --git a/lib/libfrr.h b/lib/libfrr.h index ee436d9f8f..77d70448a9 100644 --- a/lib/libfrr.h +++ b/lib/libfrr.h @@ -233,6 +233,17 @@ extern bool frr_is_after_fork; extern bool debug_memstats_at_exit; +/* + * Version numbering: MAJOR (8) | MINOR (16) | SUB (8) + */ +#define MAKE_FRRVERSION(maj, min, sub) \ + ((((maj) & 0xff) << 24) | (((min) & 0xffff) << 8) | ((sub) & 0xff)) +#define MAJOR_FRRVERSION(v) (((v) >> 24) & 0xff) +#define MINOR_FRRVERSION(v) (((v) >> 8) & 0xffff) +#define SUB_FRRVERSION(v) ((v) & 0xff) + +const char *frr_vers2str(uint32_t version, char *buf, int buflen); + #ifdef __cplusplus } #endif