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/pipe.h> 59d8a7b7a3SRobert Watson #include <sys/sysctl.h> 60d8a7b7a3SRobert Watson 61d8a7b7a3SRobert Watson #include <fs/devfs/devfs.h> 62d8a7b7a3SRobert Watson 63d8a7b7a3SRobert Watson #include <net/bpfdesc.h> 64d8a7b7a3SRobert Watson #include <net/if.h> 65d8a7b7a3SRobert Watson #include <net/if_types.h> 66d8a7b7a3SRobert Watson #include <net/if_var.h> 67d8a7b7a3SRobert Watson 68d8a7b7a3SRobert Watson #include <netinet/in.h> 69d8a7b7a3SRobert Watson #include <netinet/ip_var.h> 70d8a7b7a3SRobert Watson 71d8a7b7a3SRobert Watson #include <vm/vm.h> 72d8a7b7a3SRobert Watson 73d8a7b7a3SRobert Watson #include <sys/mac_policy.h> 74d8a7b7a3SRobert Watson 75d8a7b7a3SRobert Watson SYSCTL_DECL(_security_mac); 76d8a7b7a3SRobert Watson 77d8a7b7a3SRobert Watson SYSCTL_NODE(_security_mac, OID_AUTO, none, CTLFLAG_RW, 0, 78d8a7b7a3SRobert Watson "TrustedBSD mac_none policy controls"); 79d8a7b7a3SRobert Watson 80eba0370dSRobert Watson static int mac_none_enabled = 1; 81d8a7b7a3SRobert Watson SYSCTL_INT(_security_mac_none, OID_AUTO, enabled, CTLFLAG_RW, 82d8a7b7a3SRobert Watson &mac_none_enabled, 0, "Enforce none policy"); 83d8a7b7a3SRobert Watson 84d8a7b7a3SRobert Watson /* 85d8a7b7a3SRobert Watson * Policy module operations. 86d8a7b7a3SRobert Watson */ 87d8a7b7a3SRobert Watson static void 88d8a7b7a3SRobert Watson mac_none_destroy(struct mac_policy_conf *conf) 89d8a7b7a3SRobert Watson { 90d8a7b7a3SRobert Watson 91d8a7b7a3SRobert Watson } 92d8a7b7a3SRobert Watson 93d8a7b7a3SRobert Watson static void 94d8a7b7a3SRobert Watson mac_none_init(struct mac_policy_conf *conf) 95d8a7b7a3SRobert Watson { 96d8a7b7a3SRobert Watson 97d8a7b7a3SRobert Watson } 98d8a7b7a3SRobert Watson 998a97ecf6SRobert Watson static int 1008a97ecf6SRobert Watson mac_none_syscall(struct thread *td, int call, void *arg) 1018a97ecf6SRobert Watson { 1028a97ecf6SRobert Watson 1038a97ecf6SRobert Watson return (0); 1048a97ecf6SRobert Watson } 1058a97ecf6SRobert Watson 106d8a7b7a3SRobert Watson /* 107d8a7b7a3SRobert Watson * Label operations. 108d8a7b7a3SRobert Watson */ 109d8a7b7a3SRobert Watson static void 11096adb909SRobert Watson mac_none_init_label(struct label *label) 111d8a7b7a3SRobert Watson { 112d8a7b7a3SRobert Watson 113d8a7b7a3SRobert Watson } 114d8a7b7a3SRobert Watson 115d8a7b7a3SRobert Watson static int 11696adb909SRobert Watson mac_none_init_label_waitcheck(struct label *label, int flag) 117d8a7b7a3SRobert Watson { 118d8a7b7a3SRobert Watson 119d8a7b7a3SRobert Watson return (0); 120d8a7b7a3SRobert Watson } 121d8a7b7a3SRobert Watson 122d8a7b7a3SRobert Watson static void 12396adb909SRobert Watson mac_none_destroy_label(struct label *label) 124d8a7b7a3SRobert Watson { 125d8a7b7a3SRobert Watson 126d8a7b7a3SRobert Watson } 127d8a7b7a3SRobert Watson 128d8a7b7a3SRobert Watson static int 12924e8d0d0SRobert Watson mac_none_externalize_label(struct label *label, char *element_name, 130f51e5803SRobert Watson struct sbuf *sb, int *claimed) 131d8a7b7a3SRobert Watson { 132d8a7b7a3SRobert Watson 133d8a7b7a3SRobert Watson return (0); 134d8a7b7a3SRobert Watson } 135d8a7b7a3SRobert Watson 136d8a7b7a3SRobert Watson static int 13724e8d0d0SRobert Watson mac_none_internalize_label(struct label *label, char *element_name, 13824e8d0d0SRobert Watson char *element_data, int *claimed) 139d8a7b7a3SRobert Watson { 140d8a7b7a3SRobert Watson 141d8a7b7a3SRobert Watson return (0); 142d8a7b7a3SRobert Watson } 143d8a7b7a3SRobert Watson 144d8a7b7a3SRobert Watson /* 145d8a7b7a3SRobert Watson * Labeling event operations: file system objects, and things that look 146d8a7b7a3SRobert Watson * a lot like file system objects. 147d8a7b7a3SRobert Watson */ 148d8a7b7a3SRobert Watson static void 149763bbd2fSRobert Watson mac_none_associate_vnode_devfs(struct mount *mp, struct label *fslabel, 150763bbd2fSRobert Watson struct devfs_dirent *de, struct label *delabel, struct vnode *vp, 151763bbd2fSRobert Watson struct label *vlabel) 152763bbd2fSRobert Watson { 153763bbd2fSRobert Watson 154763bbd2fSRobert Watson } 155763bbd2fSRobert Watson 156763bbd2fSRobert Watson static int 157763bbd2fSRobert Watson mac_none_associate_vnode_extattr(struct mount *mp, struct label *fslabel, 158763bbd2fSRobert Watson struct vnode *vp, struct label *vlabel) 159763bbd2fSRobert Watson { 160763bbd2fSRobert Watson 161763bbd2fSRobert Watson return (0); 162763bbd2fSRobert Watson } 163763bbd2fSRobert Watson 164763bbd2fSRobert Watson static void 165763bbd2fSRobert Watson mac_none_associate_vnode_singlelabel(struct mount *mp, 166763bbd2fSRobert Watson struct label *fslabel, struct vnode *vp, struct label *vlabel) 167763bbd2fSRobert Watson { 168763bbd2fSRobert Watson 169763bbd2fSRobert Watson } 170763bbd2fSRobert Watson 171763bbd2fSRobert Watson static void 172990b4b2dSRobert Watson mac_none_create_devfs_device(struct mount *mp, dev_t dev, 17357e2f493SRobert Watson struct devfs_dirent *devfs_dirent, struct label *label) 174eea8ea31SRobert Watson { 175eea8ea31SRobert Watson 176eea8ea31SRobert Watson } 177eea8ea31SRobert Watson 178eea8ea31SRobert Watson static void 179990b4b2dSRobert Watson mac_none_create_devfs_directory(struct mount *mp, char *dirname, 180990b4b2dSRobert Watson int dirnamelen, struct devfs_dirent *devfs_dirent, struct label *label) 181990b4b2dSRobert Watson { 182990b4b2dSRobert Watson 183990b4b2dSRobert Watson } 184990b4b2dSRobert Watson 185990b4b2dSRobert Watson static void 186990b4b2dSRobert Watson mac_none_create_devfs_symlink(struct ucred *cred, struct mount *mp, 187990b4b2dSRobert Watson struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de, 188990b4b2dSRobert Watson struct label *delabel) 189d8a7b7a3SRobert Watson { 190d8a7b7a3SRobert Watson 191d8a7b7a3SRobert Watson } 192d8a7b7a3SRobert Watson 193763bbd2fSRobert Watson static int 194763bbd2fSRobert Watson mac_none_create_vnode_extattr(struct ucred *cred, struct mount *mp, 195763bbd2fSRobert Watson struct label *fslabel, struct vnode *dvp, struct label *dlabel, 196763bbd2fSRobert Watson struct vnode *vp, struct label *vlabel, struct componentname *cnp) 197d8a7b7a3SRobert Watson { 198d8a7b7a3SRobert Watson 199763bbd2fSRobert Watson return (0); 200d8a7b7a3SRobert Watson } 201d8a7b7a3SRobert Watson 202d8a7b7a3SRobert Watson static void 203d8a7b7a3SRobert Watson mac_none_create_mount(struct ucred *cred, struct mount *mp, 204d8a7b7a3SRobert Watson struct label *mntlabel, struct label *fslabel) 205d8a7b7a3SRobert Watson { 206d8a7b7a3SRobert Watson 207d8a7b7a3SRobert Watson } 208d8a7b7a3SRobert Watson 209d8a7b7a3SRobert Watson static void 210d8a7b7a3SRobert Watson mac_none_create_root_mount(struct ucred *cred, struct mount *mp, 211d8a7b7a3SRobert Watson struct label *mntlabel, struct label *fslabel) 212d8a7b7a3SRobert Watson { 213d8a7b7a3SRobert Watson 214d8a7b7a3SRobert Watson } 215d8a7b7a3SRobert Watson 216d8a7b7a3SRobert Watson static void 217d8a7b7a3SRobert Watson mac_none_relabel_vnode(struct ucred *cred, struct vnode *vp, 218d8a7b7a3SRobert Watson struct label *vnodelabel, struct label *label) 219d8a7b7a3SRobert Watson { 220d8a7b7a3SRobert Watson 221d8a7b7a3SRobert Watson } 222d8a7b7a3SRobert Watson 223d8a7b7a3SRobert Watson static int 224763bbd2fSRobert Watson mac_none_setlabel_vnode_extattr(struct ucred *cred, struct vnode *vp, 225763bbd2fSRobert Watson struct label *vlabel, struct label *intlabel) 226d8a7b7a3SRobert Watson { 227d8a7b7a3SRobert Watson 228d8a7b7a3SRobert Watson return (0); 229d8a7b7a3SRobert Watson } 230d8a7b7a3SRobert Watson 231d8a7b7a3SRobert Watson static void 232990b4b2dSRobert Watson mac_none_update_devfsdirent(struct mount *mp, 233990b4b2dSRobert Watson struct devfs_dirent *devfs_dirent, struct label *direntlabel, 234990b4b2dSRobert Watson struct vnode *vp, struct label *vnodelabel) 235d8a7b7a3SRobert Watson { 236d8a7b7a3SRobert Watson 237d8a7b7a3SRobert Watson } 238d8a7b7a3SRobert Watson 239d8a7b7a3SRobert Watson /* 240d8a7b7a3SRobert Watson * Labeling event operations: IPC object. 241d8a7b7a3SRobert Watson */ 242d8a7b7a3SRobert Watson static void 243d8a7b7a3SRobert Watson mac_none_create_mbuf_from_socket(struct socket *so, struct label *socketlabel, 244d8a7b7a3SRobert Watson struct mbuf *m, struct label *mbuflabel) 245d8a7b7a3SRobert Watson { 246d8a7b7a3SRobert Watson 247d8a7b7a3SRobert Watson } 248d8a7b7a3SRobert Watson 249d8a7b7a3SRobert Watson static void 250d8a7b7a3SRobert Watson mac_none_create_socket(struct ucred *cred, struct socket *socket, 251d8a7b7a3SRobert Watson struct label *socketlabel) 252d8a7b7a3SRobert Watson { 253d8a7b7a3SRobert Watson 254d8a7b7a3SRobert Watson } 255d8a7b7a3SRobert Watson 256d8a7b7a3SRobert Watson static void 257d8a7b7a3SRobert Watson mac_none_create_pipe(struct ucred *cred, struct pipe *pipe, 258d8a7b7a3SRobert Watson struct label *pipelabel) 259d8a7b7a3SRobert Watson { 260d8a7b7a3SRobert Watson 261d8a7b7a3SRobert Watson } 262d8a7b7a3SRobert Watson 263d8a7b7a3SRobert Watson static void 264d8a7b7a3SRobert Watson mac_none_create_socket_from_socket(struct socket *oldsocket, 265d8a7b7a3SRobert Watson struct label *oldsocketlabel, struct socket *newsocket, 266d8a7b7a3SRobert Watson struct label *newsocketlabel) 267d8a7b7a3SRobert Watson { 268d8a7b7a3SRobert Watson 269d8a7b7a3SRobert Watson } 270d8a7b7a3SRobert Watson 271d8a7b7a3SRobert Watson static void 272d8a7b7a3SRobert Watson mac_none_relabel_socket(struct ucred *cred, struct socket *socket, 273d8a7b7a3SRobert Watson struct label *socketlabel, struct label *newlabel) 274d8a7b7a3SRobert Watson { 275d8a7b7a3SRobert Watson 276d8a7b7a3SRobert Watson } 277d8a7b7a3SRobert Watson 278d8a7b7a3SRobert Watson static void 279d8a7b7a3SRobert Watson mac_none_relabel_pipe(struct ucred *cred, struct pipe *pipe, 280d8a7b7a3SRobert Watson struct label *pipelabel, struct label *newlabel) 281d8a7b7a3SRobert Watson { 282d8a7b7a3SRobert Watson 283d8a7b7a3SRobert Watson } 284d8a7b7a3SRobert Watson 285d8a7b7a3SRobert Watson static void 286d8a7b7a3SRobert Watson mac_none_set_socket_peer_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel, 287d8a7b7a3SRobert Watson struct socket *socket, struct label *socketpeerlabel) 288d8a7b7a3SRobert Watson { 289d8a7b7a3SRobert Watson 290d8a7b7a3SRobert Watson } 291d8a7b7a3SRobert Watson 292d8a7b7a3SRobert Watson static void 293d8a7b7a3SRobert Watson mac_none_set_socket_peer_from_socket(struct socket *oldsocket, 294d8a7b7a3SRobert Watson struct label *oldsocketlabel, struct socket *newsocket, 295d8a7b7a3SRobert Watson struct label *newsocketpeerlabel) 296d8a7b7a3SRobert Watson { 297d8a7b7a3SRobert Watson 298d8a7b7a3SRobert Watson } 299d8a7b7a3SRobert Watson 300d8a7b7a3SRobert Watson /* 301d8a7b7a3SRobert Watson * Labeling event operations: network objects. 302d8a7b7a3SRobert Watson */ 303d8a7b7a3SRobert Watson static void 304d8a7b7a3SRobert Watson mac_none_create_bpfdesc(struct ucred *cred, struct bpf_d *bpf_d, 305d8a7b7a3SRobert Watson struct label *bpflabel) 306d8a7b7a3SRobert Watson { 307d8a7b7a3SRobert Watson 308d8a7b7a3SRobert Watson } 309d8a7b7a3SRobert Watson 310d8a7b7a3SRobert Watson static void 311d8a7b7a3SRobert Watson mac_none_create_datagram_from_ipq(struct ipq *ipq, struct label *ipqlabel, 312d8a7b7a3SRobert Watson struct mbuf *datagram, struct label *datagramlabel) 313d8a7b7a3SRobert Watson { 314d8a7b7a3SRobert Watson 315d8a7b7a3SRobert Watson } 316d8a7b7a3SRobert Watson 317d8a7b7a3SRobert Watson static void 318d8a7b7a3SRobert Watson mac_none_create_fragment(struct mbuf *datagram, struct label *datagramlabel, 319d8a7b7a3SRobert Watson struct mbuf *fragment, struct label *fragmentlabel) 320d8a7b7a3SRobert Watson { 321d8a7b7a3SRobert Watson 322d8a7b7a3SRobert Watson } 323d8a7b7a3SRobert Watson 324d8a7b7a3SRobert Watson static void 325d8a7b7a3SRobert Watson mac_none_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel) 326d8a7b7a3SRobert Watson { 327d8a7b7a3SRobert Watson 328d8a7b7a3SRobert Watson } 329d8a7b7a3SRobert Watson 330d8a7b7a3SRobert Watson static void 331d8a7b7a3SRobert Watson mac_none_create_ipq(struct mbuf *fragment, struct label *fragmentlabel, 332d8a7b7a3SRobert Watson struct ipq *ipq, struct label *ipqlabel) 333d8a7b7a3SRobert Watson { 334d8a7b7a3SRobert Watson 335d8a7b7a3SRobert Watson } 336d8a7b7a3SRobert Watson 337d8a7b7a3SRobert Watson static void 338d8a7b7a3SRobert Watson mac_none_create_mbuf_from_mbuf(struct mbuf *oldmbuf, 339d8a7b7a3SRobert Watson struct label *oldmbuflabel, struct mbuf *newmbuf, 340d8a7b7a3SRobert Watson struct label *newmbuflabel) 341d8a7b7a3SRobert Watson { 342d8a7b7a3SRobert Watson 343d8a7b7a3SRobert Watson } 344d8a7b7a3SRobert Watson 345d8a7b7a3SRobert Watson static void 346d8a7b7a3SRobert Watson mac_none_create_mbuf_linklayer(struct ifnet *ifnet, struct label *ifnetlabel, 347d8a7b7a3SRobert Watson struct mbuf *mbuf, struct label *mbuflabel) 348d8a7b7a3SRobert Watson { 349d8a7b7a3SRobert Watson 350d8a7b7a3SRobert Watson } 351d8a7b7a3SRobert Watson 352d8a7b7a3SRobert Watson static void 353d8a7b7a3SRobert Watson mac_none_create_mbuf_from_bpfdesc(struct bpf_d *bpf_d, struct label *bpflabel, 354d8a7b7a3SRobert Watson struct mbuf *mbuf, struct label *mbuflabel) 355d8a7b7a3SRobert Watson { 356d8a7b7a3SRobert Watson 357d8a7b7a3SRobert Watson } 358d8a7b7a3SRobert Watson 359d8a7b7a3SRobert Watson static void 360d8a7b7a3SRobert Watson mac_none_create_mbuf_from_ifnet(struct ifnet *ifnet, struct label *ifnetlabel, 361d8a7b7a3SRobert Watson struct mbuf *m, struct label *mbuflabel) 362d8a7b7a3SRobert Watson { 363d8a7b7a3SRobert Watson 364d8a7b7a3SRobert Watson } 365d8a7b7a3SRobert Watson 366d8a7b7a3SRobert Watson static void 367d8a7b7a3SRobert Watson mac_none_create_mbuf_multicast_encap(struct mbuf *oldmbuf, 368d8a7b7a3SRobert Watson struct label *oldmbuflabel, struct ifnet *ifnet, struct label *ifnetlabel, 369d8a7b7a3SRobert Watson struct mbuf *newmbuf, struct label *newmbuflabel) 370d8a7b7a3SRobert Watson { 371d8a7b7a3SRobert Watson 372d8a7b7a3SRobert Watson } 373d8a7b7a3SRobert Watson 374d8a7b7a3SRobert Watson static void 375d8a7b7a3SRobert Watson mac_none_create_mbuf_netlayer(struct mbuf *oldmbuf, 376d8a7b7a3SRobert Watson struct label *oldmbuflabel, struct mbuf *newmbuf, struct label *newmbuflabel) 377d8a7b7a3SRobert Watson { 378d8a7b7a3SRobert Watson 379d8a7b7a3SRobert Watson } 380d8a7b7a3SRobert Watson 381d8a7b7a3SRobert Watson static int 382d8a7b7a3SRobert Watson mac_none_fragment_match(struct mbuf *fragment, struct label *fragmentlabel, 383d8a7b7a3SRobert Watson struct ipq *ipq, struct label *ipqlabel) 384d8a7b7a3SRobert Watson { 385d8a7b7a3SRobert Watson 386d8a7b7a3SRobert Watson return (1); 387d8a7b7a3SRobert Watson } 388d8a7b7a3SRobert Watson 389d8a7b7a3SRobert Watson static void 390d8a7b7a3SRobert Watson mac_none_relabel_ifnet(struct ucred *cred, struct ifnet *ifnet, 391d8a7b7a3SRobert Watson struct label *ifnetlabel, struct label *newlabel) 392d8a7b7a3SRobert Watson { 393d8a7b7a3SRobert Watson 394d8a7b7a3SRobert Watson } 395d8a7b7a3SRobert Watson 396d8a7b7a3SRobert Watson static void 397d8a7b7a3SRobert Watson mac_none_update_ipq(struct mbuf *fragment, struct label *fragmentlabel, 398d8a7b7a3SRobert Watson struct ipq *ipq, struct label *ipqlabel) 399d8a7b7a3SRobert Watson { 400d8a7b7a3SRobert Watson 401d8a7b7a3SRobert Watson } 402d8a7b7a3SRobert Watson 403d8a7b7a3SRobert Watson /* 404d8a7b7a3SRobert Watson * Labeling event operations: processes. 405d8a7b7a3SRobert Watson */ 406d8a7b7a3SRobert Watson static void 407d8a7b7a3SRobert Watson mac_none_create_cred(struct ucred *cred_parent, struct ucred *cred_child) 408d8a7b7a3SRobert Watson { 409d8a7b7a3SRobert Watson 410d8a7b7a3SRobert Watson } 411d8a7b7a3SRobert Watson 412d8a7b7a3SRobert Watson static void 413d8a7b7a3SRobert Watson mac_none_execve_transition(struct ucred *old, struct ucred *new, 414939b97cbSRobert Watson struct vnode *vp, struct label *vnodelabel, 415ef5def59SRobert Watson struct label *interpvnodelabel, struct image_params *imgp, 416ef5def59SRobert Watson struct label *execlabel) 417d8a7b7a3SRobert Watson { 418d8a7b7a3SRobert Watson 419d8a7b7a3SRobert Watson } 420d8a7b7a3SRobert Watson 421d8a7b7a3SRobert Watson static int 422d8a7b7a3SRobert Watson mac_none_execve_will_transition(struct ucred *old, struct vnode *vp, 423939b97cbSRobert Watson struct label *vnodelabel, struct label *interpvnodelabel, 424ef5def59SRobert Watson struct image_params *imgp, struct label *execlabel) 425d8a7b7a3SRobert Watson { 426d8a7b7a3SRobert Watson 427d8a7b7a3SRobert Watson return (0); 428d8a7b7a3SRobert Watson } 429d8a7b7a3SRobert Watson 430d8a7b7a3SRobert Watson static void 431d8a7b7a3SRobert Watson mac_none_create_proc0(struct ucred *cred) 432d8a7b7a3SRobert Watson { 433d8a7b7a3SRobert Watson 434d8a7b7a3SRobert Watson } 435d8a7b7a3SRobert Watson 436d8a7b7a3SRobert Watson static void 437d8a7b7a3SRobert Watson mac_none_create_proc1(struct ucred *cred) 438d8a7b7a3SRobert Watson { 439d8a7b7a3SRobert Watson 440d8a7b7a3SRobert Watson } 441d8a7b7a3SRobert Watson 442d8a7b7a3SRobert Watson static void 443d8a7b7a3SRobert Watson mac_none_relabel_cred(struct ucred *cred, struct label *newlabel) 444d8a7b7a3SRobert Watson { 445d8a7b7a3SRobert Watson 446d8a7b7a3SRobert Watson } 447d8a7b7a3SRobert Watson 44809de2dc2SRobert Watson static void 44909de2dc2SRobert Watson mac_none_thread_userret(struct thread *td) 45009de2dc2SRobert Watson { 45109de2dc2SRobert Watson 45209de2dc2SRobert Watson } 45309de2dc2SRobert Watson 454d8a7b7a3SRobert Watson /* 455d8a7b7a3SRobert Watson * Access control checks. 456d8a7b7a3SRobert Watson */ 457d8a7b7a3SRobert Watson static int 458d8a7b7a3SRobert Watson mac_none_check_bpfdesc_receive(struct bpf_d *bpf_d, struct label *bpflabel, 459d8a7b7a3SRobert Watson struct ifnet *ifnet, struct label *ifnet_label) 460d8a7b7a3SRobert Watson { 461d8a7b7a3SRobert Watson 462d8a7b7a3SRobert Watson return (0); 463d8a7b7a3SRobert Watson } 464d8a7b7a3SRobert Watson 465d8a7b7a3SRobert Watson static int 466d8a7b7a3SRobert Watson mac_none_check_cred_relabel(struct ucred *cred, struct label *newlabel) 467d8a7b7a3SRobert Watson { 468d8a7b7a3SRobert Watson 469d8a7b7a3SRobert Watson return (0); 470d8a7b7a3SRobert Watson } 471d8a7b7a3SRobert Watson 472d8a7b7a3SRobert Watson static int 473d8a7b7a3SRobert Watson mac_none_check_cred_visible(struct ucred *u1, struct ucred *u2) 474d8a7b7a3SRobert Watson { 475d8a7b7a3SRobert Watson 476d8a7b7a3SRobert Watson return (0); 477d8a7b7a3SRobert Watson } 478d8a7b7a3SRobert Watson 479d8a7b7a3SRobert Watson static int 480d8a7b7a3SRobert Watson mac_none_check_ifnet_relabel(struct ucred *cred, struct ifnet *ifnet, 4811979061bSRobert Watson struct label *ifnetlabel, struct label *newlabel) 482d8a7b7a3SRobert Watson { 483d8a7b7a3SRobert Watson 484d8a7b7a3SRobert Watson return (0); 485d8a7b7a3SRobert Watson } 486d8a7b7a3SRobert Watson 487d8a7b7a3SRobert Watson static int 488d8a7b7a3SRobert Watson mac_none_check_ifnet_transmit(struct ifnet *ifnet, struct label *ifnetlabel, 489d8a7b7a3SRobert Watson struct mbuf *m, struct label *mbuflabel) 490d8a7b7a3SRobert Watson { 491d8a7b7a3SRobert Watson 492d8a7b7a3SRobert Watson return (0); 493d8a7b7a3SRobert Watson } 494d8a7b7a3SRobert Watson 495d8a7b7a3SRobert Watson static int 49609de2dc2SRobert Watson mac_none_check_kenv_dump(struct ucred *cred) 49709de2dc2SRobert Watson { 49809de2dc2SRobert Watson 49909de2dc2SRobert Watson return (0); 50009de2dc2SRobert Watson } 50109de2dc2SRobert Watson 50209de2dc2SRobert Watson static int 50309de2dc2SRobert Watson mac_none_check_kenv_get(struct ucred *cred, char *name) 50409de2dc2SRobert Watson { 50509de2dc2SRobert Watson 50609de2dc2SRobert Watson return (0); 50709de2dc2SRobert Watson } 50809de2dc2SRobert Watson 50909de2dc2SRobert Watson static int 51009de2dc2SRobert Watson mac_none_check_kenv_set(struct ucred *cred, char *name, char *value) 51109de2dc2SRobert Watson { 51209de2dc2SRobert Watson 51309de2dc2SRobert Watson return (0); 51409de2dc2SRobert Watson } 51509de2dc2SRobert Watson 51609de2dc2SRobert Watson static int 51709de2dc2SRobert Watson mac_none_check_kenv_unset(struct ucred *cred, char *name) 51809de2dc2SRobert Watson { 51909de2dc2SRobert Watson 52009de2dc2SRobert Watson return (0); 52109de2dc2SRobert Watson } 52209de2dc2SRobert Watson 52309de2dc2SRobert Watson static int 52409de2dc2SRobert Watson mac_none_check_kld_load(struct ucred *cred, struct vnode *vp, 52509de2dc2SRobert Watson struct label *vlabel) 52609de2dc2SRobert Watson { 52709de2dc2SRobert Watson 52809de2dc2SRobert Watson return (0); 52909de2dc2SRobert Watson } 53009de2dc2SRobert Watson 53109de2dc2SRobert Watson static int 53209de2dc2SRobert Watson mac_none_check_kld_stat(struct ucred *cred) 53309de2dc2SRobert Watson { 53409de2dc2SRobert Watson 53509de2dc2SRobert Watson return (0); 53609de2dc2SRobert Watson } 53709de2dc2SRobert Watson 53809de2dc2SRobert Watson static int 53909de2dc2SRobert Watson mac_none_check_kld_unload(struct ucred *cred) 54009de2dc2SRobert Watson { 54109de2dc2SRobert Watson 54209de2dc2SRobert Watson return (0); 54309de2dc2SRobert Watson } 54409de2dc2SRobert Watson 54509de2dc2SRobert Watson static int 546d8a7b7a3SRobert Watson mac_none_check_mount_stat(struct ucred *cred, struct mount *mp, 547d8a7b7a3SRobert Watson struct label *mntlabel) 548d8a7b7a3SRobert Watson { 549d8a7b7a3SRobert Watson 550d8a7b7a3SRobert Watson return (0); 551d8a7b7a3SRobert Watson } 552d8a7b7a3SRobert Watson 553d8a7b7a3SRobert Watson static int 554d8a7b7a3SRobert Watson mac_none_check_pipe_ioctl(struct ucred *cred, struct pipe *pipe, 555d8a7b7a3SRobert Watson struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data) 556d8a7b7a3SRobert Watson { 557d8a7b7a3SRobert Watson 558d8a7b7a3SRobert Watson return (0); 559d8a7b7a3SRobert Watson } 560d8a7b7a3SRobert Watson 561d8a7b7a3SRobert Watson static int 562c024c3eeSRobert Watson mac_none_check_pipe_poll(struct ucred *cred, struct pipe *pipe, 563c024c3eeSRobert Watson struct label *pipelabel) 564c024c3eeSRobert Watson { 565c024c3eeSRobert Watson 566c024c3eeSRobert Watson return (0); 567c024c3eeSRobert Watson } 568c024c3eeSRobert Watson 569c024c3eeSRobert Watson static int 570c024c3eeSRobert Watson mac_none_check_pipe_read(struct ucred *cred, struct pipe *pipe, 571c024c3eeSRobert Watson struct label *pipelabel) 572d8a7b7a3SRobert Watson { 573d8a7b7a3SRobert Watson 574d8a7b7a3SRobert Watson return (0); 575d8a7b7a3SRobert Watson } 576d8a7b7a3SRobert Watson 577d8a7b7a3SRobert Watson static int 578d8a7b7a3SRobert Watson mac_none_check_pipe_relabel(struct ucred *cred, struct pipe *pipe, 579d8a7b7a3SRobert Watson struct label *pipelabel, struct label *newlabel) 580d8a7b7a3SRobert Watson { 581d8a7b7a3SRobert Watson 582d8a7b7a3SRobert Watson return (0); 583d8a7b7a3SRobert Watson } 584d8a7b7a3SRobert Watson 585d8a7b7a3SRobert Watson static int 586c024c3eeSRobert Watson mac_none_check_pipe_stat(struct ucred *cred, struct pipe *pipe, 587c024c3eeSRobert Watson struct label *pipelabel) 588c024c3eeSRobert Watson { 589c024c3eeSRobert Watson 590c024c3eeSRobert Watson return (0); 591c024c3eeSRobert Watson } 592c024c3eeSRobert Watson 593c024c3eeSRobert Watson static int 594c024c3eeSRobert Watson mac_none_check_pipe_write(struct ucred *cred, struct pipe *pipe, 595c024c3eeSRobert Watson struct label *pipelabel) 596c024c3eeSRobert Watson { 597c024c3eeSRobert Watson 598c024c3eeSRobert Watson return (0); 599c024c3eeSRobert Watson } 600c024c3eeSRobert Watson 601c024c3eeSRobert Watson static int 602d8a7b7a3SRobert Watson mac_none_check_proc_debug(struct ucred *cred, struct proc *proc) 603d8a7b7a3SRobert Watson { 604d8a7b7a3SRobert Watson 605d8a7b7a3SRobert Watson return (0); 606d8a7b7a3SRobert Watson } 607d8a7b7a3SRobert Watson 608d8a7b7a3SRobert Watson static int 609d8a7b7a3SRobert Watson mac_none_check_proc_sched(struct ucred *cred, struct proc *proc) 610d8a7b7a3SRobert Watson { 611d8a7b7a3SRobert Watson 612d8a7b7a3SRobert Watson return (0); 613d8a7b7a3SRobert Watson } 614d8a7b7a3SRobert Watson 615d8a7b7a3SRobert Watson static int 616d8a7b7a3SRobert Watson mac_none_check_proc_signal(struct ucred *cred, struct proc *proc, int signum) 617d8a7b7a3SRobert Watson { 618d8a7b7a3SRobert Watson 619d8a7b7a3SRobert Watson return (0); 620d8a7b7a3SRobert Watson } 621d8a7b7a3SRobert Watson 622d8a7b7a3SRobert Watson static int 623d8a7b7a3SRobert Watson mac_none_check_socket_bind(struct ucred *cred, struct socket *socket, 624d8a7b7a3SRobert Watson struct label *socketlabel, struct sockaddr *sockaddr) 625d8a7b7a3SRobert Watson { 626d8a7b7a3SRobert Watson 627d8a7b7a3SRobert Watson return (0); 628d8a7b7a3SRobert Watson } 629d8a7b7a3SRobert Watson 630d8a7b7a3SRobert Watson static int 631d8a7b7a3SRobert Watson mac_none_check_socket_connect(struct ucred *cred, struct socket *socket, 632d8a7b7a3SRobert Watson struct label *socketlabel, struct sockaddr *sockaddr) 633d8a7b7a3SRobert Watson { 634d8a7b7a3SRobert Watson 635d8a7b7a3SRobert Watson return (0); 636d8a7b7a3SRobert Watson } 637d8a7b7a3SRobert Watson 638d8a7b7a3SRobert Watson static int 639fb95b5d3SRobert Watson mac_none_check_socket_deliver(struct socket *so, struct label *socketlabel, 640fb95b5d3SRobert Watson struct mbuf *m, struct label *mbuflabel) 641d8a7b7a3SRobert Watson { 642d8a7b7a3SRobert Watson 643d8a7b7a3SRobert Watson return (0); 644d8a7b7a3SRobert Watson } 645d8a7b7a3SRobert Watson 646d8a7b7a3SRobert Watson static int 64757e2f493SRobert Watson mac_none_check_socket_listen(struct ucred *cred, struct socket *so, 648fb95b5d3SRobert Watson struct label *socketlabel) 649d8a7b7a3SRobert Watson { 650d8a7b7a3SRobert Watson 651d8a7b7a3SRobert Watson return (0); 652d8a7b7a3SRobert Watson } 653d8a7b7a3SRobert Watson 654d8a7b7a3SRobert Watson static int 655d8a7b7a3SRobert Watson mac_none_check_socket_relabel(struct ucred *cred, struct socket *socket, 656d8a7b7a3SRobert Watson struct label *socketlabel, struct label *newlabel) 657d8a7b7a3SRobert Watson { 658d8a7b7a3SRobert Watson 659d8a7b7a3SRobert Watson return (0); 660d8a7b7a3SRobert Watson } 661d8a7b7a3SRobert Watson 662d8a7b7a3SRobert Watson static int 663d8a7b7a3SRobert Watson mac_none_check_socket_visible(struct ucred *cred, struct socket *socket, 664d8a7b7a3SRobert Watson struct label *socketlabel) 665d8a7b7a3SRobert Watson { 666d8a7b7a3SRobert Watson 667d8a7b7a3SRobert Watson return (0); 668d8a7b7a3SRobert Watson } 669d8a7b7a3SRobert Watson 670d8a7b7a3SRobert Watson static int 67109de2dc2SRobert Watson mac_none_check_sysarch_ioperm(struct ucred *cred) 67209de2dc2SRobert Watson { 67309de2dc2SRobert Watson 67409de2dc2SRobert Watson return (0); 67509de2dc2SRobert Watson } 67609de2dc2SRobert Watson 67709de2dc2SRobert Watson static int 67809de2dc2SRobert Watson mac_none_check_system_acct(struct ucred *cred, struct vnode *vp, 67909de2dc2SRobert Watson struct label *vlabel) 68009de2dc2SRobert Watson { 68109de2dc2SRobert Watson 68209de2dc2SRobert Watson return (0); 68309de2dc2SRobert Watson } 68409de2dc2SRobert Watson 68509de2dc2SRobert Watson static int 686927f6069SRobert Watson mac_none_check_system_reboot(struct ucred *cred, int how) 687927f6069SRobert Watson { 688927f6069SRobert Watson 689927f6069SRobert Watson return (0); 690927f6069SRobert Watson } 691927f6069SRobert Watson 692927f6069SRobert Watson static int 69309de2dc2SRobert Watson mac_none_check_system_settime(struct ucred *cred) 69409de2dc2SRobert Watson { 69509de2dc2SRobert Watson 69609de2dc2SRobert Watson return (0); 69709de2dc2SRobert Watson } 69809de2dc2SRobert Watson 69909de2dc2SRobert Watson static int 700927f6069SRobert Watson mac_none_check_system_swapon(struct ucred *cred, struct vnode *vp, 701927f6069SRobert Watson struct label *label) 702927f6069SRobert Watson { 703927f6069SRobert Watson 704927f6069SRobert Watson return (0); 705927f6069SRobert Watson } 706927f6069SRobert Watson 707927f6069SRobert Watson static int 70809de2dc2SRobert Watson mac_none_check_system_swapoff(struct ucred *cred, struct vnode *vp, 70909de2dc2SRobert Watson struct label *label) 71009de2dc2SRobert Watson { 71109de2dc2SRobert Watson 71209de2dc2SRobert Watson return (0); 71309de2dc2SRobert Watson } 71409de2dc2SRobert Watson 71509de2dc2SRobert Watson static int 716927f6069SRobert Watson mac_none_check_system_sysctl(struct ucred *cred, int *name, u_int namelen, 717927f6069SRobert Watson void *old, size_t *oldlenp, int inkernel, void *new, size_t newlen) 718927f6069SRobert Watson { 719927f6069SRobert Watson 720927f6069SRobert Watson return (0); 721927f6069SRobert Watson } 722927f6069SRobert Watson 723927f6069SRobert Watson static int 724d8a7b7a3SRobert Watson mac_none_check_vnode_access(struct ucred *cred, struct vnode *vp, 725b914de36SRobert Watson struct label *label, int acc_mode) 726d8a7b7a3SRobert Watson { 727d8a7b7a3SRobert Watson 728d8a7b7a3SRobert Watson return (0); 729d8a7b7a3SRobert Watson } 730d8a7b7a3SRobert Watson 731d8a7b7a3SRobert Watson static int 732d8a7b7a3SRobert Watson mac_none_check_vnode_chdir(struct ucred *cred, struct vnode *dvp, 733d8a7b7a3SRobert Watson struct label *dlabel) 734d8a7b7a3SRobert Watson { 735d8a7b7a3SRobert Watson 736d8a7b7a3SRobert Watson return (0); 737d8a7b7a3SRobert Watson } 738d8a7b7a3SRobert Watson 739d8a7b7a3SRobert Watson static int 740d8a7b7a3SRobert Watson mac_none_check_vnode_chroot(struct ucred *cred, struct vnode *dvp, 741d8a7b7a3SRobert Watson struct label *dlabel) 742d8a7b7a3SRobert Watson { 743d8a7b7a3SRobert Watson 744d8a7b7a3SRobert Watson return (0); 745d8a7b7a3SRobert Watson } 746d8a7b7a3SRobert Watson 747d8a7b7a3SRobert Watson static int 748d8a7b7a3SRobert Watson mac_none_check_vnode_create(struct ucred *cred, struct vnode *dvp, 749d8a7b7a3SRobert Watson struct label *dlabel, struct componentname *cnp, struct vattr *vap) 750d8a7b7a3SRobert Watson { 751d8a7b7a3SRobert Watson 752d8a7b7a3SRobert Watson return (0); 753d8a7b7a3SRobert Watson } 754d8a7b7a3SRobert Watson 755d8a7b7a3SRobert Watson static int 756d8a7b7a3SRobert Watson mac_none_check_vnode_delete(struct ucred *cred, struct vnode *dvp, 757d8a7b7a3SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, 758d8a7b7a3SRobert Watson struct componentname *cnp) 759d8a7b7a3SRobert Watson { 760d8a7b7a3SRobert Watson 761d8a7b7a3SRobert Watson return (0); 762d8a7b7a3SRobert Watson } 763d8a7b7a3SRobert Watson 764d8a7b7a3SRobert Watson static int 765d8a7b7a3SRobert Watson mac_none_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp, 766d8a7b7a3SRobert Watson struct label *label, acl_type_t type) 767d8a7b7a3SRobert Watson { 768d8a7b7a3SRobert Watson 769d8a7b7a3SRobert Watson return (0); 770d8a7b7a3SRobert Watson } 771d8a7b7a3SRobert Watson 772d8a7b7a3SRobert Watson static int 773d8a7b7a3SRobert Watson mac_none_check_vnode_exec(struct ucred *cred, struct vnode *vp, 774ef5def59SRobert Watson struct label *label, struct image_params *imgp, 775ef5def59SRobert Watson struct label *execlabel) 776d8a7b7a3SRobert Watson { 777d8a7b7a3SRobert Watson 778d8a7b7a3SRobert Watson return (0); 779d8a7b7a3SRobert Watson } 780d8a7b7a3SRobert Watson 781d8a7b7a3SRobert Watson static int 782d8a7b7a3SRobert Watson mac_none_check_vnode_getacl(struct ucred *cred, struct vnode *vp, 783d8a7b7a3SRobert Watson struct label *label, acl_type_t type) 784d8a7b7a3SRobert Watson { 785d8a7b7a3SRobert Watson 786d8a7b7a3SRobert Watson return (0); 787d8a7b7a3SRobert Watson } 788d8a7b7a3SRobert Watson 789d8a7b7a3SRobert Watson static int 790d8a7b7a3SRobert Watson mac_none_check_vnode_getextattr(struct ucred *cred, struct vnode *vp, 791d8a7b7a3SRobert Watson struct label *label, int attrnamespace, const char *name, struct uio *uio) 792d8a7b7a3SRobert Watson { 793d8a7b7a3SRobert Watson 794d8a7b7a3SRobert Watson return (0); 795d8a7b7a3SRobert Watson } 796d8a7b7a3SRobert Watson 797d8a7b7a3SRobert Watson static int 798c27b50f5SRobert Watson mac_none_check_vnode_link(struct ucred *cred, struct vnode *dvp, 799c27b50f5SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, 800c27b50f5SRobert Watson struct componentname *cnp) 801c27b50f5SRobert Watson { 802c27b50f5SRobert Watson 803c27b50f5SRobert Watson return (0); 804c27b50f5SRobert Watson } 805c27b50f5SRobert Watson 806c27b50f5SRobert Watson static int 807d8a7b7a3SRobert Watson mac_none_check_vnode_lookup(struct ucred *cred, struct vnode *dvp, 808d8a7b7a3SRobert Watson struct label *dlabel, struct componentname *cnp) 809d8a7b7a3SRobert Watson { 810d8a7b7a3SRobert Watson 811d8a7b7a3SRobert Watson return (0); 812d8a7b7a3SRobert Watson } 813d8a7b7a3SRobert Watson 814d8a7b7a3SRobert Watson static int 815e183f80eSRobert Watson mac_none_check_vnode_mmap(struct ucred *cred, struct vnode *vp, 816e183f80eSRobert Watson struct label *label, int prot) 817e183f80eSRobert Watson { 818e183f80eSRobert Watson 819e183f80eSRobert Watson return (0); 820e183f80eSRobert Watson } 821e183f80eSRobert Watson 822e183f80eSRobert Watson static int 823e183f80eSRobert Watson mac_none_check_vnode_mprotect(struct ucred *cred, struct vnode *vp, 824e183f80eSRobert Watson struct label *label, int prot) 825e183f80eSRobert Watson { 826e183f80eSRobert Watson 827e183f80eSRobert Watson return (0); 828e183f80eSRobert Watson } 829e183f80eSRobert Watson 830e183f80eSRobert Watson static int 831d8a7b7a3SRobert Watson mac_none_check_vnode_open(struct ucred *cred, struct vnode *vp, 832b914de36SRobert Watson struct label *filelabel, int acc_mode) 833d8a7b7a3SRobert Watson { 834d8a7b7a3SRobert Watson 835d8a7b7a3SRobert Watson return (0); 836d8a7b7a3SRobert Watson } 837d8a7b7a3SRobert Watson 838d8a7b7a3SRobert Watson static int 839177142e4SRobert Watson mac_none_check_vnode_poll(struct ucred *active_cred, struct ucred *file_cred, 840177142e4SRobert Watson struct vnode *vp, struct label *label) 8417f724f8bSRobert Watson { 8427f724f8bSRobert Watson 8437f724f8bSRobert Watson return (0); 8447f724f8bSRobert Watson } 8457f724f8bSRobert Watson 8467f724f8bSRobert Watson static int 847177142e4SRobert Watson mac_none_check_vnode_read(struct ucred *active_cred, struct ucred *file_cred, 848177142e4SRobert Watson struct vnode *vp, struct label *label) 8497f724f8bSRobert Watson { 8507f724f8bSRobert Watson 8517f724f8bSRobert Watson return (0); 8527f724f8bSRobert Watson } 8537f724f8bSRobert Watson 8547f724f8bSRobert Watson static int 855d8a7b7a3SRobert Watson mac_none_check_vnode_readdir(struct ucred *cred, struct vnode *vp, 856d8a7b7a3SRobert Watson struct label *dlabel) 857d8a7b7a3SRobert Watson { 858d8a7b7a3SRobert Watson 859d8a7b7a3SRobert Watson return (0); 860d8a7b7a3SRobert Watson } 861d8a7b7a3SRobert Watson 862d8a7b7a3SRobert Watson static int 863d8a7b7a3SRobert Watson mac_none_check_vnode_readlink(struct ucred *cred, struct vnode *vp, 864d8a7b7a3SRobert Watson struct label *vnodelabel) 865d8a7b7a3SRobert Watson { 866d8a7b7a3SRobert Watson 867d8a7b7a3SRobert Watson return (0); 868d8a7b7a3SRobert Watson } 869d8a7b7a3SRobert Watson 870d8a7b7a3SRobert Watson static int 871d8a7b7a3SRobert Watson mac_none_check_vnode_relabel(struct ucred *cred, struct vnode *vp, 872d8a7b7a3SRobert Watson struct label *vnodelabel, struct label *newlabel) 873d8a7b7a3SRobert Watson { 874d8a7b7a3SRobert Watson 875d8a7b7a3SRobert Watson return (0); 876d8a7b7a3SRobert Watson } 877d8a7b7a3SRobert Watson 878d8a7b7a3SRobert Watson static int 879d8a7b7a3SRobert Watson mac_none_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp, 880d8a7b7a3SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, 881d8a7b7a3SRobert Watson struct componentname *cnp) 882d8a7b7a3SRobert Watson { 883d8a7b7a3SRobert Watson 884d8a7b7a3SRobert Watson return (0); 885d8a7b7a3SRobert Watson } 886d8a7b7a3SRobert Watson 887d8a7b7a3SRobert Watson static int 888d8a7b7a3SRobert Watson mac_none_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp, 889d8a7b7a3SRobert Watson struct label *dlabel, struct vnode *vp, struct label *label, int samedir, 890d8a7b7a3SRobert Watson struct componentname *cnp) 891d8a7b7a3SRobert Watson { 892d8a7b7a3SRobert Watson 893d8a7b7a3SRobert Watson return (0); 894d8a7b7a3SRobert Watson } 895d8a7b7a3SRobert Watson 896d8a7b7a3SRobert Watson static int 897d8a7b7a3SRobert Watson mac_none_check_vnode_revoke(struct ucred *cred, struct vnode *vp, 898d8a7b7a3SRobert Watson struct label *label) 899d8a7b7a3SRobert Watson { 900d8a7b7a3SRobert Watson 901d8a7b7a3SRobert Watson return (0); 902d8a7b7a3SRobert Watson } 903d8a7b7a3SRobert Watson 904d8a7b7a3SRobert Watson static int 905d8a7b7a3SRobert Watson mac_none_check_vnode_setacl(struct ucred *cred, struct vnode *vp, 906d8a7b7a3SRobert Watson struct label *label, acl_type_t type, struct acl *acl) 907d8a7b7a3SRobert Watson { 908d8a7b7a3SRobert Watson 909d8a7b7a3SRobert Watson return (0); 910d8a7b7a3SRobert Watson } 911d8a7b7a3SRobert Watson 912d8a7b7a3SRobert Watson static int 913d8a7b7a3SRobert Watson mac_none_check_vnode_setextattr(struct ucred *cred, struct vnode *vp, 914d8a7b7a3SRobert Watson struct label *label, int attrnamespace, const char *name, struct uio *uio) 915d8a7b7a3SRobert Watson { 916d8a7b7a3SRobert Watson 917d8a7b7a3SRobert Watson return (0); 918d8a7b7a3SRobert Watson } 919d8a7b7a3SRobert Watson 920d8a7b7a3SRobert Watson static int 921d8a7b7a3SRobert Watson mac_none_check_vnode_setflags(struct ucred *cred, struct vnode *vp, 922d8a7b7a3SRobert Watson struct label *label, u_long flags) 923d8a7b7a3SRobert Watson { 924d8a7b7a3SRobert Watson 925d8a7b7a3SRobert Watson return (0); 926d8a7b7a3SRobert Watson } 927d8a7b7a3SRobert Watson 928d8a7b7a3SRobert Watson static int 929d8a7b7a3SRobert Watson mac_none_check_vnode_setmode(struct ucred *cred, struct vnode *vp, 930d8a7b7a3SRobert Watson struct label *label, mode_t mode) 931d8a7b7a3SRobert Watson { 932d8a7b7a3SRobert Watson 933d8a7b7a3SRobert Watson return (0); 934d8a7b7a3SRobert Watson } 935d8a7b7a3SRobert Watson 936d8a7b7a3SRobert Watson static int 937d8a7b7a3SRobert Watson mac_none_check_vnode_setowner(struct ucred *cred, struct vnode *vp, 938d8a7b7a3SRobert Watson struct label *label, uid_t uid, gid_t gid) 939d8a7b7a3SRobert Watson { 940d8a7b7a3SRobert Watson 941d8a7b7a3SRobert Watson return (0); 942d8a7b7a3SRobert Watson } 943d8a7b7a3SRobert Watson 944d8a7b7a3SRobert Watson static int 945d8a7b7a3SRobert Watson mac_none_check_vnode_setutimes(struct ucred *cred, struct vnode *vp, 946d8a7b7a3SRobert Watson struct label *label, struct timespec atime, struct timespec mtime) 947d8a7b7a3SRobert Watson { 948d8a7b7a3SRobert Watson 949d8a7b7a3SRobert Watson return (0); 950d8a7b7a3SRobert Watson } 951d8a7b7a3SRobert Watson 952d8a7b7a3SRobert Watson static int 953177142e4SRobert Watson mac_none_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred, 954177142e4SRobert Watson struct vnode *vp, struct label *label) 955d8a7b7a3SRobert Watson { 956d8a7b7a3SRobert Watson 957d8a7b7a3SRobert Watson return (0); 958d8a7b7a3SRobert Watson } 959d8a7b7a3SRobert Watson 9607f724f8bSRobert Watson static int 961177142e4SRobert Watson mac_none_check_vnode_write(struct ucred *active_cred, 962177142e4SRobert Watson struct ucred *file_cred, struct vnode *vp, struct label *label) 9637f724f8bSRobert Watson { 9647f724f8bSRobert Watson 9657f724f8bSRobert Watson return (0); 9667f724f8bSRobert Watson } 9677f724f8bSRobert Watson 9685c8dd342SRobert Watson static struct mac_policy_ops mac_none_ops = 969d8a7b7a3SRobert Watson { 9705c8dd342SRobert Watson .mpo_destroy = mac_none_destroy, 9715c8dd342SRobert Watson .mpo_init = mac_none_init, 9725c8dd342SRobert Watson .mpo_syscall = mac_none_syscall, 9735c8dd342SRobert Watson .mpo_init_bpfdesc_label = mac_none_init_label, 9745c8dd342SRobert Watson .mpo_init_cred_label = mac_none_init_label, 9755c8dd342SRobert Watson .mpo_init_devfsdirent_label = mac_none_init_label, 9765c8dd342SRobert Watson .mpo_init_ifnet_label = mac_none_init_label, 9775e7ce478SRobert Watson .mpo_init_ipq_label = mac_none_init_label_waitcheck, 9785c8dd342SRobert Watson .mpo_init_mbuf_label = mac_none_init_label_waitcheck, 9795c8dd342SRobert Watson .mpo_init_mount_label = mac_none_init_label, 9805c8dd342SRobert Watson .mpo_init_mount_fs_label = mac_none_init_label, 9815c8dd342SRobert Watson .mpo_init_pipe_label = mac_none_init_label, 9825c8dd342SRobert Watson .mpo_init_socket_label = mac_none_init_label_waitcheck, 9835c8dd342SRobert Watson .mpo_init_socket_peer_label = mac_none_init_label_waitcheck, 9845c8dd342SRobert Watson .mpo_init_vnode_label = mac_none_init_label, 9855c8dd342SRobert Watson .mpo_destroy_bpfdesc_label = mac_none_destroy_label, 9865c8dd342SRobert Watson .mpo_destroy_cred_label = mac_none_destroy_label, 9875c8dd342SRobert Watson .mpo_destroy_devfsdirent_label = mac_none_destroy_label, 9885c8dd342SRobert Watson .mpo_destroy_ifnet_label = mac_none_destroy_label, 9895c8dd342SRobert Watson .mpo_destroy_ipq_label = mac_none_destroy_label, 9905c8dd342SRobert Watson .mpo_destroy_mbuf_label = mac_none_destroy_label, 9915c8dd342SRobert Watson .mpo_destroy_mount_label = mac_none_destroy_label, 9925c8dd342SRobert Watson .mpo_destroy_mount_fs_label = mac_none_destroy_label, 9935c8dd342SRobert Watson .mpo_destroy_pipe_label = mac_none_destroy_label, 9945c8dd342SRobert Watson .mpo_destroy_socket_label = mac_none_destroy_label, 9955c8dd342SRobert Watson .mpo_destroy_socket_peer_label = mac_none_destroy_label, 9965c8dd342SRobert Watson .mpo_destroy_vnode_label = mac_none_destroy_label, 9975c8dd342SRobert Watson .mpo_externalize_cred_label = mac_none_externalize_label, 9985c8dd342SRobert Watson .mpo_externalize_ifnet_label = mac_none_externalize_label, 9995c8dd342SRobert Watson .mpo_externalize_pipe_label = mac_none_externalize_label, 10005c8dd342SRobert Watson .mpo_externalize_socket_label = mac_none_externalize_label, 10015c8dd342SRobert Watson .mpo_externalize_socket_peer_label = mac_none_externalize_label, 10025c8dd342SRobert Watson .mpo_externalize_vnode_label = mac_none_externalize_label, 10035c8dd342SRobert Watson .mpo_internalize_cred_label = mac_none_internalize_label, 10045c8dd342SRobert Watson .mpo_internalize_ifnet_label = mac_none_internalize_label, 10055c8dd342SRobert Watson .mpo_internalize_pipe_label = mac_none_internalize_label, 10065c8dd342SRobert Watson .mpo_internalize_socket_label = mac_none_internalize_label, 10075c8dd342SRobert Watson .mpo_internalize_vnode_label = mac_none_internalize_label, 10085c8dd342SRobert Watson .mpo_associate_vnode_devfs = mac_none_associate_vnode_devfs, 10095c8dd342SRobert Watson .mpo_associate_vnode_extattr = mac_none_associate_vnode_extattr, 10105c8dd342SRobert Watson .mpo_associate_vnode_singlelabel = mac_none_associate_vnode_singlelabel, 10115c8dd342SRobert Watson .mpo_create_devfs_device = mac_none_create_devfs_device, 10125c8dd342SRobert Watson .mpo_create_devfs_directory = mac_none_create_devfs_directory, 10135c8dd342SRobert Watson .mpo_create_devfs_symlink = mac_none_create_devfs_symlink, 10145c8dd342SRobert Watson .mpo_create_vnode_extattr = mac_none_create_vnode_extattr, 10155c8dd342SRobert Watson .mpo_create_mount = mac_none_create_mount, 10165c8dd342SRobert Watson .mpo_create_root_mount = mac_none_create_root_mount, 10175c8dd342SRobert Watson .mpo_relabel_vnode = mac_none_relabel_vnode, 10185c8dd342SRobert Watson .mpo_setlabel_vnode_extattr = mac_none_setlabel_vnode_extattr, 10195c8dd342SRobert Watson .mpo_update_devfsdirent = mac_none_update_devfsdirent, 10205c8dd342SRobert Watson .mpo_create_mbuf_from_socket = mac_none_create_mbuf_from_socket, 10215c8dd342SRobert Watson .mpo_create_pipe = mac_none_create_pipe, 10225c8dd342SRobert Watson .mpo_create_socket = mac_none_create_socket, 10235c8dd342SRobert Watson .mpo_create_socket_from_socket = mac_none_create_socket_from_socket, 10245c8dd342SRobert Watson .mpo_relabel_pipe = mac_none_relabel_pipe, 10255c8dd342SRobert Watson .mpo_relabel_socket = mac_none_relabel_socket, 10265c8dd342SRobert Watson .mpo_set_socket_peer_from_mbuf = mac_none_set_socket_peer_from_mbuf, 10275c8dd342SRobert Watson .mpo_set_socket_peer_from_socket = mac_none_set_socket_peer_from_socket, 10285c8dd342SRobert Watson .mpo_create_bpfdesc = mac_none_create_bpfdesc, 10295c8dd342SRobert Watson .mpo_create_ifnet = mac_none_create_ifnet, 10305c8dd342SRobert Watson .mpo_create_ipq = mac_none_create_ipq, 10315c8dd342SRobert Watson .mpo_create_datagram_from_ipq = mac_none_create_datagram_from_ipq, 10325c8dd342SRobert Watson .mpo_create_fragment = mac_none_create_fragment, 10335c8dd342SRobert Watson .mpo_create_ipq = mac_none_create_ipq, 10345c8dd342SRobert Watson .mpo_create_mbuf_from_mbuf = mac_none_create_mbuf_from_mbuf, 10355c8dd342SRobert Watson .mpo_create_mbuf_linklayer = mac_none_create_mbuf_linklayer, 10365c8dd342SRobert Watson .mpo_create_mbuf_from_bpfdesc = mac_none_create_mbuf_from_bpfdesc, 10375c8dd342SRobert Watson .mpo_create_mbuf_from_ifnet = mac_none_create_mbuf_from_ifnet, 10385c8dd342SRobert Watson .mpo_create_mbuf_multicast_encap = mac_none_create_mbuf_multicast_encap, 10395c8dd342SRobert Watson .mpo_create_mbuf_netlayer = mac_none_create_mbuf_netlayer, 10405c8dd342SRobert Watson .mpo_fragment_match = mac_none_fragment_match, 10415c8dd342SRobert Watson .mpo_relabel_ifnet = mac_none_relabel_ifnet, 10425c8dd342SRobert Watson .mpo_update_ipq = mac_none_update_ipq, 10435c8dd342SRobert Watson .mpo_create_cred = mac_none_create_cred, 10445c8dd342SRobert Watson .mpo_execve_transition = mac_none_execve_transition, 10455c8dd342SRobert Watson .mpo_execve_will_transition = mac_none_execve_will_transition, 10465c8dd342SRobert Watson .mpo_create_proc0 = mac_none_create_proc0, 10475c8dd342SRobert Watson .mpo_create_proc1 = mac_none_create_proc1, 10485c8dd342SRobert Watson .mpo_relabel_cred = mac_none_relabel_cred, 104909de2dc2SRobert Watson .mpo_thread_userret = mac_none_thread_userret, 10505c8dd342SRobert Watson .mpo_check_bpfdesc_receive = mac_none_check_bpfdesc_receive, 10515c8dd342SRobert Watson .mpo_check_cred_relabel = mac_none_check_cred_relabel, 10525c8dd342SRobert Watson .mpo_check_cred_visible = mac_none_check_cred_visible, 10535c8dd342SRobert Watson .mpo_check_ifnet_relabel = mac_none_check_ifnet_relabel, 10545c8dd342SRobert Watson .mpo_check_ifnet_transmit = mac_none_check_ifnet_transmit, 105509de2dc2SRobert Watson .mpo_check_kenv_dump = mac_none_check_kenv_dump, 105609de2dc2SRobert Watson .mpo_check_kenv_get = mac_none_check_kenv_get, 105709de2dc2SRobert Watson .mpo_check_kenv_set = mac_none_check_kenv_set, 105809de2dc2SRobert Watson .mpo_check_kenv_unset = mac_none_check_kenv_unset, 105909de2dc2SRobert Watson .mpo_check_kld_load = mac_none_check_kld_load, 106009de2dc2SRobert Watson .mpo_check_kld_stat = mac_none_check_kld_stat, 106109de2dc2SRobert Watson .mpo_check_kld_unload = mac_none_check_kld_unload, 10625c8dd342SRobert Watson .mpo_check_mount_stat = mac_none_check_mount_stat, 10635c8dd342SRobert Watson .mpo_check_pipe_ioctl = mac_none_check_pipe_ioctl, 10645c8dd342SRobert Watson .mpo_check_pipe_poll = mac_none_check_pipe_poll, 10655c8dd342SRobert Watson .mpo_check_pipe_read = mac_none_check_pipe_read, 10665c8dd342SRobert Watson .mpo_check_pipe_relabel = mac_none_check_pipe_relabel, 10675c8dd342SRobert Watson .mpo_check_pipe_stat = mac_none_check_pipe_stat, 10685c8dd342SRobert Watson .mpo_check_pipe_write = mac_none_check_pipe_write, 10695c8dd342SRobert Watson .mpo_check_proc_debug = mac_none_check_proc_debug, 10705c8dd342SRobert Watson .mpo_check_proc_sched = mac_none_check_proc_sched, 10715c8dd342SRobert Watson .mpo_check_proc_signal = mac_none_check_proc_signal, 10725c8dd342SRobert Watson .mpo_check_socket_bind = mac_none_check_socket_bind, 10735c8dd342SRobert Watson .mpo_check_socket_connect = mac_none_check_socket_connect, 10745c8dd342SRobert Watson .mpo_check_socket_deliver = mac_none_check_socket_deliver, 10755c8dd342SRobert Watson .mpo_check_socket_listen = mac_none_check_socket_listen, 10765c8dd342SRobert Watson .mpo_check_socket_relabel = mac_none_check_socket_relabel, 10775c8dd342SRobert Watson .mpo_check_socket_visible = mac_none_check_socket_visible, 107809de2dc2SRobert Watson .mpo_check_sysarch_ioperm = mac_none_check_sysarch_ioperm, 107909de2dc2SRobert Watson .mpo_check_system_acct = mac_none_check_system_acct, 10805c8dd342SRobert Watson .mpo_check_system_reboot = mac_none_check_system_reboot, 108109de2dc2SRobert Watson .mpo_check_system_settime = mac_none_check_system_settime, 10825c8dd342SRobert Watson .mpo_check_system_swapon = mac_none_check_system_swapon, 108309de2dc2SRobert Watson .mpo_check_system_swapoff = mac_none_check_system_swapoff, 10845c8dd342SRobert Watson .mpo_check_system_sysctl = mac_none_check_system_sysctl, 10855c8dd342SRobert Watson .mpo_check_vnode_access = mac_none_check_vnode_access, 10865c8dd342SRobert Watson .mpo_check_vnode_chdir = mac_none_check_vnode_chdir, 10875c8dd342SRobert Watson .mpo_check_vnode_chroot = mac_none_check_vnode_chroot, 10885c8dd342SRobert Watson .mpo_check_vnode_create = mac_none_check_vnode_create, 10895c8dd342SRobert Watson .mpo_check_vnode_delete = mac_none_check_vnode_delete, 10905c8dd342SRobert Watson .mpo_check_vnode_deleteacl = mac_none_check_vnode_deleteacl, 10915c8dd342SRobert Watson .mpo_check_vnode_exec = mac_none_check_vnode_exec, 10925c8dd342SRobert Watson .mpo_check_vnode_getacl = mac_none_check_vnode_getacl, 10935c8dd342SRobert Watson .mpo_check_vnode_getextattr = mac_none_check_vnode_getextattr, 10945c8dd342SRobert Watson .mpo_check_vnode_link = mac_none_check_vnode_link, 10955c8dd342SRobert Watson .mpo_check_vnode_lookup = mac_none_check_vnode_lookup, 10965c8dd342SRobert Watson .mpo_check_vnode_mmap = mac_none_check_vnode_mmap, 10975c8dd342SRobert Watson .mpo_check_vnode_mprotect = mac_none_check_vnode_mprotect, 10985c8dd342SRobert Watson .mpo_check_vnode_open = mac_none_check_vnode_open, 10995c8dd342SRobert Watson .mpo_check_vnode_poll = mac_none_check_vnode_poll, 11005c8dd342SRobert Watson .mpo_check_vnode_read = mac_none_check_vnode_read, 11015c8dd342SRobert Watson .mpo_check_vnode_readdir = mac_none_check_vnode_readdir, 11025c8dd342SRobert Watson .mpo_check_vnode_readlink = mac_none_check_vnode_readlink, 11035c8dd342SRobert Watson .mpo_check_vnode_relabel = mac_none_check_vnode_relabel, 11045c8dd342SRobert Watson .mpo_check_vnode_rename_from = mac_none_check_vnode_rename_from, 11055c8dd342SRobert Watson .mpo_check_vnode_rename_to = mac_none_check_vnode_rename_to, 11065c8dd342SRobert Watson .mpo_check_vnode_revoke = mac_none_check_vnode_revoke, 11075c8dd342SRobert Watson .mpo_check_vnode_setacl = mac_none_check_vnode_setacl, 11085c8dd342SRobert Watson .mpo_check_vnode_setextattr = mac_none_check_vnode_setextattr, 11095c8dd342SRobert Watson .mpo_check_vnode_setflags = mac_none_check_vnode_setflags, 11105c8dd342SRobert Watson .mpo_check_vnode_setmode = mac_none_check_vnode_setmode, 11115c8dd342SRobert Watson .mpo_check_vnode_setowner = mac_none_check_vnode_setowner, 11125c8dd342SRobert Watson .mpo_check_vnode_setutimes = mac_none_check_vnode_setutimes, 11135c8dd342SRobert Watson .mpo_check_vnode_stat = mac_none_check_vnode_stat, 11145c8dd342SRobert Watson .mpo_check_vnode_write = mac_none_check_vnode_write, 1115d8a7b7a3SRobert Watson }; 1116d8a7b7a3SRobert Watson 111778183ac2SRobert Watson MAC_POLICY_SET(&mac_none_ops, mac_none, "TrustedBSD MAC/None", 1118740348c4SRobert Watson MPC_LOADTIME_FLAG_UNLOADOK, NULL); 1119