From 4e0147a05ebfa0ba1f262b1e191d3cbf1a44003d Mon Sep 17 00:00:00 2001 From: Christian Hopps Date: Wed, 13 Dec 2023 17:32:43 -0500 Subject: lib: add dedicated API functions for native msgs - reorg native message header Signed-off-by: Christian Hopps --- lib/mgmt_msg_native.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'lib/mgmt_msg_native.c') diff --git a/lib/mgmt_msg_native.c b/lib/mgmt_msg_native.c index a9e8a1711d..b6dc126d49 100644 --- a/lib/mgmt_msg_native.c +++ b/lib/mgmt_msg_native.c @@ -10,25 +10,30 @@ DEFINE_MGROUP(MSG_NATIVE, "Native message allocations"); DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_MSG, "native mgmt msg"); -DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_ERROR, "native mgmt error msg"); +DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_ERROR, "native error msg"); +DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_GET_TREE, "native get tree msg"); +DEFINE_MTYPE(MSG_NATIVE, MSG_NATIVE_TREE_DATA, "native tree data msg"); int vmgmt_msg_native_send_error(struct msg_conn *conn, uint64_t sess_or_txn_id, uint64_t req_id, bool short_circuit_ok, int16_t error, const char *errfmt, va_list ap) { struct mgmt_msg_error *msg; + char *errstr; ssize_t slen; - size_t mlen; int ret; - msg = XCALLOC(MTYPE_MSG_NATIVE_ERROR, 1024); - msg->session_id = sess_or_txn_id; + errstr = darr_vsprintf(errfmt, ap); + slen = strlen(errstr); + + msg = mgmt_msg_native_alloc_msg(typeof(*msg), slen + 1, + MTYPE_MSG_NATIVE_ERROR); + msg->refer_id = sess_or_txn_id; msg->req_id = req_id; msg->code = MGMT_MSG_CODE_ERROR; msg->error = error; - - slen = vsnprintfrr(msg->errstr, 1024 - sizeof(*msg), errfmt, ap); - mlen = MIN(slen + sizeof(*msg) + 1, 1024); + strlcpy(msg->errstr, errstr, slen + 1); + darr_free(errstr); if (conn->debug) zlog_debug("Sending error %d session-id %" PRIu64 @@ -36,10 +41,7 @@ int vmgmt_msg_native_send_error(struct msg_conn *conn, uint64_t sess_or_txn_id, error, sess_or_txn_id, req_id, short_circuit_ok, msg->errstr); - ret = msg_conn_send_msg(conn, MGMT_MSG_VERSION_NATIVE, msg, mlen, NULL, - short_circuit_ok); - - XFREE(MTYPE_MSG_NATIVE_ERROR, msg); - + ret = mgmt_msg_native_send_msg(conn, msg, short_circuit_ok); + mgmt_msg_native_free_msg(msg); return ret; } -- cgit v1.2.3