X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=fbffade1a7cb753d0955b5b1008027a9eacab3a6;hb=2987f3288fbdc2d42e79a159ce4a9b8153f86f2d;hp=c171dfdfe41de54b126d8928a680c496e5890e18;hpb=c7cc870e07722a234c620f87edbed55354fb3009;p=deliverable%2Flttng-tools.git diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index c171dfdfe..fbffade1a 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -59,6 +59,7 @@ #include #include +#include "version.h" #include "cmd.h" #include "ctf-trace.h" #include "index.h" @@ -84,7 +85,9 @@ enum relay_connection_status { /* command line options */ char *opt_output_path, *opt_working_directory; -static int opt_daemon, opt_background; +static int opt_daemon, opt_background, opt_print_version; +int opt_group_output_by_session; +int opt_group_output_by_host; /* * We need to wait for listener and live listener threads, as well as @@ -170,11 +173,30 @@ static struct option long_options[] = { { "config", 1, 0, 'f' }, { "version", 0, 0, 'V' }, { "working-directory", 1, 0, 'w', }, + { "group-output-by-session", 0, 0, 's', }, + { "group-output-by-host", 0, 0, 'p', }, { NULL, 0, 0, 0, }, }; static const char *config_ignore_options[] = { "help", "config", "version" }; +static void print_version(void) { + fprintf(stdout, "%s\n", VERSION); +} + +static void relayd_config_log(void) +{ + DBG("LTTng-relayd " VERSION " - " VERSION_NAME "%s%s", + GIT_VERSION[0] == '\0' ? "" : " - " GIT_VERSION, + EXTRA_VERSION_NAME[0] == '\0' ? "" : " - " EXTRA_VERSION_NAME); + if (EXTRA_VERSION_DESCRIPTION[0] != '\0') { + DBG("LTTng-relayd extra version description:\n\t" EXTRA_VERSION_DESCRIPTION "\n"); + } + if (EXTRA_VERSION_PATCHES[0] != '\0') { + DBG("LTTng-relayd extra patches:\n\t" EXTRA_VERSION_PATCHES "\n"); + } +} + /* * Take an option from the getopt output and set it in the right variable to be * used later. @@ -265,8 +287,8 @@ static int set_option(int opt, const char *arg, const char *optname) } exit(EXIT_FAILURE); case 'V': - fprintf(stdout, "%s\n", VERSION); - exit(EXIT_SUCCESS); + opt_print_version = 1; + break; case 'o': if (lttng_is_setuid_setgid()) { WARN("Getting '%s' argument from setuid/setgid binary refused for security reasons.", @@ -305,6 +327,20 @@ static int set_option(int opt, const char *arg, const char *optname) } } break; + case 's': + if (opt_group_output_by_host) { + ERR("Cannot set --group-output-by-session, --group-output-by-host already defined"); + exit(EXIT_FAILURE); + } + opt_group_output_by_session = 1; + break; + case 'p': + if (opt_group_output_by_session) { + ERR("Cannot set --group-output-by-host, --group-output-by-session already defined"); + exit(EXIT_FAILURE); + } + opt_group_output_by_host = 1; + break; default: /* Unknown option or other error. * Error is printed by getopt, just return */ @@ -502,6 +538,11 @@ static int set_options(int argc, char **argv) } } + if (!opt_group_output_by_session && !opt_group_output_by_host) { + /* Group by host by default */ + opt_group_output_by_host = 1; + } + exit: free(optstring); return retval; @@ -1219,12 +1260,13 @@ static int relay_add_stream(const struct lttcomm_relayd_hdr *recv_hdr, switch (session->minor) { case 1: /* LTTng sessiond 2.1. Allocates path_name and channel_name. */ ret = cmd_recv_stream_2_1(payload, &path_name, - &channel_name); + &channel_name, session); break; case 2: /* LTTng sessiond 2.2. Allocates path_name and channel_name. */ default: ret = cmd_recv_stream_2_2(payload, &path_name, - &channel_name, &tracefile_size, &tracefile_count); + &channel_name, &tracefile_size, &tracefile_count, + session); break; } if (ret < 0) { @@ -3184,6 +3226,14 @@ int main(int argc, char **argv) goto exit_options; } + relayd_config_log(); + + if (opt_print_version) { + print_version(); + retval = 0; + goto exit_options; + } + /* Try to create directory if -o, --output is specified. */ if (opt_output_path) { if (*opt_output_path != '/') {