#include <common/runas.h>
#include <common/hashtable/hashtable.h>
#include <common/hashtable/utils.h>
+#include <common/string-utils/string-utils.h>
#include <lttng/event-rule/event-rule-internal.h>
#include <lttng/event-rule/tracepoint-internal.h>
#include <lttng/log-level-rule.h>
assert(rule);
assert(_agent_filter);
- status = lttng_event_rule_tracepoint_get_pattern(rule, &pattern);
+ status = lttng_event_rule_tracepoint_get_name_pattern(rule, &pattern);
if (status != LTTNG_EVENT_RULE_STATUS_OK) {
ret = -1;
goto end;
destroy_lttng_exclusions_element);
/* Default pattern is '*'. */
- status = lttng_event_rule_tracepoint_set_pattern(rule, "*");
+ status = lttng_event_rule_tracepoint_set_name_pattern(rule, "*");
if (status != LTTNG_EVENT_RULE_STATUS_OK) {
lttng_event_rule_destroy(rule);
rule = NULL;
offset += *exclusion_len;
}
- status = lttng_event_rule_tracepoint_set_pattern(rule, pattern);
+ status = lttng_event_rule_tracepoint_set_name_pattern(rule, pattern);
if (status != LTTNG_EVENT_RULE_STATUS_OK) {
ERR("Failed to set event rule tracepoint pattern.");
ret = -1;
return ret;
}
-enum lttng_event_rule_status lttng_event_rule_tracepoint_set_pattern(
+enum lttng_event_rule_status lttng_event_rule_tracepoint_set_name_pattern(
struct lttng_event_rule *rule, const char *pattern)
{
char *pattern_copy = NULL;
goto end;
}
+ /* Normalize the pattern. */
+ strutils_normalize_star_glob_pattern(pattern_copy);
+
free(tracepoint->pattern);
tracepoint->pattern = pattern_copy;
return status;
}
-enum lttng_event_rule_status lttng_event_rule_tracepoint_get_pattern(
+enum lttng_event_rule_status lttng_event_rule_tracepoint_get_name_pattern(
const struct lttng_event_rule *rule, const char **pattern)
{
struct lttng_event_rule_tracepoint *tracepoint;
return valid;
}
+static bool domain_supports_log_levels(enum lttng_domain_type domain)
+{
+ bool supported;
+
+ switch (domain) {
+ case LTTNG_DOMAIN_KERNEL:
+ supported = false;
+ break;
+ case LTTNG_DOMAIN_UST:
+ case LTTNG_DOMAIN_JUL:
+ case LTTNG_DOMAIN_LOG4J:
+ case LTTNG_DOMAIN_PYTHON:
+ supported = true;
+ break;
+ default:
+ abort();
+ }
+
+ return supported;
+}
+
enum lttng_event_rule_status lttng_event_rule_tracepoint_set_log_level_rule(
struct lttng_event_rule *rule,
const struct lttng_log_level_rule *log_level_rule)
tracepoint = container_of(
rule, struct lttng_event_rule_tracepoint, parent);
+ if (!domain_supports_log_levels(tracepoint->domain)) {
+ status = LTTNG_EVENT_RULE_STATUS_UNSUPPORTED;
+ goto end;
+ }
+
if (!log_level_rule_valid(log_level_rule, tracepoint->domain)) {
status = LTTNG_EVENT_RULE_STATUS_INVALID;
goto end;