-
-int relayd_rotate_rename(struct lttcomm_relayd_sock *rsock,
- const char *old_path, const char *new_path)
-{
- int ret;
- struct lttcomm_relayd_rotate_rename *msg = NULL;
- struct lttcomm_relayd_generic_reply reply;
- size_t old_path_length, new_path_length;
- size_t msg_length;
-
- /* Code flow error. Safety net. */
- assert(rsock);
-
- DBG("Relayd rename chunk %s to %s", old_path, new_path);
-
- /* The two paths are sent with a '\0' delimiter between them. */
- old_path_length = strlen(old_path) + 1;
- new_path_length = strlen(new_path) + 1;
-
- msg_length = sizeof(*msg) + old_path_length + new_path_length;
- msg = zmalloc(msg_length);
- if (!msg) {
- PERROR("zmalloc rotate-rename command message");
- ret = -1;
- goto error;
- }
-
- assert(old_path_length <= UINT32_MAX);
- msg->old_path_length = htobe32(old_path_length);
-
- assert(new_path_length <= UINT32_MAX);
- msg->new_path_length = htobe32(new_path_length);
-
- strcpy(msg->paths, old_path);
- strcpy(msg->paths + old_path_length, new_path);
-
- /* Send command */
- ret = send_command(rsock, RELAYD_ROTATE_RENAME, (const void *) msg,
- msg_length, 0);
- if (ret < 0) {
- goto error;
- }
-
- /* Receive response */
- ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
- if (ret < 0) {
- goto error;
- }
-
- reply.ret_code = be32toh(reply.ret_code);
-
- /* Return session id or negative ret code. */
- if (reply.ret_code != LTTNG_OK) {
- ret = -1;
- ERR("Relayd rotate rename replied error %d", reply.ret_code);
- } else {
- /* Success */
- ret = 0;
- }
-
- DBG("Relayd rotate rename completed successfully");
-
-error:
- free(msg);
- return ret;
-}
-
-int relayd_rotate_pending(struct lttcomm_relayd_sock *rsock, uint64_t chunk_id)
-{
- int ret;
- struct lttcomm_relayd_rotate_pending msg;
- struct lttcomm_relayd_rotate_pending_reply reply;
-
- /* Code flow error. Safety net. */
- assert(rsock);
-
- DBG("Querying relayd for rotate pending with chunk_id %" PRIu64,
- chunk_id);
-
- memset(&msg, 0, sizeof(msg));
- msg.chunk_id = htobe64(chunk_id);
-
- /* Send command */
- ret = send_command(rsock, RELAYD_ROTATE_PENDING, (void *) &msg,
- sizeof(msg), 0);
- if (ret < 0) {
- goto error;
- }
-
- /* Receive response */
- ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
- if (ret < 0) {
- goto error;
- }
-
- reply.generic.ret_code = be32toh(reply.generic.ret_code);
-
- /* Return session id or negative ret code. */
- if (reply.generic.ret_code != LTTNG_OK) {
- ret = -reply.generic.ret_code;
- ERR("Relayd rotate pending replied with error %d", ret);
- goto error;
- } else {
- /* No error, just rotate pending state */
- if (reply.is_pending == 0 || reply.is_pending == 1) {
- ret = reply.is_pending;
- DBG("Relayd rotate pending command completed successfully with result \"%s\"",
- ret ? "rotation pending" : "rotation NOT pending");
- } else {
- ret = -LTTNG_ERR_UNK;
- }
- }
-
-error:
- return ret;
-}
-
-int relayd_mkdir(struct lttcomm_relayd_sock *rsock, const char *path)
-{
- int ret;
- struct lttcomm_relayd_mkdir *msg;
- struct lttcomm_relayd_generic_reply reply;
- size_t len;
-
- /* Code flow error. Safety net. */
- assert(rsock);
-
- DBG("Relayd mkdir path %s", path);
-
- len = strlen(path) + 1;
- msg = zmalloc(sizeof(msg->length) + len);
- if (!msg) {
- PERROR("Alloc mkdir msg");
- ret = -1;
- goto error;
- }
- msg->length = htobe32((uint32_t) len);
-
- if (lttng_strncpy(msg->path, path, len)) {
- ret = -1;
- goto error;
- }
-
- /* Send command */
- ret = send_command(rsock, RELAYD_MKDIR, (void *) msg,
- sizeof(msg->length) + len, 0);
- if (ret < 0) {
- goto error;
- }
-
- /* Receive response */
- ret = recv_reply(rsock, (void *) &reply, sizeof(reply));
- if (ret < 0) {
- goto error;
- }
-
- reply.ret_code = be32toh(reply.ret_code);
-
- /* Return session id or negative ret code. */
- if (reply.ret_code != LTTNG_OK) {
- ret = -1;
- ERR("Relayd mkdir replied error %d", reply.ret_code);
- } else {
- /* Success */
- ret = 0;
- }
-
- DBG("Relayd mkdir completed successfully");
-
-error:
- free(msg);
- return ret;
-}