blob: 2a72665824510d9ebf31d8abe4fee57b93fdbfbe [file] [log] [blame]
# 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 flags[tipc_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 flags[tipc_scope, int32]
flags const[0, int32]
}