1// Copyright 2017 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef ZIRCON_RIGHTS_H_
6#define ZIRCON_RIGHTS_H_
7
8#include <zircon/types.h>
9
10// Default rights for objects.
11#define ZX_DEFAULT_CHANNEL_RIGHTS \
12    ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_DUPLICATE)) |\
13     ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER |\
14     ZX_RIGHTS_PROPERTY)
15
16#define ZX_DEFAULT_EVENT_RIGHTS \
17    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL)
18
19#define ZX_DEFAULT_EVENTPAIR_RIGHTS \
20    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO |\
21     ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER)
22
23#define ZX_DEFAULT_FIFO_RIGHTS \
24    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO |\
25     ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER)
26
27#define ZX_DEFAULT_GUEST_RIGHTS \
28    (ZX_RIGHT_TRANSFER | ZX_RIGHT_DUPLICATE | ZX_RIGHT_WRITE |\
29     ZX_RIGHT_INSPECT | ZX_RIGHT_MANAGE_PROCESS)
30
31#define ZX_DEFAULT_INTERRUPT_RIGHTS \
32    ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_DUPLICATE)) | ZX_RIGHTS_IO)
33
34#define ZX_DEFAULT_IRQ_RIGHTS \
35    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL)
36
37#define ZX_DEFAULT_IO_MAPPING_RIGHTS \
38    (ZX_RIGHT_READ | ZX_RIGHT_INSPECT)
39
40#define ZX_DEFAULT_JOB_RIGHTS \
41    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY |\
42     ZX_RIGHTS_POLICY | ZX_RIGHT_ENUMERATE | ZX_RIGHT_DESTROY |\
43     ZX_RIGHT_SIGNAL | ZX_RIGHT_MANAGE_JOB)
44
45#define ZX_DEFAULT_LOG_RIGHTS \
46    (ZX_RIGHTS_BASIC | ZX_RIGHT_WRITE | ZX_RIGHT_SIGNAL)
47
48#define ZX_DEFAULT_PCI_DEVICE_RIGHTS \
49    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO)
50
51#define ZX_DEFAULT_PCI_INTERRUPT_RIGHTS \
52    (ZX_RIGHTS_BASIC  | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL)
53
54#define ZX_DEFAULT_PORT_RIGHTS \
55    ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) | ZX_RIGHTS_IO)
56
57#define ZX_DEFAULT_PROCESS_RIGHTS \
58    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY |\
59     ZX_RIGHT_ENUMERATE | ZX_RIGHT_DESTROY | ZX_RIGHT_SIGNAL |\
60     ZX_RIGHT_MANAGE_PROCESS)
61
62#define ZX_DEFAULT_RESOURCE_RIGHTS \
63    (ZX_RIGHT_TRANSFER | ZX_RIGHT_DUPLICATE | ZX_RIGHT_WRITE |\
64     ZX_RIGHT_INSPECT)
65
66#define ZX_DEFAULT_SOCKET_RIGHTS \
67    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_GET_PROPERTY |\
68     ZX_RIGHT_SET_PROPERTY | ZX_RIGHT_SIGNAL | ZX_RIGHT_SIGNAL_PEER)
69
70#define ZX_DEFAULT_THREAD_RIGHTS \
71    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY |\
72     ZX_RIGHT_DESTROY | ZX_RIGHT_SIGNAL | ZX_RIGHT_MANAGE_THREAD)
73
74#define ZX_DEFAULT_TIMERS_RIGHTS \
75    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_SIGNAL)
76
77#define ZX_DEFAULT_VCPU_RIGHTS \
78    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHT_EXECUTE | ZX_RIGHT_SIGNAL)
79
80#define ZX_DEFAULT_VMAR_RIGHTS \
81    (ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT))
82
83#define ZX_DEFAULT_VMO_RIGHTS\
84    (ZX_RIGHTS_BASIC | ZX_RIGHTS_IO | ZX_RIGHTS_PROPERTY |\
85     ZX_RIGHT_EXECUTE | ZX_RIGHT_MAP | ZX_RIGHT_SIGNAL)
86
87#define ZX_DEFAULT_IOMMU_RIGHTS \
88    (ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT))
89
90#define ZX_DEFAULT_BTI_RIGHTS \
91    ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) | ZX_RIGHTS_IO | ZX_RIGHT_MAP)
92
93#define ZX_DEFAULT_PROFILE_RIGHTS \
94    ((ZX_RIGHTS_BASIC & (~ZX_RIGHT_WAIT)) | ZX_RIGHT_APPLY_PROFILE)
95
96#define ZX_DEFAULT_PMT_RIGHTS \
97    (ZX_RIGHT_INSPECT)
98
99#define ZX_DEFAULT_SUSPEND_TOKEN_RIGHTS \
100    (ZX_RIGHT_TRANSFER | ZX_RIGHT_INSPECT)
101
102#endif // ZIRCON_RIGHTS_H_
103