aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2017-03-30 15:30:36 +0200
committerAndrey Konovalov <andreyknvl@google.com>2017-05-29 17:06:14 +0200
commited6cd26115de4e84cbe7446730dcd158a7e7ef66 (patch)
tree6f96ced796a0d41299aea25367ee4fc6dd5535fe /sys
parentbaf825803c72cdc02bed92a5f84ec43482aa35d3 (diff)
sys: add basic AF_LLC sockets descriptions
Diffstat (limited to 'sys')
-rw-r--r--sys/socket.txt4
-rw-r--r--sys/socket_llc.txt52
-rw-r--r--sys/socket_llc_amd64.const51
-rw-r--r--sys/socket_llc_arm64.const51
-rw-r--r--sys/socket_llc_ppc64le.const51
5 files changed, 207 insertions, 2 deletions
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 <linux/socket.h>
+include <linux/net.h>
+include <linux/if_ether.h>
+include <linux/if_arp.h>
+include <linux/llc.h>
+
+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