• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2017 syzkaller project authors. All rights reserved.
2# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
3
4# AF_UNIX support.
5
6include <linux/socket.h>
7include <linux/net.h>
8include <uapi/linux/un.h>
9
10resource sock_unix[sock]
11
12socket$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0]) sock_unix
13socketpair$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0], fds ptr[out, unix_pair])
14bind$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
15connect$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
16accept$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]]) sock_unix
17accept4$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_unix
18
19sendto$unix(fd sock_unix, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
20sendmsg$unix(fd sock_unix, msg ptr[in, msghdr_un], f flags[send_flags])
21sendmmsg$unix(fd sock_unix, mmsg ptr[in, array[msghdr_un]], vlen len[mmsg], f flags[send_flags])
22recvfrom$unix(fd sock_unix, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
23getsockname$unix(fd sock_unix, addr ptr[out, sockaddr_un], addrlen ptr[inout, len[addr, int32]])
24getpeername$unix(fd sock_unix, peer ptr[out, sockaddr_un], peerlen ptr[inout, len[peer, int32]])
25
26unix_socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET
27unix_socket_family = AF_UNIX, AF_UNSPEC
28
29unix_pair {
30	fd0	sock_unix
31	fd1	sock_unix
32}
33
34sockaddr_un [
35	file	sockaddr_un_file
36	abs	sockaddr_un_abstract
37]
38
39sockaddr_un_file {
40	family	flags[unix_socket_family, int16]
41	path	string[filename, UNIX_PATH_MAX]
42}
43
44sockaddr_un_abstract {
45	family	flags[unix_socket_family, int16]
46	ind	const[0, int8]
47	id	int32[20000:20004]
48}
49
50msghdr_un {
51	addr	ptr[in, sockaddr_un]
52	addrlen	len[addr, int32]
53	vec	ptr[in, array[iovec_in]]
54	vlen	len[vec, intptr]
55	ctrl	ptr[in, array[cmsghdr_un], opt]
56	ctrllen	bytesize[ctrl, intptr]
57	f	flags[send_flags, int32]
58}
59
60cmsghdr_un [
61	rights	cmsghdr_un_rights
62	cred	cmsghdr_un_cred
63] [varlen]
64
65cmsghdr_un_rights {
66	len	len[parent, intptr]
67	level	const[SOL_SOCKET, int32]
68	type	const[SCM_RIGHTS, int32]
69	fds	array[fd]
70} [align_ptr]
71
72cmsghdr_un_cred {
73	len	len[parent, intptr]
74	level	const[SOL_SOCKET, int32]
75	type	const[SCM_CREDENTIALS, int32]
76	pid	pid
77	uid	uid
78	gid	gid
79} [align_ptr]
80