X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fconsumer.c;h=72450d50c220770907b3f4b70cc3836f42268276;hp=56d938114cd18d4f112f9455d5f1ba80e28ce7b6;hb=37278a1e7efe00011260569fa90909601e8c5184;hpb=7717e3612c10d85507abc47fbde262d39edfb8b4 diff --git a/src/bin/lttng-sessiond/consumer.c b/src/bin/lttng-sessiond/consumer.c index 56d938114..72450d50c 100644 --- a/src/bin/lttng-sessiond/consumer.c +++ b/src/bin/lttng-sessiond/consumer.c @@ -331,3 +331,54 @@ int consumer_send_stream(int sock, struct consumer_output *dst, error: return ret; } + +/* + * Send relayd socket to consumer associated with a session name. + * + * On success return positive value. On error, negative value. + */ +int consumer_send_relayd_socket(int consumer_sock, + struct lttcomm_sock *sock, struct consumer_output *consumer, + enum lttng_stream_type type) +{ + int ret; + struct lttcomm_consumer_msg msg; + + /* Code flow error. Safety net. */ + assert(sock); + assert(consumer); + + /* Bail out if consumer is disabled */ + if (!consumer->enabled) { + ret = LTTCOMM_OK; + goto error; + } + + msg.cmd_type = LTTNG_CONSUMER_ADD_RELAYD_SOCKET; + /* + * Assign network consumer output index using the temporary consumer since + * this call should only be made from within a set_consumer_uri() function + * call in the session daemon. + */ + msg.u.relayd_sock.net_index = consumer->net_seq_index; + msg.u.relayd_sock.type = type; + memcpy(&msg.u.relayd_sock.sock, sock, sizeof(msg.u.relayd_sock.sock)); + + DBG3("Sending relayd sock info to consumer"); + ret = lttcomm_send_unix_sock(consumer_sock, &msg, sizeof(msg)); + if (ret < 0) { + PERROR("send consumer relayd socket info"); + goto error; + } + + DBG3("Sending relayd socket file descriptor to consumer"); + ret = consumer_send_fds(consumer_sock, &sock->fd, 1); + if (ret < 0) { + goto error; + } + + DBG2("Consumer relayd socket sent"); + +error: + return ret; +}