FPPS4/sys/vfs/vcapability.pas

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.