}
}
+ if (trigger_comm->is_hidden) {
+ lttng_trigger_set_hidden(trigger);
+ }
+
ret = offset;
error:
trigger_comm.name_length = size_name;
+ trigger_comm.is_hidden = lttng_trigger_is_hidden(trigger);
+
header_offset = payload->buffer.size;
ret = lttng_dynamic_buffer_append(&payload->buffer, &trigger_comm,
sizeof(trigger_comm));
return false;
}
+ if (a->is_hidden != b->is_hidden) {
+ return false;
+ }
+
return true;
}
+LTTNG_HIDDEN
+bool lttng_trigger_is_hidden(const struct lttng_trigger *trigger)
+{
+ return trigger->is_hidden;
+}
+
+LTTNG_HIDDEN
+void lttng_trigger_set_hidden(struct lttng_trigger *trigger)
+{
+ assert(!trigger->is_hidden);
+ trigger->is_hidden = true;
+}
+
LTTNG_HIDDEN
enum lttng_trigger_status lttng_trigger_set_name(struct lttng_trigger *trigger,
const char* name)
int ret = 0;
char *generated_name = NULL;
- ret = asprintf(&generated_name, "T%" PRIu64 "", unique_id);
+ ret = asprintf(&generated_name, "trigger%" PRIu64 "", unique_id);
if (ret < 0) {
ERR("Failed to generate trigger name");
ret = -1;
return ret;
}
+LTTNG_HIDDEN
+int lttng_triggers_remove_hidden_triggers(struct lttng_triggers *triggers)
+{
+ int ret;
+ unsigned int trigger_count, i = 0;
+ enum lttng_trigger_status trigger_status;
+
+ assert(triggers);
+
+ trigger_status = lttng_triggers_get_count(triggers, &trigger_count);
+ assert(trigger_status == LTTNG_TRIGGER_STATUS_OK);
+
+ while (i < trigger_count) {
+ const struct lttng_trigger *trigger =
+ lttng_triggers_get_at_index(triggers, i);
+
+ if (lttng_trigger_is_hidden(trigger)) {
+ ret = lttng_dynamic_pointer_array_remove_pointer(
+ &triggers->array, i);
+ if (ret) {
+ goto end;
+ }
+
+ trigger_count--;
+ } else {
+ i++;
+ }
+ }
+
+ ret = 0;
+end:
+ return ret;
+}
+
const struct lttng_trigger *lttng_triggers_get_at_index(
const struct lttng_triggers *triggers, unsigned int index)
{
void lttng_trigger_set_credentials(struct lttng_trigger *trigger,
const struct lttng_credentials *creds)
{
+ /* Triggers do not use the group id to authenticate the user. */
assert(creds);
- trigger->creds = *creds;
+ LTTNG_OPTIONAL_SET(&trigger->creds.uid, LTTNG_OPTIONAL_GET(creds->uid));
+ LTTNG_OPTIONAL_UNSET(&trigger->creds.gid);
}
enum lttng_trigger_status lttng_trigger_set_owner_uid(
copy->tracer_token = trigger->tracer_token;
copy->registered = trigger->registered;
+ copy->is_hidden = trigger->is_hidden;
goto end;
error_cleanup_trigger: