diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2018-12-04 10:56:27 +0100 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2018-12-09 12:52:50 +0100 |
| commit | a3f232631f083a5a8ebe4928a98712f553a6efe7 (patch) | |
| tree | 7cc49ae003b225bb4cc86cd8f48ca55acf221d27 /sys/linux/socket_tipc.txt | |
| parent | 72a027681e92ae83bedc1ff8108c7b43c7d71d63 (diff) | |
sys/linux: add AF_TIPC descriptions
Diffstat (limited to 'sys/linux/socket_tipc.txt')
| -rw-r--r-- | sys/linux/socket_tipc.txt | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/sys/linux/socket_tipc.txt b/sys/linux/socket_tipc.txt new file mode 100644 index 000000000..010800473 --- /dev/null +++ b/sys/linux/socket_tipc.txt @@ -0,0 +1,115 @@ +# Copyright 2018 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. + +include <linux/net.h> +include <uapi/linux/tipc.h> +include <net/tipc/core.h> + +resource sock_tipc[sock] + +type tipc_instance int32[0:4] +type tipc_node_addr int32[0:4] +type tipc_port int32[20000:20004] + +socket$tipc(domain const[AF_TIPC], type flags[tipc_socket_types], proto const[0]) sock_tipc +socketpair$tipc(domain const[AF_TIPC], type flags[tipc_socket_types], proto const[0], fds ptr[out, tipc_pair]) +bind$tipc(fd sock_tipc, addr ptr[in, sockaddr_tipc, opt], addrlen len[addr]) +connect$tipc(fd sock_tipc, addr ptr[in, sockaddr_tipc], addrlen len[addr]) +accept4$tipc(fd sock_tipc, peer ptr[out, sockaddr_tipc, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_tipc +getsockname$tipc(fd sock_tipc, addr ptr[out, sockaddr_tipc], addrlen ptr[inout, len[addr, int32]]) +getpeername$tipc(fd sock_tipc, peer ptr[out, sockaddr_tipc], peerlen ptr[inout, len[peer, int32]]) +sendmsg$tipc(fd sock_tipc, msg ptr[in, msghdr_tipc], f flags[send_flags]) + +ioctl$SIOCGETLINKNAME(fd sock_tipc, cmd const[SIOCGETLINKNAME], arg ptr[in, tipc_sioc_ln_req]) +ioctl$SIOCGETNODEID(fd sock_tipc, cmd const[SIOCGETNODEID], arg ptr[in, tipc_sioc_nodeid_req]) + +setsockopt$TIPC_IMPORTANCE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_IMPORTANCE], val ptr[in, int32], len bytesize[val]) +setsockopt$TIPC_SRC_DROPPABLE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_SRC_DROPPABLE], val ptr[in, int32], len bytesize[val]) +setsockopt$TIPC_DEST_DROPPABLE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_DEST_DROPPABLE], val ptr[in, int32], len bytesize[val]) +setsockopt$TIPC_CONN_TIMEOUT(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_CONN_TIMEOUT], val ptr[in, int32], len bytesize[val]) +setsockopt$TIPC_MCAST_BROADCAST(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_MCAST_BROADCAST]) +setsockopt$TIPC_MCAST_REPLICAST(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_MCAST_REPLICAST]) +setsockopt$TIPC_GROUP_LEAVE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_GROUP_LEAVE]) +setsockopt$TIPC_GROUP_JOIN(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_GROUP_JOIN], val ptr[in, tipc_group_req], len bytesize[val]) + +getsockopt$TIPC_IMPORTANCE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_IMPORTANCE], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$TIPC_SRC_DROPPABLE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_SRC_DROPPABLE], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$TIPC_DEST_DROPPABLE(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_DEST_DROPPABLE], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$TIPC_CONN_TIMEOUT(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_CONN_TIMEOUT], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$TIPC_NODE_RECVQ_DEPTH(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_NODE_RECVQ_DEPTH], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$TIPC_SOCK_RECVQ_DEPTH(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_SOCK_RECVQ_DEPTH], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$TIPC_GROUP_JOIN(fd sock_tipc, level const[SOL_TIPC], opt const[TIPC_GROUP_JOIN], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) + +tipc_socket_types = SOCK_DGRAM, SOCK_SEQPACKET, SOCK_DGRAM +tipc_service_type = TIPC_NODE_STATE, TIPC_TOP_SRV, TIPC_LINK_STATE, TIPC_SERVICE_TYPE0, TIPC_SERVICE_TYPE1, TIPC_SERVICE_TYPE2, TIPC_SERVICE_TYPE3 +define TIPC_SERVICE_TYPE0 TIPC_RESERVED_TYPES + 0 +define TIPC_SERVICE_TYPE1 TIPC_RESERVED_TYPES + 1 +define TIPC_SERVICE_TYPE2 TIPC_RESERVED_TYPES + 2 +define TIPC_SERVICE_TYPE3 TIPC_RESERVED_TYPES + 3 + +tipc_pair { + fd0 sock_tipc + fd1 sock_tipc +} + +sockaddr_tipc [ + nameseq sockaddr_tipc_t[TIPC_ADDR_NAMESEQ, tipc_service_range] + name sockaddr_tipc_t[TIPC_ADDR_NAME, tipc_address_name] + id sockaddr_tipc_t[TIPC_ADDR_ID, tipc_socket_addr] +] + +type sockaddr_tipc_t[TYP, DATA] { + family const[AF_TIPC, int16] + addrtype const[TYP, int8] + scope int8 + addr DATA +} + +msghdr_tipc { + msg_name ptr[in, sockaddr_tipc, opt] + msg_namelen len[msg_name, int32] + msg_iov ptr[in, array[iovec_in]] + msg_iovlen len[msg_iov, intptr] + msg_control ptr[in, array[int8], opt] + msg_controllen bytesize[msg_control, intptr] + msg_flags flags[send_flags, int32] +} + +tipc_address_name { + name tipc_service_addr + domain tipc_node_addr +} + +tipc_socket_addr { + ref tipc_port + node tipc_node_addr +} + +tipc_service_addr { + type flags[tipc_service_type, int32] + instance tipc_instance +} + +tipc_service_range { + type flags[tipc_service_type, int32] + lower tipc_instance + upper tipc_instance +} + +tipc_sioc_ln_req { + peer tipc_node_addr + bearer_id int32[0:MAX_BEARERS] + linkname array[const[0, int8], TIPC_MAX_LINK_NAME] +} + +tipc_sioc_nodeid_req { + peer tipc_node_addr + linkname array[const[0, int8], TIPC_NODEID_LEN] +} + +tipc_group_req { + type int32[TIPC_SERVICE_TYPE0:TIPC_SERVICE_TYPE3] + instance tipc_instance + scope int32[0:TIPC_NODE_SCOPE] + flags const[0, int32] +} |
