Fix: sessiond: size-based rotations never trigger
[lttng-tools.git] / src / common / trigger.cpp
index 3782f49cad19c901d709d4531d7ca5e4db679d8a..bceeab534ae14a8113233537060fcc59b3fd92be 100644 (file)
@@ -5,24 +5,24 @@
  *
  */
 
-#include <common/credentials.h>
-#include <common/dynamic-array.h>
-#include <common/error.h>
-#include <common/mi-lttng.h>
-#include <common/optional.h>
-#include <common/payload-view.h>
-#include <common/payload.h>
+#include <common/credentials.hpp>
+#include <common/dynamic-array.hpp>
+#include <common/error.hpp>
+#include <common/mi-lttng.hpp>
+#include <common/optional.hpp>
+#include <common/payload-view.hpp>
+#include <common/payload.hpp>
 #include <inttypes.h>
-#include <lttng/action/action-internal.h>
+#include <lttng/action/action-internal.hpp>
 #include <lttng/condition/buffer-usage.h>
-#include <lttng/condition/condition-internal.h>
-#include <lttng/condition/event-rule-matches-internal.h>
+#include <lttng/condition/condition-internal.hpp>
+#include <lttng/condition/event-rule-matches-internal.hpp>
 #include <lttng/condition/event-rule-matches.h>
 #include <lttng/domain.h>
-#include <lttng/error-query-internal.h>
-#include <lttng/event-expr-internal.h>
-#include <lttng/event-rule/event-rule-internal.h>
-#include <lttng/trigger/trigger-internal.h>
+#include <lttng/error-query-internal.hpp>
+#include <lttng/event-expr-internal.hpp>
+#include <lttng/event-rule/event-rule-internal.hpp>
+#include <lttng/trigger/trigger-internal.hpp>
 #include <pthread.h>
 
 bool lttng_trigger_validate(const struct lttng_trigger *trigger)
@@ -55,7 +55,7 @@ struct lttng_trigger *lttng_trigger_create(
                goto end;
        }
 
-       trigger = (lttng_trigger *) zmalloc(sizeof(struct lttng_trigger));
+       trigger = zmalloc<lttng_trigger>();
        if (!trigger) {
                goto end;
        }
@@ -112,7 +112,7 @@ const struct lttng_action *lttng_trigger_get_const_action(
 static void trigger_destroy_ref(struct urcu_ref *ref)
 {
        struct lttng_trigger *trigger =
-                       container_of(ref, struct lttng_trigger, ref);
+                       lttng::utils::container_of(ref, &lttng_trigger::ref);
        struct lttng_action *action = lttng_trigger_get_action(trigger);
        struct lttng_condition *condition =
                        lttng_trigger_get_condition(trigger);
@@ -266,6 +266,10 @@ ssize_t lttng_trigger_create_from_payload(
                }
        }
 
+       if (trigger_comm->is_hidden) {
+               lttng_trigger_set_hidden(trigger);
+       }
+
        ret = offset;
 
 error:
@@ -307,6 +311,8 @@ int lttng_trigger_serialize(const struct lttng_trigger *trigger,
 
        trigger_comm.name_length = size_name;
 
+       trigger_comm.is_hidden = lttng_trigger_is_hidden(trigger);
+
        header_offset = payload->buffer.size;
        ret = lttng_dynamic_buffer_append(&payload->buffer, &trigger_comm,
                        sizeof(trigger_comm));
@@ -374,6 +380,7 @@ bool lttng_trigger_is_equal(
 
 bool lttng_trigger_is_hidden(const struct lttng_trigger *trigger)
 {
+       LTTNG_ASSERT(trigger);
        return trigger->is_hidden;
 }
 
@@ -504,7 +511,7 @@ struct lttng_triggers *lttng_triggers_create(void)
 {
        struct lttng_triggers *triggers = NULL;
 
-       triggers = (lttng_triggers *) zmalloc(sizeof(*triggers));
+       triggers = zmalloc<lttng_triggers>();
        if (!triggers) {
                goto end;
        }
@@ -735,8 +742,10 @@ const struct lttng_credentials *lttng_trigger_get_credentials(
 void lttng_trigger_set_credentials(struct lttng_trigger *trigger,
                const struct lttng_credentials *creds)
 {
+       /* Triggers do not use the group id to authenticate the user. */
        LTTNG_ASSERT(creds);
-       trigger->creds = *creds;
+       LTTNG_OPTIONAL_SET(&trigger->creds.uid, LTTNG_OPTIONAL_GET(creds->uid));
+       LTTNG_OPTIONAL_UNSET(&trigger->creds.gid);
 }
 
 enum lttng_trigger_status lttng_trigger_set_owner_uid(
This page took 0.024468 seconds and 4 git commands to generate.