diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2015-12-28 16:11:15 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2015-12-28 16:11:15 +0100 |
| commit | bd768c8f40f84598cf2c92a7b0f5a54ff7b53153 (patch) | |
| tree | aeaa10bfd08bd852077baad32ccf401183665dfe /sys/socket.txt | |
| parent | 0451ffa50aaf44ea28bfe729c6080b6ec97f7bb5 (diff) | |
sys: move more subsystems into separate files
Diffstat (limited to 'sys/socket.txt')
| -rw-r--r-- | sys/socket.txt | 586 |
1 files changed, 586 insertions, 0 deletions
diff --git a/sys/socket.txt b/sys/socket.txt new file mode 100644 index 000000000..a33531b98 --- /dev/null +++ b/sys/socket.txt @@ -0,0 +1,586 @@ +# Copyright 2015 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. + +socket(domain flags[socket_domain], type flags[socket_type], proto int8) fd[sock] +socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, pipefd]) +accept(fd fd[sock], peer ptr[out, sockaddr, opt], peerlen ptr[inout, len[peer, int32]]) fd[sock] +accept4(fd fd[sock], peer ptr[out, sockaddr, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) fd[sock] +# TODO: must not bind to port 0, that will result in a random port which is not reproducible +bind(fd fd[sock], addr ptr[in, sockaddr], addrlen len[addr]) +listen(fd fd[sock], backlog int32) +connect(fd fd[sock], addr ptr[in, sockaddr], addrlen len[addr]) +shutdown(fd fd[sock], how flags[shutdown_flags]) +sendto(fd fd[sock], buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr, opt], addrlen len[addr]) +sendmsg(fd fd[sock], msg ptr[in, send_msghdr], f flags[send_flags]) +sendmmsg(fd fd[sock], mmsg ptr[in, array[send_msghdr]], vlen len[mmsg], f flags[send_flags]) +recvfrom(fd fd[sock], buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr, opt], addrlen len[addr]) +recvmsg(fd fd[sock], msg ptr[in, recv_msghdr], f flags[recv_flags]) +recvmmsg(fd fd[sock], mmsg ptr[in, array[recv_msghdr]], vlen len[mmsg], f flags[recv_flags]) +getsockname(fd fd[sock], addr ptr[out, sockaddr], addrlen ptr[inout, len[addr, int32]]) +getpeername(fd fd[sock], peer ptr[out, sockaddr], peerlen ptr[inout, len[peer, int32]]) +getsockopt(fd fd[sock], level int32, optname int32, optval ptr[out, ioctl_arg], optlen ptr[inout, len[optval, int32]]) +setsockopt(fd fd[sock], level int32, optname int32, optval ptr[in, ioctl_arg], optlen len[optval]) +getsockopt$sock_int(fd fd[sock], level const[SOL_SOCKET], optname flags[sockopt_opt_sock_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$sock_int(fd fd[sock], level const[SOL_SOCKET], optname flags[sockopt_opt_sock_int], optval ptr[in, int32], optlen len[optval]) +getsockopt$sock_str(fd fd[sock], level const[SOL_SOCKET], optname const[SO_BINDTODEVICE], optval buffer[out], optlen ptr[inout, len[optval, int32]]) +setsockopt$sock_str(fd fd[sock], level const[SOL_SOCKET], optname const[SO_BINDTODEVICE], optval string, optlen len[optval]) +getsockopt$sock_linger(fd fd[sock], level const[SOL_SOCKET], optname const[SO_LINGER], optval ptr[out, linger], optlen ptr[inout, len[optval, int32]]) +setsockopt$sock_linger(fd fd[sock], level const[SOL_SOCKET], optname const[SO_LINGER], optval ptr[in, linger], optlen len[optval]) +getsockopt$sock_cred(fd fd[sock], level const[SOL_SOCKET], optname const[SO_PEERCRED], optval ptr[out, ucred], optlen ptr[inout, len[optval, int32]]) +setsockopt$sock_cred(fd fd[sock], level const[SOL_SOCKET], optname const[SO_PEERCRED], optval ptr[in, ucred], optlen len[optval]) +getsockopt$sock_timeval(fd fd[sock], level const[SOL_SOCKET], optname flags[sockopt_opt_sock_timeval], optval ptr[out, timeval], optlen ptr[inout, len[optval, int32]]) +setsockopt$sock_timeval(fd fd[sock], level const[SOL_SOCKET], optname flags[sockopt_opt_sock_timeval], optval ptr[in, timeval], optlen len[optval]) +setsockopt$sock_attach_bpf(fd fd[sock], level const[SOL_SOCKET], optname const[SO_ATTACH_BPF], optval ptr[in, fd[bpf_prog]], optlen len[optval]) +getsockopt$tcp_int(fd fd[sock], level const[IPPROTO_TCP], optname flags[sockopt_opt_tcp_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$tcp_int(fd fd[sock], level const[IPPROTO_TCP], optname flags[sockopt_opt_tcp_int], optval ptr[in, int32], optlen len[optval]) +getsockopt$tcp_buf(fd fd[sock], level const[IPPROTO_TCP], optname const[TCP_INFO], optval buffer[out], optlen ptr[inout, len[optval, int32]]) +setsockopt$tcp_buf(fd fd[sock], level const[IPPROTO_TCP], optname const[TCP_INFO], optval buffer[in], optlen len[optval]) +getsockopt$udp_int(fd fd[sock], level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$udp_int(fd fd[sock], level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[in, int32], optlen len[optval]) +getsockopt$ip_int(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_int(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_int], optval ptr[in, int32], optlen len[optval]) +getsockopt$ip_mreq(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[out, ip_mreq], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_mreq(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[in, ip_mreq], optlen len[optval]) +getsockopt$ip_mreqn(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[out, ip_mreqn], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_mreqn(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[in, ip_mreqn], optlen len[optval]) +getsockopt$ip_mreqsrc(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreqsrc], optval ptr[out, ip_mreq_source], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_mreqsrc(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreqsrc], optval ptr[in, ip_mreq_source], optlen len[optval]) +getsockopt$ip_msfilter(fd fd[sock], level const[IPPROTO_IP], optname const[IP_MSFILTER], optval ptr[out, ip_msfilter], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_msfilter(fd fd[sock], level const[IPPROTO_IP], optname const[IP_MSFILTER], optval ptr[in, ip_msfilter], optlen len[optval]) +getsockopt$ip_mtu(fd fd[sock], level const[IPPROTO_IP], optname const[IP_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_mtu(fd fd[sock], level const[IPPROTO_IP], optname const[IP_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval]) +getsockopt$ip_opts(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[out], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_opts(fd fd[sock], level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[in], optlen len[optval]) +getsockopt$ip_pktinfo(fd fd[sock], level const[IPPROTO_IP], optname const[IP_PKTINFO], optval ptr[out, in_pktinfo], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_pktinfo(fd fd[sock], level const[IPPROTO_IP], optname const[IP_PKTINFO], optval ptr[in, in_pktinfo], optlen len[optval]) +getsockopt$ip_ipsec(fd fd[sock], level const[IPPROTO_IP], optname const[IP_IPSEC_POLICY], optval ptr[out, xfrm_filer], optlen ptr[inout, len[optval, int32]]) +setsockopt$ip_ipsec(fd fd[sock], level const[IPPROTO_IP], optname const[IP_IPSEC_POLICY], optval ptr[in, xfrm_filer], optlen len[optval]) +getsockopt$ipv6_int(fd fd[sock], level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]]) +setsockopt$ipv6_int(fd fd[sock], level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_int], optval ptr[in, int32], optlen len[optval]) +getsockopt$ipv6_mreq(fd fd[sock], level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_mreq], optval ptr[out, ipv6_mreq], optlen ptr[inout, len[optval, int32]]) +setsockopt$ipv6_mreq(fd fd[sock], level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_mreq], optval ptr[in, ipv6_mreq], optlen len[optval]) +getsockopt$ipv6_mtu(fd fd[sock], level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]]) +setsockopt$ipv6_mtu(fd fd[sock], level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval]) +getsockopt$ipv6_opts(fd fd[sock], level const[IPPROTO_IPV6], optname const[IPV6_2292PKTOPTIONS], optval buffer[out], optlen ptr[inout, len[optval, int32]]) +setsockopt$ipv6_opts(fd fd[sock], level const[IPPROTO_IPV6], optname const[IPV6_2292PKTOPTIONS], optval buffer[in], optlen len[optval]) + +socket_domain = AF_LOCAL, AF_INET, AF_INET6, AF_IPX, AF_NETLINK, AF_X25, AF_AX25, AF_ATMPVC, AF_APPLETALK, AF_PACKET +socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET, SOCK_RAW, SOCK_RDM, SOCK_PACKET, SOCK_NONBLOCK, SOCK_CLOEXEC +accept_flags = SOCK_NONBLOCK, SOCK_CLOEXEC +shutdown_flags = SHUT_RD, SHUT_WR +send_flags = MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT, MSG_EOR, MSG_MORE, MSG_NOSIGNAL, MSG_OOB +recv_flags = MSG_CMSG_CLOEXEC, MSG_DONTWAIT, MSG_ERRQUEUE, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL, MSG_WAITFORONE + + + + +# PF_ALG support. + +socket$alg(domain const[AF_ALG], type const[SOCK_SEQPACKET], proto const[0]) fd[alg] +bind$alg(fd fd[alg], addr ptr[in, sockaddr_alg], addrlen len[addr]) +setsockopt$ALG_SET_KEY(fd fd[alg], level const[SOL_ALG], opt const[ALG_SET_KEY], key buffer[in], keylen len[key]) +setsockopt$ALG_SET_AEAD_AUTHSIZE(fd fd[alg], level const[SOL_ALG], opt const[ALG_SET_AEAD_AUTHSIZE], val const[0], size intptr) +accept$alg(fd fd[alg], peer ptr[out, sockaddr_alg, opt], peerlen ptr[inout, len[peer, int32]]) fd[algconn] +sendmsg$alg(fd fd[algconn], msg ptr[in, alg_send_msghdr], f flags[send_flags]) +sendmmsg$alg(fd fd[algconn], mmsg ptr[in, array[alg_send_msghdr]], vlen len[mmsg], f flags[send_flags]) +recvmsg$alg(fd fd[algconn], msg ptr[in, alg_recv_msghdr], f flags[recv_flags]) +recvmmsg$alg(fd fd[algconn], mmsg ptr[in, array[alg_recv_msghdr]], vlen len[mmsg], f flags[recv_flags]) + +sockaddr_alg { + family const[AF_ALG, int16] + type salg_type + feat flags[af_alg_type, int32] + mask flags[af_alg_type, int32] + name salg_name +} + +alg_send_msghdr { + addr const[0, intptr] + addrlen const[0, int32] + vec ptr[in, array[iovec_in]] + vlen len[vec, intptr] + ctrl ptr[in, alg_cmsghdr, opt] + ctrllen len[ctrl, intptr] + f flags[send_flags, int32] +} + +alg_recv_msghdr { + addr const[0, intptr] + addrlen const[0, int32] + vec ptr[in, array[iovec_out]] + vlen len[vec, intptr] + ctrl buffer[out] + ctrllen len[ctrl, intptr] + f int32 +} + +alg_cmsghdr { + iv alg_cmsghdr_iv + op alg_cmsghdr_op + assoc alg_cmsghdr_assoc +} + +alg_cmsghdr_iv { + len len[parent, intptr] + level const[SOL_ALG, int32] + type const[ALG_SET_IV, int32] + ivlen len[iv, int32] + iv array[int8] +} + +alg_cmsghdr_op { + len len[parent, intptr] + level const[SOL_ALG, int32] + type const[ALG_SET_OP, int32] + op int32 +} + +alg_cmsghdr_assoc { + len len[parent, intptr] + level const[SOL_ALG, int32] + type const[ALG_SET_AEAD_ASSOCLEN, int32] + assoc int32 +} + +af_alg_type = CRYPTO_ALG_TYPE_MASK, CRYPTO_ALG_TYPE_CIPHER, CRYPTO_ALG_TYPE_COMPRESS, CRYPTO_ALG_TYPE_AEAD, CRYPTO_ALG_TYPE_BLKCIPHER, CRYPTO_ALG_TYPE_ABLKCIPHER, CRYPTO_ALG_TYPE_GIVCIPHER, CRYPTO_ALG_TYPE_DIGEST, CRYPTO_ALG_TYPE_HASH, CRYPTO_ALG_TYPE_SHASH, CRYPTO_ALG_TYPE_AHASH, CRYPTO_ALG_TYPE_RNG, CRYPTO_ALG_TYPE_AKCIPHER, CRYPTO_ALG_TYPE_PCOMPRESS, CRYPTO_ALG_LARVAL, CRYPTO_ALG_DEAD, CRYPTO_ALG_DYING, CRYPTO_ALG_ASYNC, CRYPTO_ALG_NEED_FALLBACK, CRYPTO_ALG_GENIV, CRYPTO_ALG_TESTED, CRYPTO_ALG_INSTANCE, CRYPTO_ALG_KERN_DRIVER_ONLY, CRYPTO_ALG_INTERNAL + +define CRYPTO_ALG_TYPE_MASK 0x0000000f +define CRYPTO_ALG_TYPE_CIPHER 0x00000001 +define CRYPTO_ALG_TYPE_COMPRESS 0x00000002 +define CRYPTO_ALG_TYPE_AEAD 0x00000003 +define CRYPTO_ALG_TYPE_BLKCIPHER 0x00000004 +define CRYPTO_ALG_TYPE_ABLKCIPHER 0x00000005 +define CRYPTO_ALG_TYPE_GIVCIPHER 0x00000006 +define CRYPTO_ALG_TYPE_DIGEST 0x00000008 +define CRYPTO_ALG_TYPE_HASH 0x00000008 +define CRYPTO_ALG_TYPE_SHASH 0x00000009 +define CRYPTO_ALG_TYPE_AHASH 0x0000000a +define CRYPTO_ALG_TYPE_RNG 0x0000000c +define CRYPTO_ALG_TYPE_AKCIPHER 0x0000000d +define CRYPTO_ALG_TYPE_PCOMPRESS 0x0000000f +define CRYPTO_ALG_LARVAL 0x00000010 +define CRYPTO_ALG_DEAD 0x00000020 +define CRYPTO_ALG_DYING 0x00000040 +define CRYPTO_ALG_ASYNC 0x00000080 +define CRYPTO_ALG_NEED_FALLBACK 0x00000100 +define CRYPTO_ALG_GENIV 0x00000200 +define CRYPTO_ALG_TESTED 0x00000400 +define CRYPTO_ALG_INSTANCE 0x00000800 +define CRYPTO_ALG_KERN_DRIVER_ONLY 0x00001000 +define CRYPTO_ALG_INTERNAL 0x00002000 +define ALG_SET_KEY 1 +define ALG_SET_IV 2 +define ALG_SET_OP 3 +define ALG_SET_AEAD_ASSOCLEN 4 +define ALG_SET_AEAD_AUTHSIZE 5 +#define AF_ALG 38 +define SOL_ALG 279 + + + + +# PF_KEY support. + +# See net/key/af_key.c, requires root. +# socket$key(domain const[AF_KEY], type const[SOCK_RAW], proto const[PF_KEY_V2]) fd[key] + + + + +# PF_NFC support. + +socket$nfc_llcp(domain const[AF_NFC], type flags[nfc_llcp_type], proto const[NFC_SOCKPROTO_LLCP]) fd[nfc_llcp] +bind$nfc_llcp(fd fd[nfc_llcp], addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr]) +connect$nfc_llcp(fd fd[nfc_llcp], addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr]) +accept$nfc_llcp(fd fd[nfc_llcp], peer ptr[out, sockaddr_nfc_llcp, opt], peerlen ptr[inout, len[peer, int32]]) fd[nfc_llcp] +setsockopt$NFC_LLCP_RW(fd fd[nfc_llcp], level const[SOL_NFC], opt const[NFC_LLCP_RW], arg ptr[in, int32], arglen len[arg]) +setsockopt$NFC_LLCP_MIUX(fd fd[nfc_llcp], level const[SOL_NFC], opt const[NFC_LLCP_MIUX], arg ptr[in, int32], arglen len[arg]) +getsockopt$nfc_llcp(fd fd[nfc_llcp], level const[SOL_NFC], opt flags[nfc_llcp_opts], arg buffer[out], arglen len[arg]) +sendmsg$nfc_llcp(fd fd[nfc_llcp], msg ptr[in, nfc_llcp_send_msghdr], f flags[send_flags]) +sendmmsg$nfc_llcp(fd fd[nfc_llcp], mmsg ptr[in, array[nfc_llcp_send_msghdr]], vlen len[mmsg], f flags[send_flags]) + +socket$nfc_raw(domain const[AF_NFC], type flags[nfc_raw_type], proto const[NFC_SOCKPROTO_RAW]) fd[nfc_raw] +connect$nfc_raw(fd fd[nfc_raw], addr ptr[in, sockaddr_nfc], addrlen len[addr]) + +nfc_llcp_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW +nfc_raw_type = SOCK_STREAM, SOCK_RAW +nfc_proto = NFC_PROTO_JEWEL, NFC_PROTO_MIFARE, NFC_PROTO_FELICA, NFC_PROTO_ISO14443, NFC_PROTO_NFC_DEP, NFC_PROTO_ISO14443_B, NFC_PROTO_ISO15693 +nfc_llcp_opts = NFC_LLCP_RW, NFC_LLCP_MIUX, NFC_LLCP_REMOTE_MIU, NFC_LLCP_REMOTE_LTO, NFC_LLCP_REMOTE_RW + +sockaddr_nfc_llcp { + family const[AF_NFC, int16] + devidx int32 + target int32 + proto flags[nfc_proto, int32] + dsap int8 + ssap int8 +# TODO: need fixed-length arrays +# char service_name[63] + serv0 int8 + serv1 int8 + serv2 int32 + serv3 int32 + serv4 int32 + serv5 int32 + serv6 int32 + serv7 int32 + serv8 int32 + serv9 int32 + serv10 int32 + serv11 int32 + serv12 int32 + serv13 int32 + serv14 int32 + serv15 int32 + serv16 int32 + serv17 int8 + servlen intptr +} + +sockaddr_nfc { + family const[AF_NFC, int16] + dev int32 + targ int32 + proto flags[nfc_proto, int32] +} + +nfc_llcp_send_msghdr { + addr ptr[in, sockaddr_nfc_llcp] + addrlen len[addr, int32] + vec ptr[in, array[iovec_in]] + vlen len[vec, intptr] + ctrl ptr[in, cmsghdr] + ctrllen len[ctrl, intptr] + f flags[send_flags, int32] +} + +define SOL_NFC 280 +define NFC_PROTO_ISO15693 7 + + + + +# PF_BLUETOOTH support. + +socket$bt_hci(fam const[PF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_HCI]) fd[bt_hci] +bind$bt_hci(fd fd[bt_hci], addr ptr[in, sockaddr_hci], addrlen len[addr]) +ioctl$bt_hci(fd fd[bt_hci], cmd flags[bt_hci_ioctl], arg buffer[inout]) +setsockopt$HCI_DATA_DIR(fd fd[bt_hci], level const[0], opt const[HCI_DATA_DIR], arg ptr[in, int32], arglen len[arg]) +setsockopt$HCI_TIME_STAMP(fd fd[bt_hci], level const[0], opt const[HCI_TIME_STAMP], arg ptr[in, int32], arglen len[arg]) +setsockopt$HCI_FILTER(fd fd[bt_hci], level const[0], opt const[HCI_FILTER], arg ptr[in, hci_ufilter], arglen len[arg]) +getsockopt$bt_hci(fd fd[sock], level const[0], opt flags[bt_hci_sockopt], arg buffer[out], arglen ptr[inout, len[arg, int32]]) + +socket$bt_sco(fam const[PF_BLUETOOTH], type const[SOCK_SEQPACKET], proto const[BTPROTO_SCO]) fd[bt_sco] +bind$bt_sco(fd fd[bt_sco], addr ptr[in, sockaddr_sco], addrlen len[addr]) +connect$bt_sco(fd fd[bt_sco], addr ptr[in, sockaddr_sco], addrlen len[addr]) +getsockopt$SCO_OPTIONS(fd fd[bt_sco], level const[SOL_SCO], opt const[SCO_OPTIONS], arg buffer[out], arglen ptr[inout, len[arg, int32]]) +getsockopt$SCO_CONNINFO(fd fd[bt_sco], level const[SOL_SCO], opt const[SCO_CONNINFO], arg buffer[out], arglen ptr[inout, len[arg, int32]]) + +socket$bt_l2cap(fam const[PF_BLUETOOTH], type flags[bt_l2cap_type], proto const[BTPROTO_L2CAP]) fd[bt_l2cap] +bind$bt_l2cap(fd fd[bt_l2cap], addr ptr[in, sockaddr_l2], addrlen len[addr]) +connect$bt_l2cap(fd fd[bt_l2cap], addr ptr[in, sockaddr_l2], addrlen len[addr]) +setsockopt$L2CAP_OPTIONS(fd fd[bt_l2cap], level const[SOL_L2CAP], opt const[L2CAP_OPTIONS], arg ptr[in, l2cap_options], arglen len[arg]) +getsockopt$L2CAP_OPTIONS(fd fd[bt_l2cap], level const[SOL_L2CAP], opt const[L2CAP_OPTIONS], arg ptr[out, l2cap_options], arglen ptr[inout, len[arg, int32]]) +setsockopt$L2CAP_LM(fd fd[bt_l2cap], level const[SOL_L2CAP], opt const[L2CAP_LM], arg ptr[in, flags[bt_l2cap_lm, int32]], arglen len[arg]) +getsockopt$L2CAP_LM(fd fd[bt_l2cap], level const[SOL_L2CAP], opt const[L2CAP_LM], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]]) +setsockopt$L2CAP_CONNINFO(fd fd[bt_l2cap], level const[SOL_L2CAP], opt const[L2CAP_CONNINFO], arg ptr[in, l2cap_conninfo], arglen len[arg]) +getsockopt$L2CAP_CONNINFO(fd fd[bt_l2cap], level const[SOL_L2CAP], opt const[L2CAP_CONNINFO], arg ptr[out, l2cap_conninfo], arglen ptr[inout, len[arg, int32]]) + +socket$bt_rfcomm(fam const[PF_BLUETOOTH], type flags[bt_rfcomm_type], proto const[BTPROTO_RFCOMM]) fd[bt_rfcomm] +bind$bt_rfcomm(fd fd[bt_rfcomm], addr ptr[in, sockaddr_rc], addrlen len[addr]) +connect$bt_rfcomm(fd fd[bt_rfcomm], addr ptr[in, sockaddr_rc], addrlen len[addr]) +setsockopt$RFCOMM_LM(fd fd[bt_rfcomm], level const[SOL_RFCOMM], opt const[RFCOMM_LM], arg ptr[in, flags[bt_l2cap_lm, int32]], arglen len[arg]) +getsockopt$RFCOMM_LM(fd fd[bt_rfcomm], level const[SOL_RFCOMM], opt const[RFCOMM_LM], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]]) +getsockopt$RFCOMM_CONNINFO(fd fd[bt_rfcomm], level const[SOL_RFCOMM], opt const[RFCOMM_CONNINFO], arg buffer[out], arglen ptr[inout, len[arg, int32]]) + +socket$bt_hidp(fam const[PF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_HIDP]) fd[bt_hidp] +ioctl$HIDPCONNADD(fd fd[bt_hidp], cmd const[HIDPCONNADD], arg ptr[in, hidp_connadd_req]) +ioctl$HIDPCONNDEL(fd fd[bt_hidp], cmd const[HIDPCONNDEL], arg ptr[in, hidp_conndel_req]) +ioctl$HIDPGETCONNLIST(fd fd[bt_hidp], cmd const[HIDPGETCONNLIST], arg ptr[in, hidp_connlist_req]) +ioctl$HIDPGETCONNINFO(fd fd[bt_hidp], cmd const[HIDPGETCONNINFO], arg ptr[in, hidp_conninfo]) + +socket$bt_cmtp(fam const[PF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_CMTP]) fd[bt_cmtp] +ioctl$CMTPCONNADD(fd fd[bt_cmtp], cmd const[CMTPCONNADD], arg ptr[in, cmtp_connadd_req]) +ioctl$CMTPCONNDEL(fd fd[bt_cmtp], cmd const[CMTPCONNDEL], arg ptr[in, cmtp_conndel_req]) +ioctl$CMTPGETCONNLIST(fd fd[bt_cmtp], cmd const[CMTPGETCONNLIST], arg ptr[in, cmtp_connlist_req]) +ioctl$CMTPGETCONNINFO(fd fd[bt_cmtp], cmd const[CMTPGETCONNINFO], arg ptr[in, cmtp_conninfo]) + +socket$bt_bnep(fam const[PF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_BNEP]) fd[bt_bnep] +ioctl$BNEPCONNADD(fd fd[bt_bnep], cmd const[BNEPCONNADD], arg ptr[in, bnep_connadd_req]) +ioctl$BNEPCONNDEL(fd fd[bt_bnep], cmd const[BNEPCONNDEL], arg ptr[in, bnep_conndel_req]) +ioctl$BNEPGETCONNLIST(fd fd[bt_bnep], cmd const[BNEPGETCONNLIST], arg ptr[in, bnep_connlist_req]) +ioctl$BNEPGETCONNINFO(fd fd[bt_bnep], cmd const[BNEPGETCONNINFO], arg ptr[in, bnep_conninfo]) +ioctl$BNEPGETSUPPFEAT(fd fd[bt_bnep], cmd const[BNEPGETSUPPFEAT], arg ptr[in, int32]) + +# These are common for several bluetooth sockets (sco, l2cap, rfcomm). +ioctl$bt(fd fd, cmd flags[bt_ioctl], arg buffer[inout]) +setsockopt$BT_SECURITY(fd fd, level const[SOL_BLUETOOTH], opt const[BT_SECURITY], arg ptr[in, bt_security], arglen len[arg]) +getsockopt$BT_SECURITY(fd fd, level const[SOL_BLUETOOTH], opt const[BT_SECURITY], arg ptr[out, bt_security], arglen len[arg]) +setsockopt$BT_DEFER_SETUP(fd fd, level const[SOL_BLUETOOTH], opt const[BT_DEFER_SETUP], arg ptr[in, int32], arglen len[arg]) +getsockopt$BT_DEFER_SETUP(fd fd, level const[SOL_BLUETOOTH], opt const[BT_DEFER_SETUP], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]]) +setsockopt$BT_VOICE(fd fd, level const[SOL_BLUETOOTH], opt const[BT_VOICE], arg ptr[in, int16], arglen len[arg]) +getsockopt$BT_VOICE(fd fd, level const[SOL_BLUETOOTH], opt const[BT_VOICE], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]]) +setsockopt$BT_FLUSHABLE(fd fd, level const[SOL_BLUETOOTH], opt const[BT_FLUSHABLE], arg ptr[in, int32], arglen len[arg]) +getsockopt$BT_FLUSHABLE(fd fd, level const[SOL_BLUETOOTH], opt const[BT_FLUSHABLE], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]]) +setsockopt$BT_POWER(fd fd, level const[SOL_BLUETOOTH], opt const[BT_POWER], arg ptr[in, int8], arglen len[arg]) +getsockopt$BT_POWER(fd fd, level const[SOL_BLUETOOTH], opt const[BT_POWER], arg ptr[in, int8], arglen ptr[in, len[arg, intptr]]) +setsockopt$BT_CHANNEL_POLICY(fd fd, level const[SOL_BLUETOOTH], opt const[BT_CHANNEL_POLICY], arg ptr[in, int32], arglen len[arg]) +getsockopt$BT_CHANNEL_POLICY(fd fd, level const[SOL_BLUETOOTH], opt const[BT_CHANNEL_POLICY], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]]) +setsockopt$BT_SNDMTU(fd fd, level const[SOL_BLUETOOTH], opt const[BT_SNDMTU], arg ptr[in, int16], arglen len[arg]) +getsockopt$BT_SNDMTU(fd fd, level const[SOL_BLUETOOTH], opt const[BT_SNDMTU], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]]) +setsockopt$BT_RCVMTU(fd fd, level const[SOL_BLUETOOTH], opt const[BT_RCVMTU], arg ptr[in, int16], arglen len[arg]) +getsockopt$BT_RCVMTU(fd fd, level const[SOL_BLUETOOTH], opt const[BT_RCVMTU], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]]) + +sockaddr_hci { + fam const[PF_BLUETOOTH, int16] + dev int16 + chan flags[bt_chi_chan, int16] +} + +hci_inquiry_req { + dev int16 + flags int16 + lap0 int8 + lap1 int8 + lap2 int8 + len int8 + rsp int8 +} + +hci_ufilter { + type int32 + event0 int32 + event1 int32 + opcode int16 +} + +sockaddr_sco { + fam const[PF_BLUETOOTH, int16] + addr bdaddr +} + +sockaddr_l2 { + fam const[PF_BLUETOOTH, int16] + psm int16 + addr bdaddr + cid int16 + typ int8 +} + +bdaddr { + addr0 int8 + addr1 int8 + addr2 int8 + addr3 int8 + addr4 int8 + addr5 int8 +} + +bt_security { + lev int8 + keysize int8 +} + +l2cap_options { + omtu int16 + imtu int16 + flushto int16 + mode int8 + fcs int8 + maxtx int8 + txwin int16 +} + +l2cap_conninfo { + handle int16 + devcls0 int8 + devcls1 int8 + devcls2 int8 +} + +sockaddr_rc { + fam const[PF_BLUETOOTH, int16] + addr bdaddr + chan int8 +} + +hidp_connadd_req { + ctrlsk fd + intrsk fd + parser int16 + rdsize int16 + rddata buffer[in] + country int8 + subclas int8 + vendor int16 + product int16 + version int16 + flags int32 + idleto int32 + name array[int8] +} + +hidp_conndel_req { + addr bdaddr + flags int32 +} + +hidp_conninfo { + addr bdaddr + flags int32 + state int16 + vendor int16 + product int16 + ver int16 + name array[int8] +} + +hidp_connlist_req { + cnum len[ci, int32] + ci ptr[out, array[hidp_conninfo]] +} + +cmtp_connadd_req { + sock fd + flags int32 +} + +cmtp_conndel_req { + addr bdaddr + flags int32 +} + +cmtp_conninfo { + addr bdaddr + flags int32 + state int16 + num int32 +} + +cmtp_connlist_req { + cnum len[ci, int32] + ci ptr[out, array[cmtp_conninfo]] +} + +bnep_connadd_req { + sock fd + flags int32 + role int16 + device array[int8] +} + +bnep_conndel_req { + flags int32 + dst array[int8, 6] +} + +bnep_conninfo { + flags int32 + role int16 + state int16 + dst array[int8, 6] + device array[int8, 16] +} + +bnep_connlist_req { + cnum len[ci, int32] + ci ptr[out, array[bnep_conninfo]] +} + +bt_chi_chan = HCI_CHANNEL_RAW, HCI_CHANNEL_USER, HCI_CHANNEL_MONITOR, HCI_CHANNEL_CONTROL +bt_hci_ioctl = HCIDEVUP, HCIDEVDOWN, HCIDEVRESET, HCIDEVRESTAT, HCIGETDEVLIST, HCIGETDEVINFO, HCIGETCONNLIST, HCIGETCONNINFO, HCIGETAUTHINFO, HCISETRAW, HCISETSCAN, HCISETAUTH, HCISETENCRYPT, HCISETPTYPE, HCISETLINKPOL, HCISETLINKMODE, HCISETACLMTU, HCISETSCOMTU, HCIBLOCKADDR, HCIUNBLOCKADDR, HCIINQUIRY +bt_hci_sockopt = HCI_DATA_DIR, HCI_TIME_STAMP, HCI_FILTER +bt_ioctl = TIOCOUTQ, TIOCINQ, SIOCGSTAMP, SIOCGSTAMPNS +bt_l2cap_type = SOCK_SEQPACKET, SOCK_STREAM, SOCK_DGRAM, SOCK_RAW +bt_l2cap_lm = L2CAP_LM_MASTER, L2CAP_LM_AUTH, L2CAP_LM_ENCRYPT, L2CAP_LM_TRUSTED, L2CAP_LM_RELIABLE, L2CAP_LM_SECURE, L2CAP_LM_FIPS +bt_rfcomm_type = SOCK_STREAM, SOCK_RAW + +define BTPROTO_L2CAP 0 +define BTPROTO_HCI 1 +define BTPROTO_SCO 2 +define BTPROTO_RFCOMM 3 +define BTPROTO_BNEP 4 +define BTPROTO_CMTP 5 +define BTPROTO_HIDP 6 +define BTPROTO_AVDTP 7 + +define SOL_BLUETOOTH 274 +define SOL_HCI 0 +define SOL_L2CAP 6 +define SOL_SCO 17 +define SOL_RFCOMM 18 + +define HCI_DATA_DIR 1 +define HCI_FILTER 2 +define HCI_TIME_STAMP 3 + +define HCI_CHANNEL_RAW 0 +define HCI_CHANNEL_USER 1 +define HCI_CHANNEL_MONITOR 2 +define HCI_CHANNEL_CONTROL 3 + +define HCIDEVUP _IOW('H', 201, int) +define HCIDEVDOWN _IOW('H', 202, int) +define HCIDEVRESET _IOW('H', 203, int) +define HCIDEVRESTAT _IOW('H', 204, int) +define HCIGETDEVLIST _IOR('H', 210, int) +define HCIGETDEVINFO _IOR('H', 211, int) +define HCIGETCONNLIST _IOR('H', 212, int) +define HCIGETCONNINFO _IOR('H', 213, int) +define HCIGETAUTHINFO _IOR('H', 215, int) +define HCISETRAW _IOW('H', 220, int) +define HCISETSCAN _IOW('H', 221, int) +define HCISETAUTH _IOW('H', 222, int) +define HCISETENCRYPT _IOW('H', 223, int) +define HCISETPTYPE _IOW('H', 224, int) +define HCISETLINKPOL _IOW('H', 225, int) +define HCISETLINKMODE _IOW('H', 226, int) +define HCISETACLMTU _IOW('H', 227, int) +define HCISETSCOMTU _IOW('H', 228, int) +define HCIBLOCKADDR _IOW('H', 230, int) +define HCIUNBLOCKADDR _IOW('H', 231, int) +define HCIINQUIRY _IOR('H', 240, int) + +define BT_SECURITY 4 +define BT_DEFER_SETUP 7 +define BT_VOICE 11 +define BT_SNDMTU 12 +define BT_RCVMTU 13 +define BT_CHANNEL_POLICY 10 +define BT_FLUSHABLE 8 +define BT_POWER 9 + +define SCO_OPTIONS 0x01 +define SCO_CONNINFO 0x02 + +define L2CAP_OPTIONS 0x01 +define L2CAP_CONNINFO 0x02 +define L2CAP_LM 0x03 + +define L2CAP_LM_MASTER 0x0001 +define L2CAP_LM_AUTH 0x0002 +define L2CAP_LM_ENCRYPT 0x0004 +define L2CAP_LM_TRUSTED 0x0008 +define L2CAP_LM_RELIABLE 0x0010 +define L2CAP_LM_SECURE 0x0020 +define L2CAP_LM_FIPS 0x0040 + +define RFCOMM_CONNINFO 0x02 +define RFCOMM_LM 0x03 + +define HIDPCONNADD _IOW('H', 200, int) +define HIDPCONNDEL _IOW('H', 201, int) +define HIDPGETCONNLIST _IOR('H', 210, int) +define HIDPGETCONNINFO _IOR('H', 211, int) + +define CMTPCONNADD _IOW('C', 200, int) +define CMTPCONNDEL _IOW('C', 201, int) +define CMTPGETCONNLIST _IOR('C', 210, int) +define CMTPGETCONNINFO _IOR('C', 211, int) + +define BNEPCONNADD _IOW('B', 200, int) +define BNEPCONNDEL _IOW('B', 201, int) +define BNEPGETCONNLIST _IOR('B', 210, int) +define BNEPGETCONNINFO _IOR('B', 211, int) +define BNEPGETSUPPFEAT _IOR('B', 212, int) + |
