X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=580beec32b74953a4f08099220837183edb40b1e;hp=4d31289a4682a932428cf37e0a11dd29e9b7712d;hb=de5e90863d3824dd3a5bc52d4cba1cd9b0329200;hpb=5c827ce0dce140b121032837510f89cb70d1650d diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index 4d31289a4..580beec32 100644 --- a/src/common/sessiond-comm/sessiond-comm.h +++ b/src/common/sessiond-comm/sessiond-comm.h @@ -30,6 +30,14 @@ #include #include +#include +#include +#include + +#include "inet.h" +#include "inet6.h" +#include "unix.h" + /* Queue size of listen(2) */ #define LTTNG_SESSIOND_COMM_MAX_LISTEN 64 @@ -53,6 +61,7 @@ enum lttcomm_sessiond_command { LTTNG_ENABLE_ALL_EVENT, /* Session daemon command */ LTTNG_CREATE_SESSION, + LTTNG_CREATE_SESSION_URI, LTTNG_DESTROY_SESSION, LTTNG_LIST_CHANNELS, LTTNG_LIST_DOMAINS, @@ -62,6 +71,18 @@ enum lttcomm_sessiond_command { LTTNG_REGISTER_CONSUMER, LTTNG_START_TRACE, LTTNG_STOP_TRACE, + LTTNG_LIST_TRACEPOINT_FIELDS, + /* Consumer */ + LTTNG_DISABLE_CONSUMER, + LTTNG_ENABLE_CONSUMER, + LTTNG_SET_CONSUMER_URI, + /* Relay daemon */ + RELAYD_ADD_STREAM, + RELAYD_CREATE_SESSION, + RELAYD_START_DATA, + RELAYD_UPDATE_SYNC_INFO, + RELAYD_VERSION, + RELAYD_SEND_METADATA, }; /* @@ -159,11 +180,63 @@ enum lttcomm_return_code { LTTCOMM_INVALID, /* Invalid parameter */ LTTCOMM_NO_USTCONSUMERD, /* No UST consumer detected */ LTTCOMM_NO_KERNCONSUMERD, /* No Kernel consumer detected */ + LTTCOMM_EVENT_EXIST_LOGLEVEL, /* Event already enabled with different loglevel */ + LTTCOMM_URI_DATA_MISS, /* Missing network data URI */ + LTTCOMM_URI_CTRL_MISS, /* Missing network control URI */ + LTTCOMM_ENABLE_CONSUMER_FAIL, /* Enabling consumer failed */ + LTTCOMM_RELAYD_SESSION_FAIL, /* lttng-relayd create session failed */ + LTTCOMM_RELAYD_VERSION_FAIL, /* lttng-relayd not compatible */ /* MUST be last element */ LTTCOMM_NR, /* Last element */ }; +/* lttng socket protocol. */ +enum lttcomm_sock_proto { + LTTCOMM_SOCK_UDP, + LTTCOMM_SOCK_TCP, +}; + +/* + * Index in the net_families array below. Please keep in sync! + */ +enum lttcomm_sock_domain { + LTTCOMM_INET = 1, + LTTCOMM_INET6 = 2, +}; + +struct lttcomm_sockaddr { + enum lttcomm_sock_domain type; + union { + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + } addr; +}; + +struct lttcomm_sock { + int fd; + enum lttcomm_sock_proto proto; + struct lttcomm_sockaddr sockaddr; + const struct lttcomm_proto_ops *ops; +}; + +struct lttcomm_net_family { + int family; + int (*create) (struct lttcomm_sock *sock, int type, int proto); +}; + +struct lttcomm_proto_ops { + int (*bind) (struct lttcomm_sock *sock); + int (*close) (struct lttcomm_sock *sock); + int (*connect) (struct lttcomm_sock *sock); + struct lttcomm_sock *(*accept) (struct lttcomm_sock *sock); + int (*listen) (struct lttcomm_sock *sock, int backlog); + ssize_t (*recvmsg) (struct lttcomm_sock *sock, void *buf, size_t len, + int flags); + ssize_t (*sendmsg) (struct lttcomm_sock *sock, void *buf, size_t len, + int flags); +}; + /* * Data structure received from lttng client to session daemon. */ @@ -200,6 +273,13 @@ struct lttcomm_session_msg { char channel_name[NAME_MAX]; } list; struct lttng_calibrate calibrate; + /* Used by the set_consumer_uri call */ + struct lttng_uri uri; + struct { + uint32_t enable_consumer; + struct lttng_uri ctrl_uri; + struct lttng_uri data_uri; + } create_uri; } u; }; @@ -228,6 +308,7 @@ struct lttcomm_consumer_msg { uint64_t max_sb_size; /* the subbuffer size for this channel */ /* shm_fd and wait_fd are sent as ancillary data */ uint64_t mmap_len; + char name[LTTNG_SYMBOL_NAME_LEN]; } channel; struct { int channel_key; @@ -239,7 +320,16 @@ struct lttcomm_consumer_msg { uid_t uid; /* User ID owning the session */ gid_t gid; /* Group ID owning the session */ char path_name[PATH_MAX]; + int net_index; + unsigned int metadata_flag; + char name[LTTNG_SYMBOL_NAME_LEN]; /* Name string of the stream */ } stream; + struct { + int net_index; + enum lttng_stream_type type; + /* Open socket to the relayd */ + struct lttcomm_sock sock; + } relayd_sock; } u; }; @@ -284,25 +374,19 @@ struct lttcomm_ust_reply { #endif /* HAVE_LIBLTTNG_UST_CTL */ -extern int lttcomm_create_unix_sock(const char *pathname); -extern int lttcomm_connect_unix_sock(const char *pathname); -extern int lttcomm_accept_unix_sock(int sock); -extern int lttcomm_listen_unix_sock(int sock); -extern int lttcomm_close_unix_sock(int sock); - -/* Send a message accompanied by fd(s) over a unix socket. */ -extern ssize_t lttcomm_send_fds_unix_sock(int sock, int *fds, size_t nb_fd); -/* Recv a message accompanied by fd(s) from a unix socket */ -extern ssize_t lttcomm_recv_fds_unix_sock(int sock, int *fds, size_t nb_fd); - -extern ssize_t lttcomm_recv_unix_sock(int sock, void *buf, size_t len); -extern ssize_t lttcomm_send_unix_sock(int sock, void *buf, size_t len); +extern const char *lttcomm_get_readable_code(enum lttcomm_return_code code); -extern ssize_t lttcomm_send_creds_unix_sock(int sock, void *buf, size_t len); -extern ssize_t lttcomm_recv_creds_unix_sock(int sock, void *buf, size_t len, - lttng_sock_cred *creds); +extern int lttcomm_init_inet_sockaddr(struct lttcomm_sockaddr *sockaddr, + const char *ip, unsigned int port); +extern int lttcomm_init_inet6_sockaddr(struct lttcomm_sockaddr *sockaddr, + const char *ip, unsigned int port); -extern const char *lttcomm_get_readable_code(enum lttcomm_return_code code); -extern int lttcomm_setsockopt_creds_unix_sock(int sock); +extern struct lttcomm_sock *lttcomm_alloc_sock(enum lttcomm_sock_proto proto); +extern int lttcomm_create_sock(struct lttcomm_sock *sock); +extern struct lttcomm_sock *lttcomm_alloc_sock_from_uri(struct lttng_uri *uri); +extern void lttcomm_destroy_sock(struct lttcomm_sock *sock); +extern struct lttcomm_sock *lttcomm_alloc_copy_sock(struct lttcomm_sock *src); +extern void lttcomm_copy_sock(struct lttcomm_sock *dst, + struct lttcomm_sock *src); #endif /* _LTTNG_SESSIOND_COMM_H */