4 Copyright 2016 Jörg Thalheim <joerg@thalheim.io>
7 typedef struct Wireguard Wireguard
;
10 #include "sd-resolve.h"
11 #include "wireguard-netlink.h"
12 #include "socket-util.h"
13 #include "in-addr-util.h"
19 typedef struct WireguardIPmask
{
21 union in_addr_union ip
;
24 LIST_FIELDS(struct WireguardIPmask
, ipmasks
);
27 typedef struct WireguardPeer
{
28 uint8_t public_key
[WG_KEY_LEN
];
29 uint8_t preshared_key
[WG_KEY_LEN
];
32 union sockaddr_union endpoint
;
34 uint16_t persistent_keepalive_interval
;
36 LIST_HEAD(WireguardIPmask
, ipmasks
);
37 LIST_FIELDS(struct WireguardPeer
, peers
);
40 typedef struct WireguardEndpoint
{
47 LIST_FIELDS(struct WireguardEndpoint
, endpoints
);
52 unsigned last_peer_section
;
54 char interface
[IFNAMSIZ
];
57 uint8_t public_key
[WG_KEY_LEN
];
58 uint8_t private_key
[WG_KEY_LEN
];
63 LIST_HEAD(WireguardPeer
, peers
);
64 size_t allocation_size
;
65 sd_event_source
*resolve_retry_event_source
;
67 LIST_HEAD(WireguardEndpoint
, unresolved_endpoints
);
68 LIST_HEAD(WireguardEndpoint
, failed_endpoints
);
70 sd_resolve_query
*resolve_query
;
73 DEFINE_NETDEV_CAST(WIREGUARD
, Wireguard
);
74 extern const NetDevVTable wireguard_vtable
;
76 int config_parse_wireguard_allowed_ips(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);
77 int config_parse_wireguard_endpoint(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);
78 int config_parse_wireguard_listen_port(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);
80 int config_parse_wireguard_public_key(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);
81 int config_parse_wireguard_private_key(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);
82 int config_parse_wireguard_preshared_key(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);
83 int config_parse_wireguard_keepalive(const char *unit
, const char *filename
, unsigned line
, const char *section
, unsigned section_line
, const char *lvalue
, int ltype
, const char *rvalue
, void *data
, void *userdata
);