• 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 <sys/types.h>
7include <sys/socket.h>
8include <netinet/in.h>
9include <compat/linux/common/linux_socket.h>
10
11resource sock_unix[sock]
12
13socket$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0]) sock_unix
14socketpair$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0], fds ptr[out, unix_pair])
15bind$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
16connect$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
17accept$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]]) 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])
21recvfrom$unix(fd sock_unix, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
22getsockname$unix(fd sock_unix, addr ptr[out, sockaddr_un], addrlen ptr[inout, len[addr, int32]])
23getpeername$unix(fd sock_unix, peer ptr[out, sockaddr_un], peerlen ptr[inout, len[peer, int32]])
24
25unix_socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET
26unix_socket_family = AF_UNIX, AF_UNSPEC
27
28unix_pair {
29	fd0	sock_unix
30	fd1	sock_unix
31}
32
33sockaddr_un [
34	file	sockaddr_un_file
35	abs	sockaddr_un_abstract
36] [varlen]
37
38sockaddr_un_file {
39	family	flags[unix_socket_family, int16]
40	path	filename
41} [packed]
42
43sockaddr_un_abstract {
44	family	flags[unix_socket_family, int16]
45	ind	const[0, int8]
46	id	proc[20000, 4, int32]
47}
48
49msghdr_un {
50	addr	ptr[in, sockaddr_un]
51	addrlen	len[addr, int32]
52	vec	ptr[in, array[iovec_in]]
53	vlen	len[vec, intptr]
54	ctrl	ptr[in, array[cmsghdr_un], opt]
55	ctrllen	bytesize[ctrl, intptr]
56	f	flags[send_flags, int32]
57}
58
59cmsghdr_un [
60	rights	cmsghdr_un_rights
61	cred	cmsghdr_un_cred
62] [varlen]
63
64cmsghdr_un_rights {
65	len	len[parent, intptr]
66	level	const[SOL_SOCKET, int32]
67	type	const[SCM_RIGHTS, int32]
68	fds	array[fd]
69} [align_ptr]
70
71cmsghdr_un_cred {
72	len	len[parent, intptr]
73	level	const[SOL_SOCKET, int32]
74	type	const[LINUX_SCM_CREDENTIALS, int32]
75	pid	pid
76	uid	uid
77	gid	gid
78} [align_ptr]
79