lttng-ctl and lttng-sessiond use serialized communication for
messages using lttng_channel.

Signed-off-by: Yannick Lamarre <ylama...@efficios.com>
---
 src/bin/lttng-sessiond/client.c          |  9 ++++++---
 src/common/sessiond-comm/sessiond-comm.h |  4 ++--
 src/lib/lttng-ctl/lttng-ctl.c            | 24 ++++--------------------
 3 files changed, 12 insertions(+), 25 deletions(-)

diff --git a/src/bin/lttng-sessiond/client.c b/src/bin/lttng-sessiond/client.c
index a889529a..0e36e5ad 100644
--- a/src/bin/lttng-sessiond/client.c
+++ b/src/bin/lttng-sessiond/client.c
@@ -1182,10 +1182,13 @@ error_add_context:
        }
        case LTTNG_ENABLE_CHANNEL:
        {
-               cmd_ctx->lsm->u.channel.chan.attr.extended.ptr =
-                               (struct lttng_channel_extended *) 
&cmd_ctx->lsm->u.channel.extended;
+               struct lttng_channel channel;
+               struct lttng_channel_extended extended;
+               lttng_channel_extended_deserialize(&extended, 
&cmd_ctx->lsm->u.channel.extended);
+               lttng_channel_deserialize(&channel, 
&cmd_ctx->lsm->u.channel.chan);
+               channel.attr.extended.ptr = &extended;
                ret = cmd_enable_channel(cmd_ctx->session, 
&cmd_ctx->lsm->domain,
-                               &cmd_ctx->lsm->u.channel.chan,
+                               &channel,
                                kernel_poll_pipe[1]);
                break;
        }
diff --git a/src/common/sessiond-comm/sessiond-comm.h 
b/src/common/sessiond-comm/sessiond-comm.h
index 23e82c8a..d0905f9e 100644
--- a/src/common/sessiond-comm/sessiond-comm.h
+++ b/src/common/sessiond-comm/sessiond-comm.h
@@ -402,9 +402,9 @@ struct lttcomm_session_msg {
                } LTTNG_PACKED disable;
                /* Create channel */
                struct {
-                       struct lttng_channel chan LTTNG_PACKED;
+                       struct lttng_channel_serialized chan;
                        /* struct lttng_channel_extended is already packed. */
-                       struct lttng_channel_extended extended;
+                       struct lttng_channel_extended_serialized extended;
                } LTTNG_PACKED channel;
                /* Context */
                struct {
diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c
index 165fef4d..789534c8 100644
--- a/src/lib/lttng-ctl/lttng-ctl.c
+++ b/src/lib/lttng-ctl/lttng-ctl.c
@@ -1527,34 +1527,18 @@ int lttng_enable_channel(struct lttng_handle *handle,
        }
 
        memset(&lsm, 0, sizeof(lsm));
-       memcpy(&lsm.u.channel.chan, in_chan, sizeof(lsm.u.channel.chan));
-       lsm.u.channel.chan.attr.extended.ptr = NULL;
-
        if (!in_chan->attr.extended.ptr) {
-               struct lttng_channel *channel;
-               struct lttng_channel_extended *extended;
-
-               channel = lttng_channel_create(&handle->domain);
-               if (!channel) {
-                       return -LTTNG_ERR_NOMEM;
-               }
-
-               /*
-                * Create a new channel in order to use default extended
-                * attribute values.
-                */
-               extended = (struct lttng_channel_extended *)
-                               channel->attr.extended.ptr;
-               memcpy(&lsm.u.channel.extended, extended, sizeof(*extended));
-               lttng_channel_destroy(channel);
+               init_serialized_extended_channel(&handle->domain, 
&lsm.u.channel.extended);
        } else {
                struct lttng_channel_extended *extended;
 
                extended = (struct lttng_channel_extended *)
                                in_chan->attr.extended.ptr;
-               memcpy(&lsm.u.channel.extended, extended, sizeof(*extended));
+               lttng_channel_extended_serialize(&lsm.u.channel.extended, 
extended);
        }
 
+       lttng_channel_serialize(&lsm.u.channel.chan, in_chan);
+
        /*
         * Verify that the amount of memory required to create the requested
         * buffer is available on the system at the moment.
-- 
2.11.0

_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to