event-rule: Normalize pattern for syscall and tracepoint
[lttng-tools.git] / src / common / event-rule / tracepoint.c
index fbe1fc4bc8e1e7e62fc5534f40d18a47b5e1f61a..65e2c16a70edeae1ef500de81a46c8b711c6eb9a 100644 (file)
@@ -15,6 +15,7 @@
 #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>
@@ -952,6 +953,9 @@ enum lttng_event_rule_status lttng_event_rule_tracepoint_set_pattern(
                goto end;
        }
 
+       /* Normalize the pattern. */
+       strutils_normalize_star_glob_pattern(pattern_copy);
+
        free(tracepoint->pattern);
 
        tracepoint->pattern = pattern_copy;
@@ -1117,6 +1121,27 @@ end:
        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)
@@ -1133,6 +1158,11 @@ enum lttng_event_rule_status lttng_event_rule_tracepoint_set_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;
This page took 0.024506 seconds and 4 git commands to generate.