+ ERR("Failed to set jul_logging event rule's filter to '%s'.",
+ filter);
+ goto error;
+ }
+ }
+
+ if (log_level_rule) {
+ event_rule_status =
+ lttng_event_rule_log4j_logging_set_log_level_rule(
+ res.er, log_level_rule);
+
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set log level on event fule.");
+ goto error;
+ }
+ }
+ break;
+ }
+ case LTTNG_EVENT_RULE_TYPE_PYTHON_LOGGING:
+ {
+ enum lttng_event_rule_status event_rule_status;
+
+ res.er = lttng_event_rule_python_logging_create();
+ if (!res.er) {
+ ERR("Failed to create jul_logging event rule.");
+ goto error;
+ }
+
+ /* Set pattern. */
+ event_rule_status = lttng_event_rule_python_logging_set_name_pattern(
+ res.er, name);
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set jul_logging event rule's pattern to '%s'.",
+ name);
+ goto error;
+ }
+
+ /* Set filter. */
+ if (filter) {
+ event_rule_status = lttng_event_rule_python_logging_set_filter(
+ res.er, filter);
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set jul_logging event rule's filter to '%s'.",
+ filter);
+ goto error;
+ }
+ }
+
+ if (log_level_rule) {
+ event_rule_status =
+ lttng_event_rule_python_logging_set_log_level_rule(
+ res.er, log_level_rule);
+
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set log level on event fule.");
+ goto error;
+ }
+ }
+ break;
+ }
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_KPROBE:
+ {
+ int ret;
+ enum lttng_event_rule_status event_rule_status;
+
+ ret = parse_kernel_probe_opts(
+ location, &kernel_probe_location);
+ if (ret) {
+ ERR("Failed to parse kernel probe location.");
+ goto error;
+ }
+
+ assert(kernel_probe_location);
+ res.er = lttng_event_rule_kernel_kprobe_create(kernel_probe_location);
+ if (!res.er) {
+ ERR("Failed to create kprobe event rule.");
+ goto error;
+ }
+
+ event_rule_status =
+ lttng_event_rule_kernel_kprobe_set_event_name(
+ res.er, event_name);
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set kprobe event rule's name to '%s'.",
+ event_name);
+ goto error;
+ }
+
+ break;
+ }
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_UPROBE:
+ {
+ int ret;
+ enum lttng_event_rule_status event_rule_status;
+
+ ret = parse_userspace_probe_opts(
+ location, &userspace_probe_location);
+ if (ret) {
+ ERR("Failed to parse user space probe location.");
+ goto error;
+ }
+
+ res.er = lttng_event_rule_kernel_uprobe_create(userspace_probe_location);
+ if (!res.er) {
+ ERR("Failed to create userspace probe event rule.");
+ goto error;
+ }
+
+ event_rule_status =
+ lttng_event_rule_kernel_uprobe_set_event_name(
+ res.er, event_name);
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set user space probe event rule's name to '%s'.",
+ event_name);
+ goto error;
+ }
+
+ break;
+ }
+ case LTTNG_EVENT_RULE_TYPE_KERNEL_SYSCALL:
+ {
+ enum lttng_event_rule_status event_rule_status;
+ enum lttng_event_rule_kernel_syscall_emission_site emission_site;
+
+ if (!parse_syscall_emission_site_from_type(
+ event_rule_type_str, &emission_site)) {
+ ERR("Failed to parse syscall type '%s'.", event_rule_type_str);
+ goto error;
+ }
+
+ res.er = lttng_event_rule_kernel_syscall_create(emission_site);
+ if (!res.er) {
+ ERR("Failed to create syscall event rule.");
+ goto error;
+ }
+
+ event_rule_status = lttng_event_rule_kernel_syscall_set_name_pattern(
+ res.er, name);
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set syscall event rule's pattern to '%s'.",
+ name);
+ goto error;
+ }
+
+ if (filter) {
+ event_rule_status = lttng_event_rule_kernel_syscall_set_filter(
+ res.er, filter);
+ if (event_rule_status != LTTNG_EVENT_RULE_STATUS_OK) {
+ ERR("Failed to set syscall event rule's filter to '%s'.",