Branch data Line data Source code
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 [ # # # # : 0 : 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);