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 <mdlayher@gmail.com>
Run-TryBot: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/unix/linux/types.go b/unix/linux/types.go
index e28a937..7d5ff91 100644
--- a/unix/linux/types.go
+++ b/unix/linux/types.go
@@ -135,6 +135,7 @@
#include <linux/taskstats.h>
#include <linux/tipc.h>
#include <linux/watchdog.h>
+#include <linux/wireguard.h>
#include <linux/vm_sockets.h>
#include <mtd/mtd-user.h>
@@ -3881,3 +3882,40 @@
// 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 4945739..a47b035 100755
--- a/unix/mkerrors.sh
+++ b/unix/mkerrors.sh
@@ -261,6 +261,7 @@
#include <linux/vm_sockets.h>
#include <linux/wait.h>
#include <linux/watchdog.h>
+#include <linux/wireguard.h>
#include <mtd/ubi-user.h>
#include <mtd/mtd-user.h>
@@ -606,6 +607,7 @@
$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 d175aae..bcc45d1 100644
--- a/unix/zerrors_linux.go
+++ b/unix/zerrors_linux.go
@@ -2826,6 +2826,13 @@
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 af18e4f..e76b7f6 100644
--- a/unix/ztypes_linux.go
+++ b/unix/ztypes_linux.go
@@ -3976,3 +3976,36 @@
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
+)