Skip to content

Commit 1c2f3aa

Browse files
authored
Merge pull request #3700 from asomers/freebsd-capsicum-libc0.2
Add FreeBSD's Capsicum constants
2 parents db6ef14 + 62f7138 commit 1c2f3aa

File tree

2 files changed

+217
-0
lines changed

2 files changed

+217
-0
lines changed

libc-test/semver/freebsd.txt

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,100 @@ BUFSIZ
144144
BUS_ADRALN
145145
BUS_ADRERR
146146
BUS_OBJERR
147+
CAP_READ
148+
CAP_RIGHTS_VERSION_00
149+
CAP_RIGHTS_VERSION
150+
CAP_WRITE
151+
CAP_SEEK_TELL
152+
CAP_SEEK
153+
CAP_PREAD
154+
CAP_PWRITE
155+
CAP_MMAP
156+
CAP_MMAP_R
157+
CAP_MMAP_W
158+
CAP_MMAP_X
159+
CAP_MMAP_RW
160+
CAP_MMAP_RX
161+
CAP_MMAP_WX
162+
CAP_MMAP_RWX
163+
CAP_CREATE
164+
CAP_FEXECVE
165+
CAP_FSYNC
166+
CAP_FTRUNCATE
167+
CAP_LOOKUP
168+
CAP_FCHDIR
169+
CAP_FCHFLAGS
170+
CAP_CHFLAGSAT
171+
CAP_FCHMOD
172+
CAP_FCHMODAT
173+
CAP_FCHOWN
174+
CAP_FCHOWNAT
175+
CAP_FCNTL
176+
CAP_FLOCK
177+
CAP_FPATHCONF
178+
CAP_FSCK
179+
CAP_FSTAT
180+
CAP_FSTATAT
181+
CAP_FSTATFS
182+
CAP_FUTIMES
183+
CAP_FUTIMESAT
184+
CAP_LINKAT_TARGET
185+
CAP_MKDIRAT
186+
CAP_MKFIFOAT
187+
CAP_MKNODAT
188+
CAP_RENAMEAT_SOURCE
189+
CAP_SYMLINKAT
190+
CAP_UNLINKAT
191+
CAP_ACCEPT
192+
CAP_BIND
193+
CAP_CONNECT
194+
CAP_GETPEERNAME
195+
CAP_GETSOCKNAME
196+
CAP_GETSOCKOPT
197+
CAP_LISTEN
198+
CAP_PEELOFF
199+
CAP_RECV
200+
CAP_SEND
201+
CAP_SETSOCKOPT
202+
CAP_SHUTDOWN
203+
CAP_BINDAT
204+
CAP_CONNECTAT
205+
CAP_LINKAT_SOURCE
206+
CAP_RENAMEAT_TARGET
207+
CAP_SOCK_CLIENT
208+
CAP_SOCK_SERVER
209+
CAP_ALL0
210+
CAP_UNUSED0_44
211+
CAP_UNUSED0_57
212+
CAP_MAC_GET
213+
CAP_MAC_SET
214+
CAP_SEM_GETVALUE
215+
CAP_SEM_POST
216+
CAP_SEM_WAIT
217+
CAP_EVENT
218+
CAP_KQUEUE_EVENT
219+
CAP_IOCTL
220+
CAP_TTYHOOK
221+
CAP_PDGETPID
222+
CAP_PDWAIT
223+
CAP_PDKILL
224+
CAP_EXTATTR_DELETE
225+
CAP_EXTATTR_GET
226+
CAP_EXTATTR_LIST
227+
CAP_EXTATTR_SET
228+
CAP_ACL_CHECK
229+
CAP_ACL_DELETE
230+
CAP_ACL_GET
231+
CAP_ACL_SET
232+
CAP_KQUEUE_CHANGE
233+
CAP_KQUEUE
234+
CAP_ALL1
235+
CAP_UNUSED1_22
236+
CAP_UNUSED1_57
237+
CAP_FCNTL_GETFL
238+
CAP_FCNTL_SETFL
239+
CAP_FCNTL_GETOWN
240+
CAP_FCNTL_SETOWN
147241
CCAR_OFLOW
148242
CCTS_OFLOW
149243
CDSR_OFLOW

