]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/network/netdev/wireguard.h
network: include glibc headers before including kernel headers
[thirdparty/systemd.git] / src / network / netdev / wireguard.h
1 #pragma once
2
3 typedef struct Wireguard Wireguard;
4
5 #include <netinet/in.h>
6 #include <linux/wireguard.h>
7
8 #include "in-addr-util.h"
9 #include "netdev.h"
10 #include "socket-util.h"
11
12 typedef struct WireguardIPmask {
13 uint16_t family;
14 union in_addr_union ip;
15 uint8_t cidr;
16
17 LIST_FIELDS(struct WireguardIPmask, ipmasks);
18 } WireguardIPmask;
19
20 typedef struct WireguardPeer {
21 Wireguard *wireguard;
22 NetworkConfigSection *section;
23
24 uint8_t public_key[WG_KEY_LEN];
25 uint8_t preshared_key[WG_KEY_LEN];
26 char *preshared_key_file;
27 uint32_t flags;
28 uint16_t persistent_keepalive_interval;
29
30 union sockaddr_union endpoint;
31 char *endpoint_host;
32 char *endpoint_port;
33
34 LIST_HEAD(WireguardIPmask, ipmasks);
35 LIST_FIELDS(struct WireguardPeer, peers);
36 } WireguardPeer;
37
38 struct Wireguard {
39 NetDev meta;
40 unsigned last_peer_section;
41
42 uint32_t flags;
43 uint8_t private_key[WG_KEY_LEN];
44 char *private_key_file;
45 uint16_t port;
46 uint32_t fwmark;
47
48 Hashmap *peers_by_section;
49 Set *peers_with_unresolved_endpoint;
50 Set *peers_with_failed_endpoint;
51
52 LIST_HEAD(WireguardPeer, peers);
53
54 unsigned n_retries;
55 sd_event_source *resolve_retry_event_source;
56 };
57
58 DEFINE_NETDEV_CAST(WIREGUARD, Wireguard);
59 extern const NetDevVTable wireguard_vtable;
60
61 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_allowed_ips);
62 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_endpoint);
63 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_listen_port);
64
65 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_public_key);
66 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_private_key);
67 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_private_key_file);
68 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_preshared_key);
69 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_preshared_key_file);
70 CONFIG_PARSER_PROTOTYPE(config_parse_wireguard_keepalive);