LTTCOMM_INET6 = 1,
};
+enum lttcomm_metadata_command {
+ LTTCOMM_METADATA_REQUEST = 1,
+};
+
+/*
+ * Commands sent from the consumerd to the sessiond to request if new metadata
+ * is available. This message is used to find the per UID _or_ per PID registry
+ * for the channel key. For per UID lookup, the triplet
+ * bits_per_long/uid/session_id is used. On lookup failure, we search for the
+ * per PID registry indexed by session id ignoring the other values.
+ */
+struct lttcomm_metadata_request_msg {
+ unsigned int session_id; /* Tracing session id */
+ uint32_t bits_per_long; /* Consumer ABI */
+ uint32_t uid;
+ uint64_t key; /* Metadata channel key. */
+} LTTNG_PACKED;
+
struct lttcomm_sockaddr {
enum lttcomm_sock_domain type;
union {
const struct lttcomm_proto_ops *ops;
} LTTNG_PACKED;
+/*
+ * Relayd sock. Adds the protocol version to use for the communications with
+ * the relayd.
+ */
+struct lttcomm_relayd_sock {
+ struct lttcomm_sock sock;
+ uint32_t major;
+ uint32_t minor;
+} LTTNG_PACKED;
+
struct lttcomm_net_family {
int family;
int (*create) (struct lttcomm_sock *sock, int type, int proto);
/* Use splice or mmap to consume this fd */
enum lttng_event_output output;
int type; /* Per cpu or metadata. */
+ uint64_t tracefile_size; /* bytes */
+ uint32_t tracefile_count; /* number of tracefiles */
} LTTNG_PACKED channel; /* Only used by Kernel. */
struct {
uint64_t stream_key;
uint64_t net_index;
enum lttng_stream_type type;
/* Open socket to the relayd */
- struct lttcomm_sock sock;
+ struct lttcomm_relayd_sock sock;
/* Tracing session id associated to the relayd. */
uint64_t session_id;
} LTTNG_PACKED relayd_sock;
uint64_t relayd_id; /* Relayd id if apply. */
uint64_t key; /* Unique channel key. */
unsigned char uuid[UUID_STR_LEN]; /* uuid for ust tracer. */
+ uint32_t chan_id; /* Channel ID on the tracer side. */
+ uint64_t tracefile_size; /* bytes */
+ uint32_t tracefile_count; /* number of tracefiles */
} LTTNG_PACKED ask_channel;
struct {
uint64_t key;
struct {
uint64_t key; /* Metadata channel key. */
} LTTNG_PACKED setup_metadata;
+ struct {
+ uint64_t key; /* Channel key. */
+ } LTTNG_PACKED flush_channel;
} u;
} LTTNG_PACKED;
extern void lttcomm_copy_sock(struct lttcomm_sock *dst,
struct lttcomm_sock *src);
+/* Relayd socket object. */
+extern struct lttcomm_relayd_sock *lttcomm_alloc_relayd_sock(
+ struct lttng_uri *uri, uint32_t major, uint32_t minor);
+
#endif /* _LTTNG_SESSIOND_COMM_H */