]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/sys/priv.h
xnu-6153.121.1.tar.gz
[apple/xnu.git] / bsd / sys / priv.h
index 1e17a1fdf133f974c0123ceb1997f8a4c1b5db58..940debadf69522d02deeaca73a06f10ad663d2bc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2014 Apple Inc. All rights reserved.
+ * Copyright (c) 2010-2017 Apple Inc. All rights reserved.
  *
  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
  *
@@ -60,7 +60,7 @@
  * Kernel privilege checking interface.
  */
 #ifndef _SYS_PRIV_H_
-#define        _SYS_PRIV_H_
+#define _SYS_PRIV_H_
 
 /*
  * Privilege list, sorted loosely by kernel subsystem.
  * privileges, such as the ability to reboot, and then loosely by
  * subsystem, indicated by a subsystem name.
  */
-#define        PRIV_ADJTIME                    1000    /* Set time adjustment. */
-#define PRIV_PROC_UUID_POLICY          1001    /* Change process uuid policy table. */
-#define PRIV_GLOBAL_PROC_INFO          1002    /* Query information for processes owned by other users */
-#define PRIV_SYSTEM_OVERRIDE           1003    /* Override global system settings for various subsystems for a limited duration/system-mode */
-#define PRIV_HW_DEBUG_DATA             1004    /* Extract hw-specific debug data (e.g. ECC data) */
-#define PRIV_SELECTIVE_FORCED_IDLE     1005    /* Configure and control Selective Forced Idle (SFI) subsystem */
-#define PRIV_PROC_TRACE_INSPECT                1006    /* Request trace memory of arbitrary process to be inspected */
-#define PRIV_DARKBOOT                  1007    /* Manipulate the darkboot flag */
-#define PRIV_WORK_INTERVAL             1008    /* Express details about a work interval */
-#define PRIV_SMB_TIMEMACHINE_CONTROL   1009    /* Control Time Machine properties of an SMB share */
-#define PRIV_AUDIO_LATENCY             1010    /* set audio latency requirements for background tracing */
-#define PRIV_KTRACE_BACKGROUND         1011    /* Operate ktrace in the background */
-#define PRIV_SETPRIORITY_DARWIN_ROLE   1012    /* Allow setpriority(PRIO_DARWIN_ROLE) */
-#define PRIV_PACKAGE_EXTENSIONS                1013    /* Push package extension list used by vn_path_package_check() */
+#define PRIV_ADJTIME                    1000    /* Set time adjustment. */
+#define PRIV_PROC_UUID_POLICY           1001    /* Change process uuid policy table. */
+#define PRIV_GLOBAL_PROC_INFO           1002    /* Query information for processes owned by other users */
+#define PRIV_SYSTEM_OVERRIDE            1003    /* Override global system settings for various subsystems for a limited duration/system-mode */
+#define PRIV_HW_DEBUG_DATA              1004    /* Extract hw-specific debug data (e.g. ECC data) */
+#define PRIV_SELECTIVE_FORCED_IDLE      1005    /* Configure and control Selective Forced Idle (SFI) subsystem */
+#define PRIV_PROC_TRACE_INSPECT         1006    /* Request trace memory of arbitrary process to be inspected */
+#define PRIV_DARKBOOT                   1007    /* Manipulate the darkboot flag */
+#define PRIV_WORK_INTERVAL              1008    /* Express details about a work interval */
+#define PRIV_SMB_TIMEMACHINE_CONTROL    1009    /* Control Time Machine properties of an SMB share */
+#define PRIV_AUDIO_LATENCY              1010    /* set audio latency requirements for background tracing */
+#define PRIV_KTRACE_BACKGROUND          1011    /* Operate ktrace in the background */
+#define PRIV_SETPRIORITY_DARWIN_ROLE    1012    /* Allow setpriority(PRIO_DARWIN_ROLE) */
+#define PRIV_PACKAGE_EXTENSIONS         1013    /* Push package extension list used by vn_path_package_check() */
+#define PRIV_TRIM_ACTIVE_FILE           1014    /* Allow freeing space out from under an active file  */
+#define PRIV_PROC_CPUMON_OVERRIDE       1015    /* Allow CPU usage monitor parameters less restrictive than default */
+#define PRIV_ENDPOINTSECURITY_CLIENT    1016    /* Allow EndpointSecurity clients to connect */
+#define PRIV_AUDIT_SESSION_PORT         1017    /* Obtain send-right for arbitrary audit session's port. */
 
 /*
  * Virtual memory privileges.
  */
-#define        PRIV_VM_PRESSURE        6000    /* Check VM pressure. */
-#define        PRIV_VM_JETSAM          6001    /* Adjust jetsam configuration. */
-#define        PRIV_VM_FOOTPRINT_LIMIT 6002    /* Adjust physical footprint limit. */
+#define PRIV_VM_PRESSURE        6000    /* Check VM pressure. */
+#define PRIV_VM_JETSAM          6001    /* Adjust jetsam configuration. */
+#define PRIV_VM_FOOTPRINT_LIMIT 6002    /* Adjust physical footprint limit. */
 
 /*
  * Network stack privileges.
  */
