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>
diff --git a/unix/linux/types.go b/unix/linux/types.go index f8ad099..308d65a 100644 --- a/unix/linux/types.go +++ b/unix/linux/types.go
@@ -841,110 +841,115 @@ // 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 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
diff --git a/unix/ztypes_linux.go b/unix/ztypes_linux.go index c1a4670..45476a7 100644 --- a/unix/ztypes_linux.go +++ b/unix/ztypes_linux.go
@@ -593,110 +593,115 @@ ) 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 @@ 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