X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=e327e014c078a5c8fcee6c7c7f366bc29549b7da;hb=4878de5c7deb512bbdac4fdfc498907efa06fb7c;hp=d24d2f58001dee8b011b094ef849b5a6fa714a6e;hpb=b99a0cb3edd93f55e712096a352d64b79d4716bb;p=lttng-tools.git diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index d24d2f580..e327e014c 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -1,6 +1,5 @@ /* - * Copyright (C) 2011 David Goulet - * Copyright (C) 2011 Julien Desfossez + * Copyright (C) 2011 EfficiOS Inc. * Copyright (C) 2011 Mathieu Desnoyers * * SPDX-License-Identifier: GPL-2.0-only @@ -31,6 +30,7 @@ #include #include +#include #include #include "inet.h" @@ -48,11 +48,6 @@ #define LTTCOMM_MAX_SEND_FDS 16 #endif -/* - * Get the error code index from 0 since LTTCOMM_OK start at 1000 - */ -#define LTTCOMM_ERR_INDEX(code) (code - LTTCOMM_CONSUMERD_COMMAND_SOCK_READY) - enum lttcomm_sessiond_command { /* Tracer command */ LTTNG_ADD_CONTEXT = 0, @@ -240,6 +235,59 @@ enum lttcomm_relayd_command { /* Feature branch specific commands start at 10000. */ }; +static inline +const char *lttcomm_relayd_command_str(lttcomm_relayd_command cmd) +{ + switch (cmd) { + case RELAYD_ADD_STREAM: + return "RELAYD_ADD_STREAM"; + case RELAYD_CREATE_SESSION: + return "RELAYD_CREATE_SESSION"; + case RELAYD_START_DATA: + return "RELAYD_START_DATA"; + case RELAYD_UPDATE_SYNC_INFO: + return "RELAYD_UPDATE_SYNC_INFO"; + case RELAYD_VERSION: + return "RELAYD_VERSION"; + case RELAYD_SEND_METADATA: + return "RELAYD_SEND_METADATA"; + case RELAYD_CLOSE_STREAM: + return "RELAYD_CLOSE_STREAM"; + case RELAYD_DATA_PENDING: + return "RELAYD_DATA_PENDING"; + case RELAYD_QUIESCENT_CONTROL: + return "RELAYD_QUIESCENT_CONTROL"; + case RELAYD_BEGIN_DATA_PENDING: + return "RELAYD_BEGIN_DATA_PENDING"; + case RELAYD_END_DATA_PENDING: + return "RELAYD_END_DATA_PENDING"; + case RELAYD_ADD_INDEX: + return "RELAYD_ADD_INDEX"; + case RELAYD_SEND_INDEX: + return "RELAYD_SEND_INDEX"; + case RELAYD_CLOSE_INDEX: + return "RELAYD_CLOSE_INDEX"; + case RELAYD_LIST_SESSIONS: + return "RELAYD_LIST_SESSIONS"; + case RELAYD_STREAMS_SENT: + return "RELAYD_STREAMS_SENT"; + case RELAYD_RESET_METADATA: + return "RELAYD_RESET_METADATA"; + case RELAYD_ROTATE_STREAMS: + return "RELAYD_ROTATE_STREAMS"; + case RELAYD_CREATE_TRACE_CHUNK: + return "RELAYD_CREATE_TRACE_CHUNK"; + case RELAYD_CLOSE_TRACE_CHUNK: + return "RELAYD_CLOSE_TRACE_CHUNK"; + case RELAYD_TRACE_CHUNK_EXISTS: + return "RELAYD_TRACE_CHUNK_EXISTS"; + case RELAYD_GET_CONFIGURATION: + return "RELAYD_GET_CONFIGURATION"; + default: + abort(); + } +} + /* * lttcomm error code. */ @@ -275,7 +323,7 @@ enum lttcomm_return_code { LTTCOMM_CONSUMERD_ROTATION_FAIL, /* Rotation has failed. */ LTTCOMM_CONSUMERD_SNAPSHOT_FAILED, /* snapshot has failed. */ LTTCOMM_CONSUMERD_CREATE_TRACE_CHUNK_FAILED,/* Trace chunk creation failed. */ - LTTCOMM_CONSUMERD_CLOSE_TRACE_CHUNK_FAILED, /* Trace chunk creation failed. */ + LTTCOMM_CONSUMERD_CLOSE_TRACE_CHUNK_FAILED, /* Trace chunk close failed. */ LTTCOMM_CONSUMERD_INVALID_PARAMETERS, /* Invalid parameters. */ LTTCOMM_CONSUMERD_TRACE_CHUNK_EXISTS_LOCAL, /* Trace chunk exists on consumer daemon. */ LTTCOMM_CONSUMERD_TRACE_CHUNK_EXISTS_REMOTE,/* Trace chunk exists on relay daemon. */ @@ -326,14 +374,14 @@ struct lttcomm_sockaddr { struct sockaddr_in sin; struct sockaddr_in6 sin6; } addr; -} LTTNG_PACKED; +}; struct lttcomm_sock { int32_t fd; enum lttcomm_sock_proto proto; struct lttcomm_sockaddr sockaddr; const struct lttcomm_proto_ops *ops; -} LTTNG_PACKED; +}; /* * Relayd sock. Adds the protocol version to use for the communications with @@ -343,7 +391,7 @@ struct lttcomm_relayd_sock { struct lttcomm_sock sock; uint32_t major; uint32_t minor; -} LTTNG_PACKED; +}; struct lttcomm_net_family { int family; @@ -380,48 +428,20 @@ struct lttcomm_session_msg { /* Event data */ struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event event; - /* Length of following filter expression. */ - uint32_t expression_len; - /* Length of following bytecode for filter. */ - uint32_t bytecode_len; - /* Exclusion count (fixed-size strings). */ - uint32_t exclusion_count; - /* Userspace probe location size. */ - uint32_t userspace_probe_location_len; - /* - * After this structure, the following variable-length - * items are transmitted: - * - char exclusion_names[LTTNG_SYMBOL_NAME_LEN][exclusion_count] - * - char filter_expression[expression_len] - * - unsigned char filter_bytecode[bytecode_len] - */ + uint32_t length; } LTTNG_PACKED enable; struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event event; - /* Length of following filter expression. */ - uint32_t expression_len; - /* Length of following bytecode for filter. */ - uint32_t bytecode_len; - /* - * After this structure, the following variable-length - * items are transmitted: - * - unsigned char filter_expression[expression_len] - * - unsigned char filter_bytecode[bytecode_len] - */ + uint32_t length; } LTTNG_PACKED disable; /* Create channel */ struct { - struct lttng_channel chan; - struct lttng_channel_extended extended; + uint32_t length; } LTTNG_PACKED channel; /* Context */ struct { char channel_name[LTTNG_SYMBOL_NAME_LEN]; - struct lttng_event_context ctx; - uint32_t provider_name_len; - uint32_t context_name_len; + uint32_t length; } LTTNG_PACKED context; /* Use by register_consumer */ struct { @@ -486,6 +506,7 @@ struct lttcomm_session_msg { } LTTNG_PACKED process_attr_tracker_set_tracking_policy; struct { uint32_t length; + uint8_t is_trigger_anonymous; } LTTNG_PACKED trigger; struct { uint32_t length; @@ -545,18 +566,18 @@ struct lttng_bytecode { struct lttng_event_exclusion { uint32_t count; char padding[LTTNG_EVENT_EXCLUSION_PADDING]; - char names[0][LTTNG_SYMBOL_NAME_LEN]; + char names[][LTTNG_SYMBOL_NAME_LEN]; } LTTNG_PACKED; #define LTTNG_EVENT_EXCLUSION_NAME_AT(_exclusion, _i) \ - (&(_exclusion)->names[_i][0]) + ((_exclusion)->names[_i]) /* - * Event command header. + * Listing command header. */ -struct lttcomm_event_command_header { - /* Number of events */ - uint32_t nb_events; +struct lttcomm_list_command_header { + /* Number of elements */ + uint32_t count; } LTTNG_PACKED; /* @@ -657,8 +678,9 @@ struct lttcomm_consumer_msg { struct { uint64_t net_index; enum lttng_stream_type type; - /* Open socket to the relayd */ - struct lttcomm_relayd_sock sock; + uint32_t major; + uint32_t minor; + uint8_t relayd_socket_protocol; /* Tracing session id associated to the relayd. */ uint64_t session_id; /* Relayd session id, only used with control socket. */ @@ -896,38 +918,41 @@ struct lttcomm_ust_reply { #endif /* HAVE_LIBLTTNG_UST_CTL */ -LTTNG_HIDDEN const char *lttcomm_get_readable_code(enum lttcomm_return_code code); +const char *lttcomm_get_readable_code(enum lttcomm_return_code code); -LTTNG_HIDDEN int lttcomm_init_inet_sockaddr(struct lttcomm_sockaddr *sockaddr, +int lttcomm_init_inet_sockaddr(struct lttcomm_sockaddr *sockaddr, const char *ip, unsigned int port); -LTTNG_HIDDEN int lttcomm_init_inet6_sockaddr(struct lttcomm_sockaddr *sockaddr, +int lttcomm_init_inet6_sockaddr(struct lttcomm_sockaddr *sockaddr, const char *ip, unsigned int port); -LTTNG_HIDDEN struct lttcomm_sock *lttcomm_alloc_sock(enum lttcomm_sock_proto proto); -LTTNG_HIDDEN int lttcomm_create_sock(struct lttcomm_sock *sock); -LTTNG_HIDDEN struct lttcomm_sock *lttcomm_alloc_sock_from_uri(struct lttng_uri *uri); -LTTNG_HIDDEN void lttcomm_destroy_sock(struct lttcomm_sock *sock); -LTTNG_HIDDEN struct lttcomm_sock *lttcomm_alloc_copy_sock(struct lttcomm_sock *src); -LTTNG_HIDDEN void lttcomm_copy_sock(struct lttcomm_sock *dst, +struct lttcomm_sock *lttcomm_alloc_sock(enum lttcomm_sock_proto proto); +int lttcomm_populate_sock_from_open_socket(struct lttcomm_sock *sock, + int fd, + enum lttcomm_sock_proto protocol); +int lttcomm_create_sock(struct lttcomm_sock *sock); +struct lttcomm_sock *lttcomm_alloc_sock_from_uri(struct lttng_uri *uri); +void lttcomm_destroy_sock(struct lttcomm_sock *sock); +struct lttcomm_sock *lttcomm_alloc_copy_sock(struct lttcomm_sock *src); +void lttcomm_copy_sock(struct lttcomm_sock *dst, struct lttcomm_sock *src); /* Relayd socket object. */ -LTTNG_HIDDEN struct lttcomm_relayd_sock *lttcomm_alloc_relayd_sock( +struct lttcomm_relayd_sock *lttcomm_alloc_relayd_sock( struct lttng_uri *uri, uint32_t major, uint32_t minor); -LTTNG_HIDDEN int lttcomm_setsockopt_rcv_timeout(int sock, unsigned int msec); -LTTNG_HIDDEN int lttcomm_setsockopt_snd_timeout(int sock, unsigned int msec); +int lttcomm_setsockopt_rcv_timeout(int sock, unsigned int msec); +int lttcomm_setsockopt_snd_timeout(int sock, unsigned int msec); -LTTNG_HIDDEN int lttcomm_sock_get_port(const struct lttcomm_sock *sock, +int lttcomm_sock_get_port(const struct lttcomm_sock *sock, uint16_t *port); /* * Set a port to an lttcomm_sock. This will have no effect is the socket is * already bound. */ -LTTNG_HIDDEN int lttcomm_sock_set_port(struct lttcomm_sock *sock, uint16_t port); +int lttcomm_sock_set_port(struct lttcomm_sock *sock, uint16_t port); -LTTNG_HIDDEN void lttcomm_init(void); +void lttcomm_init(void); /* Get network timeout, in milliseconds */ -LTTNG_HIDDEN unsigned long lttcomm_get_network_timeout(void); +unsigned long lttcomm_get_network_timeout(void); #endif /* _LTTNG_SESSIOND_COMM_H */