X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Fsessiond-comm.h;h=52369dc625d565a1e8c26d31520caecea48f5cd8;hp=4d31289a4682a932428cf37e0a11dd29e9b7712d;hb=6364a07adde1072d595044a19359e61fc27940dd;hpb=5c827ce0dce140b121032837510f89cb70d1650d diff --git a/src/common/sessiond-comm/sessiond-comm.h b/src/common/sessiond-comm/sessiond-comm.h index 4d31289a4..52369dc62 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 @@ -62,6 +70,7 @@ enum lttcomm_sessiond_command { LTTNG_REGISTER_CONSUMER, LTTNG_START_TRACE, LTTNG_STOP_TRACE, + LTTNG_LIST_TRACEPOINT_FIELDS, }; /* @@ -159,6 +168,7 @@ 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 */ /* MUST be last element */ LTTCOMM_NR, /* Last element */ @@ -284,25 +294,62 @@ 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); +/* lttng socket protocol. */ +enum lttcomm_sock_proto { + LTTCOMM_SOCK_UDP, + LTTCOMM_SOCK_TCP, +}; -/* 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); +/* + * Index in the net_families array below. Please keep in sync! + */ +enum lttcomm_sock_domain { + LTTCOMM_INET, + LTTCOMM_INET6, +}; -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); +struct lttcomm_sockaddr { + enum lttcomm_sock_domain type; + union { + struct sockaddr_in sin; + struct sockaddr_in6 sin6; + } addr; +}; -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); +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); +}; extern const char *lttcomm_get_readable_code(enum lttcomm_return_code code); -extern int lttcomm_setsockopt_creds_unix_sock(int sock); + +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 struct lttcomm_sock *lttcomm_alloc_sock(enum lttcomm_sock_domain domain, + enum lttcomm_sock_proto proto); +extern int lttcomm_create_sock(struct lttcomm_sock *sock, + enum lttcomm_sock_domain domain, enum lttcomm_sock_proto proto); #endif /* _LTTNG_SESSIOND_COMM_H */