X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Furi.h;h=ac1de9e0cbc2450f2592f54c46beb499321734c3;hp=959b9a66c7b6f3f61b8b0fa6d2d4f65d5fed8d7b;hb=44635d77b591f83a80d48cd93497bd1cd6aa788d;hpb=3a5713dad195a7cfa3f4866ad2c75f3a83d73a2f diff --git a/src/common/uri.h b/src/common/uri.h index 959b9a66c..ac1de9e0c 100644 --- a/src/common/uri.h +++ b/src/common/uri.h @@ -1,27 +1,75 @@ /* - * Copyright (C) 2012 - David Goulet + * Copyright (C) 2012 David Goulet * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License, version 2 only, as - * published by the Free Software Foundation. + * SPDX-License-Identifier: GPL-2.0-only * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, write to the Free Software Foundation, Inc., 51 - * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifndef _LTT_URI_H -#define _LTT_URI_H +#ifndef URI_H +#define URI_H +#include #include +#include + +/* Destination type of lttng URI */ +enum lttng_dst_type { + LTTNG_DST_IPV4 = 1, + LTTNG_DST_IPV6 = 2, + LTTNG_DST_PATH = 3, +}; + +/* Type of lttng URI where it is a final destination or a hop */ +enum lttng_uri_type { + LTTNG_URI_DST, /* The URI is a final destination */ + /* + * Hops are not supported yet but planned for a future release. + * + LTTNG_URI_HOP, + */ +}; + +/* Communication stream type of a lttng URI */ +enum lttng_stream_type { + LTTNG_STREAM_CONTROL, + LTTNG_STREAM_DATA, +}; + +/* + * Protocol type of a lttng URI. The value 0 indicate that the proto_type field + * should be ignored. + */ +enum lttng_proto_type { + LTTNG_TCP = 1, + /* + * UDP protocol is not supported for now. + * + LTTNG_UDP = 2, + */ +}; + +/* + * Structure representing an URI supported by lttng. + */ +struct lttng_uri { + enum lttng_dst_type dtype; + enum lttng_uri_type utype; + enum lttng_stream_type stype; + enum lttng_proto_type proto; + uint16_t port; + char subdir[LTTNG_PATH_MAX]; + union { + char ipv4[INET_ADDRSTRLEN]; + char ipv6[INET6_ADDRSTRLEN]; + char path[LTTNG_PATH_MAX]; + } dst; +} LTTNG_PACKED; int uri_compare(struct lttng_uri *uri1, struct lttng_uri *uri2); void uri_free(struct lttng_uri *uri); ssize_t uri_parse(const char *str_uri, struct lttng_uri **uris); +ssize_t uri_parse_str_urls(const char *ctrl_url, const char *data_url, + struct lttng_uri **uris); +int uri_to_str_url(struct lttng_uri *uri, char *dst, size_t size); #endif /* _LTT_URI_H */