Skip to content

Commit

Permalink
sys/linux: more NETLINK_ROUTE descriptions
Browse files Browse the repository at this point in the history
  • Loading branch information
dvyukov committed Jan 15, 2018
1 parent 837a698 commit 47501d0
Show file tree
Hide file tree
Showing 12 changed files with 3,413 additions and 63 deletions.
10 changes: 5 additions & 5 deletions executor/syscalls_linux.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#if defined(__i386__) || 0
#define GOARCH "386"
#define SYZ_REVISION "cafd8358cd4365f2e487bc5c128636992ba8718f"
#define SYZ_REVISION "6102f03a10367cb69d968a776e22bb72d8068467"
unsigned syscall_count = 1522;
call_t syscalls[] = {
{"accept4", 364},
Expand Down Expand Up @@ -1533,7 +1533,7 @@ call_t syscalls[] = {

#if defined(__x86_64__) || 0
#define GOARCH "amd64"
#define SYZ_REVISION "7f7938bc3eebdc369003462ba9ffb5bd145e40bb"
#define SYZ_REVISION "225e51555c52f81a7b7b41c60db525ebda1f3f06"
unsigned syscall_count = 1575;
call_t syscalls[] = {
{"accept", 43},
Expand Down Expand Up @@ -3117,7 +3117,7 @@ call_t syscalls[] = {

#if defined(__arm__) || 0
#define GOARCH "arm"
#define SYZ_REVISION "59b5c7bbbd2e4a18d156e5106bbea2f6bb8d07f5"
#define SYZ_REVISION "58e57ca0534f2eb44f23aa78b76ab493b2d55924"
unsigned syscall_count = 1532;
call_t syscalls[] = {
{"accept", 285},
Expand Down Expand Up @@ -4658,7 +4658,7 @@ call_t syscalls[] = {

#if defined(__aarch64__) || 0
#define GOARCH "arm64"
#define SYZ_REVISION "4aa86df3ca8bf6513cf30d01f3600ab46b832b52"
#define SYZ_REVISION "0e792d9fd80a6f092a99e2f148063261f9a7b68d"
unsigned syscall_count = 1504;
call_t syscalls[] = {
{"accept", 202},
Expand Down Expand Up @@ -6171,7 +6171,7 @@ call_t syscalls[] = {

#if defined(__ppc64__) || defined(__PPC64__) || defined(__powerpc64__) || 0
#define GOARCH "ppc64le"
#define SYZ_REVISION "ea2b380f3c8bde5e1aae0f37c21ff6d667f448ab"
#define SYZ_REVISION "0a355878cbbdbd14239b9ff7e2a905894acc87ed"
unsigned syscall_count = 1491;
call_t syscalls[] = {
{"accept", 330},
Expand Down
606 changes: 596 additions & 10 deletions sys/linux/386.go

Large diffs are not rendered by default.

606 changes: 596 additions & 10 deletions sys/linux/amd64.go

Large diffs are not rendered by default.

606 changes: 596 additions & 10 deletions sys/linux/arm.go

Large diffs are not rendered by default.

606 changes: 596 additions & 10 deletions sys/linux/arm64.go

Large diffs are not rendered by default.

606 changes: 596 additions & 10 deletions sys/linux/ppc64le.go

Large diffs are not rendered by default.

136 changes: 128 additions & 8 deletions sys/linux/socket_netlink_route.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ include <uapi/linux/netlink.h>
include <uapi/linux/netconf.h>
include <uapi/linux/rtnetlink.h>
include <uapi/linux/lwtunnel.h>
include <uapi/linux/neighbour.h>

resource sock_nl_route[sock_netlink]

Expand All @@ -24,25 +25,49 @@ netlink_msg_route [
getlink netlink_msg[RTM_GETLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
setlink netlink_msg[RTM_SETLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
dellink netlink_msg[RTM_DELLINK, ifinfomsg[AF_UNSPEC], ifla_policy]
getaddr netlink_msg[RTM_GETADDR, rtgenmsg[AF_UNSPEC], void]
getroute netlink_msg[RTM_GETROUTE, rtgenmsg[AF_UNSPEC], void]
getnetconf netlink_msg[RTM_GETNETCONF, rtgenmsg[AF_UNSPEC], void]
getstats netlink_msg[RTM_GETSTATS, rtgenmsg[AF_UNSPEC], void]
newneigh netlink_msg[RTM_NEWNEIGH, ndmsg, nd_policy]
delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nd_policy]
getneigh netlink_msg[RTM_GETNEIGH, rtgenmsg[AF_UNSPEC], void]
getneightbl netlink_msg[RTM_GETNEIGHTBL, rtgenmsg[AF_UNSPEC], void]
setneightbl netlink_msg[RTM_SETNEIGHTBL, ndtmsg, nl_neightbl_policy]

ipv4_newaddr netlink_msg[RTM_NEWADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_deladdr netlink_msg[RTM_DELADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_getaddr netlink_msg[RTM_GETADDR, ifaddrmsg[AF_INET], ifa_ipv4_policy]
ipv4_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET], devconf_ip_policy]
ipv4_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_INET], rtm_ipv4_policy]
ipv4_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_INET], rtm_ipv4_policy]
ipv4_getroute netlink_msg[RTM_GETROUTE, rtgenmsg[AF_INET], void]

ipmr_newroute netlink_msg[RTM_NEWROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
ipmr_delroute netlink_msg[RTM_DELROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
ipmr_getroute netlink_msg[RTM_GETROUTE, rtgenmsg[RTNL_FAMILY_IPMR], void]
ipv4_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET], devconf_ip_policy]

ipv6_newaddr netlink_msg[RTM_NEWADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_deladdr netlink_msg[RTM_DELADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_getaddr netlink_msg[RTM_GETADDR, ifaddrmsg[AF_INET6], ifa_ipv6_policy]
ipv6_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_INET6], rtm_ipv6_policy]
ipv6_getmulticast netlink_msg[RTM_GETMULTICAST, rtgenmsg[AF_INET6], void]
ipv6_getanyicast netlink_msg[RTM_GETANYCAST, rtgenmsg[AF_INET6], void]
ipv6_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_INET6], devconf_ip_policy]

ipmr_newroute netlink_msg[RTM_NEWROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
ipmr_delroute netlink_msg[RTM_DELROUTE, rtmsg[RTNL_FAMILY_IPMR], rtm_ipv4_policy]
ipmr_getroute netlink_msg[RTM_GETROUTE, rtgenmsg[RTNL_FAMILY_IPMR], void]

mpls_newroute netlink_msg[RTM_NEWROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
mpls_delroute netlink_msg[RTM_DELROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
mpls_getroute netlink_msg[RTM_GETROUTE, rtmsg[AF_MPLS], rtm_mpls_policy]
mpls_getnetconf netlink_msg[RTM_GETNETCONF, netconfmsg[AF_MPLS], devconf_mpls_policy]

bridge_newneigh netlink_msg[RTM_NEWNEIGH, ndmsg, nd_policy]
bridge_delneigh netlink_msg[RTM_DELNEIGH, ndmsg, nd_policy]
bridge_getneigh netlink_msg[RTM_GETNEIGH, ifinfomsg[AF_BRIDGE], ifla_policy]
bridge_getlink netlink_msg[RTM_GETLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
bridge_setlink netlink_msg[RTM_SETLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
bridge_dellink netlink_msg[RTM_DELLINK, ifinfomsg[AF_BRIDGE], ifla_policy]
] [varlen]

type rtgenmsg[FAMILY] {
Expand Down Expand Up @@ -75,13 +100,29 @@ type rtmsg[FAMILY] {
rtm_dst_len flags[rtm_addr_len, int8]
rtmsrcdst_len flags[rtm_addr_len, int8]
rtm_tos int8
rtm_table int8[0:4]
rtm_table flags[rt_table_types, int8]
rtm_protocol flags[rtm_protocol, int8]
rtm_scope flags[rt_scope_t, int8]
rtm_type flags[rtm_type, int8]
rtm_flags flags[rtm_flags, int32]
}

ndmsg {
ndm_family flags[rtnl_af, int8]
ndm_pad1 const[0, int8]
ndm_pad2 const[0, int16]
ndm_ifindex ifindex
ndm_state flags[ndm_state, int16]
ndm_flags flags[ndm_flags, int8]
ndm_type flags[rtm_type, int8]
}

ndtmsg {
ndm_family flags[rtnl_af, int8]
ndm_pad1 const[0, int8]
ndm_pad2 const[0, int16]
}

ifla_policy [
IFLA_IFNAME nlattr[IFLA_IFNAME, devname]
IFLA_ADDRESS nlattr[IFLA_ADDRESS, mac_addr]
Expand Down Expand Up @@ -151,7 +192,7 @@ rtm_ipv4_policy [
RTA_SRC nlattr[RTA_SRC, ipv4_addr]
RTA_IIF nlattr[RTA_DST, ifindex]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_GATEWAY nlattr[RTA_GATEWAY, int32]
RTA_GATEWAY nlattr[RTA_GATEWAY, ipv4_addr]
RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
RTA_PREFSRC nlattr[RTA_PREFSRC, ipv4_addr]
# TODO: what's this? is this interesting?
Expand All @@ -165,6 +206,78 @@ rtm_ipv4_policy [
RTA_MARK nlattr[RTA_MARK, int32]
] [varlen]

rtm_ipv6_policy [
RTA_GATEWAY nlattr[RTA_GATEWAY, ipv6_addr]
RTA_IIF nlattr[RTA_DST, ifindex]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_PRIORITY nlattr[RTA_PRIORITY, int32]
# TODO: what's this? is this interesting?
RTA_METRICS nlattr[RTA_METRICS, array[int8]]
RTA_MULTIPATH nlattr[RTA_MULTIPATH, array[rtnexthop]]
RTA_PREF nlattr[RTA_PREF, int8]
RTA_ENCAP_TYPE nlattr[RTA_ENCAP_TYPE, flags[lwtunnel_encap_types, int16]]
# TODO: describe RTA_ENCAP
RTA_ENCAP nlattr[RTA_ENCAP, nl_generic_attr]
RTA_EXPIRES nlattr[RTA_MARK, int32]
RTA_UID nlattr[RTA_UID, uid]
RTA_MARK nlattr[RTA_MARK, int32]
] [varlen]

rtm_mpls_policy [
RTA_DST nlattr[RTA_DST, array[mpls_label]]
RTA_OIF nlattr[RTA_OIF, ifindex]
RTA_TTL_PROPAGATE nlattr[RTA_TTL_PROPAGATE, int8]
] [varlen]

nl_neightbl_policy [
NDTA_NAME nlattr[NDTA_NAME, string]
NDTA_THRESH1 nlattr[NDTA_THRESH1, int32]
NDTA_THRESH2 nlattr[NDTA_THRESH2, int32]
NDTA_THRESH3 nlattr[NDTA_THRESH3, int32]
NDTA_GC_INTERVAL nlattr[NDTA_GC_INTERVAL, int64]
NDTA_PARMS nlattr[NDTA_PARMS, array[nl_ntbl_parm_policy]]
] [varlen]

nl_ntbl_parm_policy [
NDTPA_IFINDEX nlattr[NDTPA_IFINDEX, ifindex]
NDTPA_QUEUE_LEN nlattr[NDTPA_QUEUE_LEN, int32]
NDTPA_PROXY_QLEN nlattr[NDTPA_PROXY_QLEN, int32]
NDTPA_APP_PROBES nlattr[NDTPA_APP_PROBES, int32]
NDTPA_UCAST_PROBES nlattr[NDTPA_UCAST_PROBES, int32]
NDTPA_MCAST_PROBES nlattr[NDTPA_MCAST_PROBES, int32]
NDTPA_MCAST_REPROBES nlattr[NDTPA_MCAST_REPROBES, int32]
NDTPA_BASE_REACHABLE_TIME nlattr[NDTPA_BASE_REACHABLE_TIME, int64]
NDTPA_GC_STALETIME nlattr[NDTPA_GC_STALETIME, int64]
NDTPA_DELAY_PROBE_TIME nlattr[NDTPA_DELAY_PROBE_TIME, int64]
NDTPA_RETRANS_TIME nlattr[NDTPA_RETRANS_TIME, int64]
NDTPA_ANYCAST_DELAY nlattr[NDTPA_ANYCAST_DELAY, int64]
NDTPA_PROXY_DELAY nlattr[NDTPA_PROXY_DELAY, int64]
NDTPA_LOCKTIME nlattr[NDTPA_LOCKTIME, int64]
] [varlen]

nd_policy [
NDA_DST_IPV4 nlattr[NDA_DST, ipv4_addr]
NDA_DST_IPV6 nlattr[NDA_DST, ipv6_addr]
NDA_DST_MAC nlattr[NDA_DST, mac_addr]
NDA_LLADDR nlattr[NDA_LLADDR, mac_addr]
NDA_CACHEINFO nlattr[NDA_CACHEINFO, nda_cacheinfo]
NDA_PROBES nlattr[NDA_PROBES, int32]
NDA_VLAN nlattr[NDA_VLAN, int16[0:4]]
NDA_PORT nlattr[NDA_PORT, sock_port]
NDA_VNI nlattr[NDA_VNI, int32]
NDA_IFINDEX nlattr[NDA_IFINDEX, ifindex]
NDA_MASTER nlattr[NDA_MASTER, int32]
NDA_LINK_NETNSID nlattr[NDA_LINK_NETNSID, int32]
NDA_SRC_VNI nlattr[NDA_SRC_VNI, int32]
] [varlen]

nda_cacheinfo {
ndm_confirmed int32
ndm_used int32
ndm_updated int32
ndm_refcnt int32
}

rtnexthop {
rtnh_len int16
rtnh_flags int8
Expand All @@ -187,6 +300,11 @@ devconf_ip_policy [
IGNORE_ROUTES_WITH_LINKDOWN nlattr[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, int32]
] [varlen]

devconf_mpls_policy [
NETCONFA_IFINDEX nlattr[NETCONFA_IFINDEX, ifindex]
IGNORE_ROUTES_WITH_LINKDOWN nlattr[NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, int32]
] [varlen]

# TODO: implement these
type ifla_vf_policy nl_generic_attr
type ifla_port_policy nl_generic_attr
Expand All @@ -207,13 +325,15 @@ rtnl_link_ifmap {
}

rtnl_af = AF_INET, AF_INET6, AF_BRIDGE, AF_MPLS

net_device_flags = IFF_UP, IFF_BROADCAST, IFF_DEBUG, IFF_LOOPBACK, IFF_POINTOPOINT, IFF_NOTRAILERS, IFF_RUNNING, IFF_NOARP, IFF_PROMISC, IFF_ALLMULTI, IFF_MASTER, IFF_SLAVE, IFF_MULTICAST, IFF_PORTSEL, IFF_AUTOMEDIA, IFF_DYNAMIC, IFF_LOWER_UP, IFF_DORMANT, IFF_ECHO
ifa_flags = IFA_F_SECONDARY, IFA_F_NODAD, IFA_F_OPTIMISTIC, IFA_F_DADFAILED, IFA_F_HOMEADDRESS, IFA_F_DEPRECATED, IFA_F_TENTATIVE, IFA_F_PERMANENT, IFA_F_MANAGETEMPADDR, IFA_F_NOPREFIXROUTE, IFA_F_MCAUTOJOIN
rt_scope_t = RT_SCOPE_UNIVERSE, RT_SCOPE_SITE, RT_SCOPE_LINK, RT_SCOPE_HOST, RT_SCOPE_NOWHERE
rtm_protocol = RTPROT_UNSPEC, RTPROT_REDIRECT, RTPROT_KERNEL, RTPROT_BOOT, RTPROT_STATIC
rtm_type = RTN_UNSPEC, RTN_UNICAST, RTN_LOCAL, RTN_BROADCAST, RTN_ANYCAST, RTN_MULTICAST, RTN_BLACKHOLE, RTN_UNREACHABLE, RTN_PROHIBIT, RTN_THROW, RTN_NAT, RTN_XRESOLVE
rtm_flags = RTM_F_NOTIFY, RTM_F_CLONED, RTM_F_EQUALIZE, RTM_F_PREFIX, RTM_F_LOOKUP_TABLE, RTM_F_FIB_MATCH
lwtunnel_encap_types = LWTUNNEL_ENCAP_NONE, LWTUNNEL_ENCAP_MPLS, LWTUNNEL_ENCAP_IP, LWTUNNEL_ENCAP_ILA, LWTUNNEL_ENCAP_IP6, LWTUNNEL_ENCAP_SEG6, LWTUNNEL_ENCAP_BPF, LWTUNNEL_ENCAP_SEG6_LOCAL
rt_table_types = RT_TABLE_UNSPEC, RT_TABLE_COMPAT, RT_TABLE_DEFAULT, RT_TABLE_MAIN, RT_TABLE_LOCAL
ndm_state = NUD_INCOMPLETE, NUD_REACHABLE, NUD_STALE, NUD_DELAY, NUD_PROBE, NUD_FAILED, NUD_NOARP, NUD_PERMANENT, NUD_NONE
ndm_flags = NTF_USE, NTF_SELF, NTF_MASTER, NTF_PROXY, NTF_EXT_LEARNED, NTF_OFFLOADED, NTF_ROUTER
ifa_prefixlen = 0, 1, 8, 16, 24, 31, 32, 56, 63, 64, 128
rtm_addr_len = 0, 16, 20, 32, 128
60 changes: 60 additions & 0 deletions sys/linux/socket_netlink_route_386.const
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,59 @@ LWTUNNEL_ENCAP_SEG6 = 5
LWTUNNEL_ENCAP_SEG6_LOCAL = 7
MAX_ADDR_LEN = 32
MAX_PHYS_ITEM_ID_LEN = 32
NDA_CACHEINFO = 3
NDA_DST = 1
NDA_IFINDEX = 8
NDA_LINK_NETNSID = 10
NDA_LLADDR = 2
NDA_MASTER = 9
NDA_PORT = 6
NDA_PROBES = 4
NDA_SRC_VNI = 11
NDA_VLAN = 5
NDA_VNI = 7
NDTA_GC_INTERVAL = 8
NDTA_NAME = 1
NDTA_PARMS = 6
NDTA_THRESH1 = 2
NDTA_THRESH2 = 3
NDTA_THRESH3 = 4
NDTPA_ANYCAST_DELAY = 12
NDTPA_APP_PROBES = 9
NDTPA_BASE_REACHABLE_TIME = 4
NDTPA_DELAY_PROBE_TIME = 7
NDTPA_GC_STALETIME = 6
NDTPA_IFINDEX = 1
NDTPA_LOCKTIME = 15
NDTPA_MCAST_PROBES = 11
NDTPA_MCAST_REPROBES = 17
NDTPA_PROXY_DELAY = 13
NDTPA_PROXY_QLEN = 14
NDTPA_QUEUE_LEN = 8
NDTPA_RETRANS_TIME = 5
NDTPA_UCAST_PROBES = 10
NETCONFA_FORWARDING = 2
NETCONFA_IFINDEX = 1
NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN = 6
NETCONFA_PROXY_NEIGH = 5
NETCONFA_RP_FILTER = 3
NETLINK_ROUTE = 0
NTF_EXT_LEARNED = 16
NTF_MASTER = 4
NTF_OFFLOADED = 32
NTF_PROXY = 8
NTF_ROUTER = 128
NTF_SELF = 2
NTF_USE = 1
NUD_DELAY = 8
NUD_FAILED = 32
NUD_INCOMPLETE = 1
NUD_NOARP = 64
NUD_NONE = 0
NUD_PERMANENT = 128
NUD_PROBE = 16
NUD_REACHABLE = 2
NUD_STALE = 4
RTA_DST = 1
RTA_ENCAP = 22
RTA_ENCAP_TYPE = 21
Expand All @@ -104,12 +151,15 @@ RTA_MARK = 16
RTA_METRICS = 8
RTA_MULTIPATH = 9
RTA_OIF = 4
RTA_PREF = 20
RTA_PREFSRC = 7
RTA_PRIORITY = 6
RTA_SRC = 2
RTA_TTL_PROPAGATE = 26
RTA_UID = 25
RTM_DELADDR = 21
RTM_DELLINK = 17
RTM_DELNEIGH = 29
RTM_DELROUTE = 25
RTM_F_CLONED = 512
RTM_F_EQUALIZE = 1024
Expand All @@ -121,12 +171,17 @@ RTM_GETADDR = 22
RTM_GETANYCAST = 62
RTM_GETLINK = 18
RTM_GETMULTICAST = 58
RTM_GETNEIGH = 30
RTM_GETNEIGHTBL = 66
RTM_GETNETCONF = 82
RTM_GETROUTE = 26
RTM_GETSTATS = 94
RTM_NEWADDR = 20
RTM_NEWLINK = 16
RTM_NEWNEIGH = 28
RTM_NEWROUTE = 24
RTM_SETLINK = 19
RTM_SETNEIGHTBL = 67
RTNL_FAMILY_IPMR = 128
RTN_ANYCAST = 4
RTN_BLACKHOLE = 6
Expand All @@ -150,6 +205,11 @@ RT_SCOPE_LINK = 253
RT_SCOPE_NOWHERE = 255
RT_SCOPE_SITE = 200
RT_SCOPE_UNIVERSE = 0
RT_TABLE_COMPAT = 252
RT_TABLE_DEFAULT = 253
RT_TABLE_LOCAL = 255
RT_TABLE_MAIN = 254
RT_TABLE_UNSPEC = 0
SOCK_RAW = 3
__NR_sendmsg = 370
__NR_socket = 359
Loading

0 comments on commit 47501d0

Please sign in to comment.