mac_stub.c revision 165715
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: head/sys/security/mac_stub/mac_stub.c 165715 2007-01-01 01:47:18Z csjp $
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
87SYSCTL_DECL(_security_mac);
88
89SYSCTL_NODE(_security_mac, OID_AUTO, stub, CTLFLAG_RW, 0,
90    "TrustedBSD mac_stub policy controls");
91
92static int	stub_enabled = 1;
93SYSCTL_INT(_security_mac_stub, OID_AUTO, enabled, CTLFLAG_RW,
94    &stub_enabled, 0, "Enforce mac_stub policy");
95
96/*
97 * Policy module operations.
98 */
99static void
100stub_destroy(struct mac_policy_conf *conf)
101{
102
103}
104
105static void
106stub_init(struct mac_policy_conf *conf)
107{
108
109}
110
111static int
112stub_syscall(struct thread *td, int call, void *arg)
113{
114
115	return (0);
116}
117
118/*
119 * Label operations.
120 */
121static void
122stub_init_label(struct label *label)
123{
124
125}
126
127static int
128stub_init_label_waitcheck(struct label *label, int flag)
129{
130
131	return (0);
132}
133
134static void
135stub_destroy_label(struct label *label)
136{
137
138}
139
140static void
141stub_copy_label(struct label *src, struct label *dest)
142{
143
144}
145
146static int
147stub_externalize_label(struct label *label, char *element_name,
148    struct sbuf *sb, int *claimed)
149{
150
151	return (0);
152}
153
154static int
155stub_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 */
166static void
167stub_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
174static int
175stub_associate_vnode_extattr(struct mount *mp, struct label *fslabel,
176    struct vnode *vp, struct label *vlabel)
177{
178
179	return (0);
180}
181
182static void
183stub_associate_vnode_singlelabel(struct mount *mp,
184    struct label *fslabel, struct vnode *vp, struct label *vlabel)
185{
186
187}
188
189static void
190stub_associate_nfsd_label(struct ucred *cred)
191{
192
193}
194
195static void
196stub_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
202static void
203stub_create_devfs_directory(struct mount *mp, char *dirname,
204    int dirnamelen, struct devfs_dirent *devfs_dirent, struct label *label)
205{
206
207}
208
209static void
210stub_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
217static int
218stub_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
226static void
227stub_create_mount(struct ucred *cred, struct mount *mp,
228    struct label *mntlabel, struct label *fslabel)
229{
230
231}
232
233static void
234stub_relabel_vnode(struct ucred *cred, struct vnode *vp,
235    struct label *vnodelabel, struct label *label)
236{
237
238}
239
240static int
241stub_setlabel_vnode_extattr(struct ucred *cred, struct vnode *vp,
242    struct label *vlabel, struct label *intlabel)
243{
244
245	return (0);
246}
247
248static void
249stub_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 */
259static void
260stub_create_mbuf_from_socket(struct socket *so, struct label *socketlabel,
261    struct mbuf *m, struct label *mbuflabel)
262{
263
264}
265
266static void
267stub_create_socket(struct ucred *cred, struct socket *socket,
268    struct label *socketlabel)
269{
270
271}
272
273static void
274stub_create_pipe(struct ucred *cred, struct pipepair *pp,
275    struct label *pipelabel)
276{
277
278}
279
280static void
281stub_create_posix_sem(struct ucred *cred, struct ksem *ksemptr,
282    struct label *ks_label)
283{
284
285}
286
287static void
288stub_create_socket_from_socket(struct socket *oldsocket,
289    struct label *oldsocketlabel, struct socket *newsocket,
290    struct label *newsocketlabel)
291{
292
293}
294
295static void
296stub_relabel_socket(struct ucred *cred, struct socket *socket,
297    struct label *socketlabel, struct label *newlabel)
298{
299
300}
301
302static void
303stub_relabel_pipe(struct ucred *cred, struct pipepair *pp,
304    struct label *pipelabel, struct label *newlabel)
305{
306
307}
308
309static void
310stub_set_socket_peer_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel,
311    struct socket *socket, struct label *socketpeerlabel)
312{
313
314}
315
316static void
317stub_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 */
327static void
328stub_create_bpfdesc(struct ucred *cred, struct bpf_d *bpf_d,
329    struct label *bpflabel)
330{
331
332}
333
334static void
335stub_create_datagram_from_ipq(struct ipq *ipq, struct label *ipqlabel,
336    struct mbuf *datagram, struct label *datagramlabel)
337{
338
339}
340
341static void
342stub_create_fragment(struct mbuf *datagram, struct label *datagramlabel,
343    struct mbuf *fragment, struct label *fragmentlabel)
344{
345
346}
347
348static void
349stub_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel)
350{
351
352}
353
354static void
355stub_create_inpcb_from_socket(struct socket *so, struct label *solabel,
356    struct inpcb *inp, struct label *inplabel)
357{
358
359}
360
361static void
362stub_init_syncache_from_inpcb(struct label *label, struct inpcb *inp)
363{
364
365}
366
367static void
368stub_create_sysv_msgmsg(struct ucred *cred, struct msqid_kernel *msqkptr,
369    struct label *msqlabel, struct msg *msgptr, struct label *msglabel)
370{
371
372}
373
374static void
375stub_create_sysv_msgqueue(struct ucred *cred, struct msqid_kernel *msqkptr,
376    struct label *msqlabel)
377{
378
379}
380
381static void
382stub_create_sysv_sem(struct ucred *cred, struct semid_kernel *semakptr,
383    struct label *semalabel)
384{
385
386}
387
388static void
389stub_create_sysv_shm(struct ucred *cred, struct shmid_kernel *shmsegptr,
390    struct label *shmalabel)
391{
392
393}
394
395static void
396stub_create_ipq(struct mbuf *fragment, struct label *fragmentlabel,
397    struct ipq *ipq, struct label *ipqlabel)
398{
399
400}
401
402static void
403stub_create_mbuf_from_inpcb(struct inpcb *inp, struct label *inplabel,
404    struct mbuf *m, struct label *mlabel)
405{
406
407}
408
409static void
410stub_create_mbuf_from_syncache(struct label *sc_label, struct mbuf *m,
411
412    struct label *mbuf_label)
413{
414
415}
416
417static void
418stub_create_mbuf_linklayer(struct ifnet *ifnet, struct label *ifnetlabel,
419    struct mbuf *mbuf, struct label *mbuflabel)
420{
421
422}
423
424static void
425stub_create_mbuf_from_bpfdesc(struct bpf_d *bpf_d, struct label *bpflabel,
426    struct mbuf *mbuf, struct label *mbuflabel)
427{
428
429}
430
431static void
432stub_create_mbuf_from_ifnet(struct ifnet *ifnet, struct label *ifnetlabel,
433    struct mbuf *m, struct label *mbuflabel)
434{
435
436}
437
438static void
439stub_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
446static void
447stub_create_mbuf_netlayer(struct mbuf *oldmbuf,
448    struct label *oldmbuflabel, struct mbuf *newmbuf, struct label *newmbuflabel)
449{
450
451}
452
453static void
454stub_create_mbuf_from_firewall(struct mbuf *m, struct label *label)
455{
456
457}
458
459static int
460stub_fragment_match(struct mbuf *fragment, struct label *fragmentlabel,
461    struct ipq *ipq, struct label *ipqlabel)
462{
463
464	return (1);
465}
466
467static void
468stub_reflect_mbuf_icmp(struct mbuf *m, struct label *mlabel)
469{
470
471}
472
473static void
474stub_reflect_mbuf_tcp(struct mbuf *m, struct label *mlabel)
475{
476
477}
478
479static void
480stub_relabel_ifnet(struct ucred *cred, struct ifnet *ifnet,
481    struct label *ifnetlabel, struct label *newlabel)
482{
483
484}
485
486static void
487stub_update_ipq(struct mbuf *fragment, struct label *fragmentlabel,
488    struct ipq *ipq, struct label *ipqlabel)
489{
490
491}
492
493static void
494stub_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 */
503static void
504stub_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
512static int
513stub_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
521static void
522stub_create_proc0(struct ucred *cred)
523{
524
525}
526
527static void
528stub_create_proc1(struct ucred *cred)
529{
530
531}
532
533static void
534stub_relabel_cred(struct ucred *cred, struct label *newlabel)
535{
536
537}
538
539static void
540stub_thread_userret(struct thread *td)
541{
542
543}
544
545/*
546 * Label cleanup/flush operations
547 */
548static void
549stub_cleanup_sysv_msgmsg(struct label *msglabel)
550{
551
552}
553
554static void
555stub_cleanup_sysv_msgqueue(struct label *msqlabel)
556{
557
558}
559
560static void
561stub_cleanup_sysv_sem(struct label *semalabel)
562{
563
564}
565
566static void
567stub_cleanup_sysv_shm(struct label *shmlabel)
568{
569
570}
571
572/*
573 * Access control checks.
574 */
575static int
576stub_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
583static int
584stub_check_cred_relabel(struct ucred *cred, struct label *newlabel)
585{
586
587	return (0);
588}
589
590static int
591stub_check_cred_visible(struct ucred *u1, struct ucred *u2)
592{
593
594	return (0);
595}
596
597static int
598stub_check_ifnet_relabel(struct ucred *cred, struct ifnet *ifnet,
599    struct label *ifnetlabel, struct label *newlabel)
600{
601
602	return (0);
603}
604
605static int
606stub_check_ifnet_transmit(struct ifnet *ifnet, struct label *ifnetlabel,
607    struct mbuf *m, struct label *mbuflabel)
608{
609
610	return (0);
611}
612
613static int
614stub_check_inpcb_deliver(struct inpcb *inp, struct label *inplabel,
615    struct mbuf *m, struct label *mlabel)
616{
617
618	return (0);
619}
620
621static int
622stub_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
630static int
631stub_check_sysv_msgrcv(struct ucred *cred, struct msg *msgptr,
632    struct label *msglabel)
633{
634
635	return (0);
636}
637
638
639static int
640stub_check_sysv_msgrmid(struct ucred *cred, struct msg *msgptr,
641    struct label *msglabel)
642{
643
644	return (0);
645}
646
647
648static int
649stub_check_sysv_msqget(struct ucred *cred, struct msqid_kernel *msqkptr,
650    struct label *msqklabel)
651{
652
653	return (0);
654}
655
656
657static int
658stub_check_sysv_msqsnd(struct ucred *cred, struct msqid_kernel *msqkptr,
659    struct label *msqklabel)
660{
661
662	return (0);
663}
664
665static int
666stub_check_sysv_msqrcv(struct ucred *cred, struct msqid_kernel *msqkptr,
667    struct label *msqklabel)
668{
669
670	return (0);
671}
672
673
674static int
675stub_check_sysv_msqctl(struct ucred *cred, struct msqid_kernel *msqkptr,
676    struct label *msqklabel, int cmd)
677{
678
679	return (0);
680}
681
682
683static int
684stub_check_sysv_semctl(struct ucred *cred, struct semid_kernel *semakptr,
685    struct label *semaklabel, int cmd)
686{
687
688	return (0);
689}
690
691static int
692stub_check_sysv_semget(struct ucred *cred, struct semid_kernel *semakptr,
693    struct label *semaklabel)
694{
695
696	return (0);
697}
698
699
700static int
701stub_check_sysv_semop(struct ucred *cred, struct semid_kernel *semakptr,
702    struct label *semaklabel, size_t accesstype)
703{
704
705	return (0);
706}
707
708static int
709stub_check_sysv_shmat(struct ucred *cred, struct shmid_kernel *shmsegptr,
710    struct label *shmseglabel, int shmflg)
711{
712
713	return (0);
714}
715
716static int
717stub_check_sysv_shmctl(struct ucred *cred, struct shmid_kernel *shmsegptr,
718    struct label *shmseglabel, int cmd)
719{
720
721	return (0);
722}
723
724static int
725stub_check_sysv_shmdt(struct ucred *cred, struct shmid_kernel *shmsegptr,
726    struct label *shmseglabel)
727{
728
729	return (0);
730}
731
732
733static int
734stub_check_sysv_shmget(struct ucred *cred, struct shmid_kernel *shmsegptr,
735    struct label *shmseglabel, int shmflg)
736{
737
738	return (0);
739}
740
741static int
742stub_check_kenv_dump(struct ucred *cred)
743{
744
745	return (0);
746}
747
748static int
749stub_check_kenv_get(struct ucred *cred, char *name)
750{
751
752	return (0);
753}
754
755static int
756stub_check_kenv_set(struct ucred *cred, char *name, char *value)
757{
758
759	return (0);
760}
761
762static int
763stub_check_kenv_unset(struct ucred *cred, char *name)
764{
765
766	return (0);
767}
768
769static int
770stub_check_kld_load(struct ucred *cred, struct vnode *vp,
771    struct label *vlabel)
772{
773
774	return (0);
775}
776
777static int
778stub_check_kld_stat(struct ucred *cred)
779{
780
781	return (0);
782}
783
784static int
785stub_check_kld_unload(struct ucred *cred)
786{
787
788	return (0);
789}
790
791static int
792stub_check_mount_stat(struct ucred *cred, struct mount *mp,
793    struct label *mntlabel)
794{
795
796	return (0);
797}
798
799static int
800stub_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
807static int
808stub_check_pipe_poll(struct ucred *cred, struct pipepair *pp,
809    struct label *pipelabel)
810{
811
812	return (0);
813}
814
815static int
816stub_check_pipe_read(struct ucred *cred, struct pipepair *pp,
817    struct label *pipelabel)
818{
819
820	return (0);
821}
822
823static int
824stub_check_pipe_relabel(struct ucred *cred, struct pipepair *pp,
825    struct label *pipelabel, struct label *newlabel)
826{
827
828	return (0);
829}
830
831static int
832stub_check_pipe_stat(struct ucred *cred, struct pipepair *pp,
833    struct label *pipelabel)
834{
835
836	return (0);
837}
838
839static int
840stub_check_pipe_write(struct ucred *cred, struct pipepair *pp,
841    struct label *pipelabel)
842{
843
844	return (0);
845}
846
847static int
848stub_check_posix_sem_destroy(struct ucred *cred, struct ksem *ksemptr,
849    struct label *ks_label)
850{
851
852	return (0);
853}
854
855static int
856stub_check_posix_sem_getvalue(struct ucred *cred, struct ksem *ksemptr,
857    struct label *ks_label)
858{
859
860	return (0);
861}
862
863static int
864stub_check_posix_sem_open(struct ucred *cred, struct ksem *ksemptr,
865    struct label *ks_label)
866{
867
868	return (0);
869}
870
871static int
872stub_check_posix_sem_post(struct ucred *cred, struct ksem *ksemptr,
873    struct label *ks_label)
874{
875
876	return (0);
877}
878
879static int
880stub_check_posix_sem_unlink(struct ucred *cred, struct ksem *ksemptr,
881    struct label *ks_label)
882{
883
884	return (0);
885}
886
887static int
888stub_check_posix_sem_wait(struct ucred *cred, struct ksem *ksemptr,
889    struct label *ks_label)
890{
891
892	return (0);
893}
894
895static int
896stub_check_proc_debug(struct ucred *cred, struct proc *proc)
897{
898
899	return (0);
900}
901
902static int
903stub_check_proc_sched(struct ucred *cred, struct proc *proc)
904{
905
906	return (0);
907}
908
909static int
910stub_check_proc_signal(struct ucred *cred, struct proc *proc, int signum)
911{
912
913	return (0);
914}
915
916static int
917stub_check_proc_wait(struct ucred *cred, struct proc *proc)
918{
919
920	return (0);
921}
922
923static int
924stub_check_proc_setuid(struct ucred *cred, uid_t uid)
925{
926
927	return (0);
928}
929
930static int
931stub_check_proc_seteuid(struct ucred *cred, uid_t euid)
932{
933
934	return (0);
935}
936
937static int
938stub_check_proc_setgid(struct ucred *cred, gid_t gid)
939{
940
941	return (0);
942}
943
944static int
945stub_check_proc_setegid(struct ucred *cred, gid_t egid)
946{
947
948	return (0);
949}
950
951static int
952stub_check_proc_setgroups(struct ucred *cred, int ngroups,
953	gid_t *gidset)
954{
955
956	return (0);
957}
958
959static int
960stub_check_proc_setreuid(struct ucred *cred, uid_t ruid, uid_t euid)
961{
962
963	return (0);
964}
965
966static int
967stub_check_proc_setregid(struct ucred *cred, gid_t rgid, gid_t egid)
968{
969
970	return (0);
971}
972
973static int
974stub_check_proc_setresuid(struct ucred *cred, uid_t ruid, uid_t euid,
975	uid_t suid)
976{
977
978	return (0);
979}
980
981static int
982stub_check_proc_setresgid(struct ucred *cred, gid_t rgid, gid_t egid,
983	gid_t sgid)
984{
985
986	return (0);
987}
988
989static int
990stub_check_socket_accept(struct ucred *cred, struct socket *socket,
991    struct label *socketlabel)
992{
993
994	return (0);
995}
996
997static int
998stub_check_socket_bind(struct ucred *cred, struct socket *socket,
999    struct label *socketlabel, struct sockaddr *sockaddr)
1000{
1001
1002	return (0);
1003}
1004
1005static int
1006stub_check_socket_connect(struct ucred *cred, struct socket *socket,
1007    struct label *socketlabel, struct sockaddr *sockaddr)
1008{
1009
1010	return (0);
1011}
1012
1013static int
1014stub_check_socket_create(struct ucred *cred, int domain, int type,
1015    int protocol)
1016{
1017
1018	return (0);
1019}
1020
1021static int
1022stub_check_socket_deliver(struct socket *so, struct label *socketlabel,
1023    struct mbuf *m, struct label *mbuflabel)
1024{
1025
1026	return (0);
1027}
1028
1029static int
1030stub_check_socket_listen(struct ucred *cred, struct socket *so,
1031    struct label *socketlabel)
1032{
1033
1034	return (0);
1035}
1036
1037static int
1038stub_check_socket_poll(struct ucred *cred, struct socket *so,
1039    struct label *socketlabel)
1040{
1041
1042	return (0);
1043}
1044
1045static int
1046stub_check_socket_receive(struct ucred *cred, struct socket *so,
1047    struct label *socketlabel)
1048{
1049
1050	return (0);
1051}
1052
1053static int
1054stub_check_socket_relabel(struct ucred *cred, struct socket *socket,
1055    struct label *socketlabel, struct label *newlabel)
1056{
1057
1058	return (0);
1059}
1060static int
1061stub_check_socket_send(struct ucred *cred, struct socket *so,
1062    struct label *socketlabel)
1063{
1064
1065	return (0);
1066}
1067
1068static int
1069stub_check_socket_stat(struct ucred *cred, struct socket *so,
1070    struct label *socketlabel)
1071{
1072
1073	return (0);
1074}
1075
1076static int
1077stub_check_socket_visible(struct ucred *cred, struct socket *socket,
1078   struct label *socketlabel)
1079{
1080
1081	return (0);
1082}
1083
1084static int
1085stub_check_sysarch_ioperm(struct ucred *cred)
1086{
1087
1088	return (0);
1089}
1090
1091static int
1092stub_check_system_acct(struct ucred *cred, struct vnode *vp,
1093    struct label *vlabel)
1094{
1095
1096	return (0);
1097}
1098
1099static int
1100stub_check_system_nfsd(struct ucred *cred)
1101{
1102
1103	return (0);
1104}
1105
1106static int
1107stub_check_system_reboot(struct ucred *cred, int how)
1108{
1109
1110	return (0);
1111}
1112
1113static int
1114stub_check_system_settime(struct ucred *cred)
1115{
1116
1117	return (0);
1118}
1119
1120static int
1121stub_check_system_swapon(struct ucred *cred, struct vnode *vp,
1122    struct label *label)
1123{
1124
1125	return (0);
1126}
1127
1128static int
1129stub_check_system_swapoff(struct ucred *cred, struct vnode *vp,
1130    struct label *label)
1131{
1132
1133	return (0);
1134}
1135
1136static int
1137stub_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
1144static int
1145stub_check_vnode_access(struct ucred *cred, struct vnode *vp,
1146    struct label *label, int acc_mode)
1147{
1148
1149	return (0);
1150}
1151
1152static int
1153stub_check_vnode_chdir(struct ucred *cred, struct vnode *dvp,
1154    struct label *dlabel)
1155{
1156
1157	return (0);
1158}
1159
1160static int
1161stub_check_vnode_chroot(struct ucred *cred, struct vnode *dvp,
1162    struct label *dlabel)
1163{
1164
1165	return (0);
1166}
1167
1168static int
1169stub_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
1176static int
1177stub_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
1185static int
1186stub_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp,
1187    struct label *label, acl_type_t type)
1188{
1189
1190	return (0);
1191}
1192
1193static int
1194stub_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
1201static int
1202stub_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
1210static int
1211stub_check_vnode_getacl(struct ucred *cred, struct vnode *vp,
1212    struct label *label, acl_type_t type)
1213{
1214
1215	return (0);
1216}
1217
1218static int
1219stub_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
1226static int
1227stub_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
1235static int
1236stub_check_vnode_listextattr(struct ucred *cred, struct vnode *vp,
1237    struct label *label, int attrnamespace)
1238{
1239
1240	return (0);
1241}
1242
1243static int
1244stub_check_vnode_lookup(struct ucred *cred, struct vnode *dvp,
1245    struct label *dlabel, struct componentname *cnp)
1246{
1247
1248	return (0);
1249}
1250
1251static int
1252stub_check_vnode_mmap(struct ucred *cred, struct vnode *vp,
1253    struct label *label, int prot, int flags)
1254{
1255
1256	return (0);
1257}
1258
1259static void
1260stub_check_vnode_mmap_downgrade(struct ucred *cred,
1261    struct vnode *vp, struct label *label, int *prot)
1262{
1263
1264}
1265
1266static int
1267stub_check_vnode_mprotect(struct ucred *cred,
1268    struct vnode *vp, struct label *label, int prot)
1269{
1270
1271	return (0);
1272}
1273
1274static int
1275stub_check_vnode_open(struct ucred *cred, struct vnode *vp,
1276    struct label *filelabel, int acc_mode)
1277{
1278
1279	return (0);
1280}
1281
1282static int
1283stub_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
1290static int
1291stub_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
1298static int
1299stub_check_vnode_readdir(struct ucred *cred, struct vnode *vp,
1300    struct label *dlabel)
1301{
1302
1303	return (0);
1304}
1305
1306static int
1307stub_check_vnode_readlink(struct ucred *cred, struct vnode *vp,
1308    struct label *vnodelabel)
1309{
1310
1311	return (0);
1312}
1313
1314static int
1315stub_check_vnode_relabel(struct ucred *cred, struct vnode *vp,
1316    struct label *vnodelabel, struct label *newlabel)
1317{
1318
1319	return (0);
1320}
1321
1322static int
1323stub_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
1331static int
1332stub_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
1340static int
1341stub_check_vnode_revoke(struct ucred *cred, struct vnode *vp,
1342    struct label *label)
1343{
1344
1345	return (0);
1346}
1347
1348static int
1349stub_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
1356static int
1357stub_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
1364static int
1365stub_check_vnode_setflags(struct ucred *cred, struct vnode *vp,
1366    struct label *label, u_long flags)
1367{
1368
1369	return (0);
1370}
1371
1372static int
1373stub_check_vnode_setmode(struct ucred *cred, struct vnode *vp,
1374    struct label *label, mode_t mode)
1375{
1376
1377	return (0);
1378}
1379
1380static int
1381stub_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
1388static int
1389stub_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
1396static int
1397stub_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
1404static int
1405stub_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
1412static int
1413stub_priv_check(struct ucred *cred, int priv)
1414{
1415
1416	return (0);
1417}
1418
1419static int
1420stub_priv_grant(struct ucred *cred, int priv)
1421{
1422
1423	return (EPERM);
1424}
1425
1426static 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
1652MAC_POLICY_SET(&mac_stub_ops, mac_stub, "TrustedBSD MAC/Stub",
1653    MPC_LOADTIME_FLAG_UNLOADOK, NULL);
1654