+ return -1;
+}
+
+int create_viewer_session(void)
+{
+ struct lttng_viewer_cmd cmd;
+ struct lttng_viewer_create_session_response resp;
+ ssize_t ret_len;
+
+ cmd.cmd = htobe32(LTTNG_VIEWER_CREATE_SESSION);
+ cmd.data_size = 0;
+ cmd.cmd_version = 0;
+
+ ret_len = lttng_live_send(control_sock, &cmd, sizeof(cmd));
+ if (ret_len < 0) {
+ fprintf(stderr, "[error] Error sending cmd\n");
+ goto error;
+ }
+ assert(ret_len == sizeof(cmd));
+
+ ret_len = lttng_live_recv(control_sock, &resp, sizeof(resp));
+ if (ret_len == 0) {
+ fprintf(stderr, "[error] Remote side has closed connection\n");
+ goto error;
+ }
+ if (ret_len < 0) {
+ fprintf(stderr, "[error] Error receiving create session reply\n");
+ goto error;
+ }
+ assert(ret_len == sizeof(resp));
+
+ if (be32toh(resp.status) != LTTNG_VIEWER_CREATE_SESSION_OK) {
+ fprintf(stderr, "[error] Error creating viewer session\n");
+ goto error;
+ }
+ return 0;
+
+error:
+ return -1;