mac_framework.h revision 184413
1100978Srwatson/*- 2184307Srwatson * Copyright (c) 1999-2002, 2007-2008 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 * 17100978Srwatson * Redistribution and use in source and binary forms, with or without 18100978Srwatson * modification, are permitted provided that the following conditions 19100978Srwatson * are met: 20100978Srwatson * 1. Redistributions of source code must retain the above copyright 21100978Srwatson * notice, this list of conditions and the following disclaimer. 22100978Srwatson * 2. Redistributions in binary form must reproduce the above copyright 23100978Srwatson * notice, this list of conditions and the following disclaimer in the 24100978Srwatson * documentation and/or other materials provided with the distribution. 25100978Srwatson * 26100978Srwatson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 27100978Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 28100978Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 29100978Srwatson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 30100978Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 31100978Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 32100978Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 33100978Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 34100978Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 35100978Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 36100978Srwatson * SUCH DAMAGE. 37100978Srwatson * 38100978Srwatson * $FreeBSD: head/sys/security/mac/mac_framework.h 184413 2008-10-28 13:44:11Z trasz $ 39100978Srwatson */ 40145167Srwatson 41100978Srwatson/* 42163606Srwatson * Kernel interface for Mandatory Access Control -- how kernel services 43163606Srwatson * interact with the TrustedBSD MAC Framework. 44102123Srwatson */ 45102123Srwatson 46178184Srwatson#ifndef _SECURITY_MAC_MAC_FRAMEWORK_H_ 47178184Srwatson#define _SECURITY_MAC_MAC_FRAMEWORK_H_ 48105693Srwatson 49105693Srwatson#ifndef _KERNEL 50163606Srwatson#error "no user-serviceable parts inside" 51163606Srwatson#endif 52105693Srwatson 53168933Srwatsonstruct auditinfo; 54171047Srwatsonstruct auditinfo_addr; 55100978Srwatsonstruct bpf_d; 56130585Sphkstruct cdev; 57100978Srwatsonstruct componentname; 58100978Srwatsonstruct devfs_dirent; 59100978Srwatsonstruct ifnet; 60100978Srwatsonstruct ifreq; 61106468Srwatsonstruct image_params; 62122875Srwatsonstruct inpcb; 63184307Srwatsonstruct ip6q; 64100978Srwatsonstruct ipq; 65145855Srwatsonstruct ksem; 66166533Srwatsonstruct label; 67113487Srwatsonstruct m_tag; 68163606Srwatsonstruct mac; 69100978Srwatsonstruct mbuf; 70100978Srwatsonstruct mount; 71137815Srwatsonstruct msg; 72137815Srwatsonstruct msqid_kernel; 73100978Srwatsonstruct proc; 74137815Srwatsonstruct semid_kernel; 75175164Sjhbstruct shmfd; 76137815Srwatsonstruct shmid_kernel; 77100978Srwatsonstruct sockaddr; 78100978Srwatsonstruct socket; 79126121Spjdstruct sysctl_oid; 80126121Spjdstruct sysctl_req; 81125293Srwatsonstruct pipepair; 82104338Srwatsonstruct thread; 83100978Srwatsonstruct timespec; 84100978Srwatsonstruct ucred; 85100978Srwatsonstruct uio; 86100978Srwatsonstruct vattr; 87100978Srwatsonstruct vnode; 88163606Srwatsonstruct vop_setlabel_args; 89100978Srwatson 90100978Srwatson#include <sys/acl.h> /* XXX acl_type_t */ 91184413Strasz#include <sys/types.h> /* accmode_t */ 92100978Srwatson 93100978Srwatson/* 94173042Srwatson * Entry points to the TrustedBSD MAC Framework from the remainder of the 95173042Srwatson * kernel: entry points are named based on a principle object type and an 96173042Srwatson * action relating to it. They are sorted alphabetically first by object 97173042Srwatson * type and then action. In some situations, the principle object type is 98173042Srwatson * obvious, and in other cases, less so as multiple objects may be inolved 99173042Srwatson * in the operation. 100100978Srwatson */ 101172990Srwatsonint mac_bpfdesc_check_receive(struct bpf_d *d, struct ifnet *ifp); 102172990Srwatsonvoid mac_bpfdesc_create(struct ucred *cred, struct bpf_d *d); 103172990Srwatsonvoid mac_bpfdesc_create_mbuf(struct bpf_d *d, struct mbuf *m); 104172990Srwatsonvoid mac_bpfdesc_destroy(struct bpf_d *); 105172930Srwatsonvoid mac_bpfdesc_init(struct bpf_d *); 106172990Srwatson 107184407Srwatsonvoid mac_cred_associate_nfsd(struct ucred *cred); 108172990Srwatsonint mac_cred_check_visible(struct ucred *cr1, struct ucred *cr2); 109172990Srwatsonvoid mac_cred_copy(struct ucred *cr1, struct ucred *cr2); 110184407Srwatsonvoid mac_cred_create_init(struct ucred *cred); 111184407Srwatsonvoid mac_cred_create_swapper(struct ucred *cred); 112172990Srwatsonvoid mac_cred_destroy(struct ucred *); 113172930Srwatsonvoid mac_cred_init(struct ucred *); 114100978Srwatson 115172930Srwatsonvoid mac_devfs_create_device(struct ucred *cred, struct mount *mp, 116147982Srwatson struct cdev *dev, struct devfs_dirent *de); 117172930Srwatsonvoid mac_devfs_create_directory(struct mount *mp, char *dirname, 118107698Srwatson int dirnamelen, struct devfs_dirent *de); 119172930Srwatsonvoid mac_devfs_create_symlink(struct ucred *cred, struct mount *mp, 120107698Srwatson struct devfs_dirent *dd, struct devfs_dirent *de); 121172990Srwatsonvoid mac_devfs_destroy(struct devfs_dirent *); 122172990Srwatsonvoid mac_devfs_init(struct devfs_dirent *); 123172930Srwatsonvoid mac_devfs_update(struct mount *mp, struct devfs_dirent *de, 124107698Srwatson struct vnode *vp); 125172990Srwatsonvoid mac_devfs_vnode_associate(struct mount *mp, struct devfs_dirent *de, 126172990Srwatson struct vnode *vp); 127100978Srwatson 128172990Srwatsonint mac_ifnet_check_transmit(struct ifnet *ifp, struct mbuf *m); 129172990Srwatsonvoid mac_ifnet_create(struct ifnet *ifp); 130172990Srwatsonvoid mac_ifnet_create_mbuf(struct ifnet *ifp, struct mbuf *m); 131172990Srwatsonvoid mac_ifnet_destroy(struct ifnet *); 132172990Srwatsonvoid mac_ifnet_init(struct ifnet *); 133172990Srwatsonint mac_ifnet_ioctl_get(struct ucred *cred, struct ifreq *ifr, 134172990Srwatson struct ifnet *ifp); 135172990Srwatsonint mac_ifnet_ioctl_set(struct ucred *cred, struct ifreq *ifr, 136172990Srwatson struct ifnet *ifp); 137100978Srwatson 138172990Srwatsonint mac_inpcb_check_deliver(struct inpcb *inp, struct mbuf *m); 139183973Sbzint mac_inpcb_check_visible(struct ucred *cred, struct inpcb *inp); 140172990Srwatsonvoid mac_inpcb_create(struct socket *so, struct inpcb *inp); 141172990Srwatsonvoid mac_inpcb_create_mbuf(struct inpcb *inp, struct mbuf *m); 142172990Srwatsonvoid mac_inpcb_destroy(struct inpcb *); 143172990Srwatsonint mac_inpcb_init(struct inpcb *, int); 144172990Srwatsonvoid mac_inpcb_sosetlabel(struct socket *so, struct inpcb *inp); 145137815Srwatson 146184307Srwatsonvoid mac_ip6q_create(struct mbuf *m, struct ip6q *q6); 147184307Srwatsonvoid mac_ip6q_destroy(struct ip6q *q6); 148184307Srwatsonint mac_ip6q_init(struct ip6q *q6, int); 149184307Srwatsonint mac_ip6q_match(struct mbuf *m, struct ip6q *q6); 150184307Srwatsonvoid mac_ip6q_reassemble(struct ip6q *q6, struct mbuf *m); 151184307Srwatsonvoid mac_ip6q_update(struct mbuf *m, struct ip6q *q6); 152184307Srwatson 153179781Srwatsonvoid mac_ipq_create(struct mbuf *m, struct ipq *q); 154179781Srwatsonvoid mac_ipq_destroy(struct ipq *q); 155179781Srwatsonint mac_ipq_init(struct ipq *q, int); 156179781Srwatsonint mac_ipq_match(struct mbuf *m, struct ipq *q); 157179781Srwatsonvoid mac_ipq_reassemble(struct ipq *q, struct mbuf *m); 158179781Srwatsonvoid mac_ipq_update(struct mbuf *m, struct ipq *q); 159165414Srwatson 160172930Srwatsonint mac_kenv_check_dump(struct ucred *cred); 161172930Srwatsonint mac_kenv_check_get(struct ucred *cred, char *name); 162172930Srwatsonint mac_kenv_check_set(struct ucred *cred, char *name, char *value); 163172930Srwatsonint mac_kenv_check_unset(struct ucred *cred, char *name); 164172990Srwatson 165172930Srwatsonint mac_kld_check_load(struct ucred *cred, struct vnode *vp); 166172930Srwatsonint mac_kld_check_stat(struct ucred *cred); 167172990Srwatson 168172990Srwatsonvoid mac_mbuf_copy(struct mbuf *, struct mbuf *); 169172990Srwatsonint mac_mbuf_init(struct mbuf *, int); 170172990Srwatson 171172990Srwatsonvoid mac_mbuf_tag_copy(struct m_tag *, struct m_tag *); 172172990Srwatsonvoid mac_mbuf_tag_destroy(struct m_tag *); 173172990Srwatsonint mac_mbuf_tag_init(struct m_tag *, int); 174172990Srwatson 175172930Srwatsonint mac_mount_check_stat(struct ucred *cred, struct mount *mp); 176172990Srwatsonvoid mac_mount_create(struct ucred *cred, struct mount *mp); 177172990Srwatsonvoid mac_mount_destroy(struct mount *); 178172990Srwatsonvoid mac_mount_init(struct mount *); 179172990Srwatson 180173095Srwatsonvoid mac_netatalk_aarp_send(struct ifnet *ifp, struct mbuf *m); 181173095Srwatson 182173095Srwatsonvoid mac_netinet_arp_send(struct ifnet *ifp, struct mbuf *m); 183173102Srwatsonvoid mac_netinet_firewall_reply(struct mbuf *mrecv, struct mbuf *msend); 184173018Srwatsonvoid mac_netinet_firewall_send(struct mbuf *m); 185172990Srwatsonvoid mac_netinet_fragment(struct mbuf *m, struct mbuf *frag); 186173102Srwatsonvoid mac_netinet_icmp_reply(struct mbuf *mrecv, struct mbuf *msend); 187173102Srwatsonvoid mac_netinet_icmp_replyinplace(struct mbuf *m); 188173095Srwatsonvoid mac_netinet_igmp_send(struct ifnet *ifp, struct mbuf *m); 189172990Srwatsonvoid mac_netinet_tcp_reply(struct mbuf *m); 190172990Srwatson 191173095Srwatsonvoid mac_netinet6_nd6_send(struct ifnet *ifp, struct mbuf *m); 192173095Srwatson 193172930Srwatsonint mac_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp, 194100978Srwatson unsigned long cmd, void *data); 195172930Srwatsonint mac_pipe_check_poll(struct ucred *cred, struct pipepair *pp); 196172930Srwatsonint mac_pipe_check_read(struct ucred *cred, struct pipepair *pp); 197172930Srwatsonint mac_pipe_check_stat(struct ucred *cred, struct pipepair *pp); 198172930Srwatsonint mac_pipe_check_write(struct ucred *cred, struct pipepair *pp); 199172990Srwatsonvoid mac_pipe_create(struct ucred *cred, struct pipepair *pp); 200172990Srwatsonvoid mac_pipe_destroy(struct pipepair *); 201172990Srwatsonvoid mac_pipe_init(struct pipepair *); 202172990Srwatsonint mac_pipe_label_set(struct ucred *cred, struct pipepair *pp, 203172990Srwatson struct label *label); 204172990Srwatson 205180059Sjhbint mac_posixsem_check_getvalue(struct ucred *active_cred, 206180059Sjhb struct ucred *file_cred, struct ksem *ks); 207172930Srwatsonint mac_posixsem_check_open(struct ucred *cred, struct ksem *ks); 208180059Sjhbint mac_posixsem_check_post(struct ucred *active_cred, 209180059Sjhb struct ucred *file_cred, struct ksem *ks); 210180059Sjhbint mac_posixsem_check_stat(struct ucred *active_cred, 211180059Sjhb struct ucred *file_cred, struct ksem *ks); 212172930Srwatsonint mac_posixsem_check_unlink(struct ucred *cred, struct ksem *ks); 213180059Sjhbint mac_posixsem_check_wait(struct ucred *active_cred, 214180059Sjhb struct ucred *file_cred, struct ksem *ks); 215172990Srwatsonvoid mac_posixsem_create(struct ucred *cred, struct ksem *ks); 216172990Srwatsonvoid mac_posixsem_destroy(struct ksem *); 217172990Srwatsonvoid mac_posixsem_init(struct ksem *); 218172990Srwatson 219175164Sjhbint mac_posixshm_check_mmap(struct ucred *cred, struct shmfd *shmfd, 220175164Sjhb int prot, int flags); 221175164Sjhbint mac_posixshm_check_open(struct ucred *cred, struct shmfd *shmfd); 222175164Sjhbint mac_posixshm_check_stat(struct ucred *active_cred, 223175164Sjhb struct ucred *file_cred, struct shmfd *shmfd); 224175164Sjhbint mac_posixshm_check_truncate(struct ucred *active_cred, 225175164Sjhb struct ucred *file_cred, struct shmfd *shmfd); 226175164Sjhbint mac_posixshm_check_unlink(struct ucred *cred, struct shmfd *shmfd); 227175164Sjhbvoid mac_posixshm_create(struct ucred *cred, struct shmfd *shmfd); 228175164Sjhbvoid mac_posixshm_destroy(struct shmfd *); 229175164Sjhbvoid mac_posixshm_init(struct shmfd *); 230175164Sjhb 231172990Srwatsonint mac_priv_check(struct ucred *cred, int priv); 232172990Srwatsonint mac_priv_grant(struct ucred *cred, int priv); 233172990Srwatson 234172930Srwatsonint mac_proc_check_debug(struct ucred *cred, struct proc *p); 235172930Srwatsonint mac_proc_check_sched(struct ucred *cred, struct proc *p); 236172930Srwatsonint mac_proc_check_setaudit(struct ucred *cred, struct auditinfo *ai); 237172930Srwatsonint mac_proc_check_setaudit_addr(struct ucred *cred, 238171047Srwatson struct auditinfo_addr *aia); 239172930Srwatsonint mac_proc_check_setauid(struct ucred *cred, uid_t auid); 240172990Srwatsonint mac_proc_check_setegid(struct proc *p, struct ucred *cred, 241172990Srwatson gid_t egid); 242172930Srwatsonint mac_proc_check_seteuid(struct proc *p, struct ucred *cred, 243145147Srwatson uid_t euid); 244172930Srwatsonint mac_proc_check_setgid(struct proc *p, struct ucred *cred, 245145147Srwatson gid_t gid); 246172930Srwatsonint mac_proc_check_setgroups(struct proc *p, struct ucred *cred, 247145147Srwatson int ngroups, gid_t *gidset); 248172930Srwatsonint mac_proc_check_setregid(struct proc *p, struct ucred *cred, 249145147Srwatson gid_t rgid, gid_t egid); 250172990Srwatsonint mac_proc_check_setresgid(struct proc *p, struct ucred *cred, 251172990Srwatson gid_t rgid, gid_t egid, gid_t sgid); 252172930Srwatsonint mac_proc_check_setresuid(struct proc *p, struct ucred *cred, 253145147Srwatson uid_t ruid, uid_t euid, uid_t suid); 254172990Srwatsonint mac_proc_check_setreuid(struct proc *p, struct ucred *cred, 255172990Srwatson uid_t ruid, uid_t euid); 256172990Srwatsonint mac_proc_check_setuid(struct proc *p, struct ucred *cred, 257172990Srwatson uid_t uid); 258172930Srwatsonint mac_proc_check_signal(struct ucred *cred, struct proc *p, 259100978Srwatson int signum); 260172930Srwatsonint mac_proc_check_wait(struct ucred *cred, struct proc *p); 261172990Srwatsonvoid mac_proc_destroy(struct proc *); 262182063Srwatsonvoid mac_proc_init(struct proc *); 263184412Srwatsonvoid mac_proc_vm_revoke(struct thread *td); 264172990Srwatsonint mac_execve_enter(struct image_params *imgp, struct mac *mac_p); 265172990Srwatsonvoid mac_execve_exit(struct image_params *imgp); 266182063Srwatsonvoid mac_execve_interpreter_enter(struct vnode *interpvp, 267182063Srwatson struct label **interplabel); 268182063Srwatsonvoid mac_execve_interpreter_exit(struct label *interpvplabel); 269172990Srwatson 270172930Srwatsonint mac_socket_check_accept(struct ucred *cred, struct socket *so); 271172930Srwatsonint mac_socket_check_bind(struct ucred *cred, struct socket *so, 272168955Srwatson struct sockaddr *sa); 273172930Srwatsonint mac_socket_check_connect(struct ucred *cred, struct socket *so, 274168955Srwatson struct sockaddr *sa); 275172930Srwatsonint mac_socket_check_create(struct ucred *cred, int domain, int type, 276168955Srwatson int proto); 277172930Srwatsonint mac_socket_check_deliver(struct socket *so, struct mbuf *m); 278172930Srwatsonint mac_socket_check_listen(struct ucred *cred, struct socket *so); 279172930Srwatsonint mac_socket_check_poll(struct ucred *cred, struct socket *so); 280172930Srwatsonint mac_socket_check_receive(struct ucred *cred, struct socket *so); 281172930Srwatsonint mac_socket_check_send(struct ucred *cred, struct socket *so); 282172930Srwatsonint mac_socket_check_stat(struct ucred *cred, struct socket *so); 283172930Srwatsonint mac_socket_check_visible(struct ucred *cred, struct socket *so); 284172990Srwatsonvoid mac_socket_create_mbuf(struct socket *so, struct mbuf *m); 285172990Srwatsonvoid mac_socket_create(struct ucred *cred, struct socket *so); 286172990Srwatsonvoid mac_socket_destroy(struct socket *); 287172990Srwatsonint mac_socket_init(struct socket *, int); 288172990Srwatsonvoid mac_socket_newconn(struct socket *oldso, struct socket *newso); 289172990Srwatsonint mac_getsockopt_label(struct ucred *cred, struct socket *so, 290172990Srwatson struct mac *extmac); 291172990Srwatsonint mac_getsockopt_peerlabel(struct ucred *cred, struct socket *so, 292172990Srwatson struct mac *extmac); 293172990Srwatsonint mac_setsockopt_label(struct ucred *cred, struct socket *so, 294172990Srwatson struct mac *extmac); 295172990Srwatson 296172990Srwatsonvoid mac_socketpeer_set_from_mbuf(struct mbuf *m, struct socket *so); 297172990Srwatsonvoid mac_socketpeer_set_from_socket(struct socket *oldso, 298172990Srwatson struct socket *newso); 299172990Srwatson 300172990Srwatsonvoid mac_syncache_create(struct label *l, struct inpcb *inp); 301172990Srwatsonvoid mac_syncache_create_mbuf(struct label *l, struct mbuf *m); 302172990Srwatsonvoid mac_syncache_destroy(struct label **l); 303172990Srwatsonint mac_syncache_init(struct label **l); 304172990Srwatson 305172930Srwatsonint mac_system_check_acct(struct ucred *cred, struct vnode *vp); 306172930Srwatsonint mac_system_check_audit(struct ucred *cred, void *record, int length); 307172930Srwatsonint mac_system_check_auditctl(struct ucred *cred, struct vnode *vp); 308172930Srwatsonint mac_system_check_auditon(struct ucred *cred, int cmd); 309172930Srwatsonint mac_system_check_reboot(struct ucred *cred, int howto); 310172930Srwatsonint mac_system_check_swapon(struct ucred *cred, struct vnode *vp); 311172930Srwatsonint mac_system_check_swapoff(struct ucred *cred, struct vnode *vp); 312172930Srwatsonint mac_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 313126121Spjd void *arg1, int arg2, struct sysctl_req *req); 314172990Srwatson 315172990Srwatsonvoid mac_sysvmsg_cleanup(struct msg *msgptr); 316172990Srwatsonvoid mac_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr, 317172990Srwatson struct msg *msgptr); 318172990Srwatsonvoid mac_sysvmsg_destroy(struct msg *); 319172990Srwatsonvoid mac_sysvmsg_init(struct msg *); 320172990Srwatson 321172990Srwatsonint mac_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr, 322172990Srwatson struct msqid_kernel *msqkptr); 323172990Srwatsonint mac_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr); 324172990Srwatsonint mac_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr); 325172990Srwatsonint mac_sysvmsq_check_msqctl(struct ucred *cred, 326172990Srwatson struct msqid_kernel *msqkptr, int cmd); 327172990Srwatsonint mac_sysvmsq_check_msqget(struct ucred *cred, 328172990Srwatson struct msqid_kernel *msqkptr); 329172990Srwatsonint mac_sysvmsq_check_msqrcv(struct ucred *cred, 330172990Srwatson struct msqid_kernel *msqkptr); 331172990Srwatsonint mac_sysvmsq_check_msqsnd(struct ucred *cred, 332172990Srwatson struct msqid_kernel *msqkptr); 333172990Srwatsonvoid mac_sysvmsq_cleanup(struct msqid_kernel *msqkptr); 334172990Srwatsonvoid mac_sysvmsq_create(struct ucred *cred, struct msqid_kernel *msqkptr); 335172990Srwatsonvoid mac_sysvmsq_destroy(struct msqid_kernel *); 336172990Srwatsonvoid mac_sysvmsq_init(struct msqid_kernel *); 337172990Srwatson 338172990Srwatsonint mac_sysvsem_check_semctl(struct ucred *cred, 339172990Srwatson struct semid_kernel *semakptr, int cmd); 340172990Srwatsonint mac_sysvsem_check_semget(struct ucred *cred, 341172990Srwatson struct semid_kernel *semakptr); 342172990Srwatsonint mac_sysvsem_check_semop(struct ucred *cred, 343172990Srwatson struct semid_kernel *semakptr, size_t accesstype); 344172990Srwatsonvoid mac_sysvsem_cleanup(struct semid_kernel *semakptr); 345172990Srwatsonvoid mac_sysvsem_create(struct ucred *cred, 346172990Srwatson struct semid_kernel *semakptr); 347172990Srwatsonvoid mac_sysvsem_destroy(struct semid_kernel *); 348172990Srwatsonvoid mac_sysvsem_init(struct semid_kernel *); 349172990Srwatson 350172990Srwatsonint mac_sysvshm_check_shmat(struct ucred *cred, 351172990Srwatson struct shmid_kernel *shmsegptr, int shmflg); 352172990Srwatsonint mac_sysvshm_check_shmctl(struct ucred *cred, 353172990Srwatson struct shmid_kernel *shmsegptr, int cmd); 354172990Srwatsonint mac_sysvshm_check_shmdt(struct ucred *cred, 355172990Srwatson struct shmid_kernel *shmsegptr); 356172990Srwatsonint mac_sysvshm_check_shmget(struct ucred *cred, 357172990Srwatson struct shmid_kernel *shmsegptr, int shmflg); 358172990Srwatsonvoid mac_sysvshm_cleanup(struct shmid_kernel *shmsegptr); 359172990Srwatsonvoid mac_sysvshm_create(struct ucred *cred, 360172990Srwatson struct shmid_kernel *shmsegptr); 361172990Srwatsonvoid mac_sysvshm_destroy(struct shmid_kernel *); 362172990Srwatsonvoid mac_sysvshm_init(struct shmid_kernel *); 363172990Srwatson 364172990Srwatsonvoid mac_thread_userret(struct thread *td); 365172990Srwatson 366172990Srwatsonint mac_vnode_associate_extattr(struct mount *mp, struct vnode *vp); 367172990Srwatsonvoid mac_vnode_associate_singlelabel(struct mount *mp, struct vnode *vp); 368172930Srwatsonint mac_vnode_check_access(struct ucred *cred, struct vnode *vp, 369184413Strasz accmode_t accmode); 370172930Srwatsonint mac_vnode_check_chdir(struct ucred *cred, struct vnode *dvp); 371172930Srwatsonint mac_vnode_check_chroot(struct ucred *cred, struct vnode *dvp); 372172930Srwatsonint mac_vnode_check_create(struct ucred *cred, struct vnode *dvp, 373100978Srwatson struct componentname *cnp, struct vattr *vap); 374172930Srwatsonint mac_vnode_check_deleteacl(struct ucred *cred, struct vnode *vp, 375100978Srwatson acl_type_t type); 376172930Srwatsonint mac_vnode_check_deleteextattr(struct ucred *cred, struct vnode *vp, 377119198Srwatson int attrnamespace, const char *name); 378172930Srwatsonint mac_vnode_check_exec(struct ucred *cred, struct vnode *vp, 379106468Srwatson struct image_params *imgp); 380172930Srwatsonint mac_vnode_check_getacl(struct ucred *cred, struct vnode *vp, 381100978Srwatson acl_type_t type); 382172930Srwatsonint mac_vnode_check_getextattr(struct ucred *cred, struct vnode *vp, 383100978Srwatson int attrnamespace, const char *name, struct uio *uio); 384172930Srwatsonint mac_vnode_check_link(struct ucred *cred, struct vnode *dvp, 385104529Srwatson struct vnode *vp, struct componentname *cnp); 386172930Srwatsonint mac_vnode_check_listextattr(struct ucred *cred, struct vnode *vp, 387119198Srwatson int attrnamespace); 388172930Srwatsonint mac_vnode_check_lookup(struct ucred *cred, struct vnode *dvp, 389100978Srwatson struct componentname *cnp); 390172930Srwatsonint mac_vnode_check_mmap(struct ucred *cred, struct vnode *vp, int prot, 391168955Srwatson int flags); 392172930Srwatsonint mac_vnode_check_mprotect(struct ucred *cred, struct vnode *vp, 393104546Srwatson int prot); 394172930Srwatsonint mac_vnode_check_open(struct ucred *cred, struct vnode *vp, 395184413Strasz accmode_t accmode); 396172930Srwatsonint mac_vnode_check_poll(struct ucred *active_cred, 397102129Srwatson struct ucred *file_cred, struct vnode *vp); 398172930Srwatsonint mac_vnode_check_read(struct ucred *active_cred, 399102129Srwatson struct ucred *file_cred, struct vnode *vp); 400172930Srwatsonint mac_vnode_check_readdir(struct ucred *cred, struct vnode *vp); 401172930Srwatsonint mac_vnode_check_readlink(struct ucred *cred, struct vnode *vp); 402172930Srwatsonint mac_vnode_check_rename_from(struct ucred *cred, struct vnode *dvp, 403100978Srwatson struct vnode *vp, struct componentname *cnp); 404172930Srwatsonint mac_vnode_check_rename_to(struct ucred *cred, struct vnode *dvp, 405100978Srwatson struct vnode *vp, int samedir, struct componentname *cnp); 406172930Srwatsonint mac_vnode_check_revoke(struct ucred *cred, struct vnode *vp); 407172930Srwatsonint mac_vnode_check_setacl(struct ucred *cred, struct vnode *vp, 408100978Srwatson acl_type_t type, struct acl *acl); 409172930Srwatsonint mac_vnode_check_setextattr(struct ucred *cred, struct vnode *vp, 410100978Srwatson int attrnamespace, const char *name, struct uio *uio); 411172930Srwatsonint mac_vnode_check_setflags(struct ucred *cred, struct vnode *vp, 412100978Srwatson u_long flags); 413172930Srwatsonint mac_vnode_check_setmode(struct ucred *cred, struct vnode *vp, 414100978Srwatson mode_t mode); 415172930Srwatsonint mac_vnode_check_setowner(struct ucred *cred, struct vnode *vp, 416100978Srwatson uid_t uid, gid_t gid); 417172930Srwatsonint mac_vnode_check_setutimes(struct ucred *cred, struct vnode *vp, 418100978Srwatson struct timespec atime, struct timespec mtime); 419172930Srwatsonint mac_vnode_check_stat(struct ucred *active_cred, 420102129Srwatson struct ucred *file_cred, struct vnode *vp); 421172930Srwatsonint mac_vnode_check_unlink(struct ucred *cred, struct vnode *dvp, 422172107Srwatson struct vnode *vp, struct componentname *cnp); 423172930Srwatsonint mac_vnode_check_write(struct ucred *active_cred, 424102129Srwatson struct ucred *file_cred, struct vnode *vp); 425172990Srwatsonvoid mac_vnode_copy_label(struct label *, struct label *); 426172990Srwatsonvoid mac_vnode_init(struct vnode *); 427172990Srwatsonint mac_vnode_create_extattr(struct ucred *cred, struct mount *mp, 428172990Srwatson struct vnode *dvp, struct vnode *vp, struct componentname *cnp); 429172990Srwatsonvoid mac_vnode_destroy(struct vnode *); 430172990Srwatsonvoid mac_vnode_execve_transition(struct ucred *oldcred, 431172990Srwatson struct ucred *newcred, struct vnode *vp, 432172990Srwatson struct label *interpvplabel, struct image_params *imgp); 433172990Srwatsonint mac_vnode_execve_will_transition(struct ucred *cred, 434172990Srwatson struct vnode *vp, struct label *interpvplabel, 435172990Srwatson struct image_params *imgp); 436172990Srwatsonvoid mac_vnode_relabel(struct ucred *cred, struct vnode *vp, 437172990Srwatson struct label *newlabel); 438172990Srwatson 439100978Srwatson/* 440165414Srwatson * Calls to help various file systems implement labeling functionality using 441165414Srwatson * their existing EA implementation. 442100978Srwatson */ 443100978Srwatsonint vop_stdsetlabel_ea(struct vop_setlabel_args *ap); 444100978Srwatson 445178184Srwatson#endif /* !_SECURITY_MAC_MAC_FRAMEWORK_H_ */ 446