From 4825e8c3871d1b1712385e0260a4bad2d1208f08 Mon Sep 17 00:00:00 2001 From: Matt Layher Date: Tue, 14 Dec 2021 10:20:10 -0500 Subject: [PATCH] unix: add WireGuard generic netlink interface constants on Linux Change-Id: I619c49f745da8cfd17bc2aae28d97aff73daf4d5 Reviewed-on: https://go-review.googlesource.com/c/sys/+/371674 Trust: Matt Layher Run-TryBot: Matt Layher TryBot-Result: Gopher Robot Reviewed-by: Ian Lance Taylor --- unix/linux/types.go | 38 ++++++++++++++++++++++++++++++++++++++ unix/mkerrors.sh | 2 ++ unix/zerrors_linux.go | 7 +++++++ unix/ztypes_linux.go | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 80 insertions(+) diff --git a/unix/linux/types.go b/unix/linux/types.go index e28a937d..7d5ff91b 100644 --- a/unix/linux/types.go +++ b/unix/linux/types.go @@ -135,6 +135,7 @@ struct termios2 { #include #include #include +#include #include #include @@ -3881,3 +3882,40 @@ const ( // mount_setattr type MountAttr C.struct_mount_attr + +// WireGuard generic netlink interface + +// Generated by: +// perl -nlE '/^\s*(WG\w+)/ && say "$1 = C.$1"' /usr/include/linux/wireguard.h +const ( + WG_CMD_GET_DEVICE = C.WG_CMD_GET_DEVICE + WG_CMD_SET_DEVICE = C.WG_CMD_SET_DEVICE + WGDEVICE_F_REPLACE_PEERS = C.WGDEVICE_F_REPLACE_PEERS + WGDEVICE_A_UNSPEC = C.WGDEVICE_A_UNSPEC + WGDEVICE_A_IFINDEX = C.WGDEVICE_A_IFINDEX + WGDEVICE_A_IFNAME = C.WGDEVICE_A_IFNAME + WGDEVICE_A_PRIVATE_KEY = C.WGDEVICE_A_PRIVATE_KEY + WGDEVICE_A_PUBLIC_KEY = C.WGDEVICE_A_PUBLIC_KEY + WGDEVICE_A_FLAGS = C.WGDEVICE_A_FLAGS + WGDEVICE_A_LISTEN_PORT = C.WGDEVICE_A_LISTEN_PORT + WGDEVICE_A_FWMARK = C.WGDEVICE_A_FWMARK + WGDEVICE_A_PEERS = C.WGDEVICE_A_PEERS + WGPEER_F_REMOVE_ME = C.WGPEER_F_REMOVE_ME + WGPEER_F_REPLACE_ALLOWEDIPS = C.WGPEER_F_REPLACE_ALLOWEDIPS + WGPEER_F_UPDATE_ONLY = C.WGPEER_F_UPDATE_ONLY + WGPEER_A_UNSPEC = C.WGPEER_A_UNSPEC + WGPEER_A_PUBLIC_KEY = C.WGPEER_A_PUBLIC_KEY + WGPEER_A_PRESHARED_KEY = C.WGPEER_A_PRESHARED_KEY + WGPEER_A_FLAGS = C.WGPEER_A_FLAGS + WGPEER_A_ENDPOINT = C.WGPEER_A_ENDPOINT + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = C.WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL + WGPEER_A_LAST_HANDSHAKE_TIME = C.WGPEER_A_LAST_HANDSHAKE_TIME + WGPEER_A_RX_BYTES = C.WGPEER_A_RX_BYTES + WGPEER_A_TX_BYTES = C.WGPEER_A_TX_BYTES + WGPEER_A_ALLOWEDIPS = C.WGPEER_A_ALLOWEDIPS + WGPEER_A_PROTOCOL_VERSION = C.WGPEER_A_PROTOCOL_VERSION + WGALLOWEDIP_A_UNSPEC = C.WGALLOWEDIP_A_UNSPEC + WGALLOWEDIP_A_FAMILY = C.WGALLOWEDIP_A_FAMILY + WGALLOWEDIP_A_IPADDR = C.WGALLOWEDIP_A_IPADDR + WGALLOWEDIP_A_CIDR_MASK = C.WGALLOWEDIP_A_CIDR_MASK +) diff --git a/unix/mkerrors.sh b/unix/mkerrors.sh index 4945739e..a47b035f 100755 --- a/unix/mkerrors.sh +++ b/unix/mkerrors.sh @@ -261,6 +261,7 @@ struct ltchars { #include #include #include +#include #include #include @@ -606,6 +607,7 @@ ccflags="$@" $2 ~ /^MTD/ || $2 ~ /^OTP/ || $2 ~ /^MEM/ || + $2 ~ /^WG/ || $2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE)/ {printf("\t%s = C.%s\n", $2, $2)} $2 ~ /^__WCOREFLAG$/ {next} $2 ~ /^__W[A-Z0-9]+$/ {printf("\t%s = C.%s\n", substr($2,3), $2)} diff --git a/unix/zerrors_linux.go b/unix/zerrors_linux.go index d175aae8..bcc45d10 100644 --- a/unix/zerrors_linux.go +++ b/unix/zerrors_linux.go @@ -2826,6 +2826,13 @@ const ( WDIOS_TEMPPANIC = 0x4 WDIOS_UNKNOWN = -0x1 WEXITED = 0x4 + WGALLOWEDIP_A_MAX = 0x3 + WGDEVICE_A_MAX = 0x8 + WGPEER_A_MAX = 0xa + WG_CMD_MAX = 0x1 + WG_GENL_NAME = "wireguard" + WG_GENL_VERSION = 0x1 + WG_KEY_LEN = 0x20 WIN_ACKMEDIACHANGE = 0xdb WIN_CHECKPOWERMODE1 = 0xe5 WIN_CHECKPOWERMODE2 = 0x98 diff --git a/unix/ztypes_linux.go b/unix/ztypes_linux.go index af18e4fe..e76b7f6f 100644 --- a/unix/ztypes_linux.go +++ b/unix/ztypes_linux.go @@ -3976,3 +3976,36 @@ type MountAttr struct { Propagation uint64 Userns_fd uint64 } + +const ( + WG_CMD_GET_DEVICE = 0x0 + WG_CMD_SET_DEVICE = 0x1 + WGDEVICE_F_REPLACE_PEERS = 0x1 + WGDEVICE_A_UNSPEC = 0x0 + WGDEVICE_A_IFINDEX = 0x1 + WGDEVICE_A_IFNAME = 0x2 + WGDEVICE_A_PRIVATE_KEY = 0x3 + WGDEVICE_A_PUBLIC_KEY = 0x4 + WGDEVICE_A_FLAGS = 0x5 + WGDEVICE_A_LISTEN_PORT = 0x6 + WGDEVICE_A_FWMARK = 0x7 + WGDEVICE_A_PEERS = 0x8 + WGPEER_F_REMOVE_ME = 0x1 + WGPEER_F_REPLACE_ALLOWEDIPS = 0x2 + WGPEER_F_UPDATE_ONLY = 0x4 + WGPEER_A_UNSPEC = 0x0 + WGPEER_A_PUBLIC_KEY = 0x1 + WGPEER_A_PRESHARED_KEY = 0x2 + WGPEER_A_FLAGS = 0x3 + WGPEER_A_ENDPOINT = 0x4 + WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5 + WGPEER_A_LAST_HANDSHAKE_TIME = 0x6 + WGPEER_A_RX_BYTES = 0x7 + WGPEER_A_TX_BYTES = 0x8 + WGPEER_A_ALLOWEDIPS = 0x9 + WGPEER_A_PROTOCOL_VERSION = 0xa + WGALLOWEDIP_A_UNSPEC = 0x0 + WGALLOWEDIP_A_FAMILY = 0x1 + WGALLOWEDIP_A_IPADDR = 0x2 + WGALLOWEDIP_A_CIDR_MASK = 0x3 +)