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