-#define        PRIV_NET_PRIVILEGED_TRAFFIC_CLASS       10000   /* Set SO_PRIVILEGED_TRAFFIC_CLASS. */
-#define        PRIV_NET_PRIVILEGED_SOCKET_DELEGATE     10001   /* Set delegate on a socket */
-#define        PRIV_NET_INTERFACE_CONTROL              10002   /* Enable interface debug logging. */
-#define        PRIV_NET_PRIVILEGED_NETWORK_STATISTICS  10003   /* Access to all sockets */
-#define        PRIV_NET_PRIVILEGED_NECP_POLICIES       10004   /* Access to privileged Network Extension policies */
-#define        PRIV_NET_RESTRICTED_AWDL                10005   /* Access to restricted AWDL mode */
-#define        PRIV_NET_PRIVILEGED_NECP_MATCH          10006   /* Privilege verified by Network Extension policies */
-#define        PRIV_NET_QOSMARKING_POLICY_OVERRIDE     10007   /* Privilege verified by Network Extension policies */
-#define        PRIV_NET_RESTRICTED_INTCOPROC           10008   /* Access to internal co-processor network interfaces */
+#define PRIV_NET_PRIVILEGED_TRAFFIC_CLASS       10000   /* Set SO_PRIVILEGED_TRAFFIC_CLASS. */
+#define PRIV_NET_PRIVILEGED_SOCKET_DELEGATE     10001   /* Set delegate on a socket */
+#define PRIV_NET_INTERFACE_CONTROL              10002   /* Enable interface debug logging. */
+#define PRIV_NET_PRIVILEGED_NETWORK_STATISTICS  10003   /* Access to all sockets */
+#define PRIV_NET_PRIVILEGED_NECP_POLICIES       10004   /* Access to privileged Network Extension policies */
+#define PRIV_NET_RESTRICTED_AWDL                10005   /* Access to restricted AWDL mode */
+#define PRIV_NET_PRIVILEGED_NECP_MATCH          10006   /* Privilege verified by Network Extension policies */
+#define PRIV_NET_QOSMARKING_POLICY_OVERRIDE     10007   /* Privilege verified by Network Extension policies */
+#define PRIV_NET_RESTRICTED_INTCOPROC           10008   /* Access to internal co-processor network interfaces */
+
+#define PRIV_NET_PRIVILEGED_MULTIPATH           10009   /* Multipath usage */
+#define PRIV_NET_RESTRICTED_MULTIPATH_EXTENDED  10010   /* Extended multipath (more aggressive on cell) */
+#define PRIV_NET_RESTRICTED_ROUTE_NC_READ       10011   /* Enable route neighbhor cache read operations */
+
+#define PRIV_NET_PRIVILEGED_CLIENT_ACCESS       10012   /* Allow client networking access on restricted platforms */
+#define PRIV_NET_PRIVILEGED_SERVER_ACCESS       10013   /* Allow server networking access on restricted platforms */
+
+#define PRIV_NET_VALIDATED_RESOLVER             10014   /* Privilege to sign DNS resolver results for validation */
+
+#define PRIV_NET_CUSTOM_PROTOCOL                10015   /* Privilege to use custom protocol APIs */
+#define PRIV_NET_PRIVILEGED_NECP_DROP_ALL_BYPASS 10016  /* Privilege to bypass NECP drop-all */
+#define PRIV_NET_PRIVILEGED_IPSEC_WAKE_PACKET   10017   /* Privilege to get IPsec wake packet */
+
 /*
  * IPv4 and IPv6 privileges.
  */
-#define        PRIV_NETINET_RESERVEDPORT       11000   /* Bind low port number. */
+#define PRIV_NETINET_RESERVEDPORT       11000   /* Bind low port number. */
+#define PRIV_NETINET_TCP_KA_OFFLOAD     11001   /* Can set TCP keep alive offload option */
 
 
 /*
  * VFS privileges
  */
-#define PRIV_VFS_OPEN_BY_ID            14000   /* Allow calling openbyid_np() */
-#define PRIV_VFS_MOVE_DATA_EXTENTS     14001   /* Allow F_MOVEDATAEXTENTS fcntl */
-#define PRIV_VFS_SNAPSHOT              14002   /* Allow calling fs_snapshot_*() */
+#define PRIV_VFS_OPEN_BY_ID             14000   /* Allow calling openbyid_np() */
+#define PRIV_VFS_MOVE_DATA_EXTENTS      14001   /* Allow F_MOVEDATAEXTENTS fcntl */
+#define PRIV_VFS_SNAPSHOT               14002   /* Allow create/rename/delete of snapshots */
+#define PRIV_VFS_SNAPSHOT_REVERT        14003   /* Allow reverting filesystem to a previous snapshot */
+#define PRIV_VFS_DATALESS_RESOLVER      14004   /* Allow registration as dataless file resolver */
+#define PRIV_VFS_DATALESS_MANIPULATION  14005   /* Allow process to inspect dataless directories / manipulate dataless objects */
+
+#define PRIV_APFS_EMBED_DRIVER          14100   /* Allow embedding an EFI driver into the APFS container */
+#define PRIV_APFS_FUSION_DEBUG      14101   /* Allow getting internal statistics and controlling the APFS Fusion container */
+#define PRIV_APFS_FUSION_ALLOW_PIN_FASTPROMOTE  14102   /* Allow changing pinned/fastPromote inode flags in APFS Fusion container */
+// #define PRIV_APFS_UNUSED              14103
+#define PRIV_APFS_SET_FREE_SPACE_CHANGE_THRESHOLD       14104   /* Allow setting the free space change notification threshold */
+#define PRIV_APFS_SET_FIRMLINK       14105   /* Allow setting the SF_FIRM_LINK bsd flag */
 
 #ifdef KERNEL
 /*
  * Privilege check interface.  No flags are currently defined for the API.
  */
+#include <sys/cdefs.h>
 #include <sys/kauth.h>
-int    priv_check_cred(kauth_cred_t cred, int priv, int flags);
+
+/*
+ * flags for priv_check_cred
+ */
+#define PRIVCHECK_DEFAULT_UNPRIVILEGED_FLAG (1) /* Don't grant root privilege by default */
+
+__BEGIN_DECLS
+int     priv_check_cred(kauth_cred_t cred, int priv, int flags);
+__END_DECLS
 #endif
 
 #endif /* !_SYS_PRIV_H_ */