X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Frelayd%2Frelayd.c;h=c46290d1a2978f205dbf7e07d903a0d428f405fd;hp=4cb1c1fd339d248d028901ad4c390faa8b1f654e;hb=a1ae2ea59428174575b7328b1062a6248d636b72;hpb=d40f035921a2d3be652d31bdcc250db521f96209 diff --git a/src/common/relayd/relayd.c b/src/common/relayd/relayd.c index 4cb1c1fd3..c46290d1a 100644 --- a/src/common/relayd/relayd.c +++ b/src/common/relayd/relayd.c @@ -941,3 +941,61 @@ int relayd_reset_metadata(struct lttcomm_relayd_sock *rsock, 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; + +}