13#ifndef ZEPHYR_INCLUDE_NET_WG_H_
14#define ZEPHYR_INCLUDE_NET_WG_H_
35#if defined(CONFIG_WIREGUARD)
36#define WIREGUARD_INTERFACE CONFIG_WIREGUARD_INTERFACE
38#define WIREGUARD_INTERFACE ""
41#if defined(CONFIG_WIREGUARD_MAX_SRC_IPS)
42#define WIREGUARD_MAX_SRC_IPS CONFIG_WIREGUARD_MAX_SRC_IPS
44#define WIREGUARD_MAX_SRC_IPS 1
50#define WIREGUARD_TIMESTAMP_LEN (sizeof(uint64_t) + sizeof(uint32_t))
186 struct net_if **peer_iface);
int wireguard_peer_add(struct wireguard_peer_config *peer_config, struct net_if **peer_iface)
Add a Wireguard peer to the system.
int wireguard_peer_keepalive(int peer_id)
Send a Wireguard keepalive message to peer.
int wireguard_get_current_time(uint64_t *seconds, uint32_t *nanoseconds)
Get current time in seconds and nanoseconds from Unix epoch.
#define WIREGUARD_TIMESTAMP_LEN
Timestamp length (64-bit seconds and 32-bit nanoseconds).
Definition wireguard.h:50
int wireguard_peer_remove(int peer_id)
Remove a Wireguard peer from the system.
BSD Sockets compatible API definitions.
__UINT32_TYPE__ uint32_t
Definition stdint.h:90
__UINT64_TYPE__ uint64_t
Definition stdint.h:91
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Network Management event information structure Used to pass information on network event NET_EVENT_VP...
Definition wireguard.h:160
const char * public_key
VPN peer public key.
Definition wireguard.h:164
struct net_sockaddr * endpoint
VPN peer endpoint.
Definition wireguard.h:166
struct wireguard_allowed_ip * allowed_ip[WIREGUARD_MAX_SRC_IPS+1]
VPN peer allowed IP address (null terminated list).
Definition wireguard.h:168
uint32_t id
VPN peer identifier.
Definition wireguard.h:162
int keepalive_interval
VPN peer keepalive interval.
Definition wireguard.h:170
Network Interface structure.
Definition net_if.h:731
Generic sockaddr struct.
Definition net_ip.h:448
Wireguard VPN statistics.
Definition wireguard.h:92
uint32_t alloc_failed
Number of allocation failures.
Definition wireguard.h:134
uint32_t invalid_cookie
Number of invalid cookie errors.
Definition wireguard.h:122
uint32_t invalid_mac1
Number of invalid MAC1 errors.
Definition wireguard.h:124
uint32_t invalid_keepalive
Number of invalid keepalive errors.
Definition wireguard.h:98
uint32_t handshake_resp_tx
Number of handshake response packets sent.
Definition wireguard.h:106
uint32_t key_expired
Number of key expired errors.
Definition wireguard.h:112
uint32_t invalid_packet
Number of invalid packets.
Definition wireguard.h:114
uint32_t denied_ip
Number of denied IP address.
Definition wireguard.h:140
uint32_t invalid_mac2
Number of invalid MAC2 errors.
Definition wireguard.h:126
uint32_t invalid_handshake
Number of invalid handshake errors.
Definition wireguard.h:108
uint32_t drop_rx
Number of dropped RX packets.
Definition wireguard.h:130
uint32_t handshake_resp_rx
Number of handshake response packets received.
Definition wireguard.h:104
uint32_t valid_rx
Number of valid packets received.
Definition wireguard.h:144
uint32_t peer_not_found
Number of peer not found errors.
Definition wireguard.h:110
uint32_t invalid_mic
Number of invalid MIC errors.
Definition wireguard.h:118
uint32_t replay_error
Number of replay errors.
Definition wireguard.h:142
uint32_t keepalive_tx
Number of keepalive packets sent.
Definition wireguard.h:96
uint32_t invalid_ip_family
Number of invalid IP address family.
Definition wireguard.h:138
uint32_t invalid_key
Number of invalid key errors.
Definition wireguard.h:116
uint32_t keepalive_rx
Number of keepalive packets received.
Definition wireguard.h:94
uint32_t valid_tx
Number of valid packets sent.
Definition wireguard.h:146
uint32_t handshake_init_rx
Number of handshake init packets received.
Definition wireguard.h:100
uint32_t drop_tx
Number of dropped TX packets.
Definition wireguard.h:132
uint32_t invalid_packet_len
Number of invalid packet length errors.
Definition wireguard.h:120
uint32_t handshake_init_tx
Number of handshake init packets sent.
Definition wireguard.h:102
uint32_t decrypt_failed
Number of decrypt failed errors.
Definition wireguard.h:128
uint32_t invalid_ip_version
Number of invalid IP version.
Definition wireguard.h:136
Wireguard allowed IP address struct.
Definition wireguard.h:53
struct net_addr addr
Allowed IPv4 or IPv6 address.
Definition wireguard.h:55
uint8_t mask_len
Netmask (for IPv4) or Prefix (for IPv6) length.
Definition wireguard.h:57
bool is_valid
Is the allowed IP address valid.
Definition wireguard.h:59
Wireguard peer configuration information.
Definition wireguard.h:67
uint8_t timestamp[(sizeof(uint64_t)+sizeof(uint32_t))]
What is the largest timestamp we have seen during handshake in order to avoid replays.
Definition wireguard.h:77
int keepalive_interval
Default keep alive time for this peer in seconds.
Definition wireguard.h:88
const uint8_t * preshared_key
Optional pre-shared key (32 bytes), set to NULL if not to be used.
Definition wireguard.h:72
const char * public_key
Public key in base64 format.
Definition wireguard.h:69
struct net_sockaddr_storage endpoint_ip
End-point address (when connecting).
Definition wireguard.h:80
struct wireguard_allowed_ip allowed_ip[WIREGUARD_MAX_SRC_IPS]
Allowed IP address.
Definition wireguard.h:83