src/unix/bsd/freebsdlike/freebsd/mod.rs

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2618,6 +2618,129 @@ pub const LIO_VECTORED: ::c_int = 4;
26182618
pub const LIO_WRITEV: ::c_int = 5;
26192619
pub const LIO_READV: ::c_int = 6;
26202620

2621+
// sys/caprights.h
2622+
pub const CAP_RIGHTS_VERSION_00: i32 = 0;
2623+
pub const CAP_RIGHTS_VERSION: i32 = CAP_RIGHTS_VERSION_00;
2624+
2625+
// sys/capsicum.h
2626+
macro_rules! cap_right {
2627+
($idx:expr, $bit:expr) => {
2628+
((1u64 << (57 + ($idx))) | ($bit))
2629+
};
2630+
}
2631+
pub const CAP_READ: u64 = cap_right!(0, 0x0000000000000001u64);
2632+
pub const CAP_WRITE: u64 = cap_right!(0, 0x0000000000000002u64);
2633+
pub const CAP_SEEK_TELL: u64 = cap_right!(0, 0x0000000000000004u64);
2634+
pub const CAP_SEEK: u64 = CAP_SEEK_TELL | 0x0000000000000008u64;
2635+
pub const CAP_PREAD: u64 = CAP_SEEK | CAP_READ;
2636+
pub const CAP_PWRITE: u64 = CAP_SEEK | CAP_WRITE;
2637+
pub const CAP_MMAP: u64 = cap_right!(0, 0x0000000000000010u64);
2638+
pub const CAP_MMAP_R: u64 = CAP_MMAP | CAP_SEEK | CAP_READ;
2639+
pub const CAP_MMAP_W: u64 = CAP_MMAP | CAP_SEEK | CAP_WRITE;
2640+
pub const CAP_MMAP_X: u64 = CAP_MMAP | CAP_SEEK | 0x0000000000000020u64;
2641+
pub const CAP_MMAP_RW: u64 = CAP_MMAP_R | CAP_MMAP_W;
2642+
pub const CAP_MMAP_RX: u64 = CAP_MMAP_R | CAP_MMAP_X;
2643+
pub const CAP_MMAP_WX: u64 = CAP_MMAP_W | CAP_MMAP_X;
2644+
pub const CAP_MMAP_RWX: u64 = CAP_MMAP_R | CAP_MMAP_W | CAP_MMAP_X;
2645+
pub const CAP_CREATE: u64 = cap_right!(0, 0x0000000000000040u64);
2646+
pub const CAP_FEXECVE: u64 = cap_right!(0, 0x0000000000000080u64);
2647+
pub const CAP_FSYNC: u64 = cap_right!(0, 0x0000000000000100u64);
2648+
pub const CAP_FTRUNCATE: u64 = cap_right!(0, 0x0000000000000200u64);
2649+
pub const CAP_LOOKUP: u64 = cap_right!(0, 0x0000000000000400u64);
2650+
pub const CAP_FCHDIR: u64 = cap_right!(0, 0x0000000000000800u64);
2651+
pub const CAP_FCHFLAGS: u64 = cap_right!(0, 0x0000000000001000u64);
2652+
pub const CAP_CHFLAGSAT: u64 = CAP_FCHFLAGS | CAP_LOOKUP;
2653+
pub const CAP_FCHMOD: u64 = cap_right!(0, 0x0000000000002000u64);
2654+
pub const CAP_FCHMODAT: u64 = CAP_FCHMOD | CAP_LOOKUP;
2655+
pub const CAP_FCHOWN: u64 = cap_right!(0, 0x0000000000004000u64);
2656+
pub const CAP_FCHOWNAT: u64 = CAP_FCHOWN | CAP_LOOKUP;
2657+
pub const CAP_FCNTL: u64 = cap_right!(0, 0x0000000000008000u64);
2658+
pub const CAP_FLOCK: u64 = cap_right!(0, 0x0000000000010000u64);
2659+
pub const CAP_FPATHCONF: u64 = cap_right!(0, 0x0000000000020000u64);
2660+
pub const CAP_FSCK: u64 = cap_right!(0, 0x0000000000040000u64);
2661+
pub const CAP_FSTAT: u64 = cap_right!(0, 0x0000000000080000u64);
2662+
pub const CAP_FSTATAT: u64 = CAP_FSTAT | CAP_LOOKUP;
2663+
pub const CAP_FSTATFS: u64 = cap_right!(0, 0x0000000000100000u64);
2664+
pub const CAP_FUTIMES: u64 = cap_right!(0, 0x0000000000200000u64);
2665+
pub const CAP_FUTIMESAT: u64 = CAP_FUTIMES | CAP_LOOKUP;
2666+
// Note: this was named CAP_LINKAT prior to FreeBSD 11.0.
2667+
pub const CAP_LINKAT_TARGET: u64 = CAP_LOOKUP | 0x0000000000400000u64;
2668+
pub const CAP_MKDIRAT: u64 = CAP_LOOKUP | 0x0000000000800000u64;
2669+
pub const CAP_MKFIFOAT: u64 = CAP_LOOKUP | 0x0000000001000000u64;
2670+
pub const CAP_MKNODAT: u64 = CAP_LOOKUP | 0x0000000002000000u64;
2671+
// Note: this was named CAP_RENAMEAT prior to FreeBSD 11.0.
2672+
pub const CAP_RENAMEAT_SOURCE: u64 = CAP_LOOKUP | 0x0000000004000000u64;
2673+
pub const CAP_SYMLINKAT: u64 = CAP_LOOKUP | 0x0000000008000000u64;
2674+
pub const CAP_UNLINKAT: u64 = CAP_LOOKUP | 0x0000000010000000u64;
2675+
pub const CAP_ACCEPT: u64 = cap_right!(0, 0x0000000020000000u64);
2676+
pub const CAP_BIND: u64 = cap_right!(0, 0x0000000040000000u64);
2677+
pub const CAP_CONNECT: u64 = cap_right!(0, 0x0000000080000000u64);
2678+
pub const CAP_GETPEERNAME: u64 = cap_right!(0, 0x0000000100000000u64);
2679+
pub const CAP_GETSOCKNAME: u64 = cap_right!(0, 0x0000000200000000u64);
2680+
pub const CAP_GETSOCKOPT: u64 = cap_right!(0, 0x0000000400000000u64);
2681+
pub const CAP_LISTEN: u64 = cap_right!(0, 0x0000000800000000u64);
2682+
pub const CAP_PEELOFF: u64 = cap_right!(0, 0x0000001000000000u64);
2683+
pub const CAP_RECV: u64 = CAP_READ;
2684+
pub const CAP_SEND: u64 = CAP_WRITE;
2685+
pub const CAP_SETSOCKOPT: u64 = cap_right!(0, 0x0000002000000000u64);
2686+
pub const CAP_SHUTDOWN: u64 = cap_right!(0, 0x0000004000000000u64);
2687+
pub const CAP_BINDAT: u64 = CAP_LOOKUP | 0x0000008000000000u64;
2688+
pub const CAP_CONNECTAT: u64 = CAP_LOOKUP | 0x0000010000000000u64;
2689+
pub const CAP_LINKAT_SOURCE: u64 = CAP_LOOKUP | 0x0000020000000000u64;
2690+
pub const CAP_RENAMEAT_TARGET: u64 = CAP_LOOKUP | 0x0000040000000000u64;
2691+
pub const CAP_SOCK_CLIENT: u64 = CAP_CONNECT
2692+
| CAP_GETPEERNAME
2693+
| CAP_GETSOCKNAME
2694+
| CAP_GETSOCKOPT
2695+
| CAP_PEELOFF
2696+
| CAP_RECV
2697+
| CAP_SEND
2698+
| CAP_SETSOCKOPT
2699+
| CAP_SHUTDOWN;
2700+
pub const CAP_SOCK_SERVER: u64 = CAP_ACCEPT
2701+
| CAP_BIND
2702+
| CAP_GETPEERNAME
2703+
| CAP_GETSOCKNAME
2704+
| CAP_GETSOCKOPT
2705+
| CAP_LISTEN
2706+
| CAP_PEELOFF
2707+
| CAP_RECV
2708+
| CAP_SEND
2709+
| CAP_SETSOCKOPT
2710+
| CAP_SHUTDOWN;
2711+
pub const CAP_ALL0: u64 = cap_right!(0, 0x000007FFFFFFFFFFu64);
2712+
pub const CAP_UNUSED0_44: u64 = cap_right!(0, 0x0000080000000000u64);
2713+
pub const CAP_UNUSED0_57: u64 = cap_right!(0, 0x0100000000000000u64);
2714+
pub const CAP_MAC_GET: u64 = cap_right!(1, 0x0000000000000001u64);
2715+
pub const CAP_MAC_SET: u64 = cap_right!(1, 0x0000000000000002u64);
2716+
pub const CAP_SEM_GETVALUE: u64 = cap_right!(1, 0x0000000000000004u64);
2717+
pub const CAP_SEM_POST: u64 = cap_right!(1, 0x0000000000000008u64);
2718+
pub const CAP_SEM_WAIT: u64 = cap_right!(1, 0x0000000000000010u64);
2719+
pub const CAP_EVENT: u64 = cap_right!(1, 0x0000000000000020u64);
2720+
pub const CAP_KQUEUE_EVENT: u64 = cap_right!(1, 0x0000000000000040u64);
2721+
pub const CAP_IOCTL: u64 = cap_right!(1, 0x0000000000000080u64);
2722+
pub const CAP_TTYHOOK: u64 = cap_right!(1, 0x0000000000000100u64);
2723+
pub const CAP_PDGETPID: u64 = cap_right!(1, 0x0000000000000200u64);
2724+
pub const CAP_PDWAIT: u64 = cap_right!(1, 0x0000000000000400u64);
2725+
pub const CAP_PDKILL: u64 = cap_right!(1, 0x0000000000000800u64);
2726+
pub const CAP_EXTATTR_DELETE: u64 = cap_right!(1, 0x0000000000001000u64);
2727+
pub const CAP_EXTATTR_GET: u64 = cap_right!(1, 0x0000000000002000u64);
2728+
pub const CAP_EXTATTR_LIST: u64 = cap_right!(1, 0x0000000000004000u64);
2729+
pub const CAP_EXTATTR_SET: u64 = cap_right!(1, 0x0000000000008000u64);
2730+
pub const CAP_ACL_CHECK: u64 = cap_right!(1, 0x0000000000010000u64);
2731+
pub const CAP_ACL_DELETE: u64 = cap_right!(1, 0x0000000000020000u64);
2732+
pub const CAP_ACL_GET: u64 = cap_right!(1, 0x0000000000040000u64);
2733+
pub const CAP_ACL_SET: u64 = cap_right!(1, 0x0000000000080000u64);
2734+
pub const CAP_KQUEUE_CHANGE: u64 = cap_right!(1, 0x0000000000100000u64);
2735+
pub const CAP_KQUEUE: u64 = CAP_KQUEUE_EVENT | CAP_KQUEUE_CHANGE;
2736+
pub const CAP_ALL1: u64 = cap_right!(1, 0x00000000001FFFFFu64);
2737+
pub const CAP_UNUSED1_22: u64 = cap_right!(1, 0x0000000000200000u64);
2738+
pub const CAP_UNUSED1_57: u64 = cap_right!(1, 0x0100000000000000u64);
2739+
pub const CAP_FCNTL_GETFL: u32 = 1 << 3;
2740+
pub const CAP_FCNTL_SETFL: u32 = 1 << 4;
2741+
pub const CAP_FCNTL_GETOWN: u32 = 1 << 5;
2742+
pub const CAP_FCNTL_SETOWN: u32 = 1 << 6;
2743+
26212744
// sys/devicestat.h
26222745
pub const DEVSTAT_N_TRANS_FLAGS: ::c_int = 4;
26232746
pub const DEVSTAT_NAME_LEN: ::c_int = 16;

0 commit comments

Comments
 (0)