unix: add constants for netlink/routing rules
Change-Id: Ic68b65e71125b755418f9d8d01a9500aa1e9ffc1
Reviewed-on: https://go-review.googlesource.com/c/sys/+/399194
Reviewed-by: Matt Layher <mdlayher@gmail.com>
Trust: Matt Layher <mdlayher@gmail.com>
Run-TryBot: Matt Layher <mdlayher@gmail.com>
Auto-Submit: Matt Layher <mdlayher@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/unix/linux/types.go b/unix/linux/types.go
index 80260db..8065a33 100644
--- a/unix/linux/types.go
+++ b/unix/linux/types.go
@@ -94,6 +94,7 @@
#include <linux/ethtool.h>
#include <linux/ethtool_netlink.h>
#include <linux/fanotify.h>
+#include <linux/fib_rules.h>
#include <linux/filter.h>
#include <linux/fs.h>
#include <linux/fsverity.h>
@@ -5450,3 +5451,42 @@
NL80211_WPA_VERSION_2 = C.NL80211_WPA_VERSION_2
NL80211_WPA_VERSION_3 = C.NL80211_WPA_VERSION_3
)
+
+// generated by:
+// perl -nlE '/^\s*((FR_ACT|FRA)_\w+)/ && say "$1 = C.$1"' include/uapi/linux/fib_rules.h
+const (
+ FRA_UNSPEC = C.FRA_UNSPEC
+ FRA_DST = C.FRA_DST
+ FRA_SRC = C.FRA_SRC
+ FRA_IIFNAME = C.FRA_IIFNAME
+ FRA_GOTO = C.FRA_GOTO
+ FRA_UNUSED2 = C.FRA_UNUSED2
+ FRA_PRIORITY = C.FRA_PRIORITY
+ FRA_UNUSED3 = C.FRA_UNUSED3
+ FRA_UNUSED4 = C.FRA_UNUSED4
+ FRA_UNUSED5 = C.FRA_UNUSED5
+ FRA_FWMARK = C.FRA_FWMARK
+ FRA_FLOW = C.FRA_FLOW
+ FRA_TUN_ID = C.FRA_TUN_ID
+ FRA_SUPPRESS_IFGROUP = C.FRA_SUPPRESS_IFGROUP
+ FRA_SUPPRESS_PREFIXLEN = C.FRA_SUPPRESS_PREFIXLEN
+ FRA_TABLE = C.FRA_TABLE
+ FRA_FWMASK = C.FRA_FWMASK
+ FRA_OIFNAME = C.FRA_OIFNAME
+ FRA_PAD = C.FRA_PAD
+ FRA_L3MDEV = C.FRA_L3MDEV
+ FRA_UID_RANGE = C.FRA_UID_RANGE
+ FRA_PROTOCOL = C.FRA_PROTOCOL
+ FRA_IP_PROTO = C.FRA_IP_PROTO
+ FRA_SPORT_RANGE = C.FRA_SPORT_RANGE
+ FRA_DPORT_RANGE = C.FRA_DPORT_RANGE
+ FR_ACT_UNSPEC = C.FR_ACT_UNSPEC
+ FR_ACT_TO_TBL = C.FR_ACT_TO_TBL
+ FR_ACT_GOTO = C.FR_ACT_GOTO
+ FR_ACT_NOP = C.FR_ACT_NOP
+ FR_ACT_RES3 = C.FR_ACT_RES3
+ FR_ACT_RES4 = C.FR_ACT_RES4
+ FR_ACT_BLACKHOLE = C.FR_ACT_BLACKHOLE
+ FR_ACT_UNREACHABLE = C.FR_ACT_UNREACHABLE
+ FR_ACT_PROHIBIT = C.FR_ACT_PROHIBIT
+)
diff --git a/unix/mkerrors.sh b/unix/mkerrors.sh
index 72f65a9..d888fb7 100755
--- a/unix/mkerrors.sh
+++ b/unix/mkerrors.sh
@@ -215,6 +215,7 @@
#include <linux/ethtool_netlink.h>
#include <linux/falloc.h>
#include <linux/fanotify.h>
+#include <linux/fib_rules.h>
#include <linux/filter.h>
#include <linux/fs.h>
#include <linux/fscrypt.h>
@@ -613,6 +614,7 @@
$2 ~ /^OTP/ ||
$2 ~ /^MEM/ ||
$2 ~ /^WG/ ||
+ $2 ~ /^FIB_RULE_/ ||
$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 fd01619..3de79fa 100644
--- a/unix/zerrors_linux.go
+++ b/unix/zerrors_linux.go
@@ -873,6 +873,13 @@
FD_CLOEXEC = 0x1
FD_SETSIZE = 0x400
FF0 = 0x0
+ FIB_RULE_DEV_DETACHED = 0x8
+ FIB_RULE_FIND_SADDR = 0x10000
+ FIB_RULE_IIF_DETACHED = 0x8
+ FIB_RULE_INVERT = 0x2
+ FIB_RULE_OIF_DETACHED = 0x10
+ FIB_RULE_PERMANENT = 0x1
+ FIB_RULE_UNRESOLVED = 0x4
FIDEDUPERANGE = 0xc0189436
FSCRYPT_KEY_DESCRIPTOR_SIZE = 0x8
FSCRYPT_KEY_DESC_PREFIX = "fscrypt:"
diff --git a/unix/ztypes_linux.go b/unix/ztypes_linux.go
index e0cdc7e..c55b617 100644
--- a/unix/ztypes_linux.go
+++ b/unix/ztypes_linux.go
@@ -5542,3 +5542,40 @@
NL80211_WPA_VERSION_2 = 0x2
NL80211_WPA_VERSION_3 = 0x4
)
+
+const (
+ FRA_UNSPEC = 0x0
+ FRA_DST = 0x1
+ FRA_SRC = 0x2
+ FRA_IIFNAME = 0x3
+ FRA_GOTO = 0x4
+ FRA_UNUSED2 = 0x5
+ FRA_PRIORITY = 0x6
+ FRA_UNUSED3 = 0x7
+ FRA_UNUSED4 = 0x8
+ FRA_UNUSED5 = 0x9
+ FRA_FWMARK = 0xa
+ FRA_FLOW = 0xb
+ FRA_TUN_ID = 0xc
+ FRA_SUPPRESS_IFGROUP = 0xd
+ FRA_SUPPRESS_PREFIXLEN = 0xe
+ FRA_TABLE = 0xf
+ FRA_FWMASK = 0x10
+ FRA_OIFNAME = 0x11
+ FRA_PAD = 0x12
+ FRA_L3MDEV = 0x13
+ FRA_UID_RANGE = 0x14
+ FRA_PROTOCOL = 0x15
+ FRA_IP_PROTO = 0x16
+ FRA_SPORT_RANGE = 0x17
+ FRA_DPORT_RANGE = 0x18
+ FR_ACT_UNSPEC = 0x0
+ FR_ACT_TO_TBL = 0x1
+ FR_ACT_GOTO = 0x2
+ FR_ACT_NOP = 0x3
+ FR_ACT_RES3 = 0x4
+ FR_ACT_RES4 = 0x5
+ FR_ACT_BLACKHOLE = 0x6
+ FR_ACT_UNREACHABLE = 0x7
+ FR_ACT_PROHIBIT = 0x8
+)