X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng%2Fcommands%2Ftrack-untrack.c;h=25b4461f696a7e96beab3265da9f437eb1fda9d5;hp=4f51ffa30eef02aec6a1bbe9b79bc20f787b7e6f;hb=ef440343c0d6372c1aaca74d0cdecfcd700a5785;hpb=83d6d6c4496e692df39843142cb8cf96279eaa20 diff --git a/src/bin/lttng/commands/track-untrack.c b/src/bin/lttng/commands/track-untrack.c index 4f51ffa30..25b4461f6 100644 --- a/src/bin/lttng/commands/track-untrack.c +++ b/src/bin/lttng/commands/track-untrack.c @@ -286,6 +286,34 @@ static const char *get_tracker_str(enum lttng_tracker_type tracker_type) return NULL; } +static int ust_tracker_type_support(enum lttng_tracker_type *tracker_type) +{ + int ret; + + switch (*tracker_type) { + case LTTNG_TRACKER_PID: + *tracker_type = LTTNG_TRACKER_VPID; + ret = 0; + break; + case LTTNG_TRACKER_VPID: + case LTTNG_TRACKER_VUID: + case LTTNG_TRACKER_VGID: + ret = 0; + break; + case LTTNG_TRACKER_UID: + case LTTNG_TRACKER_GID: + ERR("The %s tracker is invalid for UST domain.", + get_tracker_str(*tracker_type)); + ret = -1; + break; + default: + ret = -1; + break; + } + + return ret; +} + static enum cmd_error_code track_untrack_id(enum cmd_type cmd_type, const char *cmd_str, const char *session_name, @@ -321,8 +349,11 @@ static enum cmd_error_code track_untrack_id(enum cmd_type cmd_type, dom.type = LTTNG_DOMAIN_KERNEL; } else if (opt_userspace) { dom.type = LTTNG_DOMAIN_UST; - if (tracker_type == LTTNG_TRACKER_PID) { - tracker_type = LTTNG_TRACKER_VPID; + ret = ust_tracker_type_support(&tracker_type); + if (ret) { + ERR("Invalid parameter"); + retval = CMD_ERROR; + goto end; } } else { /* Checked by the caller. */