3 typedef struct Wireguard Wireguard
;
5 #include <netinet/in.h>
6 #include <linux/wireguard.h>
8 #include "in-addr-util.h"
10 #include "socket-util.h"
12 typedef struct WireguardIPmask
{
14 union in_addr_union ip
;
17 LIST_FIELDS(struct WireguardIPmask
, ipmasks
);
20 typedef struct WireguardPeer
{
22 NetworkConfigSection
*section
;
24 uint8_t public_key
[WG_KEY_LEN
];
25 uint8_t preshared_key
[WG_KEY_LEN
];
26 char *preshared_key_file
;
28 uint16_t persistent_keepalive_interval
;
30 union sockaddr_union endpoint
;
34 LIST_HEAD(WireguardIPmask
, ipmasks
);
35 LIST_FIELDS(struct WireguardPeer
, peers
);
40 unsigned last_peer_section
;
43 uint8_t private_key
[WG_KEY_LEN
];
44 char *private_key_file
;
48 Hashmap
*peers_by_section
;
49 Set
*peers_with_unresolved_endpoint
;
50 Set
*peers_with_failed_endpoint
;
52 LIST_HEAD(WireguardPeer
, peers
);
55 sd_event_source
*resolve_retry_event_source
;
58 DEFINE_NETDEV_CAST(WIREGUARD
, Wireguard
);
59 extern const NetDevVTable wireguard_vtable
;
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
);
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
);