int cmd_recv_stream_2_1(struct relay_connection *conn, struct relay_stream *stream) { int ret; struct lttcomm_relayd_add_stream stream_info; assert(conn); assert(stream); ret = cmd_recv(conn->sock, &stream_info, sizeof(stream_info)); if (ret < 0) { ERR("Unable to recv stream version 2.1"); goto error; } stream->path_name = create_output_path(stream_info.pathname); if (stream->path_name == NULL) { PERROR("Path name allocation"); ret = -ENOMEM; goto error; } stream->channel_name = strdup(stream_info.channel_name); if (stream->channel_name == NULL) { ret = -errno; PERROR("Path name allocation"); goto error; } ret = 0; error: return ret; }
int cmd_create_session_2_4(struct relay_command *cmd, struct relay_session *session) { int ret; struct lttcomm_relayd_create_session_2_4 session_info; assert(cmd); assert(session); ret = cmd_recv(cmd->sock, &session_info, sizeof(session_info)); if (ret < 0) { ERR("Unable to recv session info version 2.4"); goto error; } strncpy(session->session_name, session_info.session_name, sizeof(session->session_name)); strncpy(session->hostname, session_info.hostname, sizeof(session->hostname)); session->live_timer = be32toh(session_info.live_timer); session->snapshot = be32toh(session_info.snapshot); ret = 0; error: return ret; }
struct cmd_list * cmd_list_recv(struct buffer *b) { struct cmd_list *cmdlist; struct cmd *cmd; u_int n; buffer_read(b, &n, sizeof n); cmdlist = xmalloc(sizeof *cmdlist); TAILQ_INIT(cmdlist); while (n-- > 0) { cmd = cmd_recv(b); TAILQ_INSERT_TAIL(cmdlist, cmd, qentry); } return (cmdlist); }