]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/netdev/fou-tunnel.h
Merge pull request #12390 from poettering/string-file-mkdir
[thirdparty/systemd.git] / src / network / netdev / fou-tunnel.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 #pragma once
3
4 #include <netinet/in.h>
5 #include <linux/fou.h>
6
7 #include "in-addr-util.h"
8 #include "netdev/netdev.h"
9
10 typedef enum FooOverUDPEncapType {
11 NETDEV_FOO_OVER_UDP_ENCAP_UNSPEC = FOU_ENCAP_UNSPEC,
12 NETDEV_FOO_OVER_UDP_ENCAP_DIRECT = FOU_ENCAP_DIRECT,
13 NETDEV_FOO_OVER_UDP_ENCAP_GUE = FOU_ENCAP_GUE,
14 _NETDEV_FOO_OVER_UDP_ENCAP_MAX,
15 _NETDEV_FOO_OVER_UDP_ENCAP_INVALID = -1,
16 } FooOverUDPEncapType;
17
18 typedef struct FouTunnel {
19 NetDev meta;
20
21 uint8_t fou_protocol;
22
23 uint16_t port;
24 uint16_t peer_port;
25
26 int local_family;
27 int peer_family;
28
29 FooOverUDPEncapType fou_encap_type;
30 union in_addr_union local;
31 union in_addr_union peer;
32 } FouTunnel;
33
34 DEFINE_NETDEV_CAST(FOU, FouTunnel);
35 extern const NetDevVTable foutnl_vtable;
36
37 const char *fou_encap_type_to_string(FooOverUDPEncapType d) _const_;
38 FooOverUDPEncapType fou_encap_type_from_string(const char *d) _pure_;
39
40 CONFIG_PARSER_PROTOTYPE(config_parse_fou_encap_type);
41 CONFIG_PARSER_PROTOTYPE(config_parse_ip_protocol);
42 CONFIG_PARSER_PROTOTYPE(config_parse_fou_tunnel_address);