1d8a7b7a3SRobert Watson /*- 2d8a7b7a3SRobert Watson * Copyright (c) 1999, 2000, 2001, 2002 Robert N. M. Watson 3d8a7b7a3SRobert Watson * Copyright (c) 2001, 2002 Networks Associates Technology, Inc. 4d8a7b7a3SRobert Watson * All rights reserved. 5d8a7b7a3SRobert Watson * 6d8a7b7a3SRobert Watson * This software was developed by Robert Watson for the TrustedBSD Project. 7d8a7b7a3SRobert Watson * 8dc858fcaSRobert Watson * This software was developed for the FreeBSD Project in part by Network 9dc858fcaSRobert Watson * Associates Laboratories, the Security Research Division of Network 10dc858fcaSRobert Watson * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), 11dc858fcaSRobert Watson * as part of the DARPA CHATS research program. 12d8a7b7a3SRobert Watson * 13d8a7b7a3SRobert Watson * Redistribution and use in source and binary forms, with or without 14d8a7b7a3SRobert Watson * modification, are permitted provided that the following conditions 15d8a7b7a3SRobert Watson * are met: 16d8a7b7a3SRobert Watson * 1. Redistributions of source code must retain the above copyright 17d8a7b7a3SRobert Watson * notice, this list of conditions and the following disclaimer. 18d8a7b7a3SRobert Watson * 2. Redistributions in binary form must reproduce the above copyright 19d8a7b7a3SRobert Watson * notice, this list of conditions and the following disclaimer in the 20d8a7b7a3SRobert Watson * documentation and/or other materials provided with the distribution. 21d8a7b7a3SRobert Watson * 22d8a7b7a3SRobert Watson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 23d8a7b7a3SRobert Watson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24d8a7b7a3SRobert Watson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25d8a7b7a3SRobert Watson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 26d8a7b7a3SRobert Watson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27d8a7b7a3SRobert Watson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28d8a7b7a3SRobert Watson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29d8a7b7a3SRobert Watson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30d8a7b7a3SRobert Watson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31d8a7b7a3SRobert Watson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32d8a7b7a3SRobert Watson * SUCH DAMAGE. 33d8a7b7a3SRobert Watson * 34d8a7b7a3SRobert Watson * $FreeBSD$ 35d8a7b7a3SRobert Watson */ 36d8a7b7a3SRobert Watson 37d8a7b7a3SRobert Watson /* 38d8a7b7a3SRobert Watson * Developed by the TrustedBSD Project. 39d8a7b7a3SRobert Watson * Generic mandatory access module that does nothing. 40d8a7b7a3SRobert Watson */ 41d8a7b7a3SRobert Watson 42d8a7b7a3SRobert Watson #include <sys/types.h> 43d8a7b7a3SRobert Watson #include <sys/param.h> 44d8a7b7a3SRobert Watson #include <sys/acl.h> 45d8a7b7a3SRobert Watson #include <sys/conf.h> 46763bbd2fSRobert Watson #include <sys/extattr.h> 47d8a7b7a3SRobert Watson #include <sys/kernel.h> 48d8a7b7a3SRobert Watson #include <sys/mac.h> 49d8a7b7a3SRobert Watson #include <sys/mount.h> 50d8a7b7a3SRobert Watson #include <sys/proc.h> 51d8a7b7a3SRobert Watson #include <sys/systm.h> 52d8a7b7a3SRobert Watson #include <sys/sysproto.h> 53d8a7b7a3SRobert Watson #include <sys/sysent.h> 54d8a7b7a3SRobert Watson #include <sys/vnode.h> 55d8a7b7a3SRobert Watson #include <sys/file.h> 56d8a7b7a3SRobert Watson #include <sys/socket.h> 57d8a7b7a3SRobert Watson #include <sys/socketvar.h> 58d8a7b7a3SRobert Watson #include <sys/sysctl.h> 59d8a7b7a3SRobert Watson 60d8a7b7a3SRobert Watson #include <fs/devfs/devfs.h> 61d8a7b7a3SRobert Watson 62d8a7b7a3SRobert Watson #include <net/bpfdesc.h> 63d8a7b7a3SRobert Watson #include <net/if.h> 64d8a7b7a3SRobert Watson #include <net/if_types.h> 65d8a7b7a3SRobert Watson #include <net/if_var.h> 66d8a7b7a3SRobert Watson 67d8a7b7a3SRobert Watson #include <vm/vm.h> 68d8a7b7a3SRobert Watson 69d8a7b7a3SRobert Watson #include <sys/mac_policy.h> 70d8a7b7a3SRobert Watson 71d8a7b7a3SRobert Watson SYSCTL_DECL(_security_mac); 72d8a7b7a3SRobert Watson 73d8a7b7a3SRobert Watson SYSCTL_NODE(_security_mac, OID_AUTO, test, CTLFLAG_RW, 0, 74d8a7b7a3SRobert Watson "TrustedBSD mac_test policy controls"); 75d8a7b7a3SRobert Watson 76eba0370dSRobert Watson static int mac_test_enabled = 1; 77d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, enabled, CTLFLAG_RW, 78d8a7b7a3SRobert Watson &mac_test_enabled, 0, "Enforce test policy"); 79d8a7b7a3SRobert Watson 80d8a7b7a3SRobert Watson #define BPFMAGIC 0xfe1ad1b6 81d8a7b7a3SRobert Watson #define DEVFSMAGIC 0x9ee79c32 82d8a7b7a3SRobert Watson #define IFNETMAGIC 0xc218b120 83d8a7b7a3SRobert Watson #define IPQMAGIC 0x206188ef 84d8a7b7a3SRobert Watson #define MBUFMAGIC 0xbbefa5bb 85d8a7b7a3SRobert Watson #define MOUNTMAGIC 0xc7c46e47 86d8a7b7a3SRobert Watson #define SOCKETMAGIC 0x9199c6cd 87d8a7b7a3SRobert Watson #define PIPEMAGIC 0xdc6c9919 88ca26e8baSRobert Watson #define PROCMAGIC 0x3b4be98f 89d8a7b7a3SRobert Watson #define CREDMAGIC 0x9a5a4987 90d8a7b7a3SRobert Watson #define VNODEMAGIC 0x1a67a45c 91d8a7b7a3SRobert Watson #define EXMAGIC 0x849ba1fd 92d8a7b7a3SRobert Watson 93d8a7b7a3SRobert Watson #define SLOT(x) LABEL_TO_SLOT((x), test_slot).l_long 94d8a7b7a3SRobert Watson static int test_slot; 95d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, slot, CTLFLAG_RD, 96d8a7b7a3SRobert Watson &test_slot, 0, "Slot allocated by framework"); 97d8a7b7a3SRobert Watson 98d8a7b7a3SRobert Watson static int init_count_bpfdesc; 99d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_bpfdesc, CTLFLAG_RD, 100d8a7b7a3SRobert Watson &init_count_bpfdesc, 0, "bpfdesc init calls"); 101d8a7b7a3SRobert Watson static int init_count_cred; 102d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_cred, CTLFLAG_RD, 103d8a7b7a3SRobert Watson &init_count_cred, 0, "cred init calls"); 104d8a7b7a3SRobert Watson static int init_count_devfsdirent; 105d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_devfsdirent, CTLFLAG_RD, 106d8a7b7a3SRobert Watson &init_count_devfsdirent, 0, "devfsdirent init calls"); 107d8a7b7a3SRobert Watson static int init_count_ifnet; 108d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_ifnet, CTLFLAG_RD, 109d8a7b7a3SRobert Watson &init_count_ifnet, 0, "ifnet init calls"); 110d8a7b7a3SRobert Watson static int init_count_ipq; 111d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_ipq, CTLFLAG_RD, 112d8a7b7a3SRobert Watson &init_count_ipq, 0, "ipq init calls"); 113d8a7b7a3SRobert Watson static int init_count_mbuf; 114d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_mbuf, CTLFLAG_RD, 115d8a7b7a3SRobert Watson &init_count_mbuf, 0, "mbuf init calls"); 116d8a7b7a3SRobert Watson static int init_count_mount; 117d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_mount, CTLFLAG_RD, 118d8a7b7a3SRobert Watson &init_count_mount, 0, "mount init calls"); 11996adb909SRobert Watson static int init_count_mount_fslabel; 12096adb909SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_mount_fslabel, CTLFLAG_RD, 12196adb909SRobert Watson &init_count_mount_fslabel, 0, "mount_fslabel init calls"); 122d8a7b7a3SRobert Watson static int init_count_socket; 123d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_socket, CTLFLAG_RD, 124d8a7b7a3SRobert Watson &init_count_socket, 0, "socket init calls"); 12596adb909SRobert Watson static int init_count_socket_peerlabel; 12696adb909SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_socket_peerlabel, 12796adb909SRobert Watson CTLFLAG_RD, &init_count_socket_peerlabel, 0, 12896adb909SRobert Watson "socket_peerlabel init calls"); 129d8a7b7a3SRobert Watson static int init_count_pipe; 130d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_pipe, CTLFLAG_RD, 131d8a7b7a3SRobert Watson &init_count_pipe, 0, "pipe init calls"); 132ca26e8baSRobert Watson static int init_count_proc; 133ca26e8baSRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_proc, CTLFLAG_RD, 134ca26e8baSRobert Watson &init_count_proc, 0, "proc init calls"); 135d8a7b7a3SRobert Watson static int init_count_vnode; 136d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, init_count_vnode, CTLFLAG_RD, 137d8a7b7a3SRobert Watson &init_count_vnode, 0, "vnode init calls"); 138d8a7b7a3SRobert Watson 139d8a7b7a3SRobert Watson static int destroy_count_bpfdesc; 140d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_bpfdesc, CTLFLAG_RD, 141d8a7b7a3SRobert Watson &destroy_count_bpfdesc, 0, "bpfdesc destroy calls"); 142d8a7b7a3SRobert Watson static int destroy_count_cred; 143d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_cred, CTLFLAG_RD, 144d8a7b7a3SRobert Watson &destroy_count_cred, 0, "cred destroy calls"); 145d8a7b7a3SRobert Watson static int destroy_count_devfsdirent; 146d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_devfsdirent, CTLFLAG_RD, 147d8a7b7a3SRobert Watson &destroy_count_devfsdirent, 0, "devfsdirent destroy calls"); 148d8a7b7a3SRobert Watson static int destroy_count_ifnet; 149d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_ifnet, CTLFLAG_RD, 150d8a7b7a3SRobert Watson &destroy_count_ifnet, 0, "ifnet destroy calls"); 151d8a7b7a3SRobert Watson static int destroy_count_ipq; 152d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_ipq, CTLFLAG_RD, 153d8a7b7a3SRobert Watson &destroy_count_ipq, 0, "ipq destroy calls"); 154d8a7b7a3SRobert Watson static int destroy_count_mbuf; 155d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_mbuf, CTLFLAG_RD, 156d8a7b7a3SRobert Watson &destroy_count_mbuf, 0, "mbuf destroy calls"); 157d8a7b7a3SRobert Watson static int destroy_count_mount; 158d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_mount, CTLFLAG_RD, 159d8a7b7a3SRobert Watson &destroy_count_mount, 0, "mount destroy calls"); 16096adb909SRobert Watson static int destroy_count_mount_fslabel; 16196adb909SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_mount_fslabel, 16296adb909SRobert Watson CTLFLAG_RD, &destroy_count_mount_fslabel, 0, 16396adb909SRobert Watson "mount_fslabel destroy calls"); 164d8a7b7a3SRobert Watson static int destroy_count_socket; 165d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_socket, CTLFLAG_RD, 166d8a7b7a3SRobert Watson &destroy_count_socket, 0, "socket destroy calls"); 16796adb909SRobert Watson static int destroy_count_socket_peerlabel; 16896adb909SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_socket_peerlabel, 16996adb909SRobert Watson CTLFLAG_RD, &destroy_count_socket_peerlabel, 0, 17096adb909SRobert Watson "socket_peerlabel destroy calls"); 171d8a7b7a3SRobert Watson static int destroy_count_pipe; 172d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_pipe, CTLFLAG_RD, 173d8a7b7a3SRobert Watson &destroy_count_pipe, 0, "pipe destroy calls"); 174ca26e8baSRobert Watson static int destroy_count_proc; 175ca26e8baSRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_proc, CTLFLAG_RD, 176ca26e8baSRobert Watson &destroy_count_proc, 0, "proc destroy calls"); 177d8a7b7a3SRobert Watson static int destroy_count_vnode; 178d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, destroy_count_vnode, CTLFLAG_RD, 179d8a7b7a3SRobert Watson &destroy_count_vnode, 0, "vnode destroy calls"); 180d8a7b7a3SRobert Watson 181d8a7b7a3SRobert Watson static int externalize_count; 182d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, externalize_count, CTLFLAG_RD, 183d8a7b7a3SRobert Watson &externalize_count, 0, "Subject/object externalize calls"); 184d8a7b7a3SRobert Watson static int internalize_count; 185d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_test, OID_AUTO, internalize_count, CTLFLAG_RD, 186d8a7b7a3SRobert Watson &internalize_count, 0, "Subject/object internalize calls"); 187d8a7b7a3SRobert Watson 188d8a7b7a3SRobert Watson /* 189d8a7b7a3SRobert Watson * Policy module operations. 190d8a7b7a3SRobert Watson */ 191d8a7b7a3SRobert Watson static void 192d8a7b7a3SRobert Watson mac_test_destroy(struct mac_policy_conf *conf) 193d8a7b7a3SRobert Watson { 194d8a7b7a3SRobert Watson 195d8a7b7a3SRobert Watson } 196d8a7b7a3SRobert Watson 197d8a7b7a3SRobert Watson static void 198d8a7b7a3SRobert Watson mac_test_init(struct mac_policy_conf *conf) 199d8a7b7a3SRobert Watson { 200d8a7b7a3SRobert Watson 201d8a7b7a3SRobert Watson } 202d8a7b7a3SRobert Watson 2038a97ecf6SRobert Watson static int 2048a97ecf6SRobert Watson mac_test_syscall(struct thread *td, int call, void *arg) 2058a97ecf6SRobert Watson { 2068a97ecf6SRobert Watson 2078a97ecf6SRobert Watson return (0); 2088a97ecf6SRobert Watson } 2098a97ecf6SRobert Watson 210d8a7b7a3SRobert Watson /* 211d8a7b7a3SRobert Watson * Label operations. 212d8a7b7a3SRobert Watson */ 213d8a7b7a3SRobert Watson static void 21496adb909SRobert Watson mac_test_init_bpfdesc_label(struct label *label) 215d8a7b7a3SRobert Watson { 216d8a7b7a3SRobert Watson 217d8a7b7a3SRobert Watson SLOT(label) = BPFMAGIC; 218d8a7b7a3SRobert Watson atomic_add_int(&init_count_bpfdesc, 1); 219d8a7b7a3SRobert Watson } 220d8a7b7a3SRobert Watson 221d8a7b7a3SRobert Watson static void 22296adb909SRobert Watson mac_test_init_cred_label(struct label *label) 223d8a7b7a3SRobert Watson { 224d8a7b7a3SRobert Watson 225d8a7b7a3SRobert Watson SLOT(label) = CREDMAGIC; 226d8a7b7a3SRobert Watson atomic_add_int(&init_count_cred, 1); 227d8a7b7a3SRobert Watson } 228d8a7b7a3SRobert Watson 229d8a7b7a3SRobert Watson static void 23096adb909SRobert Watson mac_test_init_devfsdirent_label(struct label *label) 231d8a7b7a3SRobert Watson { 232d8a7b7a3SRobert Watson 233d8a7b7a3SRobert Watson SLOT(label) = DEVFSMAGIC; 234d8a7b7a3SRobert Watson atomic_add_int(&init_count_devfsdirent, 1); 235d8a7b7a3SRobert Watson } 236d8a7b7a3SRobert Watson 237d8a7b7a3SRobert Watson static void 23896adb909SRobert Watson mac_test_init_ifnet_label(struct label *label) 239d8a7b7a3SRobert Watson { 240d8a7b7a3SRobert Watson 241d8a7b7a3SRobert Watson SLOT(label) = IFNETMAGIC; 242d8a7b7a3SRobert Watson atomic_add_int(&init_count_ifnet, 1); 243d8a7b7a3SRobert Watson } 244d8a7b7a3SRobert Watson 2455e7ce478SRobert Watson static int 2465e7ce478SRobert Watson mac_test_init_ipq_label(struct label *label, int flag) 247d8a7b7a3SRobert Watson { 248d8a7b7a3SRobert Watson 249d8a7b7a3SRobert Watson SLOT(label) = IPQMAGIC; 250d8a7b7a3SRobert Watson atomic_add_int(&init_count_ipq, 1); 2515e7ce478SRobert Watson return (0); 252d8a7b7a3SRobert Watson } 253d8a7b7a3SRobert Watson 254d8a7b7a3SRobert Watson static int 25596adb909SRobert Watson mac_test_init_mbuf_label(struct label *label, int flag) 256d8a7b7a3SRobert Watson { 257d8a7b7a3SRobert Watson 258d8a7b7a3SRobert Watson SLOT(label) = MBUFMAGIC; 259d8a7b7a3SRobert Watson atomic_add_int(&init_count_mbuf, 1); 260d8a7b7a3SRobert Watson return (0); 261d8a7b7a3SRobert Watson } 262d8a7b7a3SRobert Watson 263d8a7b7a3SRobert Watson static void 26496adb909SRobert Watson mac_test_init_mount_label(struct label *label) 265d8a7b7a3SRobert Watson { 266d8a7b7a3SRobert Watson 26796adb909SRobert Watson SLOT(label) = MOUNTMAGIC; 268d8a7b7a3SRobert Watson atomic_add_int(&init_count_mount, 1); 269d8a7b7a3SRobert Watson } 270d8a7b7a3SRobert Watson 271d8a7b7a3SRobert Watson static void 27296adb909SRobert Watson mac_test_init_mount_fs_label(struct label *label) 27396adb909SRobert Watson { 27496adb909SRobert Watson 27596adb909SRobert Watson SLOT(label) = MOUNTMAGIC; 27696adb909SRobert Watson atomic_add_int(&init_count_mount_fslabel, 1); 27796adb909SRobert Watson } 27896adb909SRobert Watson 27983985c26SRobert Watson static int 28083985c26SRobert Watson mac_test_init_socket_label(struct label *label, int flag) 281d8a7b7a3SRobert Watson { 282d8a7b7a3SRobert Watson 283d8a7b7a3SRobert Watson SLOT(label) = SOCKETMAGIC; 284d8a7b7a3SRobert Watson atomic_add_int(&init_count_socket, 1); 28583985c26SRobert Watson return (0); 286d8a7b7a3SRobert Watson } 287d8a7b7a3SRobert Watson 28883985c26SRobert Watson static int 28983985c26SRobert Watson mac_test_init_socket_peer_label(struct label *label, int flag) 29096adb909SRobert Watson { 29196adb909SRobert Watson 29296adb909SRobert Watson SLOT(label) = SOCKETMAGIC; 29396adb909SRobert Watson atomic_add_int(&init_count_socket_peerlabel, 1); 29483985c26SRobert Watson return (0); 29596adb909SRobert Watson } 29696adb909SRobert Watson 29796adb909SRobert Watson static void 29896adb909SRobert Watson mac_test_init_pipe_label(struct label *label) 299d8a7b7a3SRobert Watson { 300d8a7b7a3SRobert Watson 301d8a7b7a3SRobert Watson SLOT(label) = PIPEMAGIC; 302d8a7b7a3SRobert Watson atomic_add_int(&init_count_pipe, 1); 303d8a7b7a3SRobert Watson } 304d8a7b7a3SRobert Watson 305d8a7b7a3SRobert Watson static void 306ca26e8baSRobert Watson mac_test_init_proc_label(struct label *label) 307ca26e8baSRobert Watson { 308ca26e8baSRobert Watson 309ca26e8baSRobert Watson SLOT(label) = PROCMAGIC; 310ca26e8baSRobert Watson atomic_add_int(&init_count_proc, 1); 311ca26e8baSRobert Watson } 312ca26e8baSRobert Watson 313ca26e8baSRobert Watson static void 31496adb909SRobert Watson mac_test_init_vnode_label(struct label *label) 315d8a7b7a3SRobert Watson { 316d8a7b7a3SRobert Watson 317d8a7b7a3SRobert Watson SLOT(label) = VNODEMAGIC; 318d8a7b7a3SRobert Watson atomic_add_int(&init_count_vnode, 1); 319d8a7b7a3SRobert Watson } 320d8a7b7a3SRobert Watson 321d8a7b7a3SRobert Watson static void 32296adb909SRobert Watson mac_test_destroy_bpfdesc_label(struct label *label) 323d8a7b7a3SRobert Watson { 324d8a7b7a3SRobert Watson 325d8a7b7a3SRobert Watson if (SLOT(label) == BPFMAGIC || SLOT(label) == 0) { 326d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_bpfdesc, 1); 327d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 328d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 329d8a7b7a3SRobert Watson Debugger("mac_test_destroy_bpfdesc: dup destroy"); 330d8a7b7a3SRobert Watson } else { 331d8a7b7a3SRobert Watson Debugger("mac_test_destroy_bpfdesc: corrupted label"); 332d8a7b7a3SRobert Watson } 333d8a7b7a3SRobert Watson } 334d8a7b7a3SRobert Watson 335d8a7b7a3SRobert Watson static void 33696adb909SRobert Watson mac_test_destroy_cred_label(struct label *label) 337d8a7b7a3SRobert Watson { 338d8a7b7a3SRobert Watson 339d8a7b7a3SRobert Watson if (SLOT(label) == CREDMAGIC || SLOT(label) == 0) { 340d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_cred, 1); 341d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 342d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 343d8a7b7a3SRobert Watson Debugger("mac_test_destroy_cred: dup destroy"); 344d8a7b7a3SRobert Watson } else { 345d8a7b7a3SRobert Watson Debugger("mac_test_destroy_cred: corrupted label"); 346d8a7b7a3SRobert Watson } 347d8a7b7a3SRobert Watson } 348d8a7b7a3SRobert Watson 349d8a7b7a3SRobert Watson static void 35096adb909SRobert Watson mac_test_destroy_devfsdirent_label(struct label *label) 351d8a7b7a3SRobert Watson { 352d8a7b7a3SRobert Watson 353d8a7b7a3SRobert Watson if (SLOT(label) == DEVFSMAGIC || SLOT(label) == 0) { 354d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_devfsdirent, 1); 355d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 356d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 357d8a7b7a3SRobert Watson Debugger("mac_test_destroy_devfsdirent: dup destroy"); 358d8a7b7a3SRobert Watson } else { 359d8a7b7a3SRobert Watson Debugger("mac_test_destroy_devfsdirent: corrupted label"); 360d8a7b7a3SRobert Watson } 361d8a7b7a3SRobert Watson } 362d8a7b7a3SRobert Watson 363d8a7b7a3SRobert Watson static void 36496adb909SRobert Watson mac_test_destroy_ifnet_label(struct label *label) 365d8a7b7a3SRobert Watson { 366d8a7b7a3SRobert Watson 367d8a7b7a3SRobert Watson if (SLOT(label) == IFNETMAGIC || SLOT(label) == 0) { 368d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_ifnet, 1); 369d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 370d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 371d8a7b7a3SRobert Watson Debugger("mac_test_destroy_ifnet: dup destroy"); 372d8a7b7a3SRobert Watson } else { 373d8a7b7a3SRobert Watson Debugger("mac_test_destroy_ifnet: corrupted label"); 374d8a7b7a3SRobert Watson } 375d8a7b7a3SRobert Watson } 376d8a7b7a3SRobert Watson 377d8a7b7a3SRobert Watson static void 37896adb909SRobert Watson mac_test_destroy_ipq_label(struct label *label) 379d8a7b7a3SRobert Watson { 380d8a7b7a3SRobert Watson 381d8a7b7a3SRobert Watson if (SLOT(label) == IPQMAGIC || SLOT(label) == 0) { 382d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_ipq, 1); 383d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 384d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 385d8a7b7a3SRobert Watson Debugger("mac_test_destroy_ipq: dup destroy"); 386d8a7b7a3SRobert Watson } else { 387d8a7b7a3SRobert Watson Debugger("mac_test_destroy_ipq: corrupted label"); 388d8a7b7a3SRobert Watson } 389d8a7b7a3SRobert Watson } 390d8a7b7a3SRobert Watson 391d8a7b7a3SRobert Watson static void 39296adb909SRobert Watson mac_test_destroy_mbuf_label(struct label *label) 393d8a7b7a3SRobert Watson { 394d8a7b7a3SRobert Watson 395d8a7b7a3SRobert Watson if (SLOT(label) == MBUFMAGIC || SLOT(label) == 0) { 396d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_mbuf, 1); 397d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 398d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 399d8a7b7a3SRobert Watson Debugger("mac_test_destroy_mbuf: dup destroy"); 400d8a7b7a3SRobert Watson } else { 401d8a7b7a3SRobert Watson Debugger("mac_test_destroy_mbuf: corrupted label"); 402d8a7b7a3SRobert Watson } 403d8a7b7a3SRobert Watson } 404d8a7b7a3SRobert Watson 405d8a7b7a3SRobert Watson static void 40696adb909SRobert Watson mac_test_destroy_mount_label(struct label *label) 407d8a7b7a3SRobert Watson { 408d8a7b7a3SRobert Watson 40996adb909SRobert Watson if ((SLOT(label) == MOUNTMAGIC || SLOT(label) == 0)) { 410d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_mount, 1); 41196adb909SRobert Watson SLOT(label) = EXMAGIC; 41296adb909SRobert Watson } else if (SLOT(label) == EXMAGIC) { 413d8a7b7a3SRobert Watson Debugger("mac_test_destroy_mount: dup destroy"); 414d8a7b7a3SRobert Watson } else { 415d8a7b7a3SRobert Watson Debugger("mac_test_destroy_mount: corrupted label"); 416d8a7b7a3SRobert Watson } 417d8a7b7a3SRobert Watson } 418d8a7b7a3SRobert Watson 419d8a7b7a3SRobert Watson static void 42096adb909SRobert Watson mac_test_destroy_mount_fs_label(struct label *label) 421d8a7b7a3SRobert Watson { 422d8a7b7a3SRobert Watson 42396adb909SRobert Watson if ((SLOT(label) == MOUNTMAGIC || SLOT(label) == 0)) { 42496adb909SRobert Watson atomic_add_int(&destroy_count_mount_fslabel, 1); 42596adb909SRobert Watson SLOT(label) = EXMAGIC; 42696adb909SRobert Watson } else if (SLOT(label) == EXMAGIC) { 42796adb909SRobert Watson Debugger("mac_test_destroy_mount_fslabel: dup destroy"); 42896adb909SRobert Watson } else { 42996adb909SRobert Watson Debugger("mac_test_destroy_mount_fslabel: corrupted label"); 43096adb909SRobert Watson } 43196adb909SRobert Watson } 43296adb909SRobert Watson 43396adb909SRobert Watson static void 43496adb909SRobert Watson mac_test_destroy_socket_label(struct label *label) 43596adb909SRobert Watson { 43696adb909SRobert Watson 43796adb909SRobert Watson if ((SLOT(label) == SOCKETMAGIC || SLOT(label) == 0)) { 438d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_socket, 1); 439d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 44096adb909SRobert Watson } else if (SLOT(label) == EXMAGIC) { 441d8a7b7a3SRobert Watson Debugger("mac_test_destroy_socket: dup destroy"); 442d8a7b7a3SRobert Watson } else { 443d8a7b7a3SRobert Watson Debugger("mac_test_destroy_socket: corrupted label"); 444d8a7b7a3SRobert Watson } 445d8a7b7a3SRobert Watson } 44696adb909SRobert Watson 447d8a7b7a3SRobert Watson static void 44896adb909SRobert Watson mac_test_destroy_socket_peer_label(struct label *label) 44996adb909SRobert Watson { 45096adb909SRobert Watson 45196adb909SRobert Watson if ((SLOT(label) == SOCKETMAGIC || SLOT(label) == 0)) { 45296adb909SRobert Watson atomic_add_int(&destroy_count_socket_peerlabel, 1); 45396adb909SRobert Watson SLOT(label) = EXMAGIC; 45496adb909SRobert Watson } else if (SLOT(label) == EXMAGIC) { 45596adb909SRobert Watson Debugger("mac_test_destroy_socket_peerlabel: dup destroy"); 45696adb909SRobert Watson } else { 45796adb909SRobert Watson Debugger("mac_test_destroy_socket_peerlabel: corrupted label"); 45896adb909SRobert Watson } 45996adb909SRobert Watson } 46096adb909SRobert Watson 46196adb909SRobert Watson static void 46296adb909SRobert Watson mac_test_destroy_pipe_label(struct label *label) 463d8a7b7a3SRobert Watson { 464d8a7b7a3SRobert Watson 465d8a7b7a3SRobert Watson if ((SLOT(label) == PIPEMAGIC || SLOT(label) == 0)) { 466d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_pipe, 1); 467d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 468d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 469d8a7b7a3SRobert Watson Debugger("mac_test_destroy_pipe: dup destroy"); 470d8a7b7a3SRobert Watson } else { 471d8a7b7a3SRobert Watson Debugger("mac_test_destroy_pipe: corrupted label"); 472d8a7b7a3SRobert Watson } 473d8a7b7a3SRobert Watson } 474d8a7b7a3SRobert Watson 475d8a7b7a3SRobert Watson static void 476ca26e8baSRobert Watson mac_test_destroy_proc_label(struct label *label) 477ca26e8baSRobert Watson { 478ca26e8baSRobert Watson 479ca26e8baSRobert Watson if ((SLOT(label) == PROCMAGIC || SLOT(label) == 0)) { 480ca26e8baSRobert Watson atomic_add_int(&destroy_count_proc, 1); 481ca26e8baSRobert Watson SLOT(label) = EXMAGIC; 482ca26e8baSRobert Watson } else if (SLOT(label) == EXMAGIC) { 483ca26e8baSRobert Watson Debugger("mac_test_destroy_proc: dup destroy"); 484ca26e8baSRobert Watson } else { 485ca26e8baSRobert Watson Debugger("mac_test_destroy_proc: corrupted label"); 486ca26e8baSRobert Watson } 487ca26e8baSRobert Watson } 488ca26e8baSRobert Watson 489ca26e8baSRobert Watson static void 49096adb909SRobert Watson mac_test_destroy_vnode_label(struct label *label) 491d8a7b7a3SRobert Watson { 492d8a7b7a3SRobert Watson 493d8a7b7a3SRobert Watson if (SLOT(label) == VNODEMAGIC || SLOT(label) == 0) { 494d8a7b7a3SRobert Watson atomic_add_int(&destroy_count_vnode, 1); 495d8a7b7a3SRobert Watson SLOT(label) = EXMAGIC; 496d8a7b7a3SRobert Watson } else if (SLOT(label) == EXMAGIC) { 497d8a7b7a3SRobert Watson Debugger("mac_test_destroy_vnode: dup destroy"); 498d8a7b7a3SRobert Watson } else { 499d8a7b7a3SRobert Watson Debugger("mac_test_destroy_vnode: corrupted label"); 500d8a7b7a3SRobert Watson } 501d8a7b7a3SRobert Watson } 502d8a7b7a3SRobert Watson 503d8a7b7a3SRobert Watson static int 50424e8d0d0SRobert Watson mac_test_externalize_label(struct label *label, char *element_name, 50524e8d0d0SRobert Watson char *element_data, size_t size, size_t *len, int *claimed) 506d8a7b7a3SRobert Watson { 507d8a7b7a3SRobert Watson 508d8a7b7a3SRobert Watson atomic_add_int(&externalize_count, 1); 509d8a7b7a3SRobert Watson 510d8a7b7a3SRobert Watson return (0); 511d8a7b7a3SRobert Watson } 512d8a7b7a3SRobert Watson 513d8a7b7a3SRobert Watson static int 5141979061bSRobert Watson mac_test_internalize_label(struct label *label, char *element_name, 5151979061bSRobert Watson char *element_data, int *claimed) 516d8a7b7a3SRobert Watson { 517d8a7b7a3SRobert Watson 518d8a7b7a3SRobert Watson atomic_add_int(&internalize_count, 1); 519d8a7b7a3SRobert Watson 520d8a7b7a3SRobert Watson return (0); 521d8a7b7a3SRobert Watson } 522d8a7b7a3SRobert Watson 523d8a7b7a3SRobert Watson /* 524d8a7b7a3SRobert Watson * Labeling event operations: file system objects, and things that look 525d8a7b7a3SRobert Watson * a lot like file system objects. 526d8a7b7a3SRobert Watson */ 527d8a7b7a3SRobert Watson static void 528763bbd2fSRobert Watson mac_test_associate_vnode_devfs(struct mount *mp, struct label *fslabel, 529763bbd2fSRobert Watson struct devfs_dirent *de, struct label *delabel, struct vnode *vp, 530763bbd2fSRobert Watson struct label *vlabel) 531763bbd2fSRobert Watson { 532763bbd2fSRobert Watson 533763bbd2fSRobert Watson } 534763bbd2fSRobert Watson 535763bbd2fSRobert Watson static int 536763bbd2fSRobert Watson mac_test_associate_vnode_extattr(struct mount *mp, struct label *fslabel, 537763bbd2fSRobert Watson struct vnode *vp, struct label *vlabel) 538763bbd2fSRobert Watson { 539763bbd2fSRobert Watson 540763bbd2fSRobert Watson return (0); 541763bbd2fSRobert Watson } 542763bbd2fSRobert Watson 543763bbd2fSRobert Watson static void 544763bbd2fSRobert Watson mac_test_associate_vnode_singlelabel(struct mount *mp, 545763bbd2fSRobert Watson struct label *fslabel, struct vnode *vp, struct label *vlabel) 546763bbd2fSRobert Watson { 547763bbd2fSRobert Watson 548763bbd2fSRobert Watson } 549763bbd2fSRobert Watson 550763bbd2fSRobert Watson static void 551990b4b2dSRobert Watson mac_test_create_devfs_device(struct mount *mp, dev_t dev, 552d8a7b7a3SRobert Watson struct devfs_dirent *devfs_dirent, struct label *label) 553d8a7b7a3SRobert Watson { 554d8a7b7a3SRobert Watson 555d8a7b7a3SRobert Watson } 556d8a7b7a3SRobert Watson 557d8a7b7a3SRobert Watson static void 558990b4b2dSRobert Watson mac_test_create_devfs_directory(struct mount *mp, char *dirname, 559990b4b2dSRobert Watson int dirnamelen, struct devfs_dirent *devfs_dirent, struct label *label) 560990b4b2dSRobert Watson { 561990b4b2dSRobert Watson 562990b4b2dSRobert Watson } 563990b4b2dSRobert Watson 564990b4b2dSRobert Watson static void 565990b4b2dSRobert Watson mac_test_create_devfs_symlink(struct ucred *cred, struct mount *mp, 566990b4b2dSRobert Watson struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de, 567990b4b2dSRobert Watson struct label *delabel) 568eea8ea31SRobert Watson { 569eea8ea31SRobert Watson 570eea8ea31SRobert Watson } 571eea8ea31SRobert Watson 572763bbd2fSRobert Watson static int 573763bbd2fSRobert Watson mac_test_create_vnode_extattr(struct ucred *cred, struct mount *mp, 574763bbd2fSRobert Watson struct label *fslabel, struct vnode *dvp, struct label *dlabel, 575763bbd2fSRobert Watson struct vnode *vp, struct label *vlabel, struct componentname *cnp) 576d8a7b7a3SRobert Watson { 577d8a7b7a3SRobert Watson 578763bbd2fSRobert Watson return (0); 579d8a7b7a3SRobert Watson } 580d8a7b7a3SRobert Watson 581d8a7b7a3SRobert Watson static void 582d8a7b7a3SRobert Watson mac_test_create_mount(struct ucred *cred, struct mount *mp, 583d8a7b7a3SRobert Watson struct label *mntlabel, struct label *fslabel) 584d8a7b7a3SRobert Watson { 585d8a7b7a3SRobert Watson 586d8a7b7a3SRobert Watson } 587d8a7b7a3SRobert Watson 588d8a7b7a3SRobert Watson static void 589d8a7b7a3SRobert Watson mac_test_create_root_mount(struct ucred *cred, struct mount *mp, 590d8a7b7a3SRobert Watson struct label *mntlabel, struct label *fslabel) 591d8a7b7a3SRobert Watson { 592d8a7b7a3SRobert Watson 593d8a7b7a3SRobert Watson } 594d8a7b7a3SRobert Watson 595d8a7b7a3SRobert Watson static void 596d8a7b7a3SRobert Watson mac_test_relabel_vnode(struct ucred *cred, struct vnode *vp, 597d8a7b7a3SRobert Watson struct label *vnodelabel, struct label *label) 598d8a7b7a3SRobert Watson { 599d8a7b7a3SRobert Watson 600d8a7b7a3SRobert Watson } 601d8a7b7a3SRobert Watson 602d8a7b7a3SRobert Watson static int 603763bbd2fSRobert Watson mac_test_setlabel_vnode_extattr(struct ucred *cred, struct vnode *vp, 604763bbd2fSRobert Watson struct label *vlabel, struct label *intlabel) 605d8a7b7a3SRobert Watson { 606d8a7b7a3SRobert Watson 607d8a7b7a3SRobert Watson return (0); 608d8a7b7a3SRobert Watson } 609d8a7b7a3SRobert Watson 610d8a7b7a3SRobert Watson static void 611990b4b2dSRobert Watson mac_test_update_devfsdirent(struct mount *mp, 612990b4b2dSRobert Watson struct devfs_dirent *devfs_dirent, struct label *direntlabel, 613990b4b2dSRobert Watson struct vnode *vp, struct label *vnodelabel) 614d8a7b7a3SRobert Watson { 615d8a7b7a3SRobert Watson 616d8a7b7a3SRobert Watson } 617d8a7b7a3SRobert Watson 618d8a7b7a3SRobert Watson /* 619d8a7b7a3SRobert Watson * Labeling event operations: IPC object. 620d8a7b7a3SRobert Watson */ 621d8a7b7a3SRobert Watson static void 622d8a7b7a3SRobert Watson mac_test_create_mbuf_from_socket(struct socket *so, struct label *socketlabel, 623d8a7b7a3SRobert Watson struct mbuf *m, struct label *mbuflabel) 624d8a7b7a3SRobert Watson { 625d8a7b7a3SRobert Watson 626d8a7b7a3SRobert Watson } 627d8a7b7a3SRobert Watson 628d8a7b7a3SRobert Watson static void 629d8a7b7a3SRobert Watson mac_test_create_socket(struct ucred *cred, struct socket *socket, 630d8a7b7a3SRobert Watson struct label *socketlabel) 631d8a7b7a3SRobert Watson { 632d8a7b7a3SRobert Watson 633d8a7b7a3SRobert Watson } 634d8a7b7a3SRobert Watson 635d8a7b7a3SRobert Watson static void 636d8a7b7a3SRobert Watson mac_test_create_pipe(struct ucred *cred, struct pipe *pipe, 637d8a7b7a3SRobert Watson struct label *pipelabel) 638d8a7b7a3SRobert Watson { 639d8a7b7a3SRobert Watson 640d8a7b7a3SRobert Watson } 641d8a7b7a3SRobert Watson 642d8a7b7a3SRobert Watson static void 643d8a7b7a3SRobert Watson mac_test_create_socket_from_socket(struct socket *oldsocket, 644d8a7b7a3SRobert Watson struct label *oldsocketlabel, struct socket *newsocket, 645d8a7b7a3SRobert Watson struct label *newsocketlabel) 646d8a7b7a3SRobert Watson { 647d8a7b7a3SRobert Watson 648d8a7b7a3SRobert Watson } 649d8a7b7a3SRobert Watson 650d8a7b7a3SRobert Watson static void 651d8a7b7a3SRobert Watson mac_test_relabel_socket(struct ucred *cred, struct socket *socket, 652d8a7b7a3SRobert Watson struct label *socketlabel, struct label *newlabel) 653d8a7b7a3SRobert Watson { 654d8a7b7a3SRobert Watson 655d8a7b7a3SRobert Watson } 656d8a7b7a3SRobert Watson 657d8a7b7a3SRobert Watson static void 658d8a7b7a3SRobert Watson mac_test_relabel_pipe(struct ucred *cred, struct pipe *pipe, 659d8a7b7a3SRobert Watson struct label *pipelabel, struct label *newlabel) 660d8a7b7a3SRobert Watson { 661d8a7b7a3SRobert Watson 662d8a7b7a3SRobert Watson } 663d8a7b7a3SRobert Watson 664d8a7b7a3SRobert Watson static void 665d8a7b7a3SRobert Watson mac_test_set_socket_peer_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel, 666d8a7b7a3SRobert Watson struct socket *socket, struct label *socketpeerlabel) 667d8a7b7a3SRobert Watson { 668d8a7b7a3SRobert Watson 669d8a7b7a3SRobert Watson } 670d8a7b7a3SRobert Watson 671d8a7b7a3SRobert Watson /* 672d8a7b7a3SRobert Watson * Labeling event operations: network objects. 673d8a7b7a3SRobert Watson */ 674d8a7b7a3SRobert Watson static void 675d8a7b7a3SRobert Watson mac_test_set_socket_peer_from_socket(struct socket *oldsocket, 676d8a7b7a3SRobert Watson struct label *oldsocketlabel, struct socket *newsocket, 677d8a7b7a3SRobert Watson struct label *newsocketpeerlabel) 678d8a7b7a3SRobert Watson { 679d8a7b7a3SRobert Watson 680d8a7b7a3SRobert Watson } 681d8a7b7a3SRobert Watson 682d8a7b7a3SRobert Watson static void 683d8a7b7a3SRobert Watson mac_test_create_bpfdesc(struct ucred *cred, struct bpf_d *bpf_d, 684d8a7b7a3SRobert Watson struct label *bpflabel) 685d8a7b7a3SRobert Watson { 686d8a7b7a3SRobert Watson 687d8a7b7a3SRobert Watson } 688d8a7b7a3SRobert Watson 689d8a7b7a3SRobert Watson static void 690d8a7b7a3SRobert Watson mac_test_create_datagram_from_ipq(struct ipq *ipq, struct label *ipqlabel, 691d8a7b7a3SRobert Watson struct mbuf *datagram, struct label *datagramlabel) 692d8a7b7a3SRobert Watson { 693d8a7b7a3SRobert Watson 694d8a7b7a3SRobert Watson } 695d8a7b7a3SRobert Watson 696d8a7b7a3SRobert Watson static void 697d8a7b7a3SRobert Watson mac_test_create_fragment(struct mbuf *datagram, struct label *datagramlabel, 698d8a7b7a3SRobert Watson struct mbuf *fragment, struct label *fragmentlabel) 699d8a7b7a3SRobert Watson { 700d8a7b7a3SRobert Watson 701d8a7b7a3SRobert Watson } 702d8a7b7a3SRobert Watson 703d8a7b7a3SRobert Watson static void 704d8a7b7a3SRobert Watson mac_test_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel) 705d8a7b7a3SRobert Watson { 706d8a7b7a3SRobert Watson 707d8a7b7a3SRobert Watson } 708d8a7b7a3SRobert Watson 709d8a7b7a3SRobert Watson static void 710d8a7b7a3SRobert Watson mac_test_create_ipq(struct mbuf *fragment, struct label *fragmentlabel, 711d8a7b7a3SRobert Watson struct ipq *ipq, struct label *ipqlabel) 712d8a7b7a3SRobert Watson { 713d8a7b7a3SRobert Watson 714d8a7b7a3SRobert Watson } 715d8a7b7a3SRobert Watson 716d8a7b7a3SRobert Watson static void 717d8a7b7a3SRobert Watson mac_test_create_mbuf_from_mbuf(struct mbuf *oldmbuf, 718d8a7b7a3SRobert Watson struct label *oldmbuflabel, struct mbuf *newmbuf, 719d8a7b7a3SRobert Watson struct label *newmbuflabel) 720d8a7b7a3SRobert Watson { 721d8a7b7a3SRobert Watson 722d8a7b7a3SRobert Watson } 723d8a7b7a3SRobert Watson 724d8a7b7a3SRobert Watson static void 725d8a7b7a3SRobert Watson mac_test_create_mbuf_linklayer(struct ifnet *ifnet, struct label *ifnetlabel, 726d8a7b7a3SRobert Watson struct mbuf *mbuf, struct label *mbuflabel) 727d8a7b7a3SRobert Watson { 728d8a7b7a3SRobert Watson 729d8a7b7a3SRobert Watson } 730d8a7b7a3SRobert Watson 731d8a7b7a3SRobert Watson static void 732d8a7b7a3SRobert Watson mac_test_create_mbuf_from_bpfdesc(struct bpf_d *bpf_d, struct label *bpflabel, 733d8a7b7a3SRobert Watson struct mbuf *mbuf, struct label *mbuflabel) 734d8a7b7a3SRobert Watson { 735d8a7b7a3SRobert Watson 736d8a7b7a3SRobert Watson } 737d8a7b7a3SRobert Watson 738d8a7b7a3SRobert Watson static void 739d8a7b7a3SRobert Watson mac_test_create_mbuf_from_ifnet(struct ifnet *ifnet, struct label *ifnetlabel, 740d8a7b7a3SRobert Watson struct mbuf *m, struct label *mbuflabel) 741d8a7b7a3SRobert Watson { 742d8a7b7a3SRobert Watson 743d8a7b7a3SRobert Watson } 744d8a7b7a3SRobert Watson 745d8a7b7a3SRobert Watson static void 746d8a7b7a3SRobert Watson mac_test_create_mbuf_multicast_encap(struct mbuf *oldmbuf, 747d8a7b7a3SRobert Watson struct label *oldmbuflabel, struct ifnet *ifnet, struct label *ifnetlabel, 748d8a7b7a3SRobert Watson struct mbuf *newmbuf, struct label *newmbuflabel) 749d8a7b7a3SRobert Watson { 750d8a7b7a3SRobert Watson 751d8a7b7a3SRobert Watson } 752d8a7b7a3SRobert Watson 753d8a7b7a3SRobert Watson static void 754d8a7b7a3SRobert Watson mac_test_create_mbuf_netlayer(struct mbuf *oldmbuf, 755d8a7b7a3SRobert Watson struct label *oldmbuflabel, struct mbuf *newmbuf, 756d8a7b7a3SRobert Watson struct label *newmbuflabel) 757d8a7b7a3SRobert Watson { 758d8a7b7a3SRobert Watson 759d8a7b7a3SRobert Watson } 760d8a7b7a3SRobert Watson 761d8a7b7a3SRobert Watson static int 762d8a7b7a3SRobert Watson mac_test_fragment_match(struct mbuf *fragment, struct label *fragmentlabel, 763d8a7b7a3SRobert Watson struct ipq *ipq, struct label *ipqlabel) 764d8a7b7a3SRobert Watson { 765d8a7b7a3SRobert Watson 766d8a7b7a3SRobert Watson return (1); 767d8a7b7a3SRobert Watson } 768d8a7b7a3SRobert Watson 769d8a7b7a3SRobert Watson static void 770d8a7b7a3SRobert Watson mac_test_relabel_ifnet(struct ucred *cred, struct ifnet *ifnet, 771d8a7b7a3SRobert Watson struct label *ifnetlabel, struct label *newlabel) 772d8a7b7a3SRobert Watson { 773d8a7b7a3SRobert Watson 774d8a7b7a3SRobert Watson } 775d8a7b7a3SRobert Watson 776d8a7b7a3SRobert Watson static void 777d8a7b7a3SRobert Watson mac_test_update_ipq(struct mbuf *fragment, struct label *fragmentlabel, 778d8a7b7a3SRobert Watson struct ipq *ipq, struct label *ipqlabel) 779d8a7b7a3SRobert Watson { 780d8a7b7a3SRobert Watson 781d8a7b7a3SRobert Watson } 782d8a7b7a3SRobert Watson 783d8a7b7a3SRobert Watson /* 784d8a7b7a3SRobert Watson * Labeling event operations: processes. 785d8a7b7a3SRobert Watson */ 786d8a7b7a3SRobert Watson static void 787d8a7b7a3SRobert Watson mac_test_create_cred(struct ucred *cred_parent, struct ucred *cred_child) 788d8a7b7a3SRobert Watson { 789d8a7b7a3SRobert Watson 790d8a7b7a3SRobert Watson } 791d8a7b7a3SRobert Watson 792d8a7b7a3SRobert Watson static void 793d8a7b7a3SRobert Watson mac_test_execve_transition(struct ucred *old, struct ucred *new, 794939b97cbSRobert Watson struct vnode *vp, struct label *filelabel, 795ef5def59SRobert Watson struct label *interpvnodelabel, struct image_params *imgp, 796ef5def59SRobert Watson struct label *execlabel) 797d8a7b7a3SRobert Watson { 798d8a7b7a3SRobert Watson 799d8a7b7a3SRobert Watson } 800d8a7b7a3SRobert Watson 801d8a7b7a3SRobert Watson static int 802d8a7b7a3SRobert Watson mac_test_execve_will_transition(struct ucred *old, struct vnode *vp, 803939b97cbSRobert Watson struct label *filelabel, struct label *interpvnodelabel, 804ef5def59SRobert Watson struct image_params *imgp, struct label *execlabel) 805d8a7b7a3SRobert Watson { 806d8a7b7a3SRobert Watson 807d8a7b7a3SRobert Watson return (0); 808d8a7b7a3SRobert Watson } 809d8a7b7a3SRobert Watson 810d8a7b7a3SRobert Watson static void 811d8a7b7a3SRobert Watson mac_test_create_proc0(struct ucred *cred) 812d8a7b7a3SRobert Watson { 813d8a7b7a3SRobert Watson 814d8a7b7a3SRobert Watson } 815d8a7b7a3SRobert Watson 816d8a7b7a3SRobert Watson static void 817d8a7b7a3SRobert Watson mac_test_create_proc1(struct ucred *cred) 818d8a7b7a3SRobert Watson { 819d8a7b7a3SRobert Watson 820d8a7b7a3SRobert Watson } 821d8a7b7a3SRobert Watson 822d8a7b7a3SRobert Watson static void 823d8a7b7a3SRobert Watson mac_test_relabel_cred(struct ucred *cred, struct label *newlabel) 824d8a7b7a3SRobert Watson { 825d8a7b7a3SRobert Watson 826d8a7b7a3SRobert Watson } 827d8a7b7a3SRobert Watson 828ca26e8baSRobert Watson static void 829ca26e8baSRobert Watson mac_test_thread_userret(struct thread *td) 830ca26e8baSRobert Watson { 831ca26e8baSRobert Watson 832ca26e8baSRobert Watson } 833ca26e8baSRobert Watson 834d8a7b7a3SRobert Watson /* 835d8a7b7a3SRobert Watson * Access control checks. 836d8a7b7a3SRobert Watson */ 837d8a7b7a3SRobert Watson static int 838d8a7b7a3SRobert Watson mac_test_check_bpfdesc_receive(struct bpf_d *bpf_d, struct label *bpflabel, 839d8a7b7a3SRobert Watson struct ifnet *ifnet, struct label *ifnetlabel) 840d8a7b7a3SRobert Watson { 841d8a7b7a3SRobert Watson 842d8a7b7a3SRobert Watson return (0); 843d8a7b7a3SRobert Watson } 844d8a7b7a3SRobert Watson 845d8a7b7a3SRobert Watson static int 846d8a7b7a3SRobert Watson mac_test_check_cred_relabel(struct ucred *cred, struct label *newlabel) 847d8a7b7a3SRobert Watson { 848d8a7b7a3SRobert Watson 849d8a7b7a3SRobert Watson return (0); 850d8a7b7a3SRobert Watson } 851d8a7b7a3SRobert Watson 852d8a7b7a3SRobert Watson static int 853d8a7b7a3SRobert Watson mac_test_check_cred_visible(struct ucred *u1, struct ucred *u2) 854d8a7b7a3SRobert Watson { 855d8a7b7a3SRobert Watson 856d8a7b7a3SRobert Watson return (0); 857d8a7b7a3SRobert Watson } 858d8a7b7a3SRobert Watson 859d8a7b7a3SRobert Watson static int 860d8a7b7a3SRobert Watson mac_test_check_ifnet_relabel(struct ucred *cred, struct ifnet *ifnet, 861d8a7b7a3SRobert Watson struct label *ifnetlabel, struct label *newlabel) 862d8a7b7a3SRobert Watson { 863d8a7b7a3SRobert Watson 864d8a7b7a3SRobert Watson return (0); 865d8a7b7a3SRobert Watson } 866d8a7b7a3SRobert Watson 867d8a7b7a3SRobert Watson static int 868d8a7b7a3SRobert Watson mac_test_check_ifnet_transmit(struct ifnet *ifnet, struct label *ifnetlabel, 869d8a7b7a3SRobert Watson struct mbuf *m, struct label *mbuflabel) 870d8a7b7a3SRobert Watson { 871d8a7b7a3SRobert Watson 872d8a7b7a3SRobert Watson return (0); 873d8a7b7a3SRobert Watson } 874d8a7b7a3SRobert Watson 875d8a7b7a3SRobert Watson static int 876ca26e8baSRobert Watson mac_test_check_kenv_dump(struct ucred *cred) 877ca26e8baSRobert Watson { 878ca26e8baSRobert Watson 879ca26e8baSRobert Watson return (0); 880ca26e8baSRobert Watson } 881ca26e8baSRobert Watson 882ca26e8baSRobert Watson static int 883ca26e8baSRobert Watson mac_test_check_kenv_get(struct ucred *cred, char *name) 884ca26e8baSRobert Watson { 885ca26e8baSRobert Watson 886ca26e8baSRobert Watson return (0); 887ca26e8baSRobert Watson } 888ca26e8baSRobert Watson 889ca26e8baSRobert Watson static int 890ca26e8baSRobert Watson mac_test_check_kenv_set(struct ucred *cred, char *name, char *value) 891ca26e8baSRobert Watson { 892ca26e8baSRobert Watson 893ca26e8baSRobert Watson return (0); 894ca26e8baSRobert Watson } 895ca26e8baSRobert Watson 896ca26e8baSRobert Watson static int 897ca26e8baSRobert Watson mac_test_check_kenv_unset(struct ucred *cred, char *name) 898ca26e8baSRobert Watson { 899ca26e8baSRobert Watson 900ca26e8baSRobert Watson return (0); 901ca26e8baSRobert Watson } 902ca26e8baSRobert Watson 903ca26e8baSRobert Watson static int 904ca26e8baSRobert Watson mac_test_check_kld_load(struct ucred *cred, struct vnode *vp, 905ca26e8baSRobert Watson struct label *label) 906ca26e8baSRobert Watson { 907ca26e8baSRobert Watson 908ca26e8baSRobert Watson return (0); 909ca26e8baSRobert Watson } 910ca26e8baSRobert Watson 911ca26e8baSRobert Watson static int 912ca26e8baSRobert Watson mac_test_check_kld_stat(struct ucred *cred) 913ca26e8baSRobert Watson { 914ca26e8baSRobert Watson 915ca26e8baSRobert Watson return (0); 916ca26e8baSRobert Watson } 917ca26e8baSRobert Watson 918ca26e8baSRobert Watson static int 919ca26e8baSRobert Watson mac_test_check_kld_unload(struct ucred *cred) 920ca26e8baSRobert Watson { 921ca26e8baSRobert Watson 922ca26e8baSRobert Watson return (0); 923ca26e8baSRobert Watson } 924ca26e8baSRobert Watson 925ca26e8baSRobert Watson static int 926d8a7b7a3SRobert Watson mac_test_check_mount_stat(struct ucred *cred, struct mount *mp, 927d8a7b7a3SRobert Watson struct label *mntlabel) 928d8a7b7a3SRobert Watson { 929d8a7b7a3SRobert Watson 930d8a7b7a3SRobert Watson return (0); 931d8a7b7a3SRobert Watson } 932d8a7b7a3SRobert Watson 933d8a7b7a3SRobert Watson static int 934d8a7b7a3SRobert Watson mac_test_check_pipe_ioctl(struct ucred *cred, struct pipe *pipe, 935d8a7b7a3SRobert Watson struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data) 936d8a7b7a3SRobert Watson { 937d8a7b7a3SRobert Watson 938d8a7b7a3SRobert Watson return (0); 939d8a7b7a3SRobert Watson } 940d8a7b7a3SRobert Watson 941d8a7b7a3SRobert Watson static int 942c024c3eeSRobert Watson mac_test_check_pipe_poll(struct ucred *cred, struct pipe *pipe, 943c024c3eeSRobert Watson struct label *pipelabel) 944c024c3eeSRobert Watson { 945c024c3eeSRobert Watson 946c024c3eeSRobert Watson return (0); 947c024c3eeSRobert Watson } 948c024c3eeSRobert Watson 949c024c3eeSRobert Watson static int 950c024c3eeSRobert Watson mac_test_check_pipe_read(struct ucred *cred, struct pipe *pipe, 951c024c3eeSRobert Watson struct label *pipelabel) 952d8a7b7a3SRobert Watson { 953d8a7b7a3SRobert Watson 954d8a7b7a3SRobert Watson return (0); 955d8a7b7a3SRobert Watson } 956d8a7b7a3SRobert Watson 957d8a7b7a3SRobert Watson static int 958d8a7b7a3SRobert Watson mac_test_check_pipe_relabel(struct ucred *cred, struct pipe *pipe, 959d8a7b7a3SRobert Watson struct label *pipelabel, struct label *newlabel) 960d8a7b7a3SRobert Watson { 961d8a7b7a3SRobert Watson 962d8a7b7a3SRobert Watson return (0); 963d8a7b7a3SRobert Watson } 964d8a7b7a3SRobert Watson 965d8a7b7a3SRobert Watson static int 966c024c3eeSRobert Watson mac_test_check_pipe_stat(struct ucred *cred, struct pipe *pipe, 967c024c3eeSRobert Watson struct label *pipelabel) 968c024c3eeSRobert Watson { 969c024c3eeSRobert Watson 970c024c3eeSRobert Watson return (0); 971c024c3eeSRobert Watson } 972c024c3eeSRobert Watson 973c024c3eeSRobert Watson static int 974c024c3eeSRobert Watson mac_test_check_pipe_write(struct ucred *cred, struct pipe *pipe, 975c024c3eeSRobert Watson struct label *pipelabel) 976c024c3eeSRobert Watson { 977c024c3eeSRobert Watson 978c024c3eeSRobert Watson return (0); 979c024c3eeSRobert Watson } 980c024c3eeSRobert Watson 981c024c3eeSRobert Watson static int 982d8a7b7a3SRobert Watson mac_test_check_proc_debug(struct ucred *cred, struct proc *proc) 983d8a7b7a3SRobert Watson { 984d8a7b7a3SRobert Watson 985d8a7b7a3SRobert Watson return (0); 986d8a7b7a3SRobert Watson } 987d8a7b7a3SRobert Watson 988d8a7b7a3SRobert Watson static int 989d8a7b7a3SRobert Watson mac_test_check_proc_sched(struct ucred *cred, struct proc *proc) 990d8a7b7a3SRobert Watson { 991d8a7b7a3SRobert Watson 992d8a7b7a3SRobert Watson return (0); 993d8a7b7a3SRobert Watson } 994d8a7b7a3SRobert Watson 995d8a7b7a3SRobert Watson static int 9965c8dd342SRobert Watson mac_test_check_proc_signal(struct ucred *cred, struct proc *proc, int signum) 997d8a7b7a3SRobert Watson { 998d8a7b7a3SRobert Watson 999d8a7b7a3SRobert Watson return (0); 1000d8a7b7a3SRobert Watson } 1001d8a7b7a3SRobert Watson 1002d8a7b7a3SRobert Watson static int 1003d8a7b7a3SRobert Watson mac_test_check_socket_bind(struct ucred *cred, struct socket *socket, 1004d8a7b7a3SRobert Watson struct label *socketlabel, struct sockaddr *sockaddr) 1005d8a7b7a3SRobert Watson { 1006d8a7b7a3SRobert Watson 1007d8a7b7a3SRobert Watson return (0); 1008d8a7b7a3SRobert Watson } 1009d8a7b7a3SRobert Watson 1010d8a7b7a3SRobert Watson static int 1011d8a7b7a3SRobert Watson mac_test_check_socket_connect(struct ucred *cred, struct socket *socket, 1012d8a7b7a3SRobert Watson struct label *socketlabel, struct sockaddr *sockaddr) 1013d8a7b7a3SRobert Watson { 1014d8a7b7a3SRobert Watson 1015d8a7b7a3SRobert Watson return (0); 1016d8a7b7a3SRobert Watson } 1017d8a7b7a3SRobert Watson 1018d8a7b7a3SRobert Watson static int 1019fb95b5d3SRobert Watson mac_test_check_socket_deliver(struct socket *socket, struct label *socketlabel, 1020fb95b5d3SRobert Watson struct mbuf *m, struct label *mbuflabel) 1021d8a7b7a3SRobert Watson { 1022d8a7b7a3SRobert Watson 1023d8a7b7a3SRobert Watson return (0); 1024d8a7b7a3SRobert Watson } 1025d8a7b7a3SRobert Watson 1026d8a7b7a3SRobert Watson static int 1027fb95b5d3SRobert Watson mac_test_check_socket_listen(struct ucred *cred, struct socket *socket, 10285c8dd342SRobert Watson struct label *socketlabel) 1029d8a7b7a3SRobert Watson { 1030d8a7b7a3SRobert Watson 1031d8a7b7a3SRobert Watson return (0); 1032d8a7b7a3SRobert Watson } 1033d8a7b7a3SRobert Watson 1034d8a7b7a3SRobert Watson static int 1035d8a7b7a3SRobert Watson mac_test_check_socket_visible(struct ucred *cred, struct socket *socket, 1036d8a7b7a3SRobert Watson struct label *socketlabel) 1037d8a7b7a3SRobert Watson { 1038d8a7b7a3SRobert Watson 1039d8a7b7a3SRobert Watson return (0); 1040d8a7b7a3SRobert Watson } 1041d8a7b7a3SRobert Watson 1042d8a7b7a3SRobert Watson static int 1043d8a7b7a3SRobert Watson mac_test_check_socket_relabel(struct ucred *cred, struct socket *socket, 1044d8a7b7a3SRobert Watson struct label *socketlabel, struct label *newlabel) 1045d8a7b7a3SRobert Watson { 1046d8a7b7a3SRobert Watson 1047d8a7b7a3SRobert Watson return (0); 1048d8a7b7a3SRobert Watson } 1049d8a7b7a3SRobert Watson 1050d8a7b7a3SRobert Watson static int 1051ca26e8baSRobert Watson mac_test_check_sysarch_ioperm(struct ucred *cred) 1052ca26e8baSRobert Watson { 1053ca26e8baSRobert Watson 1054ca26e8baSRobert Watson return (0); 1055ca26e8baSRobert Watson } 1056ca26e8baSRobert Watson 1057ca26e8baSRobert Watson static int 1058ca26e8baSRobert Watson mac_test_check_system_acct(struct ucred *cred, struct vnode *vp, 1059ca26e8baSRobert Watson struct label *label) 1060ca26e8baSRobert Watson { 1061ca26e8baSRobert Watson 1062ca26e8baSRobert Watson return (0); 1063ca26e8baSRobert Watson } 1064ca26e8baSRobert Watson 1065ca26e8baSRobert Watson static int 1066ca26e8baSRobert Watson mac_test_check_system_reboot(struct ucred *cred, int how) 1067ca26e8baSRobert Watson { 1068ca26e8baSRobert Watson 1069ca26e8baSRobert Watson return (0); 1070ca26e8baSRobert Watson } 1071ca26e8baSRobert Watson 1072ca26e8baSRobert Watson static int 1073ca26e8baSRobert Watson mac_test_check_system_settime(struct ucred *cred) 1074ca26e8baSRobert Watson { 1075ca26e8baSRobert Watson 1076ca26e8baSRobert Watson return (0); 1077ca26e8baSRobert Watson } 1078ca26e8baSRobert Watson 1079ca26e8baSRobert Watson static int 1080ca26e8baSRobert Watson mac_test_check_system_swapon(struct ucred *cred, struct vnode *vp, 1081ca26e8baSRobert Watson struct label *label) 1082ca26e8baSRobert Watson { 1083ca26e8baSRobert Watson 1084ca26e8baSRobert Watson return (0); 1085ca26e8baSRobert Watson } 1086ca26e8baSRobert Watson 1087ca26e8baSRobert Watson static int 1088ca26e8baSRobert Watson mac_test_check_system_swapoff(struct ucred *cred, struct vnode *vp, 1089ca26e8baSRobert Watson struct label *label) 1090ca26e8baSRobert Watson { 1091ca26e8baSRobert Watson 1092ca26e8baSRobert Watson return (0); 1093ca26e8baSRobert Watson } 1094ca26e8baSRobert Watson 1095ca26e8baSRobert Watson static int 1096ca26e8baSRobert Watson mac_test_check_system_sysctl(struct ucred *cred, int *name, u_int namelen, 1097ca26e8baSRobert Watson void *old, size_t *oldlenp, int inkernel, void *new, size_t newlen) 1098ca26e8baSRobert Watson { 1099ca26e8baSRobert Watson 1100ca26e8baSRobert Watson return (0); 1101ca26e8baSRobert Watson } 1102ca26e8baSRobert Watson 1103ca26e8baSRobert Watson static int 1104d8a7b7a3SRobert Watson mac_test_check_vnode_access(struct ucred *cred, struct vnode *vp, 1105b914de36SRobert Watson struct label *label, int acc_mode) 1106d8a7b7a3SRobert Watson { 1107d8a7b7a3SRobert Watson 1108d8a7b7a3SRobert Watson return (0); 1109d8a7b7a3SRobert Watson } 1110d8a7b7a3SRobert Watson 1111d8a7b7a3SRobert Watson static int 1112d8a7b7a3SRobert Watson mac_test_check_vnode_chdir(struct ucred *cred, struct vnode *dvp, 1113d8a7b7a3SRobert Watson struct label *dlabel) 1114d8a7b7a3SRobert Watson { 1115d8a7b7a3SRobert Watson 1116d8a7b7a3SRobert Watson return (0); 1117d8a7b7a3SRobert Watson } 1118d8a7b7a3SRobert Watson 1119d8a7b7a3SRobert Watson static int 1120d8a7b7a3SRobert Watson mac_test_check_vnode_chroot(struct ucred *cred, struct vnode *dvp, 1121d8a7b7a3SRobert Watson struct label *dlabel) 1122d8a7b7a3SRobert Watson { 1123d8a7b7a3SRobert Watson 1124d8a7b7a3SRobert Watson return (0); 1125d8a7b7a3SRobert Watson } 1126d8a7b7a3SRobert Watson 1127d8a7b7a3SRobert Watson static int 1128d8a7b7a3SRobert Watson mac_test_check_vnode_create(struct ucred *cred, struct vnode *dvp, 1129d8a7b7a3SRobert Watson struct label *dlabel, struct componentname *cnp, struct vattr *vap) 1130d8a7b7a3SRobert Watson { 1131d8a7b7a3SRobert Watson 1132d8a7b7a3SRobert Watson return (0); 1133d8a7b7a3SRobert Watson } 1134d8a7b7a3SRobert Watson 1135d8a7b7a3SRobert Watson static int 1136d8a7b7a3SRobert Watson mac_test_check_vnode_delete(struct ucred *cred, struct vnode *dvp, 1137d8a7b7a3SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, 1138d8a7b7a3SRobert Watson struct componentname *cnp) 1139d8a7b7a3SRobert Watson { 1140d8a7b7a3SRobert Watson 1141d8a7b7a3SRobert Watson return (0); 1142d8a7b7a3SRobert Watson } 1143d8a7b7a3SRobert Watson 1144d8a7b7a3SRobert Watson static int 1145d8a7b7a3SRobert Watson mac_test_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, 1146d8a7b7a3SRobert Watson struct label *label, acl_type_t type) 1147d8a7b7a3SRobert Watson { 1148d8a7b7a3SRobert Watson 1149d8a7b7a3SRobert Watson return (0); 1150d8a7b7a3SRobert Watson } 1151d8a7b7a3SRobert Watson 1152d8a7b7a3SRobert Watson static int 1153d8a7b7a3SRobert Watson mac_test_check_vnode_exec(struct ucred *cred, struct vnode *vp, 1154ef5def59SRobert Watson struct label *label, struct image_params *imgp, 1155ef5def59SRobert Watson struct label *execlabel) 1156d8a7b7a3SRobert Watson { 1157d8a7b7a3SRobert Watson 1158d8a7b7a3SRobert Watson return (0); 1159d8a7b7a3SRobert Watson } 1160d8a7b7a3SRobert Watson 1161d8a7b7a3SRobert Watson static int 1162d8a7b7a3SRobert Watson mac_test_check_vnode_getacl(struct ucred *cred, struct vnode *vp, 1163d8a7b7a3SRobert Watson struct label *label, acl_type_t type) 1164d8a7b7a3SRobert Watson { 1165d8a7b7a3SRobert Watson 1166d8a7b7a3SRobert Watson return (0); 1167d8a7b7a3SRobert Watson } 1168d8a7b7a3SRobert Watson 1169d8a7b7a3SRobert Watson static int 1170d8a7b7a3SRobert Watson mac_test_check_vnode_getextattr(struct ucred *cred, struct vnode *vp, 1171d8a7b7a3SRobert Watson struct label *label, int attrnamespace, const char *name, struct uio *uio) 1172d8a7b7a3SRobert Watson { 1173d8a7b7a3SRobert Watson 1174d8a7b7a3SRobert Watson return (0); 1175d8a7b7a3SRobert Watson } 1176d8a7b7a3SRobert Watson 1177d8a7b7a3SRobert Watson static int 1178c27b50f5SRobert Watson mac_test_check_vnode_link(struct ucred *cred, struct vnode *dvp, 1179c27b50f5SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, 1180c27b50f5SRobert Watson struct componentname *cnp) 1181c27b50f5SRobert Watson { 1182c27b50f5SRobert Watson 1183c27b50f5SRobert Watson return (0); 1184c27b50f5SRobert Watson } 1185c27b50f5SRobert Watson 1186c27b50f5SRobert Watson static int 1187d8a7b7a3SRobert Watson mac_test_check_vnode_lookup(struct ucred *cred, struct vnode *dvp, 1188d8a7b7a3SRobert Watson struct label *dlabel, struct componentname *cnp) 1189d8a7b7a3SRobert Watson { 1190d8a7b7a3SRobert Watson 1191d8a7b7a3SRobert Watson return (0); 1192d8a7b7a3SRobert Watson } 1193d8a7b7a3SRobert Watson 1194d8a7b7a3SRobert Watson static int 1195e183f80eSRobert Watson mac_test_check_vnode_mmap(struct ucred *cred, struct vnode *vp, 1196e183f80eSRobert Watson struct label *label, int prot) 1197e183f80eSRobert Watson { 1198e183f80eSRobert Watson 1199e183f80eSRobert Watson return (0); 1200e183f80eSRobert Watson } 1201e183f80eSRobert Watson 1202e183f80eSRobert Watson static int 1203e183f80eSRobert Watson mac_test_check_vnode_mprotect(struct ucred *cred, struct vnode *vp, 1204e183f80eSRobert Watson struct label *label, int prot) 1205e183f80eSRobert Watson { 1206e183f80eSRobert Watson 1207e183f80eSRobert Watson return (0); 1208e183f80eSRobert Watson } 1209e183f80eSRobert Watson 1210e183f80eSRobert Watson static int 1211d8a7b7a3SRobert Watson mac_test_check_vnode_open(struct ucred *cred, struct vnode *vp, 1212b914de36SRobert Watson struct label *filelabel, int acc_mode) 1213d8a7b7a3SRobert Watson { 1214d8a7b7a3SRobert Watson 1215d8a7b7a3SRobert Watson return (0); 1216d8a7b7a3SRobert Watson } 1217d8a7b7a3SRobert Watson 1218d8a7b7a3SRobert Watson static int 1219177142e4SRobert Watson mac_test_check_vnode_poll(struct ucred *active_cred, struct ucred *file_cred, 1220177142e4SRobert Watson struct vnode *vp, struct label *label) 12217f724f8bSRobert Watson { 12227f724f8bSRobert Watson 12237f724f8bSRobert Watson return (0); 12247f724f8bSRobert Watson } 12257f724f8bSRobert Watson 12267f724f8bSRobert Watson static int 1227177142e4SRobert Watson mac_test_check_vnode_read(struct ucred *active_cred, struct ucred *file_cred, 1228177142e4SRobert Watson struct vnode *vp, struct label *label) 12297f724f8bSRobert Watson { 12307f724f8bSRobert Watson 12317f724f8bSRobert Watson return (0); 12327f724f8bSRobert Watson } 12337f724f8bSRobert Watson 12347f724f8bSRobert Watson static int 1235d8a7b7a3SRobert Watson mac_test_check_vnode_readdir(struct ucred *cred, struct vnode *dvp, 1236d8a7b7a3SRobert Watson struct label *dlabel) 1237d8a7b7a3SRobert Watson { 1238d8a7b7a3SRobert Watson 1239d8a7b7a3SRobert Watson return (0); 1240d8a7b7a3SRobert Watson } 1241d8a7b7a3SRobert Watson 1242d8a7b7a3SRobert Watson static int 1243d8a7b7a3SRobert Watson mac_test_check_vnode_readlink(struct ucred *cred, struct vnode *vp, 1244d8a7b7a3SRobert Watson struct label *vnodelabel) 1245d8a7b7a3SRobert Watson { 1246d8a7b7a3SRobert Watson 1247d8a7b7a3SRobert Watson return (0); 1248d8a7b7a3SRobert Watson } 1249d8a7b7a3SRobert Watson 1250d8a7b7a3SRobert Watson static int 1251d8a7b7a3SRobert Watson mac_test_check_vnode_relabel(struct ucred *cred, struct vnode *vp, 1252d8a7b7a3SRobert Watson struct label *vnodelabel, struct label *newlabel) 1253d8a7b7a3SRobert Watson { 1254d8a7b7a3SRobert Watson 1255d8a7b7a3SRobert Watson return (0); 1256d8a7b7a3SRobert Watson } 1257d8a7b7a3SRobert Watson 1258d8a7b7a3SRobert Watson static int 1259d8a7b7a3SRobert Watson mac_test_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp, 1260d8a7b7a3SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, 1261d8a7b7a3SRobert Watson struct componentname *cnp) 1262d8a7b7a3SRobert Watson { 1263d8a7b7a3SRobert Watson 1264d8a7b7a3SRobert Watson return (0); 1265d8a7b7a3SRobert Watson } 1266d8a7b7a3SRobert Watson 1267d8a7b7a3SRobert Watson static int 1268d8a7b7a3SRobert Watson mac_test_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp, 1269d8a7b7a3SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, int samedir, 1270d8a7b7a3SRobert Watson struct componentname *cnp) 1271d8a7b7a3SRobert Watson { 1272d8a7b7a3SRobert Watson 1273d8a7b7a3SRobert Watson return (0); 1274d8a7b7a3SRobert Watson } 1275d8a7b7a3SRobert Watson 1276d8a7b7a3SRobert Watson static int 1277d8a7b7a3SRobert Watson mac_test_check_vnode_revoke(struct ucred *cred, struct vnode *vp, 1278d8a7b7a3SRobert Watson struct label *label) 1279d8a7b7a3SRobert Watson { 1280d8a7b7a3SRobert Watson 1281d8a7b7a3SRobert Watson return (0); 1282d8a7b7a3SRobert Watson } 1283d8a7b7a3SRobert Watson 1284d8a7b7a3SRobert Watson static int 1285d8a7b7a3SRobert Watson mac_test_check_vnode_setacl(struct ucred *cred, struct vnode *vp, 1286d8a7b7a3SRobert Watson struct label *label, acl_type_t type, struct acl *acl) 1287d8a7b7a3SRobert Watson { 1288d8a7b7a3SRobert Watson 1289d8a7b7a3SRobert Watson return (0); 1290d8a7b7a3SRobert Watson } 1291d8a7b7a3SRobert Watson 1292d8a7b7a3SRobert Watson static int 1293d8a7b7a3SRobert Watson mac_test_check_vnode_setextattr(struct ucred *cred, struct vnode *vp, 1294d8a7b7a3SRobert Watson struct label *label, int attrnamespace, const char *name, struct uio *uio) 1295d8a7b7a3SRobert Watson { 1296d8a7b7a3SRobert Watson 1297d8a7b7a3SRobert Watson return (0); 1298d8a7b7a3SRobert Watson } 1299d8a7b7a3SRobert Watson 1300d8a7b7a3SRobert Watson static int 1301d8a7b7a3SRobert Watson mac_test_check_vnode_setflags(struct ucred *cred, struct vnode *vp, 1302d8a7b7a3SRobert Watson struct label *label, u_long flags) 1303d8a7b7a3SRobert Watson { 1304d8a7b7a3SRobert Watson 1305d8a7b7a3SRobert Watson return (0); 1306d8a7b7a3SRobert Watson } 1307d8a7b7a3SRobert Watson 1308d8a7b7a3SRobert Watson static int 1309d8a7b7a3SRobert Watson mac_test_check_vnode_setmode(struct ucred *cred, struct vnode *vp, 1310d8a7b7a3SRobert Watson struct label *label, mode_t mode) 1311d8a7b7a3SRobert Watson { 1312d8a7b7a3SRobert Watson 1313d8a7b7a3SRobert Watson return (0); 1314d8a7b7a3SRobert Watson } 1315d8a7b7a3SRobert Watson 1316d8a7b7a3SRobert Watson static int 1317d8a7b7a3SRobert Watson mac_test_check_vnode_setowner(struct ucred *cred, struct vnode *vp, 1318d8a7b7a3SRobert Watson struct label *label, uid_t uid, gid_t gid) 1319d8a7b7a3SRobert Watson { 1320d8a7b7a3SRobert Watson 1321d8a7b7a3SRobert Watson return (0); 1322d8a7b7a3SRobert Watson } 1323d8a7b7a3SRobert Watson 1324d8a7b7a3SRobert Watson static int 1325d8a7b7a3SRobert Watson mac_test_check_vnode_setutimes(struct ucred *cred, struct vnode *vp, 1326d8a7b7a3SRobert Watson struct label *label, struct timespec atime, struct timespec mtime) 1327d8a7b7a3SRobert Watson { 1328d8a7b7a3SRobert Watson 1329d8a7b7a3SRobert Watson return (0); 1330d8a7b7a3SRobert Watson } 1331d8a7b7a3SRobert Watson 1332d8a7b7a3SRobert Watson static int 1333177142e4SRobert Watson mac_test_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred, 1334177142e4SRobert Watson struct vnode *vp, struct label *label) 1335d8a7b7a3SRobert Watson { 1336d8a7b7a3SRobert Watson 1337d8a7b7a3SRobert Watson return (0); 1338d8a7b7a3SRobert Watson } 1339d8a7b7a3SRobert Watson 13407f724f8bSRobert Watson static int 1341177142e4SRobert Watson mac_test_check_vnode_write(struct ucred *active_cred, 1342177142e4SRobert Watson struct ucred *file_cred, struct vnode *vp, struct label *label) 13437f724f8bSRobert Watson { 13447f724f8bSRobert Watson 13457f724f8bSRobert Watson return (0); 13467f724f8bSRobert Watson } 13477f724f8bSRobert Watson 13485c8dd342SRobert Watson static struct mac_policy_ops mac_test_ops = 1349d8a7b7a3SRobert Watson { 13505c8dd342SRobert Watson .mpo_destroy = mac_test_destroy, 13515c8dd342SRobert Watson .mpo_init = mac_test_init, 13525c8dd342SRobert Watson .mpo_syscall = mac_test_syscall, 13535c8dd342SRobert Watson .mpo_init_bpfdesc_label = mac_test_init_bpfdesc_label, 13545c8dd342SRobert Watson .mpo_init_cred_label = mac_test_init_cred_label, 13555c8dd342SRobert Watson .mpo_init_devfsdirent_label = mac_test_init_devfsdirent_label, 13565c8dd342SRobert Watson .mpo_init_ifnet_label = mac_test_init_ifnet_label, 13575c8dd342SRobert Watson .mpo_init_ipq_label = mac_test_init_ipq_label, 13585c8dd342SRobert Watson .mpo_init_mbuf_label = mac_test_init_mbuf_label, 13595c8dd342SRobert Watson .mpo_init_mount_label = mac_test_init_mount_label, 13605c8dd342SRobert Watson .mpo_init_mount_fs_label = mac_test_init_mount_fs_label, 13615c8dd342SRobert Watson .mpo_init_pipe_label = mac_test_init_pipe_label, 1362ca26e8baSRobert Watson .mpo_init_proc_label = mac_test_init_proc_label, 13635c8dd342SRobert Watson .mpo_init_socket_label = mac_test_init_socket_label, 13645c8dd342SRobert Watson .mpo_init_socket_peer_label = mac_test_init_socket_peer_label, 13655c8dd342SRobert Watson .mpo_init_vnode_label = mac_test_init_vnode_label, 13665c8dd342SRobert Watson .mpo_destroy_bpfdesc_label = mac_test_destroy_bpfdesc_label, 13675c8dd342SRobert Watson .mpo_destroy_cred_label = mac_test_destroy_cred_label, 13685c8dd342SRobert Watson .mpo_destroy_devfsdirent_label = mac_test_destroy_devfsdirent_label, 13695c8dd342SRobert Watson .mpo_destroy_ifnet_label = mac_test_destroy_ifnet_label, 13705c8dd342SRobert Watson .mpo_destroy_ipq_label = mac_test_destroy_ipq_label, 13715c8dd342SRobert Watson .mpo_destroy_mbuf_label = mac_test_destroy_mbuf_label, 13725c8dd342SRobert Watson .mpo_destroy_mount_label = mac_test_destroy_mount_label, 13735c8dd342SRobert Watson .mpo_destroy_mount_fs_label = mac_test_destroy_mount_fs_label, 13745c8dd342SRobert Watson .mpo_destroy_pipe_label = mac_test_destroy_pipe_label, 1375ca26e8baSRobert Watson .mpo_destroy_proc_label = mac_test_destroy_proc_label, 13765c8dd342SRobert Watson .mpo_destroy_socket_label = mac_test_destroy_socket_label, 13775c8dd342SRobert Watson .mpo_destroy_socket_peer_label = mac_test_destroy_socket_peer_label, 13785c8dd342SRobert Watson .mpo_destroy_vnode_label = mac_test_destroy_vnode_label, 13795c8dd342SRobert Watson .mpo_externalize_cred_label = mac_test_externalize_label, 13805c8dd342SRobert Watson .mpo_externalize_ifnet_label = mac_test_externalize_label, 13815c8dd342SRobert Watson .mpo_externalize_pipe_label = mac_test_externalize_label, 13825c8dd342SRobert Watson .mpo_externalize_socket_label = mac_test_externalize_label, 13835c8dd342SRobert Watson .mpo_externalize_socket_peer_label = mac_test_externalize_label, 13845c8dd342SRobert Watson .mpo_externalize_vnode_label = mac_test_externalize_label, 13855c8dd342SRobert Watson .mpo_internalize_cred_label = mac_test_internalize_label, 13865c8dd342SRobert Watson .mpo_internalize_ifnet_label = mac_test_internalize_label, 13875c8dd342SRobert Watson .mpo_internalize_pipe_label = mac_test_internalize_label, 13885c8dd342SRobert Watson .mpo_internalize_socket_label = mac_test_internalize_label, 13895c8dd342SRobert Watson .mpo_internalize_vnode_label = mac_test_internalize_label, 13905c8dd342SRobert Watson .mpo_associate_vnode_devfs = mac_test_associate_vnode_devfs, 13915c8dd342SRobert Watson .mpo_associate_vnode_extattr = mac_test_associate_vnode_extattr, 13925c8dd342SRobert Watson .mpo_associate_vnode_singlelabel = mac_test_associate_vnode_singlelabel, 13935c8dd342SRobert Watson .mpo_create_devfs_device = mac_test_create_devfs_device, 13945c8dd342SRobert Watson .mpo_create_devfs_directory = mac_test_create_devfs_directory, 13955c8dd342SRobert Watson .mpo_create_devfs_symlink = mac_test_create_devfs_symlink, 13965c8dd342SRobert Watson .mpo_create_vnode_extattr = mac_test_create_vnode_extattr, 13975c8dd342SRobert Watson .mpo_create_mount = mac_test_create_mount, 13985c8dd342SRobert Watson .mpo_create_root_mount = mac_test_create_root_mount, 13995c8dd342SRobert Watson .mpo_relabel_vnode = mac_test_relabel_vnode, 14005c8dd342SRobert Watson .mpo_setlabel_vnode_extattr = mac_test_setlabel_vnode_extattr, 14015c8dd342SRobert Watson .mpo_update_devfsdirent = mac_test_update_devfsdirent, 14025c8dd342SRobert Watson .mpo_create_mbuf_from_socket = mac_test_create_mbuf_from_socket, 14035c8dd342SRobert Watson .mpo_create_pipe = mac_test_create_pipe, 14045c8dd342SRobert Watson .mpo_create_socket = mac_test_create_socket, 14055c8dd342SRobert Watson .mpo_create_socket_from_socket = mac_test_create_socket_from_socket, 14065c8dd342SRobert Watson .mpo_relabel_pipe = mac_test_relabel_pipe, 14075c8dd342SRobert Watson .mpo_relabel_socket = mac_test_relabel_socket, 14085c8dd342SRobert Watson .mpo_set_socket_peer_from_mbuf = mac_test_set_socket_peer_from_mbuf, 14095c8dd342SRobert Watson .mpo_set_socket_peer_from_socket = mac_test_set_socket_peer_from_socket, 14105c8dd342SRobert Watson .mpo_create_bpfdesc = mac_test_create_bpfdesc, 14115c8dd342SRobert Watson .mpo_create_ifnet = mac_test_create_ifnet, 14125c8dd342SRobert Watson .mpo_create_datagram_from_ipq = mac_test_create_datagram_from_ipq, 14135c8dd342SRobert Watson .mpo_create_fragment = mac_test_create_fragment, 14145c8dd342SRobert Watson .mpo_create_ipq = mac_test_create_ipq, 14155c8dd342SRobert Watson .mpo_create_mbuf_from_mbuf = mac_test_create_mbuf_from_mbuf, 14165c8dd342SRobert Watson .mpo_create_mbuf_linklayer = mac_test_create_mbuf_linklayer, 14175c8dd342SRobert Watson .mpo_create_mbuf_from_bpfdesc = mac_test_create_mbuf_from_bpfdesc, 14185c8dd342SRobert Watson .mpo_create_mbuf_from_ifnet = mac_test_create_mbuf_from_ifnet, 14195c8dd342SRobert Watson .mpo_create_mbuf_multicast_encap = mac_test_create_mbuf_multicast_encap, 14205c8dd342SRobert Watson .mpo_create_mbuf_netlayer = mac_test_create_mbuf_netlayer, 14215c8dd342SRobert Watson .mpo_fragment_match = mac_test_fragment_match, 14225c8dd342SRobert Watson .mpo_relabel_ifnet = mac_test_relabel_ifnet, 14235c8dd342SRobert Watson .mpo_update_ipq = mac_test_update_ipq, 14245c8dd342SRobert Watson .mpo_create_cred = mac_test_create_cred, 14255c8dd342SRobert Watson .mpo_execve_transition = mac_test_execve_transition, 14265c8dd342SRobert Watson .mpo_execve_will_transition = mac_test_execve_will_transition, 14275c8dd342SRobert Watson .mpo_create_proc0 = mac_test_create_proc0, 14285c8dd342SRobert Watson .mpo_create_proc1 = mac_test_create_proc1, 14295c8dd342SRobert Watson .mpo_relabel_cred = mac_test_relabel_cred, 1430ca26e8baSRobert Watson .mpo_thread_userret = mac_test_thread_userret, 14315c8dd342SRobert Watson .mpo_check_bpfdesc_receive = mac_test_check_bpfdesc_receive, 14325c8dd342SRobert Watson .mpo_check_cred_relabel = mac_test_check_cred_relabel, 14335c8dd342SRobert Watson .mpo_check_cred_visible = mac_test_check_cred_visible, 14345c8dd342SRobert Watson .mpo_check_ifnet_relabel = mac_test_check_ifnet_relabel, 14355c8dd342SRobert Watson .mpo_check_ifnet_transmit = mac_test_check_ifnet_transmit, 1436ca26e8baSRobert Watson .mpo_check_kenv_dump = mac_test_check_kenv_dump, 1437ca26e8baSRobert Watson .mpo_check_kenv_get = mac_test_check_kenv_get, 1438ca26e8baSRobert Watson .mpo_check_kenv_set = mac_test_check_kenv_set, 1439ca26e8baSRobert Watson .mpo_check_kenv_unset = mac_test_check_kenv_unset, 1440ca26e8baSRobert Watson .mpo_check_kld_load = mac_test_check_kld_load, 1441ca26e8baSRobert Watson .mpo_check_kld_stat = mac_test_check_kld_stat, 1442ca26e8baSRobert Watson .mpo_check_kld_unload = mac_test_check_kld_unload, 14435c8dd342SRobert Watson .mpo_check_mount_stat = mac_test_check_mount_stat, 14445c8dd342SRobert Watson .mpo_check_pipe_ioctl = mac_test_check_pipe_ioctl, 14455c8dd342SRobert Watson .mpo_check_pipe_poll = mac_test_check_pipe_poll, 14465c8dd342SRobert Watson .mpo_check_pipe_read = mac_test_check_pipe_read, 14475c8dd342SRobert Watson .mpo_check_pipe_relabel = mac_test_check_pipe_relabel, 14485c8dd342SRobert Watson .mpo_check_pipe_stat = mac_test_check_pipe_stat, 14495c8dd342SRobert Watson .mpo_check_pipe_write = mac_test_check_pipe_write, 14505c8dd342SRobert Watson .mpo_check_proc_debug = mac_test_check_proc_debug, 14515c8dd342SRobert Watson .mpo_check_proc_sched = mac_test_check_proc_sched, 14525c8dd342SRobert Watson .mpo_check_proc_signal = mac_test_check_proc_signal, 14535c8dd342SRobert Watson .mpo_check_socket_bind = mac_test_check_socket_bind, 14545c8dd342SRobert Watson .mpo_check_socket_connect = mac_test_check_socket_connect, 14555c8dd342SRobert Watson .mpo_check_socket_deliver = mac_test_check_socket_deliver, 14565c8dd342SRobert Watson .mpo_check_socket_listen = mac_test_check_socket_listen, 14575c8dd342SRobert Watson .mpo_check_socket_relabel = mac_test_check_socket_relabel, 14585c8dd342SRobert Watson .mpo_check_socket_visible = mac_test_check_socket_visible, 1459ca26e8baSRobert Watson .mpo_check_sysarch_ioperm = mac_test_check_sysarch_ioperm, 1460ca26e8baSRobert Watson .mpo_check_system_acct = mac_test_check_system_acct, 1461ca26e8baSRobert Watson .mpo_check_system_reboot = mac_test_check_system_reboot, 1462ca26e8baSRobert Watson .mpo_check_system_settime = mac_test_check_system_settime, 1463ca26e8baSRobert Watson .mpo_check_system_swapon = mac_test_check_system_swapon, 1464ca26e8baSRobert Watson .mpo_check_system_swapoff = mac_test_check_system_swapoff, 1465ca26e8baSRobert Watson .mpo_check_system_sysctl = mac_test_check_system_sysctl, 14665c8dd342SRobert Watson .mpo_check_vnode_access = mac_test_check_vnode_access, 14675c8dd342SRobert Watson .mpo_check_vnode_chdir = mac_test_check_vnode_chdir, 14685c8dd342SRobert Watson .mpo_check_vnode_chroot = mac_test_check_vnode_chroot, 14695c8dd342SRobert Watson .mpo_check_vnode_create = mac_test_check_vnode_create, 14705c8dd342SRobert Watson .mpo_check_vnode_delete = mac_test_check_vnode_delete, 14715c8dd342SRobert Watson .mpo_check_vnode_deleteacl = mac_test_check_vnode_deleteacl, 14725c8dd342SRobert Watson .mpo_check_vnode_exec = mac_test_check_vnode_exec, 14735c8dd342SRobert Watson .mpo_check_vnode_getacl = mac_test_check_vnode_getacl, 14745c8dd342SRobert Watson .mpo_check_vnode_getextattr = mac_test_check_vnode_getextattr, 14755c8dd342SRobert Watson .mpo_check_vnode_link = mac_test_check_vnode_link, 14765c8dd342SRobert Watson .mpo_check_vnode_lookup = mac_test_check_vnode_lookup, 14775c8dd342SRobert Watson .mpo_check_vnode_mmap = mac_test_check_vnode_mmap, 14785c8dd342SRobert Watson .mpo_check_vnode_mprotect = mac_test_check_vnode_mprotect, 14795c8dd342SRobert Watson .mpo_check_vnode_open = mac_test_check_vnode_open, 14805c8dd342SRobert Watson .mpo_check_vnode_poll = mac_test_check_vnode_poll, 14815c8dd342SRobert Watson .mpo_check_vnode_read = mac_test_check_vnode_read, 14825c8dd342SRobert Watson .mpo_check_vnode_readdir = mac_test_check_vnode_readdir, 14835c8dd342SRobert Watson .mpo_check_vnode_readlink = mac_test_check_vnode_readlink, 14845c8dd342SRobert Watson .mpo_check_vnode_relabel = mac_test_check_vnode_relabel, 14855c8dd342SRobert Watson .mpo_check_vnode_rename_from = mac_test_check_vnode_rename_from, 14865c8dd342SRobert Watson .mpo_check_vnode_rename_to = mac_test_check_vnode_rename_to, 14875c8dd342SRobert Watson .mpo_check_vnode_revoke = mac_test_check_vnode_revoke, 14885c8dd342SRobert Watson .mpo_check_vnode_setacl = mac_test_check_vnode_setacl, 14895c8dd342SRobert Watson .mpo_check_vnode_setextattr = mac_test_check_vnode_setextattr, 14905c8dd342SRobert Watson .mpo_check_vnode_setflags = mac_test_check_vnode_setflags, 14915c8dd342SRobert Watson .mpo_check_vnode_setmode = mac_test_check_vnode_setmode, 14925c8dd342SRobert Watson .mpo_check_vnode_setowner = mac_test_check_vnode_setowner, 14935c8dd342SRobert Watson .mpo_check_vnode_setutimes = mac_test_check_vnode_setutimes, 14945c8dd342SRobert Watson .mpo_check_vnode_stat = mac_test_check_vnode_stat, 14955c8dd342SRobert Watson .mpo_check_vnode_write = mac_test_check_vnode_write, 1496d8a7b7a3SRobert Watson }; 1497d8a7b7a3SRobert Watson 149878183ac2SRobert Watson MAC_POLICY_SET(&mac_test_ops, mac_test, "TrustedBSD MAC/Test", 1499d8a7b7a3SRobert Watson MPC_LOADTIME_FLAG_UNLOADOK, &test_slot); 1500