xref: /freebsd/sys/security/mac_stub/mac_stub.c (revision 57c4583f70ab9d25b3aed17f20ec7843f9673539)
1 /*-
2  * Copyright (c) 1999-2002 Robert N. M. Watson
3  * Copyright (c) 2001-2005 McAfee, Inc.
4  * Copyright (c) 2005 SPARTA, Inc.
5  * All rights reserved.
6  *
7  * This software was developed by Robert Watson for the TrustedBSD Project.
8  *
9  * This software was developed for the FreeBSD Project in part by McAfee
10  * Research, the Security Research Division of McAfee, Inc. under
11  * DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA
12  * CHATS research program.
13  *
14  * This software was enhanced by SPARTA ISSO under SPAWAR contract
15  * N66001-04-C-6019 ("SEFOS").
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions
19  * are met:
20  * 1. Redistributions of source code must retain the above copyright
21  *    notice, this list of conditions and the following disclaimer.
22  * 2. Redistributions in binary form must reproduce the above copyright
23  *    notice, this list of conditions and the following disclaimer in the
24  *    documentation and/or other materials provided with the distribution.
25  *
26  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
27  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
30  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36  * SUCH DAMAGE.
37  *
38  * $FreeBSD$
39  */
40 
41 /*
42  * Developed by the TrustedBSD Project.
43  *
44  * Stub module that implements a NOOP for most (if not all) MAC Framework
45  * policy entry points.
46  */
47 
48 #include <sys/types.h>
49 #include <sys/param.h>
50 #include <sys/acl.h>
51 #include <sys/conf.h>
52 #include <sys/extattr.h>
53 #include <sys/kernel.h>
54 #include <sys/ksem.h>
55 #include <sys/mac.h>
56 #include <sys/mount.h>
57 #include <sys/proc.h>
58 #include <sys/systm.h>
59 #include <sys/sysproto.h>
60 #include <sys/sysent.h>
61 #include <sys/vnode.h>
62 #include <sys/file.h>
63 #include <sys/socket.h>
64 #include <sys/socketvar.h>
65 #include <sys/pipe.h>
66 #include <sys/sx.h>
67 #include <sys/sysctl.h>
68 #include <sys/msg.h>
69 #include <sys/sem.h>
70 #include <sys/shm.h>
71 
72 #include <fs/devfs/devfs.h>
73 
74 #include <net/bpfdesc.h>
75 #include <net/if.h>
76 #include <net/if_types.h>
77 #include <net/if_var.h>
78 
79 #include <netinet/in.h>
80 #include <netinet/in_pcb.h>
81 #include <netinet/ip_var.h>
82 
83 #include <vm/vm.h>
84 
85 #include <sys/mac_policy.h>
86 
87 SYSCTL_DECL(_security_mac);
88 
89 SYSCTL_NODE(_security_mac, OID_AUTO, stub, CTLFLAG_RW, 0,
90     "TrustedBSD mac_stub policy controls");
91 
92 static int	stub_enabled = 1;
93 SYSCTL_INT(_security_mac_stub, OID_AUTO, enabled, CTLFLAG_RW,
94     &stub_enabled, 0, "Enforce mac_stub policy");
95 
96 /*
97  * Policy module operations.
98  */
99 static void
100 stub_destroy(struct mac_policy_conf *conf)
101 {
102 
103 }
104 
105 static void
106 stub_init(struct mac_policy_conf *conf)
107 {
108 
109 }
110 
111 static int
112 stub_syscall(struct thread *td, int call, void *arg)
113 {
114 
115 	return (0);
116 }
117 
118 /*
119  * Label operations.
120  */
121 static void
122 stub_init_label(struct label *label)
123 {
124 
125 }
126 
127 static int
128 stub_init_label_waitcheck(struct label *label, int flag)
129 {
130 
131 	return (0);
132 }
133 
134 static void
135 stub_destroy_label(struct label *label)
136 {
137 
138 }
139 
140 static void
141 stub_copy_label(struct label *src, struct label *dest)
142 {
143 
144 }
145 
146 static int
147 stub_externalize_label(struct label *label, char *element_name,
148     struct sbuf *sb, int *claimed)
149 {
150 
151 	return (0);
152 }
153 
154 static int
155 stub_internalize_label(struct label *label, char *element_name,
156     char *element_data, int *claimed)
157 {
158 
159 	return (0);
160 }
161 
162 /*
163  * Labeling event operations: file system objects, and things that look
164  * a lot like file system objects.
165  */
166 static void
167 stub_associate_vnode_devfs(struct mount *mp, struct label *fslabel,
168     struct devfs_dirent *de, struct label *delabel, struct vnode *vp,
169     struct label *vlabel)
170 {
171 
172 }
173 
174 static int
175 stub_associate_vnode_extattr(struct mount *mp, struct label *fslabel,
176     struct vnode *vp, struct label *vlabel)
177 {
178 
179 	return (0);
180 }
181 
182 static void
183 stub_associate_vnode_singlelabel(struct mount *mp,
184     struct label *fslabel, struct vnode *vp, struct label *vlabel)
185 {
186 
187 }
188 
189 static void
190 stub_create_devfs_device(struct ucred *cred, struct mount *mp,
191     struct cdev *dev, struct devfs_dirent *devfs_dirent, struct label *label)
192 {
193 
194 }
195 
196 static void
197 stub_create_devfs_directory(struct mount *mp, char *dirname,
198     int dirnamelen, struct devfs_dirent *devfs_dirent, struct label *label)
199 {
200 
201 }
202 
203 static void
204 stub_create_devfs_symlink(struct ucred *cred, struct mount *mp,
205     struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de,
206     struct label *delabel)
207 {
208 
209 }
210 
211 static int
212 stub_create_vnode_extattr(struct ucred *cred, struct mount *mp,
213     struct label *fslabel, struct vnode *dvp, struct label *dlabel,
214     struct vnode *vp, struct label *vlabel, struct componentname *cnp)
215 {
216 
217 	return (0);
218 }
219 
220 static void
221 stub_create_mount(struct ucred *cred, struct mount *mp,
222     struct label *mntlabel, struct label *fslabel)
223 {
224 
225 }
226 
227 static void
228 stub_relabel_vnode(struct ucred *cred, struct vnode *vp,
229     struct label *vnodelabel, struct label *label)
230 {
231 
232 }
233 
234 static int
235 stub_setlabel_vnode_extattr(struct ucred *cred, struct vnode *vp,
236     struct label *vlabel, struct label *intlabel)
237 {
238 
239 	return (0);
240 }
241 
242 static void
243 stub_update_devfsdirent(struct mount *mp,
244     struct devfs_dirent *devfs_dirent, struct label *direntlabel,
245     struct vnode *vp, struct label *vnodelabel)
246 {
247 
248 }
249 
250 /*
251  * Labeling event operations: IPC object.
252  */
253 static void
254 stub_create_mbuf_from_socket(struct socket *so, struct label *socketlabel,
255     struct mbuf *m, struct label *mbuflabel)
256 {
257 
258 }
259 
260 static void
261 stub_create_socket(struct ucred *cred, struct socket *socket,
262     struct label *socketlabel)
263 {
264 
265 }
266 
267 static void
268 stub_create_pipe(struct ucred *cred, struct pipepair *pp,
269     struct label *pipelabel)
270 {
271 
272 }
273 
274 static void
275 stub_create_posix_sem(struct ucred *cred, struct ksem *ksemptr,
276     struct label *ks_label)
277 {
278 
279 }
280 
281 static void
282 stub_create_socket_from_socket(struct socket *oldsocket,
283     struct label *oldsocketlabel, struct socket *newsocket,
284     struct label *newsocketlabel)
285 {
286 
287 }
288 
289 static void
290 stub_relabel_socket(struct ucred *cred, struct socket *socket,
291     struct label *socketlabel, struct label *newlabel)
292 {
293 
294 }
295 
296 static void
297 stub_relabel_pipe(struct ucred *cred, struct pipepair *pp,
298     struct label *pipelabel, struct label *newlabel)
299 {
300 
301 }
302 
303 static void
304 stub_set_socket_peer_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel,
305     struct socket *socket, struct label *socketpeerlabel)
306 {
307 
308 }
309 
310 static void
311 stub_set_socket_peer_from_socket(struct socket *oldsocket,
312     struct label *oldsocketlabel, struct socket *newsocket,
313     struct label *newsocketpeerlabel)
314 {
315 
316 }
317 
318 /*
319  * Labeling event operations: network objects.
320  */
321 static void
322 stub_create_bpfdesc(struct ucred *cred, struct bpf_d *bpf_d,
323     struct label *bpflabel)
324 {
325 
326 }
327 
328 static void
329 stub_create_datagram_from_ipq(struct ipq *ipq, struct label *ipqlabel,
330     struct mbuf *datagram, struct label *datagramlabel)
331 {
332 
333 }
334 
335 static void
336 stub_create_fragment(struct mbuf *datagram, struct label *datagramlabel,
337     struct mbuf *fragment, struct label *fragmentlabel)
338 {
339 
340 }
341 
342 static void
343 stub_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel)
344 {
345 
346 }
347 
348 static void
349 stub_create_inpcb_from_socket(struct socket *so, struct label *solabel,
350     struct inpcb *inp, struct label *inplabel)
351 {
352 
353 }
354 
355 static void
356 stub_create_sysv_msgmsg(struct ucred *cred, struct msqid_kernel *msqkptr,
357     struct label *msqlabel, struct msg *msgptr, struct label *msglabel)
358 {
359 
360 }
361 
362 static void
363 stub_create_sysv_msgqueue(struct ucred *cred, struct msqid_kernel *msqkptr,
364     struct label *msqlabel)
365 {
366 
367 }
368 
369 static void
370 stub_create_sysv_sem(struct ucred *cred, struct semid_kernel *semakptr,
371     struct label *semalabel)
372 {
373 
374 }
375 
376 static void
377 stub_create_sysv_shm(struct ucred *cred, struct shmid_kernel *shmsegptr,
378     struct label *shmalabel)
379 {
380 
381 }
382 
383 static void
384 stub_create_ipq(struct mbuf *fragment, struct label *fragmentlabel,
385     struct ipq *ipq, struct label *ipqlabel)
386 {
387 
388 }
389 
390 static void
391 stub_create_mbuf_from_inpcb(struct inpcb *inp, struct label *inplabel,
392     struct mbuf *m, struct label *mlabel)
393 {
394 
395 }
396 
397 static void
398 stub_create_mbuf_linklayer(struct ifnet *ifnet, struct label *ifnetlabel,
399     struct mbuf *mbuf, struct label *mbuflabel)
400 {
401 
402 }
403 
404 static void
405 stub_create_mbuf_from_bpfdesc(struct bpf_d *bpf_d, struct label *bpflabel,
406     struct mbuf *mbuf, struct label *mbuflabel)
407 {
408 
409 }
410 
411 static void
412 stub_create_mbuf_from_ifnet(struct ifnet *ifnet, struct label *ifnetlabel,
413     struct mbuf *m, struct label *mbuflabel)
414 {
415 
416 }
417 
418 static void
419 stub_create_mbuf_multicast_encap(struct mbuf *oldmbuf,
420     struct label *oldmbuflabel, struct ifnet *ifnet, struct label *ifnetlabel,
421     struct mbuf *newmbuf, struct label *newmbuflabel)
422 {
423 
424 }
425 
426 static void
427 stub_create_mbuf_netlayer(struct mbuf *oldmbuf,
428     struct label *oldmbuflabel, struct mbuf *newmbuf, struct label *newmbuflabel)
429 {
430 
431 }
432 
433 static int
434 stub_fragment_match(struct mbuf *fragment, struct label *fragmentlabel,
435     struct ipq *ipq, struct label *ipqlabel)
436 {
437 
438 	return (1);
439 }
440 
441 static void
442 stub_reflect_mbuf_icmp(struct mbuf *m, struct label *mlabel)
443 {
444 
445 }
446 
447 static void
448 stub_reflect_mbuf_tcp(struct mbuf *m, struct label *mlabel)
449 {
450 
451 }
452 
453 static void
454 stub_relabel_ifnet(struct ucred *cred, struct ifnet *ifnet,
455     struct label *ifnetlabel, struct label *newlabel)
456 {
457 
458 }
459 
460 static void
461 stub_update_ipq(struct mbuf *fragment, struct label *fragmentlabel,
462     struct ipq *ipq, struct label *ipqlabel)
463 {
464 
465 }
466 
467 static void
468 stub_inpcb_sosetlabel(struct socket *so, struct label *solabel,
469     struct inpcb *inp, struct label *inplabel)
470 {
471 
472 }
473 
474 /*
475  * Labeling event operations: processes.
476  */
477 static void
478 stub_execve_transition(struct ucred *old, struct ucred *new,
479     struct vnode *vp, struct label *vnodelabel,
480     struct label *interpvnodelabel, struct image_params *imgp,
481     struct label *execlabel)
482 {
483 
484 }
485 
486 static int
487 stub_execve_will_transition(struct ucred *old, struct vnode *vp,
488     struct label *vnodelabel, struct label *interpvnodelabel,
489     struct image_params *imgp, struct label *execlabel)
490 {
491 
492 	return (0);
493 }
494 
495 static void
496 stub_create_proc0(struct ucred *cred)
497 {
498 
499 }
500 
501 static void
502 stub_create_proc1(struct ucred *cred)
503 {
504 
505 }
506 
507 static void
508 stub_relabel_cred(struct ucred *cred, struct label *newlabel)
509 {
510 
511 }
512 
513 static void
514 stub_thread_userret(struct thread *td)
515 {
516 
517 }
518 
519 /*
520  * Label cleanup/flush operations
521  */
522 static void
523 stub_cleanup_sysv_msgmsg(struct label *msglabel)
524 {
525 
526 }
527 
528 static void
529 stub_cleanup_sysv_msgqueue(struct label *msqlabel)
530 {
531 
532 }
533 
534 static void
535 stub_cleanup_sysv_sem(struct label *semalabel)
536 {
537 
538 }
539 
540 static void
541 stub_cleanup_sysv_shm(struct label *shmlabel)
542 {
543 
544 }
545 
546 /*
547  * Access control checks.
548  */
549 static int
550 stub_check_bpfdesc_receive(struct bpf_d *bpf_d, struct label *bpflabel,
551     struct ifnet *ifnet, struct label *ifnet_label)
552 {
553 
554         return (0);
555 }
556 
557 static int
558 stub_check_cred_relabel(struct ucred *cred, struct label *newlabel)
559 {
560 
561 	return (0);
562 }
563 
564 static int
565 stub_check_cred_visible(struct ucred *u1, struct ucred *u2)
566 {
567 
568 	return (0);
569 }
570 
571 static int
572 stub_check_ifnet_relabel(struct ucred *cred, struct ifnet *ifnet,
573     struct label *ifnetlabel, struct label *newlabel)
574 {
575 
576 	return (0);
577 }
578 
579 static int
580 stub_check_ifnet_transmit(struct ifnet *ifnet, struct label *ifnetlabel,
581     struct mbuf *m, struct label *mbuflabel)
582 {
583 
584 	return (0);
585 }
586 
587 static int
588 stub_check_inpcb_deliver(struct inpcb *inp, struct label *inplabel,
589     struct mbuf *m, struct label *mlabel)
590 {
591 
592 	return (0);
593 }
594 
595 static int
596 stub_check_sysv_msgmsq(struct ucred *cred, struct msg *msgptr,
597     struct label *msglabel, struct msqid_kernel *msqkptr,
598     struct label *msqklabel)
599 {
600 
601 	return (0);
602 }
603 
604 static int
605 stub_check_sysv_msgrcv(struct ucred *cred, struct msg *msgptr,
606     struct label *msglabel)
607 {
608 
609 	return (0);
610 }
611 
612 
613 static int
614 stub_check_sysv_msgrmid(struct ucred *cred, struct msg *msgptr,
615     struct label *msglabel)
616 {
617 
618 	return (0);
619 }
620 
621 
622 static int
623 stub_check_sysv_msqget(struct ucred *cred, struct msqid_kernel *msqkptr,
624     struct label *msqklabel)
625 {
626 
627 	return (0);
628 }
629 
630 
631 static int
632 stub_check_sysv_msqsnd(struct ucred *cred, struct msqid_kernel *msqkptr,
633     struct label *msqklabel)
634 {
635 
636 	return (0);
637 }
638 
639 static int
640 stub_check_sysv_msqrcv(struct ucred *cred, struct msqid_kernel *msqkptr,
641     struct label *msqklabel)
642 {
643 
644 	return (0);
645 }
646 
647 
648 static int
649 stub_check_sysv_msqctl(struct ucred *cred, struct msqid_kernel *msqkptr,
650     struct label *msqklabel, int cmd)
651 {
652 
653 	return (0);
654 }
655 
656 
657 static int
658 stub_check_sysv_semctl(struct ucred *cred, struct semid_kernel *semakptr,
659     struct label *semaklabel, int cmd)
660 {
661 
662 	return (0);
663 }
664 
665 static int
666 stub_check_sysv_semget(struct ucred *cred, struct semid_kernel *semakptr,
667     struct label *semaklabel)
668 {
669 
670 	return (0);
671 }
672 
673 
674 static int
675 stub_check_sysv_semop(struct ucred *cred, struct semid_kernel *semakptr,
676     struct label *semaklabel, size_t accesstype)
677 {
678 
679 	return (0);
680 }
681 
682 static int
683 stub_check_sysv_shmat(struct ucred *cred, struct shmid_kernel *shmsegptr,
684     struct label *shmseglabel, int shmflg)
685 {
686 
687 	return (0);
688 }
689 
690 static int
691 stub_check_sysv_shmctl(struct ucred *cred, struct shmid_kernel *shmsegptr,
692     struct label *shmseglabel, int cmd)
693 {
694 
695 	return (0);
696 }
697 
698 static int
699 stub_check_sysv_shmdt(struct ucred *cred, struct shmid_kernel *shmsegptr,
700     struct label *shmseglabel)
701 {
702 
703 	return (0);
704 }
705 
706 
707 static int
708 stub_check_sysv_shmget(struct ucred *cred, struct shmid_kernel *shmsegptr,
709     struct label *shmseglabel, int shmflg)
710 {
711 
712 	return (0);
713 }
714 
715 static int
716 stub_check_kenv_dump(struct ucred *cred)
717 {
718 
719 	return (0);
720 }
721 
722 static int
723 stub_check_kenv_get(struct ucred *cred, char *name)
724 {
725 
726 	return (0);
727 }
728 
729 static int
730 stub_check_kenv_set(struct ucred *cred, char *name, char *value)
731 {
732 
733 	return (0);
734 }
735 
736 static int
737 stub_check_kenv_unset(struct ucred *cred, char *name)
738 {
739 
740 	return (0);
741 }
742 
743 static int
744 stub_check_kld_load(struct ucred *cred, struct vnode *vp,
745     struct label *vlabel)
746 {
747 
748 	return (0);
749 }
750 
751 static int
752 stub_check_kld_stat(struct ucred *cred)
753 {
754 
755 	return (0);
756 }
757 
758 static int
759 stub_check_kld_unload(struct ucred *cred)
760 {
761 
762 	return (0);
763 }
764 
765 static int
766 stub_check_mount_stat(struct ucred *cred, struct mount *mp,
767     struct label *mntlabel)
768 {
769 
770 	return (0);
771 }
772 
773 static int
774 stub_check_pipe_ioctl(struct ucred *cred, struct pipepair *pp,
775     struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data)
776 {
777 
778 	return (0);
779 }
780 
781 static int
782 stub_check_pipe_poll(struct ucred *cred, struct pipepair *pp,
783     struct label *pipelabel)
784 {
785 
786 	return (0);
787 }
788 
789 static int
790 stub_check_pipe_read(struct ucred *cred, struct pipepair *pp,
791     struct label *pipelabel)
792 {
793 
794 	return (0);
795 }
796 
797 static int
798 stub_check_pipe_relabel(struct ucred *cred, struct pipepair *pp,
799     struct label *pipelabel, struct label *newlabel)
800 {
801 
802 	return (0);
803 }
804 
805 static int
806 stub_check_pipe_stat(struct ucred *cred, struct pipepair *pp,
807     struct label *pipelabel)
808 {
809 
810 	return (0);
811 }
812 
813 static int
814 stub_check_pipe_write(struct ucred *cred, struct pipepair *pp,
815     struct label *pipelabel)
816 {
817 
818 	return (0);
819 }
820 
821 static int
822 stub_check_posix_sem_destroy(struct ucred *cred, struct ksem *ksemptr,
823     struct label *ks_label)
824 {
825 
826 	return (0);
827 }
828 
829 static int
830 stub_check_posix_sem_getvalue(struct ucred *cred, struct ksem *ksemptr,
831     struct label *ks_label)
832 {
833 
834 	return (0);
835 }
836 
837 static int
838 stub_check_posix_sem_open(struct ucred *cred, struct ksem *ksemptr,
839     struct label *ks_label)
840 {
841 
842 	return (0);
843 }
844 
845 static int
846 stub_check_posix_sem_post(struct ucred *cred, struct ksem *ksemptr,
847     struct label *ks_label)
848 {
849 
850 	return (0);
851 }
852 
853 static int
854 stub_check_posix_sem_unlink(struct ucred *cred, struct ksem *ksemptr,
855     struct label *ks_label)
856 {
857 
858 	return (0);
859 }
860 
861 static int
862 stub_check_posix_sem_wait(struct ucred *cred, struct ksem *ksemptr,
863     struct label *ks_label)
864 {
865 
866 	return (0);
867 }
868 
869 static int
870 stub_check_proc_debug(struct ucred *cred, struct proc *proc)
871 {
872 
873 	return (0);
874 }
875 
876 static int
877 stub_check_proc_sched(struct ucred *cred, struct proc *proc)
878 {
879 
880 	return (0);
881 }
882 
883 static int
884 stub_check_proc_signal(struct ucred *cred, struct proc *proc, int signum)
885 {
886 
887 	return (0);
888 }
889 
890 static int
891 stub_check_proc_wait(struct ucred *cred, struct proc *proc)
892 {
893 
894 	return (0);
895 }
896 
897 static int
898 stub_check_proc_setuid(struct ucred *cred, uid_t uid)
899 {
900 
901 	return (0);
902 }
903 
904 static int
905 stub_check_proc_seteuid(struct ucred *cred, uid_t euid)
906 {
907 
908 	return (0);
909 }
910 
911 static int
912 stub_check_proc_setgid(struct ucred *cred, gid_t gid)
913 {
914 
915 	return (0);
916 }
917 
918 static int
919 stub_check_proc_setegid(struct ucred *cred, gid_t egid)
920 {
921 
922 	return (0);
923 }
924 
925 static int
926 stub_check_proc_setgroups(struct ucred *cred, int ngroups,
927 	gid_t *gidset)
928 {
929 
930 	return (0);
931 }
932 
933 static int
934 stub_check_proc_setreuid(struct ucred *cred, uid_t ruid, uid_t euid)
935 {
936 
937 	return (0);
938 }
939 
940 static int
941 stub_check_proc_setregid(struct ucred *cred, gid_t rgid, gid_t egid)
942 {
943 
944 	return (0);
945 }
946 
947 static int
948 stub_check_proc_setresuid(struct ucred *cred, uid_t ruid, uid_t euid,
949 	uid_t suid)
950 {
951 
952 	return (0);
953 }
954 
955 static int
956 stub_check_proc_setresgid(struct ucred *cred, gid_t rgid, gid_t egid,
957 	gid_t sgid)
958 {
959 
960 	return (0);
961 }
962 
963 static int
964 stub_check_socket_accept(struct ucred *cred, struct socket *socket,
965     struct label *socketlabel)
966 {
967 
968 	return (0);
969 }
970 
971 static int
972 stub_check_socket_bind(struct ucred *cred, struct socket *socket,
973     struct label *socketlabel, struct sockaddr *sockaddr)
974 {
975 
976 	return (0);
977 }
978 
979 static int
980 stub_check_socket_connect(struct ucred *cred, struct socket *socket,
981     struct label *socketlabel, struct sockaddr *sockaddr)
982 {
983 
984 	return (0);
985 }
986 
987 static int
988 stub_check_socket_create(struct ucred *cred, int domain, int type,
989     int protocol)
990 {
991 
992 	return (0);
993 }
994 
995 static int
996 stub_check_socket_deliver(struct socket *so, struct label *socketlabel,
997     struct mbuf *m, struct label *mbuflabel)
998 {
999 
1000 	return (0);
1001 }
1002 
1003 static int
1004 stub_check_socket_listen(struct ucred *cred, struct socket *so,
1005     struct label *socketlabel)
1006 {
1007 
1008 	return (0);
1009 }
1010 
1011 static int
1012 stub_check_socket_poll(struct ucred *cred, struct socket *so,
1013     struct label *socketlabel)
1014 {
1015 
1016 	return (0);
1017 }
1018 
1019 static int
1020 stub_check_socket_receive(struct ucred *cred, struct socket *so,
1021     struct label *socketlabel)
1022 {
1023 
1024 	return (0);
1025 }
1026 
1027 static int
1028 stub_check_socket_relabel(struct ucred *cred, struct socket *socket,
1029     struct label *socketlabel, struct label *newlabel)
1030 {
1031 
1032 	return (0);
1033 }
1034 static int
1035 stub_check_socket_send(struct ucred *cred, struct socket *so,
1036     struct label *socketlabel)
1037 {
1038 
1039 	return (0);
1040 }
1041 
1042 static int
1043 stub_check_socket_stat(struct ucred *cred, struct socket *so,
1044     struct label *socketlabel)
1045 {
1046 
1047 	return (0);
1048 }
1049 
1050 static int
1051 stub_check_socket_visible(struct ucred *cred, struct socket *socket,
1052    struct label *socketlabel)
1053 {
1054 
1055 	return (0);
1056 }
1057 
1058 static int
1059 stub_check_sysarch_ioperm(struct ucred *cred)
1060 {
1061 
1062 	return (0);
1063 }
1064 
1065 static int
1066 stub_check_system_acct(struct ucred *cred, struct vnode *vp,
1067     struct label *vlabel)
1068 {
1069 
1070 	return (0);
1071 }
1072 
1073 static int
1074 stub_check_system_reboot(struct ucred *cred, int how)
1075 {
1076 
1077 	return (0);
1078 }
1079 
1080 static int
1081 stub_check_system_settime(struct ucred *cred)
1082 {
1083 
1084 	return (0);
1085 }
1086 
1087 static int
1088 stub_check_system_swapon(struct ucred *cred, struct vnode *vp,
1089     struct label *label)
1090 {
1091 
1092 	return (0);
1093 }
1094 
1095 static int
1096 stub_check_system_swapoff(struct ucred *cred, struct vnode *vp,
1097     struct label *label)
1098 {
1099 
1100 	return (0);
1101 }
1102 
1103 static int
1104 stub_check_system_sysctl(struct ucred *cred, struct sysctl_oid *oidp,
1105     void *arg1, int arg2, struct sysctl_req *req)
1106 {
1107 
1108 	return (0);
1109 }
1110 
1111 static int
1112 stub_check_vnode_access(struct ucred *cred, struct vnode *vp,
1113     struct label *label, int acc_mode)
1114 {
1115 
1116 	return (0);
1117 }
1118 
1119 static int
1120 stub_check_vnode_chdir(struct ucred *cred, struct vnode *dvp,
1121     struct label *dlabel)
1122 {
1123 
1124 	return (0);
1125 }
1126 
1127 static int
1128 stub_check_vnode_chroot(struct ucred *cred, struct vnode *dvp,
1129     struct label *dlabel)
1130 {
1131 
1132 	return (0);
1133 }
1134 
1135 static int
1136 stub_check_vnode_create(struct ucred *cred, struct vnode *dvp,
1137     struct label *dlabel, struct componentname *cnp, struct vattr *vap)
1138 {
1139 
1140 	return (0);
1141 }
1142 
1143 static int
1144 stub_check_vnode_delete(struct ucred *cred, struct vnode *dvp,
1145     struct label *dlabel, struct vnode *vp, struct label *label,
1146     struct componentname *cnp)
1147 {
1148 
1149 	return (0);
1150 }
1151 
1152 static int
1153 stub_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp,
1154     struct label *label, acl_type_t type)
1155 {
1156 
1157 	return (0);
1158 }
1159 
1160 static int
1161 stub_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp,
1162     struct label *label, int attrnamespace, const char *name)
1163 {
1164 
1165 	return (0);
1166 }
1167 
1168 static int
1169 stub_check_vnode_exec(struct ucred *cred, struct vnode *vp,
1170     struct label *label, struct image_params *imgp,
1171     struct label *execlabel)
1172 {
1173 
1174 	return (0);
1175 }
1176 
1177 static int
1178 stub_check_vnode_getacl(struct ucred *cred, struct vnode *vp,
1179     struct label *label, acl_type_t type)
1180 {
1181 
1182 	return (0);
1183 }
1184 
1185 static int
1186 stub_check_vnode_getextattr(struct ucred *cred, struct vnode *vp,
1187     struct label *label, int attrnamespace, const char *name, struct uio *uio)
1188 {
1189 
1190 	return (0);
1191 }
1192 
1193 static int
1194 stub_check_vnode_link(struct ucred *cred, struct vnode *dvp,
1195     struct label *dlabel, struct vnode *vp, struct label *label,
1196     struct componentname *cnp)
1197 {
1198 
1199 	return (0);
1200 }
1201 
1202 static int
1203 stub_check_vnode_listextattr(struct ucred *cred, struct vnode *vp,
1204     struct label *label, int attrnamespace)
1205 {
1206 
1207 	return (0);
1208 }
1209 
1210 static int
1211 stub_check_vnode_lookup(struct ucred *cred, struct vnode *dvp,
1212     struct label *dlabel, struct componentname *cnp)
1213 {
1214 
1215 	return (0);
1216 }
1217 
1218 static int
1219 stub_check_vnode_mmap(struct ucred *cred, struct vnode *vp,
1220     struct label *label, int prot, int flags)
1221 {
1222 
1223 	return (0);
1224 }
1225 
1226 static int
1227 stub_check_vnode_open(struct ucred *cred, struct vnode *vp,
1228     struct label *filelabel, int acc_mode)
1229 {
1230 
1231 	return (0);
1232 }
1233 
1234 static int
1235 stub_check_vnode_poll(struct ucred *active_cred, struct ucred *file_cred,
1236     struct vnode *vp, struct label *label)
1237 {
1238 
1239 	return (0);
1240 }
1241 
1242 static int
1243 stub_check_vnode_read(struct ucred *active_cred, struct ucred *file_cred,
1244     struct vnode *vp, struct label *label)
1245 {
1246 
1247 	return (0);
1248 }
1249 
1250 static int
1251 stub_check_vnode_readdir(struct ucred *cred, struct vnode *vp,
1252     struct label *dlabel)
1253 {
1254 
1255 	return (0);
1256 }
1257 
1258 static int
1259 stub_check_vnode_readlink(struct ucred *cred, struct vnode *vp,
1260     struct label *vnodelabel)
1261 {
1262 
1263 	return (0);
1264 }
1265 
1266 static int
1267 stub_check_vnode_relabel(struct ucred *cred, struct vnode *vp,
1268     struct label *vnodelabel, struct label *newlabel)
1269 {
1270 
1271 	return (0);
1272 }
1273 
1274 static int
1275 stub_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp,
1276     struct label *dlabel, struct vnode *vp, struct label *label,
1277     struct componentname *cnp)
1278 {
1279 
1280 	return (0);
1281 }
1282 
1283 static int
1284 stub_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp,
1285     struct label *dlabel, struct vnode *vp, struct label *label, int samedir,
1286     struct componentname *cnp)
1287 {
1288 
1289 	return (0);
1290 }
1291 
1292 static int
1293 stub_check_vnode_revoke(struct ucred *cred, struct vnode *vp,
1294     struct label *label)
1295 {
1296 
1297 	return (0);
1298 }
1299 
1300 static int
1301 stub_check_vnode_setacl(struct ucred *cred, struct vnode *vp,
1302     struct label *label, acl_type_t type, struct acl *acl)
1303 {
1304 
1305 	return (0);
1306 }
1307 
1308 static int
1309 stub_check_vnode_setextattr(struct ucred *cred, struct vnode *vp,
1310     struct label *label, int attrnamespace, const char *name, struct uio *uio)
1311 {
1312 
1313 	return (0);
1314 }
1315 
1316 static int
1317 stub_check_vnode_setflags(struct ucred *cred, struct vnode *vp,
1318     struct label *label, u_long flags)
1319 {
1320 
1321 	return (0);
1322 }
1323 
1324 static int
1325 stub_check_vnode_setmode(struct ucred *cred, struct vnode *vp,
1326     struct label *label, mode_t mode)
1327 {
1328 
1329 	return (0);
1330 }
1331 
1332 static int
1333 stub_check_vnode_setowner(struct ucred *cred, struct vnode *vp,
1334     struct label *label, uid_t uid, gid_t gid)
1335 {
1336 
1337 	return (0);
1338 }
1339 
1340 static int
1341 stub_check_vnode_setutimes(struct ucred *cred, struct vnode *vp,
1342     struct label *label, struct timespec atime, struct timespec mtime)
1343 {
1344 
1345 	return (0);
1346 }
1347 
1348 static int
1349 stub_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred,
1350     struct vnode *vp, struct label *label)
1351 {
1352 
1353 	return (0);
1354 }
1355 
1356 static int
1357 stub_check_vnode_write(struct ucred *active_cred,
1358     struct ucred *file_cred, struct vnode *vp, struct label *label)
1359 {
1360 
1361 	return (0);
1362 }
1363 
1364 static int
1365 stub_priv_check(struct ucred *cred, int priv)
1366 {
1367 
1368 	return (0);
1369 }
1370 
1371 static int
1372 stub_priv_grant(struct ucred *cred, int priv)
1373 {
1374 
1375 	return (EPERM);
1376 }
1377 
1378 static struct mac_policy_ops mac_stub_ops =
1379 {
1380 	.mpo_destroy = stub_destroy,
1381 	.mpo_init = stub_init,
1382 	.mpo_syscall = stub_syscall,
1383 	.mpo_init_bpfdesc_label = stub_init_label,
1384 	.mpo_init_cred_label = stub_init_label,
1385 	.mpo_init_devfsdirent_label = stub_init_label,
1386 	.mpo_init_ifnet_label = stub_init_label,
1387 	.mpo_init_inpcb_label = stub_init_label_waitcheck,
1388 	.mpo_init_sysv_msgmsg_label = stub_init_label,
1389 	.mpo_init_sysv_msgqueue_label = stub_init_label,
1390 	.mpo_init_sysv_sem_label = stub_init_label,
1391 	.mpo_init_sysv_shm_label = stub_init_label,
1392 	.mpo_init_ipq_label = stub_init_label_waitcheck,
1393 	.mpo_init_mbuf_label = stub_init_label_waitcheck,
1394 	.mpo_init_mount_label = stub_init_label,
1395 	.mpo_init_mount_fs_label = stub_init_label,
1396 	.mpo_init_pipe_label = stub_init_label,
1397 	.mpo_init_posix_sem_label = stub_init_label,
1398 	.mpo_init_socket_label = stub_init_label_waitcheck,
1399 	.mpo_init_socket_peer_label = stub_init_label_waitcheck,
1400 	.mpo_init_vnode_label = stub_init_label,
1401 	.mpo_destroy_bpfdesc_label = stub_destroy_label,
1402 	.mpo_destroy_cred_label = stub_destroy_label,
1403 	.mpo_destroy_devfsdirent_label = stub_destroy_label,
1404 	.mpo_destroy_ifnet_label = stub_destroy_label,
1405 	.mpo_destroy_inpcb_label = stub_destroy_label,
1406 	.mpo_destroy_sysv_msgmsg_label = stub_destroy_label,
1407 	.mpo_destroy_sysv_msgqueue_label = stub_destroy_label,
1408 	.mpo_destroy_sysv_sem_label = stub_destroy_label,
1409 	.mpo_destroy_sysv_shm_label = stub_destroy_label,
1410 	.mpo_destroy_ipq_label = stub_destroy_label,
1411 	.mpo_destroy_mbuf_label = stub_destroy_label,
1412 	.mpo_destroy_mount_label = stub_destroy_label,
1413 	.mpo_destroy_mount_fs_label = stub_destroy_label,
1414 	.mpo_destroy_pipe_label = stub_destroy_label,
1415 	.mpo_destroy_posix_sem_label = stub_destroy_label,
1416 	.mpo_destroy_socket_label = stub_destroy_label,
1417 	.mpo_destroy_socket_peer_label = stub_destroy_label,
1418 	.mpo_destroy_vnode_label = stub_destroy_label,
1419 	.mpo_copy_cred_label = stub_copy_label,
1420 	.mpo_copy_ifnet_label = stub_copy_label,
1421 	.mpo_copy_mbuf_label = stub_copy_label,
1422 	.mpo_copy_pipe_label = stub_copy_label,
1423 	.mpo_copy_socket_label = stub_copy_label,
1424 	.mpo_copy_vnode_label = stub_copy_label,
1425 	.mpo_externalize_cred_label = stub_externalize_label,
1426 	.mpo_externalize_ifnet_label = stub_externalize_label,
1427 	.mpo_externalize_pipe_label = stub_externalize_label,
1428 	.mpo_externalize_socket_label = stub_externalize_label,
1429 	.mpo_externalize_socket_peer_label = stub_externalize_label,
1430 	.mpo_externalize_vnode_label = stub_externalize_label,
1431 	.mpo_internalize_cred_label = stub_internalize_label,
1432 	.mpo_internalize_ifnet_label = stub_internalize_label,
1433 	.mpo_internalize_pipe_label = stub_internalize_label,
1434 	.mpo_internalize_socket_label = stub_internalize_label,
1435 	.mpo_internalize_vnode_label = stub_internalize_label,
1436 	.mpo_associate_vnode_devfs = stub_associate_vnode_devfs,
1437 	.mpo_associate_vnode_extattr = stub_associate_vnode_extattr,
1438 	.mpo_associate_vnode_singlelabel = stub_associate_vnode_singlelabel,
1439 	.mpo_create_devfs_device = stub_create_devfs_device,
1440 	.mpo_create_devfs_directory = stub_create_devfs_directory,
1441 	.mpo_create_devfs_symlink = stub_create_devfs_symlink,
1442 	.mpo_create_sysv_msgmsg = stub_create_sysv_msgmsg,
1443 	.mpo_create_sysv_msgqueue = stub_create_sysv_msgqueue,
1444 	.mpo_create_sysv_sem = stub_create_sysv_sem,
1445 	.mpo_create_sysv_shm = stub_create_sysv_shm,
1446 	.mpo_create_vnode_extattr = stub_create_vnode_extattr,
1447 	.mpo_create_mount = stub_create_mount,
1448 	.mpo_relabel_vnode = stub_relabel_vnode,
1449 	.mpo_setlabel_vnode_extattr = stub_setlabel_vnode_extattr,
1450 	.mpo_update_devfsdirent = stub_update_devfsdirent,
1451 	.mpo_create_mbuf_from_socket = stub_create_mbuf_from_socket,
1452 	.mpo_create_pipe = stub_create_pipe,
1453 	.mpo_create_posix_sem = stub_create_posix_sem,
1454 	.mpo_create_socket = stub_create_socket,
1455 	.mpo_create_socket_from_socket = stub_create_socket_from_socket,
1456 	.mpo_relabel_pipe = stub_relabel_pipe,
1457 	.mpo_relabel_socket = stub_relabel_socket,
1458 	.mpo_set_socket_peer_from_mbuf = stub_set_socket_peer_from_mbuf,
1459 	.mpo_set_socket_peer_from_socket = stub_set_socket_peer_from_socket,
1460 	.mpo_create_bpfdesc = stub_create_bpfdesc,
1461 	.mpo_create_ifnet = stub_create_ifnet,
1462 	.mpo_create_inpcb_from_socket = stub_create_inpcb_from_socket,
1463 	.mpo_create_ipq = stub_create_ipq,
1464 	.mpo_create_datagram_from_ipq = stub_create_datagram_from_ipq,
1465 	.mpo_create_fragment = stub_create_fragment,
1466 	.mpo_create_mbuf_from_inpcb = stub_create_mbuf_from_inpcb,
1467 	.mpo_create_mbuf_linklayer = stub_create_mbuf_linklayer,
1468 	.mpo_create_mbuf_from_bpfdesc = stub_create_mbuf_from_bpfdesc,
1469 	.mpo_create_mbuf_from_ifnet = stub_create_mbuf_from_ifnet,
1470 	.mpo_create_mbuf_multicast_encap = stub_create_mbuf_multicast_encap,
1471 	.mpo_create_mbuf_netlayer = stub_create_mbuf_netlayer,
1472 	.mpo_fragment_match = stub_fragment_match,
1473 	.mpo_reflect_mbuf_icmp = stub_reflect_mbuf_icmp,
1474 	.mpo_reflect_mbuf_tcp = stub_reflect_mbuf_tcp,
1475 	.mpo_relabel_ifnet = stub_relabel_ifnet,
1476 	.mpo_update_ipq = stub_update_ipq,
1477 	.mpo_inpcb_sosetlabel = stub_inpcb_sosetlabel,
1478 	.mpo_execve_transition = stub_execve_transition,
1479 	.mpo_execve_will_transition = stub_execve_will_transition,
1480 	.mpo_create_proc0 = stub_create_proc0,
1481 	.mpo_create_proc1 = stub_create_proc1,
1482 	.mpo_relabel_cred = stub_relabel_cred,
1483 	.mpo_thread_userret = stub_thread_userret,
1484 	.mpo_cleanup_sysv_msgmsg = stub_cleanup_sysv_msgmsg,
1485 	.mpo_cleanup_sysv_msgqueue = stub_cleanup_sysv_msgqueue,
1486 	.mpo_cleanup_sysv_sem = stub_cleanup_sysv_sem,
1487 	.mpo_cleanup_sysv_shm = stub_cleanup_sysv_shm,
1488 	.mpo_check_bpfdesc_receive = stub_check_bpfdesc_receive,
1489 	.mpo_check_cred_relabel = stub_check_cred_relabel,
1490 	.mpo_check_cred_visible = stub_check_cred_visible,
1491 	.mpo_check_ifnet_relabel = stub_check_ifnet_relabel,
1492 	.mpo_check_ifnet_transmit = stub_check_ifnet_transmit,
1493 	.mpo_check_inpcb_deliver = stub_check_inpcb_deliver,
1494 	.mpo_check_sysv_msgmsq = stub_check_sysv_msgmsq,
1495 	.mpo_check_sysv_msgrcv = stub_check_sysv_msgrcv,
1496 	.mpo_check_sysv_msgrmid = stub_check_sysv_msgrmid,
1497 	.mpo_check_sysv_msqget = stub_check_sysv_msqget,
1498 	.mpo_check_sysv_msqsnd = stub_check_sysv_msqsnd,
1499 	.mpo_check_sysv_msqrcv = stub_check_sysv_msqrcv,
1500 	.mpo_check_sysv_msqctl = stub_check_sysv_msqctl,
1501 	.mpo_check_sysv_semctl = stub_check_sysv_semctl,
1502 	.mpo_check_sysv_semget = stub_check_sysv_semget,
1503 	.mpo_check_sysv_semop = stub_check_sysv_semop,
1504 	.mpo_check_sysv_shmat = stub_check_sysv_shmat,
1505 	.mpo_check_sysv_shmctl = stub_check_sysv_shmctl,
1506 	.mpo_check_sysv_shmdt = stub_check_sysv_shmdt,
1507 	.mpo_check_sysv_shmget = stub_check_sysv_shmget,
1508 	.mpo_check_kenv_dump = stub_check_kenv_dump,
1509 	.mpo_check_kenv_get = stub_check_kenv_get,
1510 	.mpo_check_kenv_set = stub_check_kenv_set,
1511 	.mpo_check_kenv_unset = stub_check_kenv_unset,
1512 	.mpo_check_kld_load = stub_check_kld_load,
1513 	.mpo_check_kld_stat = stub_check_kld_stat,
1514 	.mpo_check_kld_unload = stub_check_kld_unload,
1515 	.mpo_check_mount_stat = stub_check_mount_stat,
1516 	.mpo_check_pipe_ioctl = stub_check_pipe_ioctl,
1517 	.mpo_check_pipe_poll = stub_check_pipe_poll,
1518 	.mpo_check_pipe_read = stub_check_pipe_read,
1519 	.mpo_check_pipe_relabel = stub_check_pipe_relabel,
1520 	.mpo_check_pipe_stat = stub_check_pipe_stat,
1521 	.mpo_check_pipe_write = stub_check_pipe_write,
1522 	.mpo_check_posix_sem_destroy = stub_check_posix_sem_destroy,
1523 	.mpo_check_posix_sem_getvalue = stub_check_posix_sem_getvalue,
1524 	.mpo_check_posix_sem_open = stub_check_posix_sem_open,
1525 	.mpo_check_posix_sem_post = stub_check_posix_sem_post,
1526 	.mpo_check_posix_sem_unlink = stub_check_posix_sem_unlink,
1527 	.mpo_check_posix_sem_wait = stub_check_posix_sem_wait,
1528 	.mpo_check_proc_debug = stub_check_proc_debug,
1529 	.mpo_check_proc_sched = stub_check_proc_sched,
1530 	.mpo_check_proc_setuid = stub_check_proc_setuid,
1531 	.mpo_check_proc_seteuid = stub_check_proc_seteuid,
1532 	.mpo_check_proc_setgid = stub_check_proc_setgid,
1533 	.mpo_check_proc_setegid = stub_check_proc_setegid,
1534 	.mpo_check_proc_setgroups = stub_check_proc_setgroups,
1535 	.mpo_check_proc_setreuid = stub_check_proc_setreuid,
1536 	.mpo_check_proc_setregid = stub_check_proc_setregid,
1537 	.mpo_check_proc_setresuid = stub_check_proc_setresuid,
1538 	.mpo_check_proc_setresgid = stub_check_proc_setresgid,
1539 	.mpo_check_proc_signal = stub_check_proc_signal,
1540 	.mpo_check_proc_wait = stub_check_proc_wait,
1541 	.mpo_check_socket_accept = stub_check_socket_accept,
1542 	.mpo_check_socket_bind = stub_check_socket_bind,
1543 	.mpo_check_socket_connect = stub_check_socket_connect,
1544 	.mpo_check_socket_create = stub_check_socket_create,
1545 	.mpo_check_socket_deliver = stub_check_socket_deliver,
1546 	.mpo_check_socket_listen = stub_check_socket_listen,
1547 	.mpo_check_socket_poll = stub_check_socket_poll,
1548 	.mpo_check_socket_receive = stub_check_socket_receive,
1549 	.mpo_check_socket_relabel = stub_check_socket_relabel,
1550 	.mpo_check_socket_send = stub_check_socket_send,
1551 	.mpo_check_socket_stat = stub_check_socket_stat,
1552 	.mpo_check_socket_visible = stub_check_socket_visible,
1553 	.mpo_check_sysarch_ioperm = stub_check_sysarch_ioperm,
1554 	.mpo_check_system_acct = stub_check_system_acct,
1555 	.mpo_check_system_reboot = stub_check_system_reboot,
1556 	.mpo_check_system_settime = stub_check_system_settime,
1557 	.mpo_check_system_swapon = stub_check_system_swapon,
1558 	.mpo_check_system_swapoff = stub_check_system_swapoff,
1559 	.mpo_check_system_sysctl = stub_check_system_sysctl,
1560 	.mpo_check_vnode_access = stub_check_vnode_access,
1561 	.mpo_check_vnode_chdir = stub_check_vnode_chdir,
1562 	.mpo_check_vnode_chroot = stub_check_vnode_chroot,
1563 	.mpo_check_vnode_create = stub_check_vnode_create,
1564 	.mpo_check_vnode_delete = stub_check_vnode_delete,
1565 	.mpo_check_vnode_deleteacl = stub_check_vnode_deleteacl,
1566 	.mpo_check_vnode_deleteextattr = stub_check_vnode_deleteextattr,
1567 	.mpo_check_vnode_exec = stub_check_vnode_exec,
1568 	.mpo_check_vnode_getacl = stub_check_vnode_getacl,
1569 	.mpo_check_vnode_getextattr = stub_check_vnode_getextattr,
1570 	.mpo_check_vnode_link = stub_check_vnode_link,
1571 	.mpo_check_vnode_listextattr = stub_check_vnode_listextattr,
1572 	.mpo_check_vnode_lookup = stub_check_vnode_lookup,
1573 	.mpo_check_vnode_mmap = stub_check_vnode_mmap,
1574 	.mpo_check_vnode_open = stub_check_vnode_open,
1575 	.mpo_check_vnode_poll = stub_check_vnode_poll,
1576 	.mpo_check_vnode_read = stub_check_vnode_read,
1577 	.mpo_check_vnode_readdir = stub_check_vnode_readdir,
1578 	.mpo_check_vnode_readlink = stub_check_vnode_readlink,
1579 	.mpo_check_vnode_relabel = stub_check_vnode_relabel,
1580 	.mpo_check_vnode_rename_from = stub_check_vnode_rename_from,
1581 	.mpo_check_vnode_rename_to = stub_check_vnode_rename_to,
1582 	.mpo_check_vnode_revoke = stub_check_vnode_revoke,
1583 	.mpo_check_vnode_setacl = stub_check_vnode_setacl,
1584 	.mpo_check_vnode_setextattr = stub_check_vnode_setextattr,
1585 	.mpo_check_vnode_setflags = stub_check_vnode_setflags,
1586 	.mpo_check_vnode_setmode = stub_check_vnode_setmode,
1587 	.mpo_check_vnode_setowner = stub_check_vnode_setowner,
1588 	.mpo_check_vnode_setutimes = stub_check_vnode_setutimes,
1589 	.mpo_check_vnode_stat = stub_check_vnode_stat,
1590 	.mpo_check_vnode_write = stub_check_vnode_write,
1591 	.mpo_priv_check = stub_priv_check,
1592 	.mpo_priv_grant = stub_priv_grant,
1593 };
1594 
1595 MAC_POLICY_SET(&mac_stub_ops, mac_stub, "TrustedBSD MAC/Stub",
1596     MPC_LOADTIME_FLAG_UNLOADOK, NULL);
1597