1100978Srwatson/*- 2225344Srwatson * Copyright (c) 1999-2002, 2007-2011 Robert N. M. Watson 3145167Srwatson * Copyright (c) 2001-2005 Networks Associates Technology, Inc. 4163606Srwatson * Copyright (c) 2005-2006 SPARTA, Inc. 5100978Srwatson * All rights reserved. 6100978Srwatson * 7100978Srwatson * This software was developed by Robert Watson for the TrustedBSD Project. 8100978Srwatson * 9106392Srwatson * This software was developed for the FreeBSD Project in part by Network 10106392Srwatson * Associates Laboratories, the Security Research Division of Network 11106392Srwatson * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), 12106392Srwatson * as part of the DARPA CHATS research program. 13100978Srwatson * 14147784Srwatson * This software was enhanced by SPARTA ISSO under SPAWAR contract 15147784Srwatson * N66001-04-C-6019 ("SEFOS"). 16147784Srwatson * 17189529Srwatson * This software was developed at the University of Cambridge Computer 18189529Srwatson * Laboratory with support from a grant from Google, Inc. 19189529Srwatson * 20100978Srwatson * Redistribution and use in source and binary forms, with or without 21100978Srwatson * modification, are permitted provided that the following conditions 22100978Srwatson * are met: 23100978Srwatson * 1. Redistributions of source code must retain the above copyright 24100978Srwatson * notice, this list of conditions and the following disclaimer. 25100978Srwatson * 2. Redistributions in binary form must reproduce the above copyright 26100978Srwatson * notice, this list of conditions and the following disclaimer in the 27100978Srwatson * documentation and/or other materials provided with the distribution. 28100978Srwatson * 29100978Srwatson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 30100978Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 31100978Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 32100978Srwatson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 33100978Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 34100978Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 35100978Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36100978Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 37100978Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 38100978Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 39100978Srwatson * SUCH DAMAGE. 40100978Srwatson * 41100978Srwatson * $FreeBSD: releng/11.0/sys/security/mac/mac_framework.h 263152 2014-03-14 06:29:43Z glebius $ 42100978Srwatson */ 43145167Srwatson 44100978Srwatson/* 45163606Srwatson * Kernel interface for Mandatory Access Control -- how kernel services 46163606Srwatson * interact with the TrustedBSD MAC Framework. 47102123Srwatson */ 48102123Srwatson 49178184Srwatson#ifndef _SECURITY_MAC_MAC_FRAMEWORK_H_ 50178184Srwatson#define _SECURITY_MAC_MAC_FRAMEWORK_H_ 51105693Srwatson 52105693Srwatson#ifndef _KERNEL 53163606Srwatson#error "no user-serviceable parts inside" 54163606Srwatson#endif 55105693Srwatson 56168933Srwatsonstruct auditinfo; 57171047Srwatsonstruct auditinfo_addr; 58100978Srwatsonstruct bpf_d; 59130585Sphkstruct cdev; 60100978Srwatsonstruct componentname; 61100978Srwatsonstruct devfs_dirent; 62100978Srwatsonstruct ifnet; 63100978Srwatsonstruct ifreq; 64106468Srwatsonstruct image_params; 65122875Srwatsonstruct inpcb; 66184307Srwatsonstruct ip6q; 67100978Srwatsonstruct ipq; 68145855Srwatsonstruct ksem; 69166533Srwatsonstruct label; 70113487Srwatsonstruct m_tag; 71163606Srwatsonstruct mac; 72100978Srwatsonstruct mbuf; 73100978Srwatsonstruct mount; 74137815Srwatsonstruct msg; 75137815Srwatsonstruct msqid_kernel; 76100978Srwatsonstruct proc; 77137815Srwatsonstruct semid_kernel; 78175164Sjhbstruct shmfd; 79137815Srwatsonstruct shmid_kernel; 80100978Srwatsonstruct sockaddr; 81100978Srwatsonstruct socket; 82126121Spjdstruct sysctl_oid; 83126121Spjdstruct sysctl_req; 84125293Srwatsonstruct pipepair; 85104338Srwatsonstruct thread; 86100978Srwatsonstruct timespec; 87100978Srwatsonstruct ucred; 88100978Srwatsonstruct vattr; 89100978Srwatsonstruct vnode; 90163606Srwatsonstruct vop_setlabel_args; 91100978Srwatson 92100978Srwatson#include <sys/acl.h> /* XXX acl_type_t */ 93184413Strasz#include <sys/types.h> /* accmode_t */ 94100978Srwatson 95100978Srwatson/* 96173042Srwatson * Entry points to the TrustedBSD MAC Framework from the remainder of the 97173042Srwatson * kernel: entry points are named based on a principle object type and an 98173042Srwatson * action relating to it. They are sorted alphabetically first by object 99173042Srwatson * type and then action. In some situations, the principle object type is 100173042Srwatson * obvious, and in other cases, less so as multiple objects may be inolved 101173042Srwatson * in the operation. 102100978Srwatson */ 103172990Srwatsonint mac_bpfdesc_check_receive(struct bpf_d *d, struct ifnet *ifp); 104172990Srwatsonvoid mac_bpfdesc_create(struct ucred *cred, struct bpf_d *d); 105172990Srwatsonvoid mac_bpfdesc_create_mbuf(struct bpf_d *d, struct mbuf *m); 106172990Srwatsonvoid mac_bpfdesc_destroy(struct bpf_d *); 107172930Srwatsonvoid mac_bpfdesc_init(struct bpf_d *); 108172990Srwatson 109184407Srwatsonvoid mac_cred_associate_nfsd(struct ucred *cred); 110189529Srwatsonint mac_cred_check_setaudit(struct ucred *cred, struct auditinfo *ai); 111189529Srwatsonint mac_cred_check_setaudit_addr(struct ucred *cred, 112189529Srwatson struct auditinfo_addr *aia); 113189529Srwatsonint mac_cred_check_setauid(struct ucred *cred, uid_t auid); 114189529Srwatsonint mac_cred_check_setegid(struct ucred *cred, gid_t egid); 115189529Srwatsonint mac_cred_check_seteuid(struct ucred *cred, uid_t euid); 116189529Srwatsonint mac_cred_check_setgid(struct ucred *cred, gid_t gid); 117189529Srwatsonint mac_cred_check_setgroups(struct ucred *cred, int ngroups, 118189529Srwatson gid_t *gidset); 119189529Srwatsonint mac_cred_check_setregid(struct ucred *cred, gid_t rgid, gid_t egid); 120189529Srwatsonint mac_cred_check_setresgid(struct ucred *cred, gid_t rgid, gid_t egid, 121189529Srwatson gid_t sgid); 122189529Srwatsonint mac_cred_check_setresuid(struct ucred *cred, uid_t ruid, uid_t euid, 123189529Srwatson uid_t suid); 124189529Srwatsonint mac_cred_check_setreuid(struct ucred *cred, uid_t ruid, uid_t euid); 125189529Srwatsonint mac_cred_check_setuid(struct ucred *cred, uid_t uid); 126172990Srwatsonint mac_cred_check_visible(struct ucred *cr1, struct ucred *cr2); 127172990Srwatsonvoid mac_cred_copy(struct ucred *cr1, struct ucred *cr2); 128184407Srwatsonvoid mac_cred_create_init(struct ucred *cred); 129184407Srwatsonvoid mac_cred_create_swapper(struct ucred *cred); 130172990Srwatsonvoid mac_cred_destroy(struct ucred *); 131172930Srwatsonvoid mac_cred_init(struct ucred *); 132100978Srwatson 133172930Srwatsonvoid mac_devfs_create_device(struct ucred *cred, struct mount *mp, 134147982Srwatson struct cdev *dev, struct devfs_dirent *de); 135172930Srwatsonvoid mac_devfs_create_directory(struct mount *mp, char *dirname, 136107698Srwatson int dirnamelen, struct devfs_dirent *de); 137172930Srwatsonvoid mac_devfs_create_symlink(struct ucred *cred, struct mount *mp, 138107698Srwatson struct devfs_dirent *dd, struct devfs_dirent *de); 139172990Srwatsonvoid mac_devfs_destroy(struct devfs_dirent *); 140172990Srwatsonvoid mac_devfs_init(struct devfs_dirent *); 141172930Srwatsonvoid mac_devfs_update(struct mount *mp, struct devfs_dirent *de, 142107698Srwatson struct vnode *vp); 143172990Srwatsonvoid mac_devfs_vnode_associate(struct mount *mp, struct devfs_dirent *de, 144172990Srwatson struct vnode *vp); 145100978Srwatson 146172990Srwatsonint mac_ifnet_check_transmit(struct ifnet *ifp, struct mbuf *m); 147172990Srwatsonvoid mac_ifnet_create(struct ifnet *ifp); 148172990Srwatsonvoid mac_ifnet_create_mbuf(struct ifnet *ifp, struct mbuf *m); 149172990Srwatsonvoid mac_ifnet_destroy(struct ifnet *); 150172990Srwatsonvoid mac_ifnet_init(struct ifnet *); 151172990Srwatsonint mac_ifnet_ioctl_get(struct ucred *cred, struct ifreq *ifr, 152172990Srwatson struct ifnet *ifp); 153172990Srwatsonint mac_ifnet_ioctl_set(struct ucred *cred, struct ifreq *ifr, 154172990Srwatson struct ifnet *ifp); 155100978Srwatson 156172990Srwatsonint mac_inpcb_check_deliver(struct inpcb *inp, struct mbuf *m); 157183973Sbzint mac_inpcb_check_visible(struct ucred *cred, struct inpcb *inp); 158172990Srwatsonvoid mac_inpcb_create(struct socket *so, struct inpcb *inp); 159172990Srwatsonvoid mac_inpcb_create_mbuf(struct inpcb *inp, struct mbuf *m); 160172990Srwatsonvoid mac_inpcb_destroy(struct inpcb *); 161172990Srwatsonint mac_inpcb_init(struct inpcb *, int); 162172990Srwatsonvoid mac_inpcb_sosetlabel(struct socket *so, struct inpcb *inp); 163137815Srwatson 164184307Srwatsonvoid mac_ip6q_create(struct mbuf *m, struct ip6q *q6); 165184307Srwatsonvoid mac_ip6q_destroy(struct ip6q *q6); 166184307Srwatsonint mac_ip6q_init(struct ip6q *q6, int); 167184307Srwatsonint mac_ip6q_match(struct mbuf *m, struct ip6q *q6); 168184307Srwatsonvoid mac_ip6q_reassemble(struct ip6q *q6, struct mbuf *m); 169184307Srwatsonvoid mac_ip6q_update(struct mbuf *m, struct ip6q *q6); 170184307Srwatson 171179781Srwatsonvoid mac_ipq_create(struct mbuf *m, struct ipq *q); 172179781Srwatsonvoid mac_ipq_destroy(struct ipq *q); 173179781Srwatsonint mac_ipq_init(struct ipq *q, int); 174179781Srwatsonint mac_ipq_match(struct mbuf *m, struct ipq *q); 175179781Srwatsonvoid mac_ipq_reassemble(struct ipq *q, struct mbuf *m); 176179781Srwatsonvoid mac_ipq_update(struct mbuf *m, struct ipq *q); 177165414Srwatson 178172930Srwatsonint mac_kenv_check_dump(struct ucred *cred); 179172930Srwatsonint mac_kenv_check_get(struct ucred *cred, char *name); 180172930Srwatsonint mac_kenv_check_set(struct ucred *cred, char *name, char *value); 181172930Srwatsonint mac_kenv_check_unset(struct ucred *cred, char *name); 182172990Srwatson 183172930Srwatsonint mac_kld_check_load(struct ucred *cred, struct vnode *vp); 184172930Srwatsonint mac_kld_check_stat(struct ucred *cred); 185172990Srwatson 186172990Srwatsonvoid mac_mbuf_copy(struct mbuf *, struct mbuf *); 187172990Srwatsonint mac_mbuf_init(struct mbuf *, int); 188172990Srwatson 189172990Srwatsonvoid mac_mbuf_tag_copy(struct m_tag *, struct m_tag *); 190172990Srwatsonvoid mac_mbuf_tag_destroy(struct m_tag *); 191172990Srwatsonint mac_mbuf_tag_init(struct m_tag *, int); 192172990Srwatson 193172930Srwatsonint mac_mount_check_stat(struct ucred *cred, struct mount *mp); 194172990Srwatsonvoid mac_mount_create(struct ucred *cred, struct mount *mp); 195172990Srwatsonvoid mac_mount_destroy(struct mount *); 196172990Srwatsonvoid mac_mount_init(struct mount *); 197172990Srwatson 198173095Srwatsonvoid mac_netinet_arp_send(struct ifnet *ifp, struct mbuf *m); 199173102Srwatsonvoid mac_netinet_firewall_reply(struct mbuf *mrecv, struct mbuf *msend); 200173018Srwatsonvoid mac_netinet_firewall_send(struct mbuf *m); 201172990Srwatsonvoid mac_netinet_fragment(struct mbuf *m, struct mbuf *frag); 202173102Srwatsonvoid mac_netinet_icmp_reply(struct mbuf *mrecv, struct mbuf *msend); 203173102Srwatsonvoid mac_netinet_icmp_replyinplace(struct mbuf *m); 204173095Srwatsonvoid mac_netinet_igmp_send(struct ifnet *ifp, struct mbuf *m); 205172990Srwatsonvoid mac_netinet_tcp_reply(struct mbuf *m); 206172990Srwatson 207173095Srwatsonvoid mac_netinet6_nd6_send(struct ifnet *ifp, struct mbuf *m); 208173095Srwatson 209172930Srwatsonint mac_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp, 210100978Srwatson unsigned long cmd, void *data); 211172930Srwatsonint mac_pipe_check_poll(struct ucred *cred, struct pipepair *pp); 212172930Srwatsonint mac_pipe_check_read(struct ucred *cred, struct pipepair *pp); 213172930Srwatsonint mac_pipe_check_stat(struct ucred *cred, struct pipepair *pp); 214172930Srwatsonint mac_pipe_check_write(struct ucred *cred, struct pipepair *pp); 215172990Srwatsonvoid mac_pipe_create(struct ucred *cred, struct pipepair *pp); 216172990Srwatsonvoid mac_pipe_destroy(struct pipepair *); 217172990Srwatsonvoid mac_pipe_init(struct pipepair *); 218172990Srwatsonint mac_pipe_label_set(struct ucred *cred, struct pipepair *pp, 219172990Srwatson struct label *label); 220172990Srwatson 221180059Sjhbint mac_posixsem_check_getvalue(struct ucred *active_cred, 222180059Sjhb struct ucred *file_cred, struct ksem *ks); 223172930Srwatsonint mac_posixsem_check_open(struct ucred *cred, struct ksem *ks); 224180059Sjhbint mac_posixsem_check_post(struct ucred *active_cred, 225180059Sjhb struct ucred *file_cred, struct ksem *ks); 226224914Skibint mac_posixsem_check_setmode(struct ucred *cred, struct ksem *ks, 227224914Skib mode_t mode); 228224914Skibint mac_posixsem_check_setowner(struct ucred *cred, struct ksem *ks, 229224914Skib uid_t uid, gid_t gid); 230180059Sjhbint mac_posixsem_check_stat(struct ucred *active_cred, 231180059Sjhb struct ucred *file_cred, struct ksem *ks); 232172930Srwatsonint mac_posixsem_check_unlink(struct ucred *cred, struct ksem *ks); 233180059Sjhbint mac_posixsem_check_wait(struct ucred *active_cred, 234180059Sjhb struct ucred *file_cred, struct ksem *ks); 235172990Srwatsonvoid mac_posixsem_create(struct ucred *cred, struct ksem *ks); 236172990Srwatsonvoid mac_posixsem_destroy(struct ksem *); 237172990Srwatsonvoid mac_posixsem_init(struct ksem *); 238172990Srwatson 239225344Srwatsonint mac_posixshm_check_create(struct ucred *cred, const char *path); 240175164Sjhbint mac_posixshm_check_mmap(struct ucred *cred, struct shmfd *shmfd, 241175164Sjhb int prot, int flags); 242225344Srwatsonint mac_posixshm_check_open(struct ucred *cred, struct shmfd *shmfd, 243225344Srwatson accmode_t accmode); 244254603Skibint mac_posixshm_check_read(struct ucred *active_cred, 245254603Skib struct ucred *file_cred, struct shmfd *shmfd); 246224914Skibint mac_posixshm_check_setmode(struct ucred *cred, struct shmfd *shmfd, 247224914Skib mode_t mode); 248224914Skibint mac_posixshm_check_setowner(struct ucred *cred, struct shmfd *shmfd, 249224914Skib uid_t uid, gid_t gid); 250175164Sjhbint mac_posixshm_check_stat(struct ucred *active_cred, 251175164Sjhb struct ucred *file_cred, struct shmfd *shmfd); 252175164Sjhbint mac_posixshm_check_truncate(struct ucred *active_cred, 253175164Sjhb struct ucred *file_cred, struct shmfd *shmfd); 254175164Sjhbint mac_posixshm_check_unlink(struct ucred *cred, struct shmfd *shmfd); 255254603Skibint mac_posixshm_check_write(struct ucred *active_cred, 256254603Skib struct ucred *file_cred, struct shmfd *shmfd); 257175164Sjhbvoid mac_posixshm_create(struct ucred *cred, struct shmfd *shmfd); 258175164Sjhbvoid mac_posixshm_destroy(struct shmfd *); 259175164Sjhbvoid mac_posixshm_init(struct shmfd *); 260175164Sjhb 261172990Srwatsonint mac_priv_check(struct ucred *cred, int priv); 262172990Srwatsonint mac_priv_grant(struct ucred *cred, int priv); 263172990Srwatson 264172930Srwatsonint mac_proc_check_debug(struct ucred *cred, struct proc *p); 265172930Srwatsonint mac_proc_check_sched(struct ucred *cred, struct proc *p); 266172930Srwatsonint mac_proc_check_signal(struct ucred *cred, struct proc *p, 267100978Srwatson int signum); 268172930Srwatsonint mac_proc_check_wait(struct ucred *cred, struct proc *p); 269172990Srwatsonvoid mac_proc_destroy(struct proc *); 270182063Srwatsonvoid mac_proc_init(struct proc *); 271184412Srwatsonvoid mac_proc_vm_revoke(struct thread *td); 272172990Srwatsonint mac_execve_enter(struct image_params *imgp, struct mac *mac_p); 273172990Srwatsonvoid mac_execve_exit(struct image_params *imgp); 274182063Srwatsonvoid mac_execve_interpreter_enter(struct vnode *interpvp, 275182063Srwatson struct label **interplabel); 276182063Srwatsonvoid mac_execve_interpreter_exit(struct label *interpvplabel); 277172990Srwatson 278172930Srwatsonint mac_socket_check_accept(struct ucred *cred, struct socket *so); 279172930Srwatsonint mac_socket_check_bind(struct ucred *cred, struct socket *so, 280168955Srwatson struct sockaddr *sa); 281172930Srwatsonint mac_socket_check_connect(struct ucred *cred, struct socket *so, 282168955Srwatson struct sockaddr *sa); 283172930Srwatsonint mac_socket_check_create(struct ucred *cred, int domain, int type, 284168955Srwatson int proto); 285172930Srwatsonint mac_socket_check_deliver(struct socket *so, struct mbuf *m); 286172930Srwatsonint mac_socket_check_listen(struct ucred *cred, struct socket *so); 287172930Srwatsonint mac_socket_check_poll(struct ucred *cred, struct socket *so); 288172930Srwatsonint mac_socket_check_receive(struct ucred *cred, struct socket *so); 289172930Srwatsonint mac_socket_check_send(struct ucred *cred, struct socket *so); 290172930Srwatsonint mac_socket_check_stat(struct ucred *cred, struct socket *so); 291172930Srwatsonint mac_socket_check_visible(struct ucred *cred, struct socket *so); 292172990Srwatsonvoid mac_socket_create_mbuf(struct socket *so, struct mbuf *m); 293172990Srwatsonvoid mac_socket_create(struct ucred *cred, struct socket *so); 294172990Srwatsonvoid mac_socket_destroy(struct socket *); 295172990Srwatsonint mac_socket_init(struct socket *, int); 296172990Srwatsonvoid mac_socket_newconn(struct socket *oldso, struct socket *newso); 297172990Srwatsonint mac_getsockopt_label(struct ucred *cred, struct socket *so, 298172990Srwatson struct mac *extmac); 299172990Srwatsonint mac_getsockopt_peerlabel(struct ucred *cred, struct socket *so, 300172990Srwatson struct mac *extmac); 301172990Srwatsonint mac_setsockopt_label(struct ucred *cred, struct socket *so, 302172990Srwatson struct mac *extmac); 303172990Srwatson 304172990Srwatsonvoid mac_socketpeer_set_from_mbuf(struct mbuf *m, struct socket *so); 305172990Srwatsonvoid mac_socketpeer_set_from_socket(struct socket *oldso, 306172990Srwatson struct socket *newso); 307172990Srwatson 308172990Srwatsonvoid mac_syncache_create(struct label *l, struct inpcb *inp); 309172990Srwatsonvoid mac_syncache_create_mbuf(struct label *l, struct mbuf *m); 310172990Srwatsonvoid mac_syncache_destroy(struct label **l); 311172990Srwatsonint mac_syncache_init(struct label **l); 312172990Srwatson 313172930Srwatsonint mac_system_check_acct(struct ucred *cred, struct vnode *vp); 314172930Srwatsonint mac_system_check_audit(struct ucred *cred, void *record, int length); 315172930Srwatsonint mac_system_check_auditctl(struct ucred *cred, struct vnode *vp); 316172930Srwatsonint mac_system_check_auditon(struct ucred *cred, int cmd); 317172930Srwatsonint mac_system_check_reboot(struct ucred *cred, int howto); 318172930Srwatsonint mac_system_check_swapon(struct ucred *cred, struct vnode *vp); 319172930Srwatsonint mac_system_check_swapoff(struct ucred *cred, struct vnode *vp); 320172930Srwatsonint mac_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 321126121Spjd void *arg1, int arg2, struct sysctl_req *req); 322172990Srwatson 323172990Srwatsonvoid mac_sysvmsg_cleanup(struct msg *msgptr); 324172990Srwatsonvoid mac_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr, 325172990Srwatson struct msg *msgptr); 326172990Srwatsonvoid mac_sysvmsg_destroy(struct msg *); 327172990Srwatsonvoid mac_sysvmsg_init(struct msg *); 328172990Srwatson 329172990Srwatsonint mac_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr, 330172990Srwatson struct msqid_kernel *msqkptr); 331172990Srwatsonint mac_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr); 332172990Srwatsonint mac_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr); 333172990Srwatsonint mac_sysvmsq_check_msqctl(struct ucred *cred, 334172990Srwatson struct msqid_kernel *msqkptr, int cmd); 335172990Srwatsonint mac_sysvmsq_check_msqget(struct ucred *cred, 336172990Srwatson struct msqid_kernel *msqkptr); 337172990Srwatsonint mac_sysvmsq_check_msqrcv(struct ucred *cred, 338172990Srwatson struct msqid_kernel *msqkptr); 339172990Srwatsonint mac_sysvmsq_check_msqsnd(struct ucred *cred, 340172990Srwatson struct msqid_kernel *msqkptr); 341172990Srwatsonvoid mac_sysvmsq_cleanup(struct msqid_kernel *msqkptr); 342172990Srwatsonvoid mac_sysvmsq_create(struct ucred *cred, struct msqid_kernel *msqkptr); 343172990Srwatsonvoid mac_sysvmsq_destroy(struct msqid_kernel *); 344172990Srwatsonvoid mac_sysvmsq_init(struct msqid_kernel *); 345172990Srwatson 346172990Srwatsonint mac_sysvsem_check_semctl(struct ucred *cred, 347172990Srwatson struct semid_kernel *semakptr, int cmd); 348172990Srwatsonint mac_sysvsem_check_semget(struct ucred *cred, 349172990Srwatson struct semid_kernel *semakptr); 350172990Srwatsonint mac_sysvsem_check_semop(struct ucred *cred, 351172990Srwatson struct semid_kernel *semakptr, size_t accesstype); 352172990Srwatsonvoid mac_sysvsem_cleanup(struct semid_kernel *semakptr); 353172990Srwatsonvoid mac_sysvsem_create(struct ucred *cred, 354172990Srwatson struct semid_kernel *semakptr); 355172990Srwatsonvoid mac_sysvsem_destroy(struct semid_kernel *); 356172990Srwatsonvoid mac_sysvsem_init(struct semid_kernel *); 357172990Srwatson 358172990Srwatsonint mac_sysvshm_check_shmat(struct ucred *cred, 359172990Srwatson struct shmid_kernel *shmsegptr, int shmflg); 360172990Srwatsonint mac_sysvshm_check_shmctl(struct ucred *cred, 361172990Srwatson struct shmid_kernel *shmsegptr, int cmd); 362172990Srwatsonint mac_sysvshm_check_shmdt(struct ucred *cred, 363172990Srwatson struct shmid_kernel *shmsegptr); 364172990Srwatsonint mac_sysvshm_check_shmget(struct ucred *cred, 365172990Srwatson struct shmid_kernel *shmsegptr, int shmflg); 366172990Srwatsonvoid mac_sysvshm_cleanup(struct shmid_kernel *shmsegptr); 367172990Srwatsonvoid mac_sysvshm_create(struct ucred *cred, 368172990Srwatson struct shmid_kernel *shmsegptr); 369172990Srwatsonvoid mac_sysvshm_destroy(struct shmid_kernel *); 370172990Srwatsonvoid mac_sysvshm_init(struct shmid_kernel *); 371172990Srwatson 372172990Srwatsonvoid mac_thread_userret(struct thread *td); 373172990Srwatson 374172990Srwatsonint mac_vnode_associate_extattr(struct mount *mp, struct vnode *vp); 375172990Srwatsonvoid mac_vnode_associate_singlelabel(struct mount *mp, struct vnode *vp); 376172930Srwatsonint mac_vnode_check_access(struct ucred *cred, struct vnode *vp, 377184413Strasz accmode_t accmode); 378172930Srwatsonint mac_vnode_check_chdir(struct ucred *cred, struct vnode *dvp); 379172930Srwatsonint mac_vnode_check_chroot(struct ucred *cred, struct vnode *dvp); 380172930Srwatsonint mac_vnode_check_create(struct ucred *cred, struct vnode *dvp, 381100978Srwatson struct componentname *cnp, struct vattr *vap); 382172930Srwatsonint mac_vnode_check_deleteacl(struct ucred *cred, struct vnode *vp, 383100978Srwatson acl_type_t type); 384172930Srwatsonint mac_vnode_check_deleteextattr(struct ucred *cred, struct vnode *vp, 385119198Srwatson int attrnamespace, const char *name); 386172930Srwatsonint mac_vnode_check_exec(struct ucred *cred, struct vnode *vp, 387106468Srwatson struct image_params *imgp); 388172930Srwatsonint mac_vnode_check_getacl(struct ucred *cred, struct vnode *vp, 389100978Srwatson acl_type_t type); 390172930Srwatsonint mac_vnode_check_getextattr(struct ucred *cred, struct vnode *vp, 391189533Srwatson int attrnamespace, const char *name); 392172930Srwatsonint mac_vnode_check_link(struct ucred *cred, struct vnode *dvp, 393104529Srwatson struct vnode *vp, struct componentname *cnp); 394172930Srwatsonint mac_vnode_check_listextattr(struct ucred *cred, struct vnode *vp, 395119198Srwatson int attrnamespace); 396172930Srwatsonint mac_vnode_check_lookup(struct ucred *cred, struct vnode *dvp, 397100978Srwatson struct componentname *cnp); 398172930Srwatsonint mac_vnode_check_mmap(struct ucred *cred, struct vnode *vp, int prot, 399168955Srwatson int flags); 400172930Srwatsonint mac_vnode_check_mprotect(struct ucred *cred, struct vnode *vp, 401104546Srwatson int prot); 402172930Srwatsonint mac_vnode_check_open(struct ucred *cred, struct vnode *vp, 403184413Strasz accmode_t accmode); 404172930Srwatsonint mac_vnode_check_poll(struct ucred *active_cred, 405102129Srwatson struct ucred *file_cred, struct vnode *vp); 406172930Srwatsonint mac_vnode_check_read(struct ucred *active_cred, 407102129Srwatson struct ucred *file_cred, struct vnode *vp); 408172930Srwatsonint mac_vnode_check_readdir(struct ucred *cred, struct vnode *vp); 409172930Srwatsonint mac_vnode_check_readlink(struct ucred *cred, struct vnode *vp); 410172930Srwatsonint mac_vnode_check_rename_from(struct ucred *cred, struct vnode *dvp, 411100978Srwatson struct vnode *vp, struct componentname *cnp); 412172930Srwatsonint mac_vnode_check_rename_to(struct ucred *cred, struct vnode *dvp, 413100978Srwatson struct vnode *vp, int samedir, struct componentname *cnp); 414172930Srwatsonint mac_vnode_check_revoke(struct ucred *cred, struct vnode *vp); 415172930Srwatsonint mac_vnode_check_setacl(struct ucred *cred, struct vnode *vp, 416100978Srwatson acl_type_t type, struct acl *acl); 417172930Srwatsonint mac_vnode_check_setextattr(struct ucred *cred, struct vnode *vp, 418189533Srwatson int attrnamespace, const char *name); 419172930Srwatsonint mac_vnode_check_setflags(struct ucred *cred, struct vnode *vp, 420100978Srwatson u_long flags); 421172930Srwatsonint mac_vnode_check_setmode(struct ucred *cred, struct vnode *vp, 422100978Srwatson mode_t mode); 423172930Srwatsonint mac_vnode_check_setowner(struct ucred *cred, struct vnode *vp, 424100978Srwatson uid_t uid, gid_t gid); 425172930Srwatsonint mac_vnode_check_setutimes(struct ucred *cred, struct vnode *vp, 426100978Srwatson struct timespec atime, struct timespec mtime); 427172930Srwatsonint mac_vnode_check_stat(struct ucred *active_cred, 428102129Srwatson struct ucred *file_cred, struct vnode *vp); 429172930Srwatsonint mac_vnode_check_unlink(struct ucred *cred, struct vnode *dvp, 430172107Srwatson struct vnode *vp, struct componentname *cnp); 431172930Srwatsonint mac_vnode_check_write(struct ucred *active_cred, 432102129Srwatson struct ucred *file_cred, struct vnode *vp); 433172990Srwatsonvoid mac_vnode_copy_label(struct label *, struct label *); 434172990Srwatsonvoid mac_vnode_init(struct vnode *); 435172990Srwatsonint mac_vnode_create_extattr(struct ucred *cred, struct mount *mp, 436172990Srwatson struct vnode *dvp, struct vnode *vp, struct componentname *cnp); 437172990Srwatsonvoid mac_vnode_destroy(struct vnode *); 438172990Srwatsonvoid mac_vnode_execve_transition(struct ucred *oldcred, 439172990Srwatson struct ucred *newcred, struct vnode *vp, 440172990Srwatson struct label *interpvplabel, struct image_params *imgp); 441172990Srwatsonint mac_vnode_execve_will_transition(struct ucred *cred, 442172990Srwatson struct vnode *vp, struct label *interpvplabel, 443172990Srwatson struct image_params *imgp); 444172990Srwatsonvoid mac_vnode_relabel(struct ucred *cred, struct vnode *vp, 445172990Srwatson struct label *newlabel); 446172990Srwatson 447100978Srwatson/* 448165414Srwatson * Calls to help various file systems implement labeling functionality using 449165414Srwatson * their existing EA implementation. 450100978Srwatson */ 451100978Srwatsonint vop_stdsetlabel_ea(struct vop_setlabel_args *ap); 452100978Srwatson 453178184Srwatson#endif /* !_SECURITY_MAC_MAC_FRAMEWORK_H_ */ 454