6c2a992372fecdf5b0576a6b15a26aec24d84524
[lttng-tools.git] / include / lttng / location-internal.h
1 /*
2 * Copyright (C) 2017 - Jérémie Galarneau <jeremie.galarneau@efficios.com>
3 *
4 * This library is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License, version 2.1 only,
6 * as published by the Free Software Foundation.
7 *
8 * This library is distributed in the hope that it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
11 * for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this library; if not, write to the Free Software Foundation,
15 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17
18 #ifndef LTTNG_LOCATION_INTERNAL_H
19 #define LTTNG_LOCATION_INTERNAL_H
20
21 #include <lttng/location.h>
22 #include <common/dynamic-buffer.h>
23 #include <common/buffer-view.h>
24 #include <common/macros.h>
25 #include <sys/types.h>
26
27 struct lttng_trace_archive_location {
28 enum lttng_trace_archive_location_type type;
29 union {
30 struct {
31 char *absolute_path;
32 } local;
33 struct {
34 char *host;
35 enum lttng_trace_archive_location_relay_protocol_type protocol;
36 struct {
37 uint16_t control, data;
38 } ports;
39 char *relative_path;
40 } relay;
41 } types;
42 };
43
44 struct lttng_trace_archive_location_comm {
45 /* A value from enum lttng_trace_archive_location_type */
46 int8_t type;
47 union {
48 struct {
49 /* Includes the trailing \0. */
50 uint32_t absolute_path_len;
51 } LTTNG_PACKED local;
52 struct {
53 /* Includes the trailing \0. */
54 uint32_t hostname_len;
55 /*
56 * A value from
57 * enum lttng_trace_archive_location_relay_protocol_type.
58 */
59 int8_t protocol;
60 struct {
61 uint16_t control, data;
62 } ports;
63 /* Includes the trailing \0. */
64 uint32_t relative_path_len;
65 } LTTNG_PACKED relay;
66 } LTTNG_PACKED types;
67 /*
68 * Payload is composed of:
69 * - LTTNG_TRACE_ARCHIVE_LOCATION_TYPE_LOCAL
70 * - absolute path, including \0
71 * - LTTNG_TRACE_ARCHIVE_LOCATION_TYPE_RELAY
72 * - hostname, including \0
73 * - relative path, including \0
74 */
75 char payload[];
76 } LTTNG_PACKED;
77
78
79 LTTNG_HIDDEN
80 struct lttng_trace_archive_location *lttng_trace_archive_location_local_create(
81 const char *path);
82
83 LTTNG_HIDDEN
84 struct lttng_trace_archive_location *lttng_trace_archive_location_relay_create(
85 const char *host,
86 enum lttng_trace_archive_location_relay_protocol_type protocol,
87 uint16_t control_port, uint16_t data_port,
88 const char *relative_path);
89
90 LTTNG_HIDDEN
91 ssize_t lttng_trace_archive_location_create_from_buffer(
92 const struct lttng_buffer_view *buffer,
93 struct lttng_trace_archive_location **location);
94
95 LTTNG_HIDDEN
96 ssize_t lttng_trace_archive_location_serialize(
97 const struct lttng_trace_archive_location *location,
98 struct lttng_dynamic_buffer *buffer);
99
100 LTTNG_HIDDEN
101 void lttng_trace_archive_location_destroy(
102 struct lttng_trace_archive_location *location);
103
104 #endif /* LTTNG_LOCATION_INTERNAL_H */
This page took 0.050051 seconds and 4 git commands to generate.