X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fcmd-2-4.cpp;fp=src%2Fbin%2Flttng-relayd%2Fcmd-2-4.cpp;h=7abc371f06732056bf61435d8bf71750cdb3a774;hb=ac497a37018f3c253d2e50397294f58d33f7f24f;hp=0000000000000000000000000000000000000000;hpb=7966af5763c4aaca39df9bbfa9277ff15715c720;p=lttng-tools.git diff --git a/src/bin/lttng-relayd/cmd-2-4.cpp b/src/bin/lttng-relayd/cmd-2-4.cpp new file mode 100644 index 000000000..7abc371f0 --- /dev/null +++ b/src/bin/lttng-relayd/cmd-2-4.cpp @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2013 Julien Desfossez + * Copyright (C) 2013 David Goulet + * Copyright (C) 2015 Mathieu Desnoyers + * + * SPDX-License-Identifier: GPL-2.0-only + * + */ + +#define _LGPL_SOURCE + +#include +#include + +#include +#include +#include + +#include "cmd-2-4.h" +#include "lttng-relayd.h" + +int cmd_create_session_2_4(const struct lttng_buffer_view *payload, + char *session_name, char *hostname, + uint32_t *live_timer, bool *snapshot) +{ + int ret; + struct lttcomm_relayd_create_session_2_4 session_info; + size_t len; + + if (payload->size < sizeof(session_info)) { + ERR("Unexpected payload size in \"cmd_create_session_2_4\": expected >= %zu bytes, got %zu bytes", + sizeof(session_info), payload->size); + ret = -1; + goto error; + } + memcpy(&session_info, payload->data, sizeof(session_info)); + + len = lttng_strnlen(session_info.session_name, sizeof(session_info.session_name)); + /* Ensure that NULL-terminated and fits in local filename length. */ + if (len == sizeof(session_info.session_name) || len >= LTTNG_NAME_MAX) { + ret = -ENAMETOOLONG; + ERR("Session name too long"); + goto error; + } else if (len == 0) { + ret = -EINVAL; + ERR("Session name can't be of length 0"); + goto error; + } + strncpy(session_name, session_info.session_name, LTTNG_NAME_MAX); + + len = lttng_strnlen(session_info.hostname, sizeof(session_info.hostname)); + if (len == sizeof(session_info.hostname) || len >= LTTNG_HOST_NAME_MAX) { + ret = -ENAMETOOLONG; + ERR("Session name too long"); + goto error; + } + strncpy(hostname, session_info.hostname, LTTNG_HOST_NAME_MAX); + + *live_timer = be32toh(session_info.live_timer); + *snapshot = be32toh(session_info.snapshot); + + ret = 0; + +error: + return ret; +}