-
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(5345);
- server_addr.sin_addr = *((struct in_addr *) host->h_addr);
- bzero(&(server_addr.sin_zero), 8);
-
- ret = 0;
-
-end:
- return ret;
-}
-
-static
-int establish_connection(void)
-{
- struct lttng_viewer_cmd cmd;
- struct lttng_viewer_connect connect;
- int ret;
-
- cmd.cmd = htobe32(VIEWER_CONNECT);
- cmd.data_size = sizeof(connect);
- cmd.cmd_version = 0;
-
- connect.major = htobe32(2);
- connect.minor = htobe32(4);
- connect.type = htobe32(VIEWER_CLIENT_COMMAND);
-
- do {
- ret = send(control_sock, &cmd, sizeof(cmd), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error sending cmd\n");
- goto error;
- }
- do {
- ret = send(control_sock, &connect, sizeof(connect), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error sending version\n");
- goto error;
- }
-
- do {
- ret = recv(control_sock, &connect, sizeof(connect), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error receiving version\n");
- goto error;
- }
- fprintf(stderr, " - Received viewer session ID : %" PRIu64 "\n",
- be64toh(connect.viewer_session_id));
- fprintf(stderr, " - Received version : %u.%u\n", be32toh(connect.major),
- be32toh(connect.minor));
-
- ret = 0;
-
-error:
- return ret;
-}
-
-int list_sessions(void)
-{
- struct lttng_viewer_cmd cmd;
- struct lttng_viewer_list_sessions list;
- struct lttng_viewer_session lsession;
- int i, ret;
- int first_session = 0;
-
- cmd.cmd = htobe32(VIEWER_LIST_SESSIONS);
- cmd.data_size = 0;
- cmd.cmd_version = 0;
-
- do {
- ret = send(control_sock, &cmd, sizeof(cmd), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error sending cmd\n");
- goto error;
- }
-
- do {
- ret = recv(control_sock, &list, sizeof(list), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error receiving session list\n");
- goto error;
- }
-
- fprintf(stderr, " - %u active session(s)\n", be32toh(list.sessions_count));
- for (i = 0; i < be32toh(list.sessions_count); i++) {
- do {
- ret = recv(control_sock, &lsession, sizeof(lsession), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error receiving session\n");
- goto error;
- }
- fprintf(stderr, " - %" PRIu64 " : %s on host %s (timer = %u, "
- "%u client(s) connected)\n",
- be64toh(lsession.id), lsession.session_name,
- lsession.hostname, be32toh(lsession.live_timer),
- be32toh(lsession.clients));
- if (first_session <= 0) {
- first_session = be64toh(lsession.id);
- }
- }
-
- /* I know, type mismatch */
- ret = (int) first_session;
-
-error:
- return ret;
-}
-
-int write_index_header(int fd)
-{
- struct lttng_packet_index_file_hdr hdr;
- int ret;
-
- memcpy(hdr.magic, INDEX_MAGIC, sizeof(hdr.magic));
- hdr.index_major = htobe32(INDEX_MAJOR);
- hdr.index_minor = htobe32(INDEX_MINOR);
-
- do {
- ret = write(fd, &hdr, sizeof(hdr));
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- perror("write index header");
- goto error;
- }
-
-error:
- return ret;
-}
-
-int attach_session(int id)
-{
- struct lttng_viewer_cmd cmd;
- struct lttng_viewer_attach_session_request rq;
- struct lttng_viewer_attach_session_response rp;
- struct lttng_viewer_stream stream;
- int ret, i;
-
- cmd.cmd = htobe32(VIEWER_ATTACH_SESSION);
- cmd.data_size = sizeof(rq);
- cmd.cmd_version = 0;
-
- rq.session_id = htobe64(id);
- //rq.seek = htobe32(VIEWER_SEEK_BEGINNING);
- rq.seek = htobe32(VIEWER_SEEK_LAST);
-
- do {
- ret = send(control_sock, &cmd, sizeof(cmd), 0);
- } while (ret < 0 && errno == EINTR);
- if (ret < 0) {
- fprintf(stderr, "Error sending cmd\n");
- goto error;