X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=include%2Flttng%2Fevent-rule%2Fevent-rule-internal.h;h=31465c7694dc13b701bf3cdf45e3e3d170e0b629;hb=ce0b1d61919f37517a6212f7af2afe0fa1b1dcb0;hp=9fb115caf670bd5b924c112be6369ec003361911;hpb=7a3dcaf60e26cbedf0363a6bd0da7116e013bc80;p=lttng-tools.git diff --git a/include/lttng/event-rule/event-rule-internal.h b/include/lttng/event-rule/event-rule-internal.h index 9fb115caf..31465c769 100644 --- a/include/lttng/event-rule/event-rule-internal.h +++ b/include/lttng/event-rule/event-rule-internal.h @@ -9,6 +9,8 @@ #define LTTNG_EVENT_RULE_INTERNAL_H #include +#include +#include #include #include #include @@ -20,6 +22,13 @@ struct lttng_payload; struct lttng_payload_view; +enum lttng_event_rule_generate_exclusions_status { + LTTNG_EVENT_RULE_GENERATE_EXCLUSIONS_STATUS_OK, + LTTNG_EVENT_RULE_GENERATE_EXCLUSIONS_STATUS_NONE, + LTTNG_EVENT_RULE_GENERATE_EXCLUSIONS_STATUS_ERROR, + LTTNG_EVENT_RULE_GENERATE_EXCLUSIONS_STATUS_OUT_OF_MEMORY, +}; + typedef void (*event_rule_destroy_cb)(struct lttng_event_rule *event_rule); typedef bool (*event_rule_validate_cb)( const struct lttng_event_rule *event_rule); @@ -32,13 +41,18 @@ typedef ssize_t (*event_rule_create_from_payload_cb)( struct lttng_payload_view *view, struct lttng_event_rule **event_rule); typedef enum lttng_error_code (*event_rule_generate_filter_bytecode_cb)( - struct lttng_event_rule *event_rule, uid_t uid, gid_t gid); + struct lttng_event_rule *event_rule, + const struct lttng_credentials *creds); typedef const char *(*event_rule_get_filter_cb)( const struct lttng_event_rule *event_rule); typedef const struct lttng_filter_bytecode *( *event_rule_get_filter_bytecode_cb)( const struct lttng_event_rule *event_rule); -typedef struct lttng_event_exclusion *(*event_rule_generate_exclusions_cb)( +typedef enum lttng_event_rule_generate_exclusions_status ( + *event_rule_generate_exclusions_cb)( + const struct lttng_event_rule *event_rule, + struct lttng_event_exclusion **exclusions); +typedef unsigned long (*event_rule_hash_cb)( const struct lttng_event_rule *event_rule); struct lttng_event_rule { @@ -52,6 +66,7 @@ struct lttng_event_rule { event_rule_get_filter_cb get_filter; event_rule_get_filter_bytecode_cb get_filter_bytecode; event_rule_generate_exclusions_cb generate_exclusions; + event_rule_hash_cb hash; }; struct lttng_event_rule_comm { @@ -92,7 +107,8 @@ enum lttng_domain_type lttng_event_rule_get_domain_type( LTTNG_HIDDEN enum lttng_error_code lttng_event_rule_generate_filter_bytecode( - struct lttng_event_rule *rule, uid_t uid, gid_t gid); + struct lttng_event_rule *rule, + const struct lttng_credentials *creds); /* * If not present/implemented returns NULL. @@ -114,10 +130,14 @@ const struct lttng_filter_bytecode *lttng_event_rule_get_filter_bytecode( * Caller OWNS the returned object. */ LTTNG_HIDDEN -struct lttng_event_exclusion *lttng_event_rule_generate_exclusions( - const struct lttng_event_rule *rule); +enum lttng_event_rule_generate_exclusions_status +lttng_event_rule_generate_exclusions(const struct lttng_event_rule *rule, + struct lttng_event_exclusion **exclusions); LTTNG_HIDDEN const char *lttng_event_rule_type_str(enum lttng_event_rule_type type); +LTTNG_HIDDEN +unsigned long lttng_event_rule_hash(const struct lttng_event_rule *rule); + #endif /* LTTNG_EVENT_RULE_INTERNAL_H */