aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/socket_tipc.txt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-12-04 10:56:27 +0100
committerDmitry Vyukov <dvyukov@google.com>2018-12-09 12:52:50 +0100
commita3f232631f083a5a8ebe4928a98712f553a6efe7 (patch)
tree7cc49ae003b225bb4cc86cd8f48ca55acf221d27 /sys/linux/socket_tipc.txt
parent72a027681e92ae83bedc1ff8108c7b43c7d71d63 (diff)
sys/linux: add AF_TIPC descriptions
Diffstat (limited to 'sys/linux/socket_tipc.txt')
-rw-r--r--sys/linux/socket_tipc.txt115
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]
+}