mirror of https://github.com/red-prig/fpPS4.git
116 lines
3.2 KiB
Plaintext
116 lines
3.2 KiB
Plaintext
unit vcapability;
|
|
|
|
{$mode ObjFPC}{$H+}
|
|
{$CALLING SysV_ABI_CDecl}
|
|
|
|
interface
|
|
|
|
type
|
|
p_cap_rights_t=^cap_rights_t;
|
|
cap_rights_t=QWORD;
|
|
|
|
const
|
|
{
|
|
* Possible rights on capabilities.
|
|
*
|
|
* Notes:
|
|
* Some system calls don't require a capability in order to perform an
|
|
* operation on an fd. These include: close, dup, dup2.
|
|
*
|
|
* sendfile is authorized using CAP_READ on the file and CAP_WRITE on the
|
|
* socket.
|
|
*
|
|
* mmap() and aio*() system calls will need special attention as they may
|
|
* involve reads or writes depending a great deal on context.
|
|
}
|
|
|
|
{ General file I/O. }
|
|
CAP_READ =$0000000000000001; { read/recv }
|
|
CAP_WRITE =$0000000000000002; { write/send }
|
|
CAP_MMAP =$0000000000000004; { mmap }
|
|
CAP_MAPEXEC =$0000000000000008; { mmap(2) as exec }
|
|
CAP_FEXECVE =$0000000000000010;
|
|
CAP_FSYNC =$0000000000000020;
|
|
CAP_FTRUNCATE=$0000000000000040;
|
|
CAP_SEEK =$0000000000000080;
|
|
|
|
{ VFS methods. }
|
|
CAP_FCHFLAGS =$0000000000000100;
|
|
CAP_FCHDIR =$0000000000000200;
|
|
CAP_FCHMOD =$0000000000000400;
|
|
CAP_FCHOWN =$0000000000000800;
|
|
CAP_FCNTL =$0000000000001000;
|
|
CAP_FPATHCONF =$0000000000002000;
|
|
CAP_FLOCK =$0000000000004000;
|
|
CAP_FSCK =$0000000000008000;
|
|
CAP_FSTAT =$0000000000010000;
|
|
CAP_FSTATFS =$0000000000020000;
|
|
CAP_FUTIMES =$0000000000040000;
|
|
CAP_CREATE =$0000000000080000;
|
|
CAP_DELETE =$0000000000100000;
|
|
CAP_MKDIR =$0000000000200000;
|
|
CAP_RMDIR =$0000000000400000;
|
|
CAP_MKFIFO =$0000000000800000;
|
|
|
|
{ Lookups - used to constrain *at() calls. }
|
|
CAP_LOOKUP =$0000000001000000;
|
|
|
|
{ Extended attributes. }
|
|
CAP_EXTATTR_DELETE=$0000000002000000;
|
|
CAP_EXTATTR_GET =$0000000004000000;
|
|
CAP_EXTATTR_LIST =$0000000008000000;
|
|
CAP_EXTATTR_SET =$0000000010000000;
|
|
|
|
{ Access Control Lists. }
|
|
CAP_ACL_CHECK =$0000000020000000;
|
|
CAP_ACL_DELETE=$0000000040000000;
|
|
CAP_ACL_GET =$0000000080000000;
|
|
CAP_ACL_SET =$0000000100000000;
|
|
|
|
{ Socket operations. }
|
|
CAP_ACCEPT =$0000000200000000;
|
|
CAP_BIND =$0000000400000000;
|
|
CAP_CONNECT =$0000000800000000;
|
|
CAP_GETPEERNAME =$0000001000000000;
|
|
CAP_GETSOCKNAME =$0000002000000000;
|
|
CAP_GETSOCKOPT =$0000004000000000;
|
|
CAP_LISTEN =$0000008000000000;
|
|
CAP_PEELOFF =$0000010000000000;
|
|
CAP_SETSOCKOPT =$0000020000000000;
|
|
CAP_SHUTDOWN =$0000040000000000;
|
|
|
|
CAP_SOCK_ALL=
|
|
(CAP_ACCEPT or CAP_BIND or CAP_CONNECT
|
|
or CAP_GETPEERNAME or CAP_GETSOCKNAME or CAP_GETSOCKOPT
|
|
or CAP_LISTEN or CAP_PEELOFF or CAP_SETSOCKOPT or CAP_SHUTDOWN);
|
|
|
|
{ Mandatory Access Control. }
|
|
CAP_MAC_GET =$0000080000000000;
|
|
CAP_MAC_SET =$0000100000000000;
|
|
|
|
{ Methods on semaphores. }
|
|
CAP_SEM_GETVALUE=$0000200000000000;
|
|
CAP_SEM_POST =$0000400000000000;
|
|
CAP_SEM_WAIT =$0000800000000000;
|
|
|
|
{ kqueue events. }
|
|
CAP_POLL_EVENT =$0001000000000000;
|
|
CAP_POST_EVENT =$0002000000000000;
|
|
|
|
{ Strange and powerful rights that should not be given lightly. }
|
|
CAP_IOCTL =$0004000000000000;
|
|
CAP_TTYHOOK =$0008000000000000;
|
|
|
|
{ Process management via process descriptors. }
|
|
CAP_PDGETPID =$0010000000000000;
|
|
CAP_PDWAIT =$0020000000000000;
|
|
CAP_PDKILL =$0040000000000000;
|
|
|
|
{ The mask of all valid method rights. }
|
|
CAP_MASK_VALID =$007fffffffffffff;
|
|
|
|
implementation
|
|
|
|
end.
|
|
|