X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-relayd%2Fmain.c;h=2900e2fe0a040912ebcf1bc81afd5932bb4e1a3e;hp=de14cdb432d977c6fb1fa2cf982e435a5c0063d5;hb=refs%2Fheads%2Fclear-base;hpb=92928464b5ee185a702177e565189865aa42b7f7 diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index de14cdb43..2900e2fe0 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -94,6 +94,7 @@ enum relay_connection_status { /* command line options */ char *opt_output_path; static int opt_daemon, opt_background; +static int opt_allow_clear = 1; /* * We need to wait for listener and live listener threads, as well as @@ -179,6 +180,7 @@ static struct option long_options[] = { { "verbose", 0, 0, 'v', }, { "config", 1, 0, 'f' }, { "version", 0, 0, 'V' }, + { "disallow-clear", 0, 0, 'x' }, { NULL, 0, 0, 0, }, }; @@ -300,6 +302,10 @@ static int set_option(int opt, const char *arg, const char *optname) } } break; + case 'x': + /* Disallow clear */ + opt_allow_clear = 0; + break; default: /* Unknown option or other error. * Error is printed by getopt, just return */ @@ -375,6 +381,7 @@ static int set_options(int argc, char **argv) int orig_optopt = optopt, orig_optind = optind; char *default_address, *optstring; const char *config_path = NULL; + const char *value = NULL; optstring = utils_generate_optstring(long_options, sizeof(long_options) / sizeof(struct option)); @@ -487,6 +494,20 @@ static int set_options(int argc, char **argv) } } + if (opt_allow_clear) { + /* Check if env variable exists. */ + value = lttng_secure_getenv(DEFAULT_LTTNG_RELAYD_DISALLOW_CLEAR_ENV); + if (value) { + ret = config_parse_value(value); + if (ret < 0) { + ERR("Invalid value for %s specified", DEFAULT_LTTNG_RELAYD_DISALLOW_CLEAR_ENV); + retval = -1; + goto exit; + } + opt_allow_clear = !ret; + } + } + exit: free(optstring); return retval; @@ -4092,6 +4113,10 @@ int main(int argc, char **argv) goto exit_options; } + if (!opt_allow_clear) { + DBG("Clear command disallowed."); + } + /* Try to create directory if -o, --output is specified. */ if (opt_output_path) { if (*opt_output_path != '/') {