#define LTTNG_TRIGGER_INTERNAL_H
#include <lttng/trigger/trigger.h>
+#include <common/credentials.h>
#include <common/macros.h>
+#include <common/optional.h>
#include <stdint.h>
#include <stdbool.h>
#include <sys/types.h>
+#include <urcu/ref.h>
struct lttng_payload;
struct lttng_payload_view;
struct lttng_trigger {
+ /* Reference counting is only exposed to internal users. */
+ struct urcu_ref ref;
+
struct lttng_condition *condition;
struct lttng_action *action;
+ /* For now only the uid portion of the credentials is used. */
+ struct lttng_credentials creds;
};
struct lttng_trigger_comm {
/* length excludes its own length. */
uint32_t length;
+ /*
+ * Credentials, only the uid portion is used for now.
+ * Used as an override when desired by the root user.
+ */
+ uint64_t uid;
/* A condition and action object follow. */
char payload[];
} LTTNG_PACKED;
LTTNG_HIDDEN
bool lttng_trigger_validate(struct lttng_trigger *trigger);
+LTTNG_HIDDEN
+bool lttng_trigger_is_equal(
+ const struct lttng_trigger *a, const struct lttng_trigger *b);
+
+LTTNG_HIDDEN
+void lttng_trigger_get(struct lttng_trigger *trigger);
+
+LTTNG_HIDDEN
+void lttng_trigger_put(struct lttng_trigger *trigger);
+
+LTTNG_HIDDEN
+const struct lttng_credentials *lttng_trigger_get_credentials(
+ const struct lttng_trigger *trigger);
+
+LTTNG_HIDDEN
+void lttng_trigger_set_credentials(struct lttng_trigger *trigger,
+ const struct lttng_credentials *creds);
+
#endif /* LTTNG_TRIGGER_INTERNAL_H */