+
+ if (status != LTTNG_TRACKER_ID_STATUS_OK) {
+ ERR("Tracker id object is in an invalid state");
+ retval = CMD_ERROR;
+ goto end;
+ }
+
+ switch (type) {
+ case LTTNG_ID_ALL:
+ DBG("%s all IDs", cmd_str);
+ break;
+ case LTTNG_ID_VALUE:
+ DBG("%s ID %d", cmd_str, value);
+ break;
+ case LTTNG_ID_STRING:
+ DBG("%s ID '%s'", cmd_str, value_string);
+ break;
+ default:
+ retval = CMD_ERROR;
+ goto end;
+ }
+
+ ret = cmd_func(handle, tracker_type, item);
+ if (ret) {
+ char *msg = NULL;
+
+ switch (-ret) {
+ case LTTNG_ERR_ID_TRACKED:
+ msg = "already tracked";
+ success = 1;
+ retval = CMD_SUCCESS;
+ break;
+ case LTTNG_ERR_ID_NOT_TRACKED:
+ msg = "already not tracked";
+ success = 1;
+ retval = CMD_SUCCESS;
+ break;
+ default:
+ ERR("%s", lttng_strerror(ret));
+ success = 0;
+ retval = CMD_ERROR;
+ break;
+ }
+ if (msg) {
+ switch (type) {
+ case LTTNG_ID_ALL:
+ WARN("All %ss %s in session %s",
+ tracker_str, msg,
+ session_name);
+ break;
+ case LTTNG_ID_VALUE:
+ WARN("%s %i %s in session %s",
+ tracker_str, value, msg,
+ session_name);
+ break;
+ case LTTNG_ID_STRING:
+ WARN("%s '%s' %s in session %s",
+ tracker_str,
+ value_string, msg,
+ session_name);
+ break;
+ default:
+ retval = CMD_ERROR;
+ goto end;
+ }
+ }
+ } else {
+ switch (type) {
+ case LTTNG_ID_ALL:
+ MSG("All %ss %sed in session %s", tracker_str,
+ cmd_str, session_name);
+ break;
+ case LTTNG_ID_VALUE:
+ MSG("%s %i %sed in session %s", tracker_str,
+ value, cmd_str, session_name);
+ break;
+ case LTTNG_ID_STRING:
+ MSG("%s '%s' %sed in session %s", tracker_str,
+ value_string, cmd_str,
+ session_name);
+ break;
+ default:
+ retval = CMD_ERROR;
+ goto end;
+ }
+ success = 1;
+ }
+
+ /* Mi */
+ if (writer) {
+ ret = mi_lttng_id_target(writer, tracker_type, item, 1);
+ if (ret) {
+ retval = CMD_ERROR;
+ goto end;
+ }
+
+ ret = mi_lttng_writer_write_element_bool(writer,
+ mi_lttng_element_success, success);
+ if (ret) {
+ retval = CMD_ERROR;
+ goto end;
+ }
+
+ ret = mi_lttng_writer_close_element(writer);
+ if (ret) {
+ retval = CMD_ERROR;
+ goto end;
+ }
+ }