summaryrefslogtreecommitdiff
path: root/lib/mgmt_msg_native.c
diff options
context:
space:
mode:
authorChristian Hopps <chopps@labn.net>2024-06-04 10:28:48 -0400
committerChristian Hopps <chopps@labn.net>2024-06-06 22:39:47 -0400
commit33b73f8e3aa13679ba3aad82be2a88d7cb69f426 (patch)
tree3248dbe0ea5b884ccec2f4ff7769dce10d162abe /lib/mgmt_msg_native.c
parent22eccbfab916b2c6b64037e872a5c5a870d1a4d6 (diff)
lib: native msg add array of strings support
Signed-off-by: Christian Hopps <chopps@labn.net>
Diffstat (limited to 'lib/mgmt_msg_native.c')
-rw-r--r--lib/mgmt_msg_native.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/mgmt_msg_native.c b/lib/mgmt_msg_native.c
index 39ce9abae6..d0a0b72189 100644
--- a/lib/mgmt_msg_native.c
+++ b/lib/mgmt_msg_native.c
@@ -6,6 +6,7 @@
*
*/
#include <zebra.h>
+#include "darr.h"
#include "mgmt_msg_native.h"
DEFINE_MGROUP(MSG_NATIVE, "Native message allocations");
@@ -50,3 +51,20 @@ int vmgmt_msg_native_send_error(struct msg_conn *conn, uint64_t sess_or_txn_id,
mgmt_msg_native_free_msg(msg);
return ret;
}
+
+const char **_mgmt_msg_native_strings_decode(const void *_sdata, int sdlen)
+{
+ const char *sdata = _sdata;
+ const char **strings = NULL;
+ int len;
+
+ if (sdata[sdlen - 1] != 0)
+ return NULL;
+
+ for (; sdlen; sdata += len, sdlen -= len) {
+ *darr_append(strings) = darr_strdup(sdata);
+ len = 1 + darr_strlen(strings[darr_lasti(strings)]);
+ }
+
+ return strings;
+}