mac_framework.h revision 173018
1100978Srwatson/*- 2126097Srwatson * Copyright (c) 1999-2002 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 173018 2007-10-26 13:18:38Z rwatson $ 39100978Srwatson */ 40145167Srwatson 41100978Srwatson/* 42163606Srwatson * Kernel interface for Mandatory Access Control -- how kernel services 43163606Srwatson * interact with the TrustedBSD MAC Framework. 44102123Srwatson */ 45102123Srwatson 46163606Srwatson#ifndef _SYS_SECURITY_MAC_MAC_FRAMEWORK_H_ 47163686Srwatson#define _SYS_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; 63100978Srwatsonstruct ipq; 64145855Srwatsonstruct ksem; 65166533Srwatsonstruct label; 66113487Srwatsonstruct m_tag; 67163606Srwatsonstruct mac; 68100978Srwatsonstruct mbuf; 69100978Srwatsonstruct mount; 70137815Srwatsonstruct msg; 71137815Srwatsonstruct msqid_kernel; 72100978Srwatsonstruct proc; 73137815Srwatsonstruct semid_kernel; 74137815Srwatsonstruct shmid_kernel; 75100978Srwatsonstruct sockaddr; 76100978Srwatsonstruct socket; 77126121Spjdstruct sysctl_oid; 78126121Spjdstruct sysctl_req; 79125293Srwatsonstruct pipepair; 80104338Srwatsonstruct thread; 81100978Srwatsonstruct timespec; 82100978Srwatsonstruct ucred; 83100978Srwatsonstruct uio; 84100978Srwatsonstruct vattr; 85100978Srwatsonstruct vnode; 86163606Srwatsonstruct vop_setlabel_args; 87100978Srwatson 88100978Srwatson#include <sys/acl.h> /* XXX acl_type_t */ 89100978Srwatson 90100978Srwatson/* 91163606Srwatson * Kernel functions to manage and evaluate labels. 92100978Srwatson */ 93172990Srwatsonint mac_bpfdesc_check_receive(struct bpf_d *d, struct ifnet *ifp); 94172990Srwatsonvoid mac_bpfdesc_create(struct ucred *cred, struct bpf_d *d); 95172990Srwatsonvoid mac_bpfdesc_create_mbuf(struct bpf_d *d, struct mbuf *m); 96172990Srwatsonvoid mac_bpfdesc_destroy(struct bpf_d *); 97172930Srwatsonvoid mac_bpfdesc_init(struct bpf_d *); 98172990Srwatson 99172990Srwatsonint mac_cred_check_visible(struct ucred *cr1, struct ucred *cr2); 100172990Srwatsonvoid mac_cred_copy(struct ucred *cr1, struct ucred *cr2); 101172990Srwatsonvoid mac_cred_destroy(struct ucred *); 102172930Srwatsonvoid mac_cred_init(struct ucred *); 103100978Srwatson 104172930Srwatsonvoid mac_devfs_create_device(struct ucred *cred, struct mount *mp, 105147982Srwatson struct cdev *dev, struct devfs_dirent *de); 106172930Srwatsonvoid mac_devfs_create_directory(struct mount *mp, char *dirname, 107107698Srwatson int dirnamelen, struct devfs_dirent *de); 108172930Srwatsonvoid mac_devfs_create_symlink(struct ucred *cred, struct mount *mp, 109107698Srwatson struct devfs_dirent *dd, struct devfs_dirent *de); 110172990Srwatsonvoid mac_devfs_destroy(struct devfs_dirent *); 111172990Srwatsonvoid mac_devfs_init(struct devfs_dirent *); 112172930Srwatsonvoid mac_devfs_update(struct mount *mp, struct devfs_dirent *de, 113107698Srwatson struct vnode *vp); 114172990Srwatsonvoid mac_devfs_vnode_associate(struct mount *mp, struct devfs_dirent *de, 115172990Srwatson struct vnode *vp); 116100978Srwatson 117172990Srwatsonint mac_ifnet_check_transmit(struct ifnet *ifp, struct mbuf *m); 118172990Srwatsonvoid mac_ifnet_create(struct ifnet *ifp); 119172990Srwatsonvoid mac_ifnet_create_mbuf(struct ifnet *ifp, struct mbuf *m); 120172990Srwatsonvoid mac_ifnet_destroy(struct ifnet *); 121172990Srwatsonvoid mac_ifnet_init(struct ifnet *); 122172990Srwatsonint mac_ifnet_ioctl_get(struct ucred *cred, struct ifreq *ifr, 123172990Srwatson struct ifnet *ifp); 124172990Srwatsonint mac_ifnet_ioctl_set(struct ucred *cred, struct ifreq *ifr, 125172990Srwatson struct ifnet *ifp); 126100978Srwatson 127172990Srwatsonint mac_inpcb_check_deliver(struct inpcb *inp, struct mbuf *m); 128172990Srwatsonvoid mac_inpcb_create(struct socket *so, struct inpcb *inp); 129172990Srwatsonvoid mac_inpcb_create_mbuf(struct inpcb *inp, struct mbuf *m); 130172990Srwatsonvoid mac_inpcb_destroy(struct inpcb *); 131172990Srwatsonint mac_inpcb_init(struct inpcb *, int); 132172990Srwatsonvoid mac_inpcb_sosetlabel(struct socket *so, struct inpcb *inp); 133137815Srwatson 134172930Srwatsonvoid mac_ipq_create(struct mbuf *m, struct ipq *ipq); 135172990Srwatsonvoid mac_ipq_destroy(struct ipq *); 136172990Srwatsonint mac_ipq_init(struct ipq *, int); 137172990Srwatsonint mac_ipq_match(struct mbuf *m, struct ipq *ipq); 138172930Srwatsonvoid mac_ipq_reassemble(struct ipq *ipq, struct mbuf *m); 139172930Srwatsonvoid mac_ipq_update(struct mbuf *m, struct ipq *ipq); 140165414Srwatson 141172930Srwatsonint mac_kenv_check_dump(struct ucred *cred); 142172930Srwatsonint mac_kenv_check_get(struct ucred *cred, char *name); 143172930Srwatsonint mac_kenv_check_set(struct ucred *cred, char *name, char *value); 144172930Srwatsonint mac_kenv_check_unset(struct ucred *cred, char *name); 145172990Srwatson 146172930Srwatsonint mac_kld_check_load(struct ucred *cred, struct vnode *vp); 147172930Srwatsonint mac_kld_check_stat(struct ucred *cred); 148172990Srwatson 149172990Srwatsonvoid mac_mbuf_copy(struct mbuf *, struct mbuf *); 150173018Srwatsonvoid mac_mbuf_create_linklayer(struct ifnet *ifp, struct mbuf *m); 151172990Srwatsonvoid mac_mbuf_create_multicast_encap(struct mbuf *m, struct ifnet *ifp, 152172990Srwatson struct mbuf *mnew); 153172990Srwatsonvoid mac_mbuf_create_netlayer(struct mbuf *m, struct mbuf *mnew); 154172990Srwatsonint mac_mbuf_init(struct mbuf *, int); 155172990Srwatson 156172990Srwatsonvoid mac_mbuf_tag_copy(struct m_tag *, struct m_tag *); 157172990Srwatsonvoid mac_mbuf_tag_destroy(struct m_tag *); 158172990Srwatsonint mac_mbuf_tag_init(struct m_tag *, int); 159172990Srwatson 160172930Srwatsonint mac_mount_check_stat(struct ucred *cred, struct mount *mp); 161172990Srwatsonvoid mac_mount_create(struct ucred *cred, struct mount *mp); 162172990Srwatsonvoid mac_mount_destroy(struct mount *); 163172990Srwatsonvoid mac_mount_init(struct mount *); 164172990Srwatson 165173018Srwatsonvoid mac_netinet_firewall_send(struct mbuf *m); 166172990Srwatsonvoid mac_netinet_fragment(struct mbuf *m, struct mbuf *frag); 167172990Srwatsonvoid mac_netinet_icmp_reply(struct mbuf *m); 168172990Srwatsonvoid mac_netinet_tcp_reply(struct mbuf *m); 169172990Srwatson 170172930Srwatsonint mac_pipe_check_ioctl(struct ucred *cred, struct pipepair *pp, 171100978Srwatson unsigned long cmd, void *data); 172172930Srwatsonint mac_pipe_check_poll(struct ucred *cred, struct pipepair *pp); 173172930Srwatsonint mac_pipe_check_read(struct ucred *cred, struct pipepair *pp); 174172930Srwatsonint mac_pipe_check_stat(struct ucred *cred, struct pipepair *pp); 175172930Srwatsonint mac_pipe_check_write(struct ucred *cred, struct pipepair *pp); 176172990Srwatsonvoid mac_pipe_create(struct ucred *cred, struct pipepair *pp); 177172990Srwatsonvoid mac_pipe_destroy(struct pipepair *); 178172990Srwatsonvoid mac_pipe_init(struct pipepair *); 179172990Srwatsonint mac_pipe_label_set(struct ucred *cred, struct pipepair *pp, 180172990Srwatson struct label *label); 181172990Srwatson 182172930Srwatsonint mac_posixsem_check_destroy(struct ucred *cred, struct ksem *ks); 183172930Srwatsonint mac_posixsem_check_getvalue(struct ucred *cred,struct ksem *ks); 184172930Srwatsonint mac_posixsem_check_open(struct ucred *cred, struct ksem *ks); 185172930Srwatsonint mac_posixsem_check_post(struct ucred *cred, struct ksem *ks); 186172930Srwatsonint mac_posixsem_check_unlink(struct ucred *cred, struct ksem *ks); 187172930Srwatsonint mac_posixsem_check_wait(struct ucred *cred, struct ksem *ks); 188172990Srwatsonvoid mac_posixsem_create(struct ucred *cred, struct ksem *ks); 189172990Srwatsonvoid mac_posixsem_destroy(struct ksem *); 190172990Srwatsonvoid mac_posixsem_init(struct ksem *); 191172990Srwatson 192172990Srwatsonint mac_priv_check(struct ucred *cred, int priv); 193172990Srwatsonint mac_priv_grant(struct ucred *cred, int priv); 194172990Srwatson 195172990Srwatsonvoid mac_proc_associate_nfsd(struct ucred *cred); 196172930Srwatsonint mac_proc_check_debug(struct ucred *cred, struct proc *p); 197172930Srwatsonint mac_proc_check_sched(struct ucred *cred, struct proc *p); 198172930Srwatsonint mac_proc_check_setaudit(struct ucred *cred, struct auditinfo *ai); 199172930Srwatsonint mac_proc_check_setaudit_addr(struct ucred *cred, 200171047Srwatson struct auditinfo_addr *aia); 201172930Srwatsonint mac_proc_check_setauid(struct ucred *cred, uid_t auid); 202172990Srwatsonint mac_proc_check_setegid(struct proc *p, struct ucred *cred, 203172990Srwatson gid_t egid); 204172930Srwatsonint mac_proc_check_seteuid(struct proc *p, struct ucred *cred, 205145147Srwatson uid_t euid); 206172930Srwatsonint mac_proc_check_setgid(struct proc *p, struct ucred *cred, 207145147Srwatson gid_t gid); 208172930Srwatsonint mac_proc_check_setgroups(struct proc *p, struct ucred *cred, 209145147Srwatson int ngroups, gid_t *gidset); 210172930Srwatsonint mac_proc_check_setregid(struct proc *p, struct ucred *cred, 211145147Srwatson gid_t rgid, gid_t egid); 212172990Srwatsonint mac_proc_check_setresgid(struct proc *p, struct ucred *cred, 213172990Srwatson gid_t rgid, gid_t egid, gid_t sgid); 214172930Srwatsonint mac_proc_check_setresuid(struct proc *p, struct ucred *cred, 215145147Srwatson uid_t ruid, uid_t euid, uid_t suid); 216172990Srwatsonint mac_proc_check_setreuid(struct proc *p, struct ucred *cred, 217172990Srwatson uid_t ruid, uid_t euid); 218172990Srwatsonint mac_proc_check_setuid(struct proc *p, struct ucred *cred, 219172990Srwatson uid_t uid); 220172930Srwatsonint mac_proc_check_signal(struct ucred *cred, struct proc *p, 221100978Srwatson int signum); 222172930Srwatsonint mac_proc_check_wait(struct ucred *cred, struct proc *p); 223172990Srwatsonvoid mac_proc_create_init(struct ucred *cred); 224172990Srwatsonvoid mac_proc_create_swapper(struct ucred *cred); 225172990Srwatsonvoid mac_proc_destroy(struct proc *); 226172990Srwatsonint mac_execve_enter(struct image_params *imgp, struct mac *mac_p); 227172990Srwatsonvoid mac_execve_exit(struct image_params *imgp); 228172990Srwatsonvoid mac_proc_init(struct proc *); 229172990Srwatson 230172930Srwatsonint mac_socket_check_accept(struct ucred *cred, struct socket *so); 231172930Srwatsonint mac_socket_check_bind(struct ucred *cred, struct socket *so, 232168955Srwatson struct sockaddr *sa); 233172930Srwatsonint mac_socket_check_connect(struct ucred *cred, struct socket *so, 234168955Srwatson struct sockaddr *sa); 235172930Srwatsonint mac_socket_check_create(struct ucred *cred, int domain, int type, 236168955Srwatson int proto); 237172930Srwatsonint mac_socket_check_deliver(struct socket *so, struct mbuf *m); 238172930Srwatsonint mac_socket_check_listen(struct ucred *cred, struct socket *so); 239172930Srwatsonint mac_socket_check_poll(struct ucred *cred, struct socket *so); 240172930Srwatsonint mac_socket_check_receive(struct ucred *cred, struct socket *so); 241172930Srwatsonint mac_socket_check_send(struct ucred *cred, struct socket *so); 242172930Srwatsonint mac_socket_check_stat(struct ucred *cred, struct socket *so); 243172930Srwatsonint mac_socket_check_visible(struct ucred *cred, struct socket *so); 244172990Srwatsonvoid mac_socket_create_mbuf(struct socket *so, struct mbuf *m); 245172990Srwatsonvoid mac_socket_create(struct ucred *cred, struct socket *so); 246172990Srwatsonvoid mac_socket_destroy(struct socket *); 247172990Srwatsonint mac_socket_init(struct socket *, int); 248172990Srwatsonvoid mac_socket_newconn(struct socket *oldso, struct socket *newso); 249172990Srwatsonint mac_getsockopt_label(struct ucred *cred, struct socket *so, 250172990Srwatson struct mac *extmac); 251172990Srwatsonint mac_getsockopt_peerlabel(struct ucred *cred, struct socket *so, 252172990Srwatson struct mac *extmac); 253172990Srwatsonint mac_setsockopt_label(struct ucred *cred, struct socket *so, 254172990Srwatson struct mac *extmac); 255172990Srwatson 256172990Srwatsonvoid mac_socketpeer_set_from_mbuf(struct mbuf *m, struct socket *so); 257172990Srwatsonvoid mac_socketpeer_set_from_socket(struct socket *oldso, 258172990Srwatson struct socket *newso); 259172990Srwatson 260172990Srwatsonvoid mac_syncache_create(struct label *l, struct inpcb *inp); 261172990Srwatsonvoid mac_syncache_create_mbuf(struct label *l, struct mbuf *m); 262172990Srwatsonvoid mac_syncache_destroy(struct label **l); 263172990Srwatsonint mac_syncache_init(struct label **l); 264172990Srwatson 265172930Srwatsonint mac_system_check_acct(struct ucred *cred, struct vnode *vp); 266172930Srwatsonint mac_system_check_audit(struct ucred *cred, void *record, int length); 267172930Srwatsonint mac_system_check_auditctl(struct ucred *cred, struct vnode *vp); 268172930Srwatsonint mac_system_check_auditon(struct ucred *cred, int cmd); 269172930Srwatsonint mac_system_check_reboot(struct ucred *cred, int howto); 270172930Srwatsonint mac_system_check_swapon(struct ucred *cred, struct vnode *vp); 271172930Srwatsonint mac_system_check_swapoff(struct ucred *cred, struct vnode *vp); 272172930Srwatsonint mac_system_check_sysctl(struct ucred *cred, struct sysctl_oid *oidp, 273126121Spjd void *arg1, int arg2, struct sysctl_req *req); 274172990Srwatson 275172990Srwatsonvoid mac_sysvmsg_cleanup(struct msg *msgptr); 276172990Srwatsonvoid mac_sysvmsg_create(struct ucred *cred, struct msqid_kernel *msqkptr, 277172990Srwatson struct msg *msgptr); 278172990Srwatsonvoid mac_sysvmsg_destroy(struct msg *); 279172990Srwatsonvoid mac_sysvmsg_init(struct msg *); 280172990Srwatson 281172990Srwatsonint mac_sysvmsq_check_msgmsq(struct ucred *cred, struct msg *msgptr, 282172990Srwatson struct msqid_kernel *msqkptr); 283172990Srwatsonint mac_sysvmsq_check_msgrcv(struct ucred *cred, struct msg *msgptr); 284172990Srwatsonint mac_sysvmsq_check_msgrmid(struct ucred *cred, struct msg *msgptr); 285172990Srwatsonint mac_sysvmsq_check_msqctl(struct ucred *cred, 286172990Srwatson struct msqid_kernel *msqkptr, int cmd); 287172990Srwatsonint mac_sysvmsq_check_msqget(struct ucred *cred, 288172990Srwatson struct msqid_kernel *msqkptr); 289172990Srwatsonint mac_sysvmsq_check_msqrcv(struct ucred *cred, 290172990Srwatson struct msqid_kernel *msqkptr); 291172990Srwatsonint mac_sysvmsq_check_msqsnd(struct ucred *cred, 292172990Srwatson struct msqid_kernel *msqkptr); 293172990Srwatsonvoid mac_sysvmsq_cleanup(struct msqid_kernel *msqkptr); 294172990Srwatsonvoid mac_sysvmsq_create(struct ucred *cred, struct msqid_kernel *msqkptr); 295172990Srwatsonvoid mac_sysvmsq_destroy(struct msqid_kernel *); 296172990Srwatsonvoid mac_sysvmsq_init(struct msqid_kernel *); 297172990Srwatson 298172990Srwatsonint mac_sysvsem_check_semctl(struct ucred *cred, 299172990Srwatson struct semid_kernel *semakptr, int cmd); 300172990Srwatsonint mac_sysvsem_check_semget(struct ucred *cred, 301172990Srwatson struct semid_kernel *semakptr); 302172990Srwatsonint mac_sysvsem_check_semop(struct ucred *cred, 303172990Srwatson struct semid_kernel *semakptr, size_t accesstype); 304172990Srwatsonvoid mac_sysvsem_cleanup(struct semid_kernel *semakptr); 305172990Srwatsonvoid mac_sysvsem_create(struct ucred *cred, 306172990Srwatson struct semid_kernel *semakptr); 307172990Srwatsonvoid mac_sysvsem_destroy(struct semid_kernel *); 308172990Srwatsonvoid mac_sysvsem_init(struct semid_kernel *); 309172990Srwatson 310172990Srwatsonint mac_sysvshm_check_shmat(struct ucred *cred, 311172990Srwatson struct shmid_kernel *shmsegptr, int shmflg); 312172990Srwatsonint mac_sysvshm_check_shmctl(struct ucred *cred, 313172990Srwatson struct shmid_kernel *shmsegptr, int cmd); 314172990Srwatsonint mac_sysvshm_check_shmdt(struct ucred *cred, 315172990Srwatson struct shmid_kernel *shmsegptr); 316172990Srwatsonint mac_sysvshm_check_shmget(struct ucred *cred, 317172990Srwatson struct shmid_kernel *shmsegptr, int shmflg); 318172990Srwatsonvoid mac_sysvshm_cleanup(struct shmid_kernel *shmsegptr); 319172990Srwatsonvoid mac_sysvshm_create(struct ucred *cred, 320172990Srwatson struct shmid_kernel *shmsegptr); 321172990Srwatsonvoid mac_sysvshm_destroy(struct shmid_kernel *); 322172990Srwatsonvoid mac_sysvshm_init(struct shmid_kernel *); 323172990Srwatson 324172990Srwatsonvoid mac_thread_userret(struct thread *td); 325172990Srwatson 326172990Srwatsonint mac_vnode_associate_extattr(struct mount *mp, struct vnode *vp); 327172990Srwatsonvoid mac_vnode_associate_singlelabel(struct mount *mp, struct vnode *vp); 328172930Srwatsonint mac_vnode_check_access(struct ucred *cred, struct vnode *vp, 329106212Srwatson int acc_mode); 330172930Srwatsonint mac_vnode_check_chdir(struct ucred *cred, struct vnode *dvp); 331172930Srwatsonint mac_vnode_check_chroot(struct ucred *cred, struct vnode *dvp); 332172930Srwatsonint mac_vnode_check_create(struct ucred *cred, struct vnode *dvp, 333100978Srwatson struct componentname *cnp, struct vattr *vap); 334172930Srwatsonint mac_vnode_check_deleteacl(struct ucred *cred, struct vnode *vp, 335100978Srwatson acl_type_t type); 336172930Srwatsonint mac_vnode_check_deleteextattr(struct ucred *cred, struct vnode *vp, 337119198Srwatson int attrnamespace, const char *name); 338172930Srwatsonint mac_vnode_check_exec(struct ucred *cred, struct vnode *vp, 339106468Srwatson struct image_params *imgp); 340172930Srwatsonint mac_vnode_check_getacl(struct ucred *cred, struct vnode *vp, 341100978Srwatson acl_type_t type); 342172930Srwatsonint mac_vnode_check_getextattr(struct ucred *cred, struct vnode *vp, 343100978Srwatson int attrnamespace, const char *name, struct uio *uio); 344172930Srwatsonint mac_vnode_check_link(struct ucred *cred, struct vnode *dvp, 345104529Srwatson struct vnode *vp, struct componentname *cnp); 346172930Srwatsonint mac_vnode_check_listextattr(struct ucred *cred, struct vnode *vp, 347119198Srwatson int attrnamespace); 348172930Srwatsonint mac_vnode_check_lookup(struct ucred *cred, struct vnode *dvp, 349100978Srwatson struct componentname *cnp); 350172930Srwatsonint mac_vnode_check_mmap(struct ucred *cred, struct vnode *vp, int prot, 351168955Srwatson int flags); 352172930Srwatsonint mac_vnode_check_mprotect(struct ucred *cred, struct vnode *vp, 353104546Srwatson int prot); 354172930Srwatsonint mac_vnode_check_open(struct ucred *cred, struct vnode *vp, 355106212Srwatson int acc_mode); 356172930Srwatsonint mac_vnode_check_poll(struct ucred *active_cred, 357102129Srwatson struct ucred *file_cred, struct vnode *vp); 358172930Srwatsonint mac_vnode_check_read(struct ucred *active_cred, 359102129Srwatson struct ucred *file_cred, struct vnode *vp); 360172930Srwatsonint mac_vnode_check_readdir(struct ucred *cred, struct vnode *vp); 361172930Srwatsonint mac_vnode_check_readlink(struct ucred *cred, struct vnode *vp); 362172930Srwatsonint mac_vnode_check_rename_from(struct ucred *cred, struct vnode *dvp, 363100978Srwatson struct vnode *vp, struct componentname *cnp); 364172930Srwatsonint mac_vnode_check_rename_to(struct ucred *cred, struct vnode *dvp, 365100978Srwatson struct vnode *vp, int samedir, struct componentname *cnp); 366172930Srwatsonint mac_vnode_check_revoke(struct ucred *cred, struct vnode *vp); 367172930Srwatsonint mac_vnode_check_setacl(struct ucred *cred, struct vnode *vp, 368100978Srwatson acl_type_t type, struct acl *acl); 369172930Srwatsonint mac_vnode_check_setextattr(struct ucred *cred, struct vnode *vp, 370100978Srwatson int attrnamespace, const char *name, struct uio *uio); 371172930Srwatsonint mac_vnode_check_setflags(struct ucred *cred, struct vnode *vp, 372100978Srwatson u_long flags); 373172930Srwatsonint mac_vnode_check_setmode(struct ucred *cred, struct vnode *vp, 374100978Srwatson mode_t mode); 375172930Srwatsonint mac_vnode_check_setowner(struct ucred *cred, struct vnode *vp, 376100978Srwatson uid_t uid, gid_t gid); 377172930Srwatsonint mac_vnode_check_setutimes(struct ucred *cred, struct vnode *vp, 378100978Srwatson struct timespec atime, struct timespec mtime); 379172930Srwatsonint mac_vnode_check_stat(struct ucred *active_cred, 380102129Srwatson struct ucred *file_cred, struct vnode *vp); 381172930Srwatsonint mac_vnode_check_unlink(struct ucred *cred, struct vnode *dvp, 382172107Srwatson struct vnode *vp, struct componentname *cnp); 383172930Srwatsonint mac_vnode_check_write(struct ucred *active_cred, 384102129Srwatson struct ucred *file_cred, struct vnode *vp); 385172990Srwatsonvoid mac_vnode_copy_label(struct label *, struct label *); 386172990Srwatsonvoid mac_vnode_init(struct vnode *); 387172990Srwatsonint mac_vnode_create_extattr(struct ucred *cred, struct mount *mp, 388172990Srwatson struct vnode *dvp, struct vnode *vp, struct componentname *cnp); 389172990Srwatsonvoid mac_vnode_destroy(struct vnode *); 390172990Srwatsonvoid mac_vnode_execve_transition(struct ucred *oldcred, 391172990Srwatson struct ucred *newcred, struct vnode *vp, 392172990Srwatson struct label *interpvplabel, struct image_params *imgp); 393172990Srwatsonint mac_vnode_execve_will_transition(struct ucred *cred, 394172990Srwatson struct vnode *vp, struct label *interpvplabel, 395172990Srwatson struct image_params *imgp); 396172990Srwatsonvoid mac_vnode_relabel(struct ucred *cred, struct vnode *vp, 397172990Srwatson struct label *newlabel); 398172990Srwatson 399172990Srwatsonstruct label *mac_cred_label_alloc(void); 400172990Srwatsonvoid mac_cred_label_free(struct label *); 401172990Srwatsonstruct label *mac_vnode_label_alloc(void); 402172990Srwatsonvoid mac_vnode_label_free(struct label *); 403172990Srwatson 404107271Srwatsonvoid mac_cred_mmapped_drop_perms(struct thread *td, struct ucred *cred); 405100978Srwatson 406100978Srwatson/* 407165414Srwatson * Calls to help various file systems implement labeling functionality using 408165414Srwatson * their existing EA implementation. 409100978Srwatson */ 410100978Srwatsonint vop_stdsetlabel_ea(struct vop_setlabel_args *ap); 411100978Srwatson 412163606Srwatson#endif /* !_SYS_SECURITY_MAC_MAC_FRAMEWORK_H_ */ 413