From ed6cd26115de4e84cbe7446730dcd158a7e7ef66 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Thu, 30 Mar 2017 15:30:36 +0200 Subject: sys: add basic AF_LLC sockets descriptions --- extract.sh | 2 +- sys/socket.txt | 4 ++-- sys/socket_llc.txt | 52 ++++++++++++++++++++++++++++++++++++++++++++ sys/socket_llc_amd64.const | 51 +++++++++++++++++++++++++++++++++++++++++++ sys/socket_llc_arm64.const | 51 +++++++++++++++++++++++++++++++++++++++++++ sys/socket_llc_ppc64le.const | 51 +++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 208 insertions(+), 3 deletions(-) create mode 100644 sys/socket_llc.txt create mode 100644 sys/socket_llc_amd64.const create mode 100644 sys/socket_llc_arm64.const create mode 100644 sys/socket_llc_ppc64le.const diff --git a/extract.sh b/extract.sh index 4d66a25dc..7f8e11dea 100755 --- a/extract.sh +++ b/extract.sh @@ -28,7 +28,7 @@ UPSTREAM_FILES="sys/bpf.txt sys/dri.txt sys/fuse.txt sys/input.txt sys/ipc.txt sys/socket_inet_sctp.txt sys/socket_inet_dccp.txt sys/socket_kcm.txt sys/socket_key.txt sys/socket_netlink.txt sys/socket_netrom.txt sys/socket_nfc.txt sys/socket_unix.txt - sys/socket_ipx.txt sys/socket_ax25.txt" + sys/socket_ipx.txt sys/socket_ax25.txt sys/socket_llc.txt" ANDROID_FILES="sys/tlk_device.txt sys/ion.txt" diff --git a/sys/socket.txt b/sys/socket.txt index 2f81e4cf9..88afd43ab 100644 --- a/sys/socket.txt +++ b/sys/socket.txt @@ -64,7 +64,7 @@ sockaddr [ # TODO: AF_RDS # TODO: AF_IRDA # TODO: AF_PPPOX -# TODO: AF_LLC + llc sockaddr_llc # TODO: AF_IB # TODO: AF_MPLS # TODO: AF_CAN @@ -107,7 +107,7 @@ sockaddr_storage [ # TODO: AF_RDS # TODO: AF_IRDA # TODO: AF_PPPOX -# TODO: AF_LLC + llc sockaddr_llc # TODO: AF_IB # TODO: AF_MPLS # TODO: AF_CAN diff --git a/sys/socket_llc.txt b/sys/socket_llc.txt new file mode 100644 index 000000000..f60a561eb --- /dev/null +++ b/sys/socket_llc.txt @@ -0,0 +1,52 @@ +# Copyright 2017 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +# http://www.bocc.de/llcsocket.c + +# AF_LLC support. + +include +include +include +include +include + +resource sock_llc[sock] + +socket$llc(domain const[AF_LLC], type flags[llc_socket_type], proto const[0]) sock_llc +socketpair$llc(domain const[AF_LLC], type flags[llc_socket_type], proto const[0], fds ptr[out, llc_pair]) +bind$llc(fd sock_llc, addr ptr[in, sockaddr_llc], addrlen len[addr]) +connect$llc(fd sock_llc, addr ptr[in, sockaddr_llc], addrlen len[addr]) +accept$llc(fd sock_llc, peer ptr[out, sockaddr_llc, opt], peerlen ptr[inout, len[peer, int32]]) sock_llc +accept4$llc(fd sock_llc, peer ptr[out, sockaddr_llc, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_llc + +sendto$llc(fd sock_llc, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_llc, opt], addrlen len[addr]) +recvfrom$llc(fd sock_llc, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_llc, opt], addrlen len[addr]) +getsockname$llc(fd sock_llc, addr ptr[out, sockaddr_llc], addrlen ptr[inout, len[addr, int32]]) +getpeername$llc(fd sock_llc, peer ptr[out, sockaddr_llc], peerlen ptr[inout, len[peer, int32]]) + +llc_socket_type = SOCK_DGRAM, SOCK_STREAM +llc_protocols = ETH_P_802_3, ETH_P_AX25, ETH_P_ALL, ETH_P_802_2, ETH_P_SNAP, ETH_P_DDCMP, ETH_P_WAN_PPP, ETH_P_PPP_MP, ETH_P_LOCALTALK, ETH_P_CAN, ETH_P_CANFD, ETH_P_PPPTALK, ETH_P_TR_802_2, ETH_P_MOBITEX, ETH_P_CONTROL, ETH_P_IRDA, ETH_P_ECONET, ETH_P_HDLC, ETH_P_ARCNET, ETH_P_DSA, ETH_P_TRAILER, ETH_P_PHONET, ETH_P_IEEE802154, ETH_P_CAIF, ETH_P_XDSA + +llc_pair { + fd0 sock_llc + fd1 sock_llc +} + +sockaddr_llc { + sllc_family const[AF_LLC, int16] + sllc_protocol flags[llc_protocols, int16be] + sllc_test int8 + sllc_xid int8 + sllc_ua int8 + sllc_sap int8 + sll_addr mac_addr + pad array[const[0, int8], 2] +} + +# Generic options + +llc_option_types_int = LLC_OPT_RETRY, LLC_OPT_SIZE, LLC_OPT_ACK_TMR_EXP, LLC_OPT_P_TMR_EXP, LLC_OPT_REJ_TMR_EXP, LLC_OPT_BUSY_TMR_EXP, LLC_OPT_TX_WIN, LLC_OPT_RX_WIN, LLC_OPT_PKTINFO + +getsockopt$llc_int(fd sock_llc, level const[SOL_LLC], optname flags[llc_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$llc_int(fd sock_llc, level const[SOL_LLC], optname flags[llc_option_types_int], optval ptr[in, int32], optlen len[optval]) diff --git a/sys/socket_llc_amd64.const b/sys/socket_llc_amd64.const new file mode 100644 index 000000000..a56b82b69 --- /dev/null +++ b/sys/socket_llc_amd64.const @@ -0,0 +1,51 @@ +# AUTOGENERATED FILE +AF_LLC = 26 +ETH_P_802_2 = 4 +ETH_P_802_3 = 1 +ETH_P_ALL = 3 +ETH_P_ARCNET = 26 +ETH_P_AX25 = 2 +ETH_P_CAIF = 247 +ETH_P_CAN = 12 +ETH_P_CANFD = 13 +ETH_P_CONTROL = 22 +ETH_P_DDCMP = 6 +ETH_P_DSA = 27 +ETH_P_ECONET = 24 +ETH_P_HDLC = 25 +ETH_P_IEEE802154 = 246 +ETH_P_IRDA = 23 +ETH_P_LOCALTALK = 9 +ETH_P_MOBITEX = 21 +ETH_P_PHONET = 245 +ETH_P_PPPTALK = 16 +ETH_P_PPP_MP = 8 +ETH_P_SNAP = 5 +ETH_P_TRAILER = 28 +ETH_P_TR_802_2 = 17 +ETH_P_WAN_PPP = 7 +ETH_P_XDSA = 248 +LLC_OPT_ACK_TMR_EXP = 3 +LLC_OPT_BUSY_TMR_EXP = 6 +LLC_OPT_PKTINFO = 9 +LLC_OPT_P_TMR_EXP = 4 +LLC_OPT_REJ_TMR_EXP = 5 +LLC_OPT_RETRY = 1 +LLC_OPT_RX_WIN = 8 +LLC_OPT_SIZE = 2 +LLC_OPT_TX_WIN = 7 +SOCK_DGRAM = 2 +SOCK_STREAM = 1 +SOL_LLC = 268 +__NR_accept = 43 +__NR_accept4 = 288 +__NR_bind = 49 +__NR_connect = 42 +__NR_getpeername = 52 +__NR_getsockname = 51 +__NR_getsockopt = 55 +__NR_recvfrom = 45 +__NR_sendto = 44 +__NR_setsockopt = 54 +__NR_socket = 41 +__NR_socketpair = 53 diff --git a/sys/socket_llc_arm64.const b/sys/socket_llc_arm64.const new file mode 100644 index 000000000..4b2b06fee --- /dev/null +++ b/sys/socket_llc_arm64.const @@ -0,0 +1,51 @@ +# AUTOGENERATED FILE +AF_LLC = 26 +ETH_P_802_2 = 4 +ETH_P_802_3 = 1 +ETH_P_ALL = 3 +ETH_P_ARCNET = 26 +ETH_P_AX25 = 2 +ETH_P_CAIF = 247 +ETH_P_CAN = 12 +ETH_P_CANFD = 13 +ETH_P_CONTROL = 22 +ETH_P_DDCMP = 6 +ETH_P_DSA = 27 +ETH_P_ECONET = 24 +ETH_P_HDLC = 25 +ETH_P_IEEE802154 = 246 +ETH_P_IRDA = 23 +ETH_P_LOCALTALK = 9 +ETH_P_MOBITEX = 21 +ETH_P_PHONET = 245 +ETH_P_PPPTALK = 16 +ETH_P_PPP_MP = 8 +ETH_P_SNAP = 5 +ETH_P_TRAILER = 28 +ETH_P_TR_802_2 = 17 +ETH_P_WAN_PPP = 7 +ETH_P_XDSA = 248 +LLC_OPT_ACK_TMR_EXP = 3 +LLC_OPT_BUSY_TMR_EXP = 6 +LLC_OPT_PKTINFO = 9 +LLC_OPT_P_TMR_EXP = 4 +LLC_OPT_REJ_TMR_EXP = 5 +LLC_OPT_RETRY = 1 +LLC_OPT_RX_WIN = 8 +LLC_OPT_SIZE = 2 +LLC_OPT_TX_WIN = 7 +SOCK_DGRAM = 2 +SOCK_STREAM = 1 +SOL_LLC = 268 +__NR_accept = 202 +__NR_accept4 = 242 +__NR_bind = 200 +__NR_connect = 203 +__NR_getpeername = 205 +__NR_getsockname = 204 +__NR_getsockopt = 209 +__NR_recvfrom = 207 +__NR_sendto = 206 +__NR_setsockopt = 208 +__NR_socket = 198 +__NR_socketpair = 199 diff --git a/sys/socket_llc_ppc64le.const b/sys/socket_llc_ppc64le.const new file mode 100644 index 000000000..12f6ce750 --- /dev/null +++ b/sys/socket_llc_ppc64le.const @@ -0,0 +1,51 @@ +# AUTOGENERATED FILE +AF_LLC = 26 +ETH_P_802_2 = 4 +ETH_P_802_3 = 1 +ETH_P_ALL = 3 +ETH_P_ARCNET = 26 +ETH_P_AX25 = 2 +ETH_P_CAIF = 247 +ETH_P_CAN = 12 +ETH_P_CANFD = 13 +ETH_P_CONTROL = 22 +ETH_P_DDCMP = 6 +ETH_P_DSA = 27 +ETH_P_ECONET = 24 +ETH_P_HDLC = 25 +ETH_P_IEEE802154 = 246 +ETH_P_IRDA = 23 +ETH_P_LOCALTALK = 9 +ETH_P_MOBITEX = 21 +ETH_P_PHONET = 245 +ETH_P_PPPTALK = 16 +ETH_P_PPP_MP = 8 +ETH_P_SNAP = 5 +ETH_P_TRAILER = 28 +ETH_P_TR_802_2 = 17 +ETH_P_WAN_PPP = 7 +ETH_P_XDSA = 248 +LLC_OPT_ACK_TMR_EXP = 3 +LLC_OPT_BUSY_TMR_EXP = 6 +LLC_OPT_PKTINFO = 9 +LLC_OPT_P_TMR_EXP = 4 +LLC_OPT_REJ_TMR_EXP = 5 +LLC_OPT_RETRY = 1 +LLC_OPT_RX_WIN = 8 +LLC_OPT_SIZE = 2 +LLC_OPT_TX_WIN = 7 +SOCK_DGRAM = 2 +SOCK_STREAM = 1 +SOL_LLC = 268 +__NR_accept = 330 +__NR_accept4 = 344 +__NR_bind = 327 +__NR_connect = 328 +__NR_getpeername = 332 +__NR_getsockname = 331 +__NR_getsockopt = 340 +__NR_recvfrom = 337 +__NR_sendto = 335 +__NR_setsockopt = 339 +__NR_socket = 326 +__NR_socketpair = 333 -- cgit mrf-deployment