unix/linux: Prefixmsg and PrefixCacheinfo structs

These structs and enumeration constants are used
to parse RTM_NEWPREFIX netlink messages.

Fixes golang/go#77662

Change-Id: I1e7a92e771701c0c790c15e58ad78cd8fe1e5cf5
Reviewed-on: https://go-review.googlesource.com/c/sys/+/746420
Reviewed-by: Mark Freeman <markfreeman@google.com>
Auto-Submit: Tobias Klauser <tobias.klauser@gmail.com>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Florian Lehner <lehner.florian86@gmail.com>
Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com>
This commit is contained in:
Skye Soss
2026-02-18 12:31:42 -08:00
committed by Gopher Robot
parent 3687fbd716
commit acef38879e
2 changed files with 238 additions and 208 deletions
+113 -104
View File
@@ -841,110 +841,115 @@ const (
// Netlink routing and interface messages
const (
NDA_UNSPEC = C.NDA_UNSPEC
NDA_DST = C.NDA_DST
NDA_LLADDR = C.NDA_LLADDR
NDA_CACHEINFO = C.NDA_CACHEINFO
NDA_PROBES = C.NDA_PROBES
NDA_VLAN = C.NDA_VLAN
NDA_PORT = C.NDA_PORT
NDA_VNI = C.NDA_VNI
NDA_IFINDEX = C.NDA_IFINDEX
NDA_MASTER = C.NDA_MASTER
NDA_LINK_NETNSID = C.NDA_LINK_NETNSID
NDA_SRC_VNI = C.NDA_SRC_VNI
NTF_USE = C.NTF_USE
NTF_SELF = C.NTF_SELF
NTF_MASTER = C.NTF_MASTER
NTF_PROXY = C.NTF_PROXY
NTF_EXT_LEARNED = C.NTF_EXT_LEARNED
NTF_OFFLOADED = C.NTF_OFFLOADED
NTF_ROUTER = C.NTF_ROUTER
NUD_INCOMPLETE = C.NUD_INCOMPLETE
NUD_REACHABLE = C.NUD_REACHABLE
NUD_STALE = C.NUD_STALE
NUD_DELAY = C.NUD_DELAY
NUD_PROBE = C.NUD_PROBE
NUD_FAILED = C.NUD_FAILED
NUD_NOARP = C.NUD_NOARP
NUD_PERMANENT = C.NUD_PERMANENT
NUD_NONE = C.NUD_NONE
IFA_UNSPEC = C.IFA_UNSPEC
IFA_ADDRESS = C.IFA_ADDRESS
IFA_LOCAL = C.IFA_LOCAL
IFA_LABEL = C.IFA_LABEL
IFA_BROADCAST = C.IFA_BROADCAST
IFA_ANYCAST = C.IFA_ANYCAST
IFA_CACHEINFO = C.IFA_CACHEINFO
IFA_MULTICAST = C.IFA_MULTICAST
IFA_FLAGS = C.IFA_FLAGS
IFA_RT_PRIORITY = C.IFA_RT_PRIORITY
IFA_TARGET_NETNSID = C.IFA_TARGET_NETNSID
IFAL_LABEL = C.IFAL_LABEL
IFAL_ADDRESS = C.IFAL_ADDRESS
RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE
RT_SCOPE_SITE = C.RT_SCOPE_SITE
RT_SCOPE_LINK = C.RT_SCOPE_LINK
RT_SCOPE_HOST = C.RT_SCOPE_HOST
RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE
RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC
RT_TABLE_COMPAT = C.RT_TABLE_COMPAT
RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT
RT_TABLE_MAIN = C.RT_TABLE_MAIN
RT_TABLE_LOCAL = C.RT_TABLE_LOCAL
RT_TABLE_MAX = C.RT_TABLE_MAX
RTA_UNSPEC = C.RTA_UNSPEC
RTA_DST = C.RTA_DST
RTA_SRC = C.RTA_SRC
RTA_IIF = C.RTA_IIF
RTA_OIF = C.RTA_OIF
RTA_GATEWAY = C.RTA_GATEWAY
RTA_PRIORITY = C.RTA_PRIORITY
RTA_PREFSRC = C.RTA_PREFSRC
RTA_METRICS = C.RTA_METRICS
RTA_MULTIPATH = C.RTA_MULTIPATH
RTA_FLOW = C.RTA_FLOW
RTA_CACHEINFO = C.RTA_CACHEINFO
RTA_TABLE = C.RTA_TABLE
RTA_MARK = C.RTA_MARK
RTA_MFC_STATS = C.RTA_MFC_STATS
RTA_VIA = C.RTA_VIA
RTA_NEWDST = C.RTA_NEWDST
RTA_PREF = C.RTA_PREF
RTA_ENCAP_TYPE = C.RTA_ENCAP_TYPE
RTA_ENCAP = C.RTA_ENCAP
RTA_EXPIRES = C.RTA_EXPIRES
RTA_PAD = C.RTA_PAD
RTA_UID = C.RTA_UID
RTA_TTL_PROPAGATE = C.RTA_TTL_PROPAGATE
RTA_IP_PROTO = C.RTA_IP_PROTO
RTA_SPORT = C.RTA_SPORT
RTA_DPORT = C.RTA_DPORT
RTN_UNSPEC = C.RTN_UNSPEC
RTN_UNICAST = C.RTN_UNICAST
RTN_LOCAL = C.RTN_LOCAL
RTN_BROADCAST = C.RTN_BROADCAST
RTN_ANYCAST = C.RTN_ANYCAST
RTN_MULTICAST = C.RTN_MULTICAST
RTN_BLACKHOLE = C.RTN_BLACKHOLE
RTN_UNREACHABLE = C.RTN_UNREACHABLE
RTN_PROHIBIT = C.RTN_PROHIBIT
RTN_THROW = C.RTN_THROW
RTN_NAT = C.RTN_NAT
RTN_XRESOLVE = C.RTN_XRESOLVE
SizeofNlMsghdr = C.sizeof_struct_nlmsghdr
SizeofNlMsgerr = C.sizeof_struct_nlmsgerr
SizeofRtGenmsg = C.sizeof_struct_rtgenmsg
SizeofNlAttr = C.sizeof_struct_nlattr
SizeofRtAttr = C.sizeof_struct_rtattr
SizeofIfInfomsg = C.sizeof_struct_ifinfomsg
SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg
SizeofIfAddrlblmsg = C.sizeof_struct_ifaddrlblmsg
SizeofIfaCacheinfo = C.sizeof_struct_ifa_cacheinfo
SizeofRtMsg = C.sizeof_struct_rtmsg
SizeofRtNexthop = C.sizeof_struct_rtnexthop
SizeofNdUseroptmsg = C.sizeof_struct_nduseroptmsg
SizeofNdMsg = C.sizeof_struct_ndmsg
NDA_UNSPEC = C.NDA_UNSPEC
NDA_DST = C.NDA_DST
NDA_LLADDR = C.NDA_LLADDR
NDA_CACHEINFO = C.NDA_CACHEINFO
NDA_PROBES = C.NDA_PROBES
NDA_VLAN = C.NDA_VLAN
NDA_PORT = C.NDA_PORT
NDA_VNI = C.NDA_VNI
NDA_IFINDEX = C.NDA_IFINDEX
NDA_MASTER = C.NDA_MASTER
NDA_LINK_NETNSID = C.NDA_LINK_NETNSID
NDA_SRC_VNI = C.NDA_SRC_VNI
NTF_USE = C.NTF_USE
NTF_SELF = C.NTF_SELF
NTF_MASTER = C.NTF_MASTER
NTF_PROXY = C.NTF_PROXY
NTF_EXT_LEARNED = C.NTF_EXT_LEARNED
NTF_OFFLOADED = C.NTF_OFFLOADED
NTF_ROUTER = C.NTF_ROUTER
NUD_INCOMPLETE = C.NUD_INCOMPLETE
NUD_REACHABLE = C.NUD_REACHABLE
NUD_STALE = C.NUD_STALE
NUD_DELAY = C.NUD_DELAY
NUD_PROBE = C.NUD_PROBE
NUD_FAILED = C.NUD_FAILED
NUD_NOARP = C.NUD_NOARP
NUD_PERMANENT = C.NUD_PERMANENT
NUD_NONE = C.NUD_NONE
IFA_UNSPEC = C.IFA_UNSPEC
IFA_ADDRESS = C.IFA_ADDRESS
IFA_LOCAL = C.IFA_LOCAL
IFA_LABEL = C.IFA_LABEL
IFA_BROADCAST = C.IFA_BROADCAST
IFA_ANYCAST = C.IFA_ANYCAST
IFA_CACHEINFO = C.IFA_CACHEINFO
IFA_MULTICAST = C.IFA_MULTICAST
IFA_FLAGS = C.IFA_FLAGS
IFA_RT_PRIORITY = C.IFA_RT_PRIORITY
IFA_TARGET_NETNSID = C.IFA_TARGET_NETNSID
IFAL_LABEL = C.IFAL_LABEL
IFAL_ADDRESS = C.IFAL_ADDRESS
RT_SCOPE_UNIVERSE = C.RT_SCOPE_UNIVERSE
RT_SCOPE_SITE = C.RT_SCOPE_SITE
RT_SCOPE_LINK = C.RT_SCOPE_LINK
RT_SCOPE_HOST = C.RT_SCOPE_HOST
RT_SCOPE_NOWHERE = C.RT_SCOPE_NOWHERE
RT_TABLE_UNSPEC = C.RT_TABLE_UNSPEC
RT_TABLE_COMPAT = C.RT_TABLE_COMPAT
RT_TABLE_DEFAULT = C.RT_TABLE_DEFAULT
RT_TABLE_MAIN = C.RT_TABLE_MAIN
RT_TABLE_LOCAL = C.RT_TABLE_LOCAL
RT_TABLE_MAX = C.RT_TABLE_MAX
RTA_UNSPEC = C.RTA_UNSPEC
RTA_DST = C.RTA_DST
RTA_SRC = C.RTA_SRC
RTA_IIF = C.RTA_IIF
RTA_OIF = C.RTA_OIF
RTA_GATEWAY = C.RTA_GATEWAY
RTA_PRIORITY = C.RTA_PRIORITY
RTA_PREFSRC = C.RTA_PREFSRC
RTA_METRICS = C.RTA_METRICS
RTA_MULTIPATH = C.RTA_MULTIPATH
RTA_FLOW = C.RTA_FLOW
RTA_CACHEINFO = C.RTA_CACHEINFO
RTA_TABLE = C.RTA_TABLE
RTA_MARK = C.RTA_MARK
RTA_MFC_STATS = C.RTA_MFC_STATS
RTA_VIA = C.RTA_VIA
RTA_NEWDST = C.RTA_NEWDST
RTA_PREF = C.RTA_PREF
RTA_ENCAP_TYPE = C.RTA_ENCAP_TYPE
RTA_ENCAP = C.RTA_ENCAP
RTA_EXPIRES = C.RTA_EXPIRES
RTA_PAD = C.RTA_PAD
RTA_UID = C.RTA_UID
RTA_TTL_PROPAGATE = C.RTA_TTL_PROPAGATE
RTA_IP_PROTO = C.RTA_IP_PROTO
RTA_SPORT = C.RTA_SPORT
RTA_DPORT = C.RTA_DPORT
RTN_UNSPEC = C.RTN_UNSPEC
RTN_UNICAST = C.RTN_UNICAST
RTN_LOCAL = C.RTN_LOCAL
RTN_BROADCAST = C.RTN_BROADCAST
RTN_ANYCAST = C.RTN_ANYCAST
RTN_MULTICAST = C.RTN_MULTICAST
RTN_BLACKHOLE = C.RTN_BLACKHOLE
RTN_UNREACHABLE = C.RTN_UNREACHABLE
RTN_PROHIBIT = C.RTN_PROHIBIT
RTN_THROW = C.RTN_THROW
RTN_NAT = C.RTN_NAT
RTN_XRESOLVE = C.RTN_XRESOLVE
PREFIX_UNSPEC = C.PREFIX_UNSPEC
PREFIX_ADDRESS = C.PREFIX_ADDRESS
PREFIX_CACHEINFO = C.PREFIX_CACHEINFO
SizeofNlMsghdr = C.sizeof_struct_nlmsghdr
SizeofNlMsgerr = C.sizeof_struct_nlmsgerr
SizeofRtGenmsg = C.sizeof_struct_rtgenmsg
SizeofNlAttr = C.sizeof_struct_nlattr
SizeofRtAttr = C.sizeof_struct_rtattr
SizeofIfInfomsg = C.sizeof_struct_ifinfomsg
SizeofPrefixmsg = C.sizeof_struct_prefixmsg
SizeofPrefixCacheinfo = C.sizeof_struct_prefix_cacheinfo
SizeofIfAddrmsg = C.sizeof_struct_ifaddrmsg
SizeofIfAddrlblmsg = C.sizeof_struct_ifaddrlblmsg
SizeofIfaCacheinfo = C.sizeof_struct_ifa_cacheinfo
SizeofRtMsg = C.sizeof_struct_rtmsg
SizeofRtNexthop = C.sizeof_struct_rtnexthop
SizeofNdUseroptmsg = C.sizeof_struct_nduseroptmsg
SizeofNdMsg = C.sizeof_struct_ndmsg
)
type NlMsghdr C.struct_nlmsghdr
@@ -959,6 +964,10 @@ type RtAttr C.struct_rtattr
type IfInfomsg C.struct_ifinfomsg
type Prefixmsg C.struct_prefixmsg
type PrefixCacheinfo C.struct_prefix_cacheinfo
type IfAddrmsg C.struct_ifaddrmsg
type IfAddrlblmsg C.struct_ifaddrlblmsg
+125 -104
View File
@@ -593,110 +593,115 @@ const (
)
const (
NDA_UNSPEC = 0x0
NDA_DST = 0x1
NDA_LLADDR = 0x2
NDA_CACHEINFO = 0x3
NDA_PROBES = 0x4
NDA_VLAN = 0x5
NDA_PORT = 0x6
NDA_VNI = 0x7
NDA_IFINDEX = 0x8
NDA_MASTER = 0x9
NDA_LINK_NETNSID = 0xa
NDA_SRC_VNI = 0xb
NTF_USE = 0x1
NTF_SELF = 0x2
NTF_MASTER = 0x4
NTF_PROXY = 0x8
NTF_EXT_LEARNED = 0x10
NTF_OFFLOADED = 0x20
NTF_ROUTER = 0x80
NUD_INCOMPLETE = 0x1
NUD_REACHABLE = 0x2
NUD_STALE = 0x4
NUD_DELAY = 0x8
NUD_PROBE = 0x10
NUD_FAILED = 0x20
NUD_NOARP = 0x40
NUD_PERMANENT = 0x80
NUD_NONE = 0x0
IFA_UNSPEC = 0x0
IFA_ADDRESS = 0x1
IFA_LOCAL = 0x2
IFA_LABEL = 0x3
IFA_BROADCAST = 0x4
IFA_ANYCAST = 0x5
IFA_CACHEINFO = 0x6
IFA_MULTICAST = 0x7
IFA_FLAGS = 0x8
IFA_RT_PRIORITY = 0x9
IFA_TARGET_NETNSID = 0xa
IFAL_LABEL = 0x2
IFAL_ADDRESS = 0x1
RT_SCOPE_UNIVERSE = 0x0
RT_SCOPE_SITE = 0xc8
RT_SCOPE_LINK = 0xfd
RT_SCOPE_HOST = 0xfe
RT_SCOPE_NOWHERE = 0xff
RT_TABLE_UNSPEC = 0x0
RT_TABLE_COMPAT = 0xfc
RT_TABLE_DEFAULT = 0xfd
RT_TABLE_MAIN = 0xfe
RT_TABLE_LOCAL = 0xff
RT_TABLE_MAX = 0xffffffff
RTA_UNSPEC = 0x0
RTA_DST = 0x1
RTA_SRC = 0x2
RTA_IIF = 0x3
RTA_OIF = 0x4
RTA_GATEWAY = 0x5
RTA_PRIORITY = 0x6
RTA_PREFSRC = 0x7
RTA_METRICS = 0x8
RTA_MULTIPATH = 0x9
RTA_FLOW = 0xb
RTA_CACHEINFO = 0xc
RTA_TABLE = 0xf
RTA_MARK = 0x10
RTA_MFC_STATS = 0x11
RTA_VIA = 0x12
RTA_NEWDST = 0x13
RTA_PREF = 0x14
RTA_ENCAP_TYPE = 0x15
RTA_ENCAP = 0x16
RTA_EXPIRES = 0x17
RTA_PAD = 0x18
RTA_UID = 0x19
RTA_TTL_PROPAGATE = 0x1a
RTA_IP_PROTO = 0x1b
RTA_SPORT = 0x1c
RTA_DPORT = 0x1d
RTN_UNSPEC = 0x0
RTN_UNICAST = 0x1
RTN_LOCAL = 0x2
RTN_BROADCAST = 0x3
RTN_ANYCAST = 0x4
RTN_MULTICAST = 0x5
RTN_BLACKHOLE = 0x6
RTN_UNREACHABLE = 0x7
RTN_PROHIBIT = 0x8
RTN_THROW = 0x9
RTN_NAT = 0xa
RTN_XRESOLVE = 0xb
SizeofNlMsghdr = 0x10
SizeofNlMsgerr = 0x14
SizeofRtGenmsg = 0x1
SizeofNlAttr = 0x4
SizeofRtAttr = 0x4
SizeofIfInfomsg = 0x10
SizeofIfAddrmsg = 0x8
SizeofIfAddrlblmsg = 0xc
SizeofIfaCacheinfo = 0x10
SizeofRtMsg = 0xc
SizeofRtNexthop = 0x8
SizeofNdUseroptmsg = 0x10
SizeofNdMsg = 0xc
NDA_UNSPEC = 0x0
NDA_DST = 0x1
NDA_LLADDR = 0x2
NDA_CACHEINFO = 0x3
NDA_PROBES = 0x4
NDA_VLAN = 0x5
NDA_PORT = 0x6
NDA_VNI = 0x7
NDA_IFINDEX = 0x8
NDA_MASTER = 0x9
NDA_LINK_NETNSID = 0xa
NDA_SRC_VNI = 0xb
NTF_USE = 0x1
NTF_SELF = 0x2
NTF_MASTER = 0x4
NTF_PROXY = 0x8
NTF_EXT_LEARNED = 0x10
NTF_OFFLOADED = 0x20
NTF_ROUTER = 0x80
NUD_INCOMPLETE = 0x1
NUD_REACHABLE = 0x2
NUD_STALE = 0x4
NUD_DELAY = 0x8
NUD_PROBE = 0x10
NUD_FAILED = 0x20
NUD_NOARP = 0x40
NUD_PERMANENT = 0x80
NUD_NONE = 0x0
IFA_UNSPEC = 0x0
IFA_ADDRESS = 0x1
IFA_LOCAL = 0x2
IFA_LABEL = 0x3
IFA_BROADCAST = 0x4
IFA_ANYCAST = 0x5
IFA_CACHEINFO = 0x6
IFA_MULTICAST = 0x7
IFA_FLAGS = 0x8
IFA_RT_PRIORITY = 0x9
IFA_TARGET_NETNSID = 0xa
IFAL_LABEL = 0x2
IFAL_ADDRESS = 0x1
RT_SCOPE_UNIVERSE = 0x0
RT_SCOPE_SITE = 0xc8
RT_SCOPE_LINK = 0xfd
RT_SCOPE_HOST = 0xfe
RT_SCOPE_NOWHERE = 0xff
RT_TABLE_UNSPEC = 0x0
RT_TABLE_COMPAT = 0xfc
RT_TABLE_DEFAULT = 0xfd
RT_TABLE_MAIN = 0xfe
RT_TABLE_LOCAL = 0xff
RT_TABLE_MAX = 0xffffffff
RTA_UNSPEC = 0x0
RTA_DST = 0x1
RTA_SRC = 0x2
RTA_IIF = 0x3
RTA_OIF = 0x4
RTA_GATEWAY = 0x5
RTA_PRIORITY = 0x6
RTA_PREFSRC = 0x7
RTA_METRICS = 0x8
RTA_MULTIPATH = 0x9
RTA_FLOW = 0xb
RTA_CACHEINFO = 0xc
RTA_TABLE = 0xf
RTA_MARK = 0x10
RTA_MFC_STATS = 0x11
RTA_VIA = 0x12
RTA_NEWDST = 0x13
RTA_PREF = 0x14
RTA_ENCAP_TYPE = 0x15
RTA_ENCAP = 0x16
RTA_EXPIRES = 0x17
RTA_PAD = 0x18
RTA_UID = 0x19
RTA_TTL_PROPAGATE = 0x1a
RTA_IP_PROTO = 0x1b
RTA_SPORT = 0x1c
RTA_DPORT = 0x1d
RTN_UNSPEC = 0x0
RTN_UNICAST = 0x1
RTN_LOCAL = 0x2
RTN_BROADCAST = 0x3
RTN_ANYCAST = 0x4
RTN_MULTICAST = 0x5
RTN_BLACKHOLE = 0x6
RTN_UNREACHABLE = 0x7
RTN_PROHIBIT = 0x8
RTN_THROW = 0x9
RTN_NAT = 0xa
RTN_XRESOLVE = 0xb
PREFIX_UNSPEC = 0x0
PREFIX_ADDRESS = 0x1
PREFIX_CACHEINFO = 0x2
SizeofNlMsghdr = 0x10
SizeofNlMsgerr = 0x14
SizeofRtGenmsg = 0x1
SizeofNlAttr = 0x4
SizeofRtAttr = 0x4
SizeofIfInfomsg = 0x10
SizeofPrefixmsg = 0xc
SizeofPrefixCacheinfo = 0x8
SizeofIfAddrmsg = 0x8
SizeofIfAddrlblmsg = 0xc
SizeofIfaCacheinfo = 0x10
SizeofRtMsg = 0xc
SizeofRtNexthop = 0x8
SizeofNdUseroptmsg = 0x10
SizeofNdMsg = 0xc
)
type NlMsghdr struct {
@@ -735,6 +740,22 @@ type IfInfomsg struct {
Change uint32
}
type Prefixmsg struct {
Family uint8
Pad1 uint8
Pad2 uint16
Ifindex int32
Type uint8
Len uint8
Flags uint8
Pad3 uint8
}
type PrefixCacheinfo struct {
Preferred_time uint32
Valid_time uint32
}
type IfAddrmsg struct {
Family uint8
Prefixlen uint8