From 53e5ebba71240aa17f16f705aea37d7082bb767f Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Mon, 13 Feb 2017 14:38:19 +0100 Subject: sys: add dccp socket & packet descriptions --- extract.sh | 14 ++++++------- sys/socket_inet_dccp.txt | 42 ++++++++++++++++++++++++++++++++++++++ sys/socket_inet_dccp_amd64.const | 25 +++++++++++++++++++++++ sys/socket_inet_dccp_arm64.const | 25 +++++++++++++++++++++++ sys/socket_inet_dccp_ppc64le.const | 25 +++++++++++++++++++++++ sys/vnet.txt | 36 ++++++++++++++++++++++++++++++++ sys/vnet_amd64.const | 11 ++++++++++ sys/vnet_arm64.const | 11 ++++++++++ sys/vnet_ppc64le.const | 11 ++++++++++ 9 files changed, 193 insertions(+), 7 deletions(-) create mode 100644 sys/socket_inet_dccp.txt create mode 100644 sys/socket_inet_dccp_amd64.const create mode 100644 sys/socket_inet_dccp_arm64.const create mode 100644 sys/socket_inet_dccp_ppc64le.const diff --git a/extract.sh b/extract.sh index 490aa0eb7..cd356da06 100755 --- a/extract.sh +++ b/extract.sh @@ -20,13 +20,13 @@ fi UPSTREAM_FILES="sys/bpf.txt sys/dri.txt sys/fuse.txt sys/input.txt sys/ipc.txt sys/key.txt sys/kvm.txt sys/loop.txt sys/perf.txt sys/random.txt - sys/sndcontrol.txt sys/sndseq.txt sys/sndtimer.txt sys/socket.txt - sys/socket_alg.txt sys/socket_bluetooth.txt sys/socket_inet.txt - sys/socket_inet_icmp.txt sys/socket_inet_sctp.txt sys/socket_inet_tcp.txt - sys/socket_inet_udp.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/sys.txt sys/test.txt sys/tty.txt sys/tun.txt - sys/vnet.txt" + sys/sndcontrol.txt sys/sndseq.txt sys/sndtimer.txt + sys/sys.txt sys/test.txt sys/tty.txt sys/tun.txt sys/vnet.txt + sys/socket.txt sys/socket_alg.txt sys/socket_bluetooth.txt + sys/socket_inet.txt sys/socket_inet_tcp.txt sys/socket_inet_udp.txt + sys/socket_inet_icmp.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" ANDROID_FILES="sys/tlk_device.txt" diff --git a/sys/socket_inet_dccp.txt b/sys/socket_inet_dccp.txt new file mode 100644 index 000000000..b392d8b44 --- /dev/null +++ b/sys/socket_inet_dccp.txt @@ -0,0 +1,42 @@ +# 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. + +# AF_INET and AF_INET6: DCCP support + +include + +resource sock_dccp[sock_in] + +dccp_pair { + f0 sock_dccp + f1 sock_dccp +} + +socket$dccp(domain const[AF_INET], type const[SOCK_DCCP], proto const[0]) sock_dccp +socketpair$dccp(domain const[AF_INET], type const[SOCK_DCCP], proto const[0], fds ptr[out, dccp_pair]) + +resource sock_dccp6[sock_in6] + +dccp6_pair { + f0 sock_dccp6 + f1 sock_dccp6 +} + +socket$dccp6(domain const[AF_INET6], type const[SOCK_DCCP], proto const[0]) sock_dccp6 +socketpair$dccp6(domain const[AF_INET6], type const[SOCK_DCCP], proto const[0], fds ptr[out, dccp6_pair]) + +# Generic DCCP socket options + +dccp_option_types_int = DCCP_SOCKOPT_PACKET_SIZE, DCCP_SOCKOPT_CHANGE_L, DCCP_SOCKOPT_CHANGE_R, DCCP_SOCKOPT_GET_CUR_MPS, DCCP_SOCKOPT_SERVER_TIMEWAIT, DCCP_SOCKOPT_SEND_CSCOV, DCCP_SOCKOPT_RECV_CSCOV, DCCP_SOCKOPT_QPOLICY_ID, DCCP_SOCKOPT_QPOLICY_TXQLEN + +dccp_option_types_buf = DCCP_SOCKOPT_SERVICE, DCCP_SOCKOPT_AVAILABLE_CCIDS, DCCP_SOCKOPT_CCID, DCCP_SOCKOPT_TX_CCID, DCCP_SOCKOPT_RX_CCID, DCCP_SOCKOPT_CCID_RX_INFO, DCCP_SOCKOPT_CCID_TX_INFO + +getsockopt$dccp_int(fd sock_dccp, level const[IPPROTO_DCCP], optname flags[dccp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$dccp_int(fd sock_dccp, level const[IPPROTO_DCCP], optname flags[dccp_option_types_int], optval ptr[in, int32], optlen len[optval]) +getsockopt$dccp6_int(fd sock_dccp6, level const[IPPROTO_DCCP], optname flags[dccp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$dccp6_int(fd sock_dccp6, level const[IPPROTO_DCCP], optname flags[dccp_option_types_int], optval ptr[in, int32], optlen len[optval]) + +getsockopt$dccp_buf(fd sock_dccp, level const[IPPROTO_DCCP], optname flags[dccp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]]) +setsockopt$dccp_buf(fd sock_dccp, level const[IPPROTO_DCCP], optname flags[dccp_option_types_buf], optval buffer[in], optlen len[optval]) +getsockopt$dccp6_buf(fd sock_dccp6, level const[IPPROTO_DCCP], optname flags[dccp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]]) +setsockopt$dccp6_buf(fd sock_dccp6, level const[IPPROTO_DCCP], optname flags[dccp_option_types_buf], optval buffer[in], optlen len[optval]) diff --git a/sys/socket_inet_dccp_amd64.const b/sys/socket_inet_dccp_amd64.const new file mode 100644 index 000000000..07fc8419c --- /dev/null +++ b/sys/socket_inet_dccp_amd64.const @@ -0,0 +1,25 @@ +# AUTOGENERATED FILE +AF_INET = 2 +AF_INET6 = 10 +DCCP_SOCKOPT_AVAILABLE_CCIDS = 12 +DCCP_SOCKOPT_CCID = 13 +DCCP_SOCKOPT_CCID_RX_INFO = 128 +DCCP_SOCKOPT_CCID_TX_INFO = 192 +DCCP_SOCKOPT_CHANGE_L = 3 +DCCP_SOCKOPT_CHANGE_R = 4 +DCCP_SOCKOPT_GET_CUR_MPS = 5 +DCCP_SOCKOPT_PACKET_SIZE = 1 +DCCP_SOCKOPT_QPOLICY_ID = 16 +DCCP_SOCKOPT_QPOLICY_TXQLEN = 17 +DCCP_SOCKOPT_RECV_CSCOV = 11 +DCCP_SOCKOPT_RX_CCID = 15 +DCCP_SOCKOPT_SEND_CSCOV = 10 +DCCP_SOCKOPT_SERVER_TIMEWAIT = 6 +DCCP_SOCKOPT_SERVICE = 2 +DCCP_SOCKOPT_TX_CCID = 14 +IPPROTO_DCCP = 33 +SOCK_DCCP = 6 +__NR_getsockopt = 55 +__NR_setsockopt = 54 +__NR_socket = 41 +__NR_socketpair = 53 diff --git a/sys/socket_inet_dccp_arm64.const b/sys/socket_inet_dccp_arm64.const new file mode 100644 index 000000000..f80355a64 --- /dev/null +++ b/sys/socket_inet_dccp_arm64.const @@ -0,0 +1,25 @@ +# AUTOGENERATED FILE +AF_INET = 2 +AF_INET6 = 10 +DCCP_SOCKOPT_AVAILABLE_CCIDS = 12 +DCCP_SOCKOPT_CCID = 13 +DCCP_SOCKOPT_CCID_RX_INFO = 128 +DCCP_SOCKOPT_CCID_TX_INFO = 192 +DCCP_SOCKOPT_CHANGE_L = 3 +DCCP_SOCKOPT_CHANGE_R = 4 +DCCP_SOCKOPT_GET_CUR_MPS = 5 +DCCP_SOCKOPT_PACKET_SIZE = 1 +DCCP_SOCKOPT_QPOLICY_ID = 16 +DCCP_SOCKOPT_QPOLICY_TXQLEN = 17 +DCCP_SOCKOPT_RECV_CSCOV = 11 +DCCP_SOCKOPT_RX_CCID = 15 +DCCP_SOCKOPT_SEND_CSCOV = 10 +DCCP_SOCKOPT_SERVER_TIMEWAIT = 6 +DCCP_SOCKOPT_SERVICE = 2 +DCCP_SOCKOPT_TX_CCID = 14 +IPPROTO_DCCP = 33 +SOCK_DCCP = 6 +__NR_getsockopt = 209 +__NR_setsockopt = 208 +__NR_socket = 198 +__NR_socketpair = 199 diff --git a/sys/socket_inet_dccp_ppc64le.const b/sys/socket_inet_dccp_ppc64le.const new file mode 100644 index 000000000..baa1f820d --- /dev/null +++ b/sys/socket_inet_dccp_ppc64le.const @@ -0,0 +1,25 @@ +# AUTOGENERATED FILE +AF_INET = 2 +AF_INET6 = 10 +DCCP_SOCKOPT_AVAILABLE_CCIDS = 12 +DCCP_SOCKOPT_CCID = 13 +DCCP_SOCKOPT_CCID_RX_INFO = 128 +DCCP_SOCKOPT_CCID_TX_INFO = 192 +DCCP_SOCKOPT_CHANGE_L = 3 +DCCP_SOCKOPT_CHANGE_R = 4 +DCCP_SOCKOPT_GET_CUR_MPS = 5 +DCCP_SOCKOPT_PACKET_SIZE = 1 +DCCP_SOCKOPT_QPOLICY_ID = 16 +DCCP_SOCKOPT_QPOLICY_TXQLEN = 17 +DCCP_SOCKOPT_RECV_CSCOV = 11 +DCCP_SOCKOPT_RX_CCID = 15 +DCCP_SOCKOPT_SEND_CSCOV = 10 +DCCP_SOCKOPT_SERVER_TIMEWAIT = 6 +DCCP_SOCKOPT_SERVICE = 2 +DCCP_SOCKOPT_TX_CCID = 14 +IPPROTO_DCCP = 33 +SOCK_DCCP = 6 +__NR_getsockopt = 340 +__NR_setsockopt = 339 +__NR_socket = 326 +__NR_socketpair = 333 diff --git a/sys/vnet.txt b/sys/vnet.txt index 817290e36..26fa6ba3f 100644 --- a/sys/vnet.txt +++ b/sys/vnet.txt @@ -383,12 +383,14 @@ ipv4_payload [ tcp tcp_packet udp udp_packet icmp icmp_packet + dccp dccp_packet ] [varlen] ipv6_payload [ tcp tcp_packet udp udp_packet icmpv6 icmpv6_packet + dccp dccp_packet ] [varlen] ################################################################################ @@ -824,3 +826,37 @@ icmpv6_packet [ # TODO: ICMPV6_MLD2_REPORT # TODO: ICMPV6_DHAAD_REQUEST, ICMPV6_DHAAD_REPLY, ICMPV6_MOBILE_PREFIX_SOL, ICMPV6_MOBILE_PREFIX_ADV (with ipv6 ext headers) ] [varlen] + +################################################################################ +###################################### DCCP #################################### +################################################################################ + +# https://tools.ietf.org/html/rfc4340#section-5 + +include + +# TODO: describe each type +dccp_types = DCCP_PKT_REQUEST, DCCP_PKT_RESPONSE, DCCP_PKT_DATA, DCCP_PKT_ACK, DCCP_PKT_DATAACK, DCCP_PKT_CLOSEREQ, DCCP_PKT_CLOSE, DCCP_PKT_RESET, DCCP_PKT_SYNC, DCCP_PKT_SYNCACK, DCCP_PKT_INVALID + +dccp_header { + src_port proc[int16be, 20000, 4] + dst_port proc[int16be, 20000, 4] + offset bytesize4[parent, int8] + cscov const[1, int8:4] +# TODO: cscov might have other values, affects checksummed data + ccval int8:4 + csum csum[parent, pseudo, IPPROTO_DCCP, int16be] + x const[0, int8:1] + type flags[dccp_types, int8:4] + reserved1 int8:3 + seq_num array[int8, 3] + reserved2 int8 + ack_num array[int8, 3] +# TODO: seq_num and ack_num might have different size depending on x +# TODO: options +} [packed] + +dccp_packet { + header dccp_header + payload array[int8] +} [packed] diff --git a/sys/vnet_amd64.const b/sys/vnet_amd64.const index fe6731c78..ec468bc1b 100644 --- a/sys/vnet_amd64.const +++ b/sys/vnet_amd64.const @@ -5,6 +5,17 @@ CIPSO_V4_TAG_INVALID = 0 CIPSO_V4_TAG_PBITMAP = 6 CIPSO_V4_TAG_RANGE = 5 CIPSO_V4_TAG_RBITMAP = 1 +DCCP_PKT_ACK = 3 +DCCP_PKT_CLOSE = 6 +DCCP_PKT_CLOSEREQ = 5 +DCCP_PKT_DATA = 2 +DCCP_PKT_DATAACK = 4 +DCCP_PKT_INVALID = 10 +DCCP_PKT_REQUEST = 0 +DCCP_PKT_RESET = 7 +DCCP_PKT_RESPONSE = 1 +DCCP_PKT_SYNC = 8 +DCCP_PKT_SYNCACK = 9 ETH_P_1588 = 35063 ETH_P_8021AD = 34984 ETH_P_8021AH = 35047 diff --git a/sys/vnet_arm64.const b/sys/vnet_arm64.const index fe6731c78..ec468bc1b 100644 --- a/sys/vnet_arm64.const +++ b/sys/vnet_arm64.const @@ -5,6 +5,17 @@ CIPSO_V4_TAG_INVALID = 0 CIPSO_V4_TAG_PBITMAP = 6 CIPSO_V4_TAG_RANGE = 5 CIPSO_V4_TAG_RBITMAP = 1 +DCCP_PKT_ACK = 3 +DCCP_PKT_CLOSE = 6 +DCCP_PKT_CLOSEREQ = 5 +DCCP_PKT_DATA = 2 +DCCP_PKT_DATAACK = 4 +DCCP_PKT_INVALID = 10 +DCCP_PKT_REQUEST = 0 +DCCP_PKT_RESET = 7 +DCCP_PKT_RESPONSE = 1 +DCCP_PKT_SYNC = 8 +DCCP_PKT_SYNCACK = 9 ETH_P_1588 = 35063 ETH_P_8021AD = 34984 ETH_P_8021AH = 35047 diff --git a/sys/vnet_ppc64le.const b/sys/vnet_ppc64le.const index fe6731c78..ec468bc1b 100644 --- a/sys/vnet_ppc64le.const +++ b/sys/vnet_ppc64le.const @@ -5,6 +5,17 @@ CIPSO_V4_TAG_INVALID = 0 CIPSO_V4_TAG_PBITMAP = 6 CIPSO_V4_TAG_RANGE = 5 CIPSO_V4_TAG_RBITMAP = 1 +DCCP_PKT_ACK = 3 +DCCP_PKT_CLOSE = 6 +DCCP_PKT_CLOSEREQ = 5 +DCCP_PKT_DATA = 2 +DCCP_PKT_DATAACK = 4 +DCCP_PKT_INVALID = 10 +DCCP_PKT_REQUEST = 0 +DCCP_PKT_RESET = 7 +DCCP_PKT_RESPONSE = 1 +DCCP_PKT_SYNC = 8 +DCCP_PKT_SYNCACK = 9 ETH_P_1588 = 35063 ETH_P_8021AD = 34984 ETH_P_8021AH = 35047 -- cgit mrf-deployment