rotation-api: pass session name explicitly
[lttng-tools.git] / src / lib / lttng-ctl / rotate.c
index 26cc5f94f8fb10361d43a20c968da7a9a6db9500..f32c69be18d10bc07c0c8294ff808aee23f50333 100644 (file)
 
 #include "lttng-ctl-helper.h"
 
-struct lttng_rotation_immediate_attr *lttng_rotation_immediate_attr_create(void)
-{
-       return zmalloc(sizeof(struct lttng_rotation_immediate_attr));
-}
-
 struct lttng_rotation_schedule_attr *lttng_rotation_schedule_attr_create(void)
 {
        return zmalloc(sizeof(struct lttng_rotation_schedule_attr));
 }
 
-void lttng_rotation_immediate_attr_destroy(
-               struct lttng_rotation_immediate_attr *attr)
-{
-       free(attr);
-}
-
 void lttng_rotation_schedule_attr_destroy(struct lttng_rotation_schedule_attr *attr)
 {
        if (attr) {
@@ -52,29 +41,6 @@ void lttng_rotation_schedule_attr_destroy(struct lttng_rotation_schedule_attr *a
        }
 }
 
-enum lttng_rotation_status lttng_rotation_immediate_attr_set_session_name(
-               struct lttng_rotation_immediate_attr *attr,
-               const char *session_name)
-{
-       enum lttng_rotation_status status = LTTNG_ROTATION_STATUS_OK;
-       int ret;
-
-       if (!attr || !session_name) {
-               status = LTTNG_ROTATION_STATUS_INVALID;
-               goto error;
-       }
-
-       ret = lttng_strncpy(attr->session_name, session_name,
-                       sizeof(attr->session_name));
-       if (ret) {
-               status = LTTNG_ROTATION_STATUS_INVALID;
-               goto error;
-       }
-
-error:
-       return status;
-}
-
 static
 enum lttng_rotation_status ask_rotation_info(
                struct lttng_rotation_handle *rotation_handle,
@@ -111,29 +77,6 @@ end:
 
 }
 
-enum lttng_rotation_status lttng_rotation_schedule_attr_set_session_name(
-               struct lttng_rotation_schedule_attr *attr,
-               const char *session_name)
-{
-       enum lttng_rotation_status status = LTTNG_ROTATION_STATUS_OK;
-       int ret;
-
-       if (!attr || !session_name) {
-               status = LTTNG_ROTATION_STATUS_INVALID;
-               goto error;
-       }
-
-       ret = lttng_strncpy(attr->session_name, session_name,
-                       sizeof(attr->session_name));
-       if (ret) {
-               status = LTTNG_ROTATION_STATUS_INVALID;
-               goto error;
-       }
-
-error:
-       return status;
-}
-
 enum lttng_rotation_status lttng_rotation_schedule_attr_set_timer_period(
                struct lttng_rotation_schedule_attr *attr,
                uint64_t timer)
@@ -277,12 +220,13 @@ void lttng_rotation_handle_destroy(
 
 static
 int init_rotation_handle(struct lttng_rotation_handle *rotation_handle,
+               const char *session_name,
                struct lttng_rotate_session_return *rotate_return,
                struct lttng_rotation_immediate_attr *attr)
 {
        int ret;
 
-       ret = lttng_strncpy(rotation_handle->session_name, attr->session_name,
+       ret = lttng_strncpy(rotation_handle->session_name, session_name,
                        sizeof(rotation_handle->session_name));
        if (ret) {
                goto end;
@@ -298,21 +242,30 @@ end:
  *
  * Return 0 on success else a negative LTTng error code.
  */
-int lttng_rotate_session(struct lttng_rotation_immediate_attr *attr,
+int lttng_rotate_session(const char *session_name,
+               struct lttng_rotation_immediate_attr *attr,
                struct lttng_rotation_handle **rotation_handle)
 {
        struct lttcomm_session_msg lsm;
        struct lttng_rotate_session_return *rotate_return = NULL;
        int ret;
+       size_t session_name_len;
 
-       if (!attr) {
+       if (!session_name) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       session_name_len = strlen(session_name);
+       if (session_name_len >= sizeof(lsm.session.name) ||
+           session_name_len >= member_sizeof(struct lttng_rotation_handle, session_name)) {
                ret = -LTTNG_ERR_INVALID;
                goto end;
        }
 
        memset(&lsm, 0, sizeof(lsm));
        lsm.cmd_type = LTTNG_ROTATE_SESSION;
-       lttng_ctl_copy_string(lsm.session.name, attr->session_name,
+       lttng_ctl_copy_string(lsm.session.name, session_name,
                        sizeof(lsm.session.name));
 
        ret = lttng_ctl_ask_sessiond(&lsm, (void **) &rotate_return);
@@ -327,7 +280,8 @@ int lttng_rotate_session(struct lttng_rotation_immediate_attr *attr,
                goto end;
        }
 
-       init_rotation_handle(*rotation_handle, rotate_return, attr);
+       init_rotation_handle(*rotation_handle, session_name, rotate_return,
+                       attr);
 
        ret = 0;
 
@@ -339,20 +293,25 @@ end:
 /*
  * Configure the automatic rotate parameters.
  */
-int lttng_rotation_set_schedule(
+int lttng_rotation_set_schedule(const char *session_name,
                struct lttng_rotation_schedule_attr *attr)
 {
        struct lttcomm_session_msg lsm;
        int ret;
 
-       if (!attr) {
+       if (!attr || !session_name) {
+               ret = -LTTNG_ERR_INVALID;
+               goto end;
+       }
+
+       if (strlen(session_name) >= sizeof(lsm.session.name)) {
                ret = -LTTNG_ERR_INVALID;
                goto end;
        }
 
        memset(&lsm, 0, sizeof(lsm));
        lsm.cmd_type = LTTNG_ROTATION_SET_SCHEDULE;
-       lttng_ctl_copy_string(lsm.session.name, attr->session_name,
+       lttng_ctl_copy_string(lsm.session.name, session_name,
                        sizeof(lsm.session.name));
        lsm.u.rotate_setup.timer_us = attr->timer_us;
        lsm.u.rotate_setup.size = attr->size;
This page took 0.025028 seconds and 4 git commands to generate.