xref: /freebsd/sys/security/mac_stub/mac_stub.c (revision ba53d9c937ad8735a1f9350fb0a8984ed4eb8fc5)
1d8a7b7a3SRobert Watson /*-
2f6a41092SRobert Watson  * Copyright (c) 1999-2002 Robert N. M. Watson
3ba53d9c9SRobert Watson  * Copyright (c) 2001-2005 McAfee, Inc.
4d8a7b7a3SRobert Watson  * All rights reserved.
5d8a7b7a3SRobert Watson  *
6d8a7b7a3SRobert Watson  * This software was developed by Robert Watson for the TrustedBSD Project.
7d8a7b7a3SRobert Watson  *
8ba53d9c9SRobert Watson  * This software was developed for the FreeBSD Project in part by McAfee
9ba53d9c9SRobert Watson  * Research, the Security Research Division of McAfee, Inc. under
10ba53d9c9SRobert Watson  * DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA
11ba53d9c9SRobert Watson  * CHATS research program.
12d8a7b7a3SRobert Watson  *
13d8a7b7a3SRobert Watson  * Redistribution and use in source and binary forms, with or without
14d8a7b7a3SRobert Watson  * modification, are permitted provided that the following conditions
15d8a7b7a3SRobert Watson  * are met:
16d8a7b7a3SRobert Watson  * 1. Redistributions of source code must retain the above copyright
17d8a7b7a3SRobert Watson  *    notice, this list of conditions and the following disclaimer.
18d8a7b7a3SRobert Watson  * 2. Redistributions in binary form must reproduce the above copyright
19d8a7b7a3SRobert Watson  *    notice, this list of conditions and the following disclaimer in the
20d8a7b7a3SRobert Watson  *    documentation and/or other materials provided with the distribution.
21d8a7b7a3SRobert Watson  *
22d8a7b7a3SRobert Watson  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23d8a7b7a3SRobert Watson  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24d8a7b7a3SRobert Watson  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25d8a7b7a3SRobert Watson  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26d8a7b7a3SRobert Watson  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27d8a7b7a3SRobert Watson  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28d8a7b7a3SRobert Watson  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29d8a7b7a3SRobert Watson  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30d8a7b7a3SRobert Watson  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31d8a7b7a3SRobert Watson  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32d8a7b7a3SRobert Watson  * SUCH DAMAGE.
33d8a7b7a3SRobert Watson  *
34d8a7b7a3SRobert Watson  * $FreeBSD$
35d8a7b7a3SRobert Watson  */
36d8a7b7a3SRobert Watson 
37d8a7b7a3SRobert Watson /*
38d8a7b7a3SRobert Watson  * Developed by the TrustedBSD Project.
391c3f91cdSRobert Watson  *
401c3f91cdSRobert Watson  * Stub module that implements a NOOP for most (if not all) MAC Framework
411c3f91cdSRobert Watson  * policy entry points.
42d8a7b7a3SRobert Watson  */
43d8a7b7a3SRobert Watson 
44d8a7b7a3SRobert Watson #include <sys/types.h>
45d8a7b7a3SRobert Watson #include <sys/param.h>
46d8a7b7a3SRobert Watson #include <sys/acl.h>
47d8a7b7a3SRobert Watson #include <sys/conf.h>
48763bbd2fSRobert Watson #include <sys/extattr.h>
49d8a7b7a3SRobert Watson #include <sys/kernel.h>
50d8a7b7a3SRobert Watson #include <sys/mac.h>
51d8a7b7a3SRobert Watson #include <sys/mount.h>
52d8a7b7a3SRobert Watson #include <sys/proc.h>
53d8a7b7a3SRobert Watson #include <sys/systm.h>
54d8a7b7a3SRobert Watson #include <sys/sysproto.h>
55d8a7b7a3SRobert Watson #include <sys/sysent.h>
56d8a7b7a3SRobert Watson #include <sys/vnode.h>
57d8a7b7a3SRobert Watson #include <sys/file.h>
58d8a7b7a3SRobert Watson #include <sys/socket.h>
59d8a7b7a3SRobert Watson #include <sys/socketvar.h>
60d8a7b7a3SRobert Watson #include <sys/pipe.h>
61d8a7b7a3SRobert Watson #include <sys/sysctl.h>
62ba53d9c9SRobert Watson #include <sys/msg.h>
63ba53d9c9SRobert Watson #include <sys/sem.h>
64ba53d9c9SRobert Watson #include <sys/shm.h>
65d8a7b7a3SRobert Watson 
66d8a7b7a3SRobert Watson #include <fs/devfs/devfs.h>
67d8a7b7a3SRobert Watson 
68d8a7b7a3SRobert Watson #include <net/bpfdesc.h>
69d8a7b7a3SRobert Watson #include <net/if.h>
70d8a7b7a3SRobert Watson #include <net/if_types.h>
71d8a7b7a3SRobert Watson #include <net/if_var.h>
72d8a7b7a3SRobert Watson 
73d8a7b7a3SRobert Watson #include <netinet/in.h>
74a557af22SRobert Watson #include <netinet/in_pcb.h>
75d8a7b7a3SRobert Watson #include <netinet/ip_var.h>
76d8a7b7a3SRobert Watson 
77d8a7b7a3SRobert Watson #include <vm/vm.h>
78d8a7b7a3SRobert Watson 
79d8a7b7a3SRobert Watson #include <sys/mac_policy.h>
80d8a7b7a3SRobert Watson 
81d8a7b7a3SRobert Watson SYSCTL_DECL(_security_mac);
82d8a7b7a3SRobert Watson 
831c3f91cdSRobert Watson SYSCTL_NODE(_security_mac, OID_AUTO, stub, CTLFLAG_RW, 0,
841c3f91cdSRobert Watson     "TrustedBSD mac_stub policy controls");
85d8a7b7a3SRobert Watson 
861c3f91cdSRobert Watson static int	stub_enabled = 1;
871c3f91cdSRobert Watson SYSCTL_INT(_security_mac_stub, OID_AUTO, enabled, CTLFLAG_RW,
881c3f91cdSRobert Watson     &stub_enabled, 0, "Enforce mac_stub policy");
89d8a7b7a3SRobert Watson 
90d8a7b7a3SRobert Watson /*
91d8a7b7a3SRobert Watson  * Policy module operations.
92d8a7b7a3SRobert Watson  */
93d8a7b7a3SRobert Watson static void
941c3f91cdSRobert Watson stub_destroy(struct mac_policy_conf *conf)
95d8a7b7a3SRobert Watson {
96d8a7b7a3SRobert Watson 
97d8a7b7a3SRobert Watson }
98d8a7b7a3SRobert Watson 
99d8a7b7a3SRobert Watson static void
1001c3f91cdSRobert Watson stub_init(struct mac_policy_conf *conf)
101d8a7b7a3SRobert Watson {
102d8a7b7a3SRobert Watson 
103d8a7b7a3SRobert Watson }
104d8a7b7a3SRobert Watson 
1058a97ecf6SRobert Watson static int
1061c3f91cdSRobert Watson stub_syscall(struct thread *td, int call, void *arg)
1078a97ecf6SRobert Watson {
1088a97ecf6SRobert Watson 
1098a97ecf6SRobert Watson 	return (0);
1108a97ecf6SRobert Watson }
1118a97ecf6SRobert Watson 
112d8a7b7a3SRobert Watson /*
113d8a7b7a3SRobert Watson  * Label operations.
114d8a7b7a3SRobert Watson  */
115d8a7b7a3SRobert Watson static void
1161c3f91cdSRobert Watson stub_init_label(struct label *label)
117d8a7b7a3SRobert Watson {
118d8a7b7a3SRobert Watson 
119d8a7b7a3SRobert Watson }
120d8a7b7a3SRobert Watson 
121d8a7b7a3SRobert Watson static int
1221c3f91cdSRobert Watson stub_init_label_waitcheck(struct label *label, int flag)
123d8a7b7a3SRobert Watson {
124d8a7b7a3SRobert Watson 
125d8a7b7a3SRobert Watson 	return (0);
126d8a7b7a3SRobert Watson }
127d8a7b7a3SRobert Watson 
128d8a7b7a3SRobert Watson static void
1291c3f91cdSRobert Watson stub_destroy_label(struct label *label)
130d8a7b7a3SRobert Watson {
131d8a7b7a3SRobert Watson 
132d8a7b7a3SRobert Watson }
133d8a7b7a3SRobert Watson 
1340196273bSRobert Watson static void
1350196273bSRobert Watson stub_copy_label(struct label *src, struct label *dest)
1360196273bSRobert Watson {
1370196273bSRobert Watson 
1380196273bSRobert Watson }
1390196273bSRobert Watson 
140d8a7b7a3SRobert Watson static int
1411c3f91cdSRobert Watson stub_externalize_label(struct label *label, char *element_name,
142f51e5803SRobert Watson     struct sbuf *sb, int *claimed)
143d8a7b7a3SRobert Watson {
144d8a7b7a3SRobert Watson 
145d8a7b7a3SRobert Watson 	return (0);
146d8a7b7a3SRobert Watson }
147d8a7b7a3SRobert Watson 
148d8a7b7a3SRobert Watson static int
1491c3f91cdSRobert Watson stub_internalize_label(struct label *label, char *element_name,
15024e8d0d0SRobert Watson     char *element_data, int *claimed)
151d8a7b7a3SRobert Watson {
152d8a7b7a3SRobert Watson 
153d8a7b7a3SRobert Watson 	return (0);
154d8a7b7a3SRobert Watson }
155d8a7b7a3SRobert Watson 
156d8a7b7a3SRobert Watson /*
157d8a7b7a3SRobert Watson  * Labeling event operations: file system objects, and things that look
158d8a7b7a3SRobert Watson  * a lot like file system objects.
159d8a7b7a3SRobert Watson  */
160d8a7b7a3SRobert Watson static void
1611c3f91cdSRobert Watson stub_associate_vnode_devfs(struct mount *mp, struct label *fslabel,
162763bbd2fSRobert Watson     struct devfs_dirent *de, struct label *delabel, struct vnode *vp,
163763bbd2fSRobert Watson     struct label *vlabel)
164763bbd2fSRobert Watson {
165763bbd2fSRobert Watson 
166763bbd2fSRobert Watson }
167763bbd2fSRobert Watson 
168763bbd2fSRobert Watson static int
1691c3f91cdSRobert Watson stub_associate_vnode_extattr(struct mount *mp, struct label *fslabel,
170763bbd2fSRobert Watson     struct vnode *vp, struct label *vlabel)
171763bbd2fSRobert Watson {
172763bbd2fSRobert Watson 
173763bbd2fSRobert Watson 	return (0);
174763bbd2fSRobert Watson }
175763bbd2fSRobert Watson 
176763bbd2fSRobert Watson static void
1771c3f91cdSRobert Watson stub_associate_vnode_singlelabel(struct mount *mp,
178763bbd2fSRobert Watson     struct label *fslabel, struct vnode *vp, struct label *vlabel)
179763bbd2fSRobert Watson {
180763bbd2fSRobert Watson 
181763bbd2fSRobert Watson }
182763bbd2fSRobert Watson 
183763bbd2fSRobert Watson static void
18489c9c53dSPoul-Henning Kamp stub_create_devfs_device(struct mount *mp, struct cdev *dev,
18557e2f493SRobert Watson     struct devfs_dirent *devfs_dirent, struct label *label)
186eea8ea31SRobert Watson {
187eea8ea31SRobert Watson 
188eea8ea31SRobert Watson }
189eea8ea31SRobert Watson 
190eea8ea31SRobert Watson static void
1911c3f91cdSRobert Watson stub_create_devfs_directory(struct mount *mp, char *dirname,
192990b4b2dSRobert Watson     int dirnamelen, struct devfs_dirent *devfs_dirent, struct label *label)
193990b4b2dSRobert Watson {
194990b4b2dSRobert Watson 
195990b4b2dSRobert Watson }
196990b4b2dSRobert Watson 
197990b4b2dSRobert Watson static void
1981c3f91cdSRobert Watson stub_create_devfs_symlink(struct ucred *cred, struct mount *mp,
199990b4b2dSRobert Watson     struct devfs_dirent *dd, struct label *ddlabel, struct devfs_dirent *de,
200990b4b2dSRobert Watson     struct label *delabel)
201d8a7b7a3SRobert Watson {
202d8a7b7a3SRobert Watson 
203d8a7b7a3SRobert Watson }
204d8a7b7a3SRobert Watson 
205763bbd2fSRobert Watson static int
2061c3f91cdSRobert Watson stub_create_vnode_extattr(struct ucred *cred, struct mount *mp,
207763bbd2fSRobert Watson     struct label *fslabel, struct vnode *dvp, struct label *dlabel,
208763bbd2fSRobert Watson     struct vnode *vp, struct label *vlabel, struct componentname *cnp)
209d8a7b7a3SRobert Watson {
210d8a7b7a3SRobert Watson 
211763bbd2fSRobert Watson 	return (0);
212d8a7b7a3SRobert Watson }
213d8a7b7a3SRobert Watson 
214d8a7b7a3SRobert Watson static void
2151c3f91cdSRobert Watson stub_create_mount(struct ucred *cred, struct mount *mp,
216d8a7b7a3SRobert Watson     struct label *mntlabel, struct label *fslabel)
217d8a7b7a3SRobert Watson {
218d8a7b7a3SRobert Watson 
219d8a7b7a3SRobert Watson }
220d8a7b7a3SRobert Watson 
221d8a7b7a3SRobert Watson static void
2221c3f91cdSRobert Watson stub_create_root_mount(struct ucred *cred, struct mount *mp,
223d8a7b7a3SRobert Watson     struct label *mntlabel, struct label *fslabel)
224d8a7b7a3SRobert Watson {
225d8a7b7a3SRobert Watson 
226d8a7b7a3SRobert Watson }
227d8a7b7a3SRobert Watson 
228d8a7b7a3SRobert Watson static void
2291c3f91cdSRobert Watson stub_relabel_vnode(struct ucred *cred, struct vnode *vp,
230d8a7b7a3SRobert Watson     struct label *vnodelabel, struct label *label)
231d8a7b7a3SRobert Watson {
232d8a7b7a3SRobert Watson 
233d8a7b7a3SRobert Watson }
234d8a7b7a3SRobert Watson 
235d8a7b7a3SRobert Watson static int
2361c3f91cdSRobert Watson stub_setlabel_vnode_extattr(struct ucred *cred, struct vnode *vp,
237763bbd2fSRobert Watson     struct label *vlabel, struct label *intlabel)
238d8a7b7a3SRobert Watson {
239d8a7b7a3SRobert Watson 
240d8a7b7a3SRobert Watson 	return (0);
241d8a7b7a3SRobert Watson }
242d8a7b7a3SRobert Watson 
243d8a7b7a3SRobert Watson static void
2441c3f91cdSRobert Watson stub_update_devfsdirent(struct mount *mp,
245990b4b2dSRobert Watson     struct devfs_dirent *devfs_dirent, struct label *direntlabel,
246990b4b2dSRobert Watson     struct vnode *vp, struct label *vnodelabel)
247d8a7b7a3SRobert Watson {
248d8a7b7a3SRobert Watson 
249d8a7b7a3SRobert Watson }
250d8a7b7a3SRobert Watson 
251d8a7b7a3SRobert Watson /*
252d8a7b7a3SRobert Watson  * Labeling event operations: IPC object.
253d8a7b7a3SRobert Watson  */
254d8a7b7a3SRobert Watson static void
2551c3f91cdSRobert Watson stub_create_mbuf_from_socket(struct socket *so, struct label *socketlabel,
256d8a7b7a3SRobert Watson     struct mbuf *m, struct label *mbuflabel)
257d8a7b7a3SRobert Watson {
258d8a7b7a3SRobert Watson 
259d8a7b7a3SRobert Watson }
260d8a7b7a3SRobert Watson 
261d8a7b7a3SRobert Watson static void
2621c3f91cdSRobert Watson stub_create_socket(struct ucred *cred, struct socket *socket,
263d8a7b7a3SRobert Watson     struct label *socketlabel)
264d8a7b7a3SRobert Watson {
265d8a7b7a3SRobert Watson 
266d8a7b7a3SRobert Watson }
267d8a7b7a3SRobert Watson 
268d8a7b7a3SRobert Watson static void
26991c2dc94SRobert Watson stub_create_pipe(struct ucred *cred, struct pipepair *pp,
270d8a7b7a3SRobert Watson     struct label *pipelabel)
271d8a7b7a3SRobert Watson {
272d8a7b7a3SRobert Watson 
273d8a7b7a3SRobert Watson }
274d8a7b7a3SRobert Watson 
275d8a7b7a3SRobert Watson static void
2761c3f91cdSRobert Watson stub_create_socket_from_socket(struct socket *oldsocket,
277d8a7b7a3SRobert Watson     struct label *oldsocketlabel, struct socket *newsocket,
278d8a7b7a3SRobert Watson     struct label *newsocketlabel)
279d8a7b7a3SRobert Watson {
280d8a7b7a3SRobert Watson 
281d8a7b7a3SRobert Watson }
282d8a7b7a3SRobert Watson 
283d8a7b7a3SRobert Watson static void
2841c3f91cdSRobert Watson stub_relabel_socket(struct ucred *cred, struct socket *socket,
285d8a7b7a3SRobert Watson     struct label *socketlabel, struct label *newlabel)
286d8a7b7a3SRobert Watson {
287d8a7b7a3SRobert Watson 
288d8a7b7a3SRobert Watson }
289d8a7b7a3SRobert Watson 
290d8a7b7a3SRobert Watson static void
29191c2dc94SRobert Watson stub_relabel_pipe(struct ucred *cred, struct pipepair *pp,
292d8a7b7a3SRobert Watson     struct label *pipelabel, struct label *newlabel)
293d8a7b7a3SRobert Watson {
294d8a7b7a3SRobert Watson 
295d8a7b7a3SRobert Watson }
296d8a7b7a3SRobert Watson 
297d8a7b7a3SRobert Watson static void
2981c3f91cdSRobert Watson stub_set_socket_peer_from_mbuf(struct mbuf *mbuf, struct label *mbuflabel,
299d8a7b7a3SRobert Watson     struct socket *socket, struct label *socketpeerlabel)
300d8a7b7a3SRobert Watson {
301d8a7b7a3SRobert Watson 
302d8a7b7a3SRobert Watson }
303d8a7b7a3SRobert Watson 
304d8a7b7a3SRobert Watson static void
3051c3f91cdSRobert Watson stub_set_socket_peer_from_socket(struct socket *oldsocket,
306d8a7b7a3SRobert Watson     struct label *oldsocketlabel, struct socket *newsocket,
307d8a7b7a3SRobert Watson     struct label *newsocketpeerlabel)
308d8a7b7a3SRobert Watson {
309d8a7b7a3SRobert Watson 
310d8a7b7a3SRobert Watson }
311d8a7b7a3SRobert Watson 
312d8a7b7a3SRobert Watson /*
313d8a7b7a3SRobert Watson  * Labeling event operations: network objects.
314d8a7b7a3SRobert Watson  */
315d8a7b7a3SRobert Watson static void
3161c3f91cdSRobert Watson stub_create_bpfdesc(struct ucred *cred, struct bpf_d *bpf_d,
317d8a7b7a3SRobert Watson     struct label *bpflabel)
318d8a7b7a3SRobert Watson {
319d8a7b7a3SRobert Watson 
320d8a7b7a3SRobert Watson }
321d8a7b7a3SRobert Watson 
322d8a7b7a3SRobert Watson static void
3231c3f91cdSRobert Watson stub_create_datagram_from_ipq(struct ipq *ipq, struct label *ipqlabel,
324d8a7b7a3SRobert Watson     struct mbuf *datagram, struct label *datagramlabel)
325d8a7b7a3SRobert Watson {
326d8a7b7a3SRobert Watson 
327d8a7b7a3SRobert Watson }
328d8a7b7a3SRobert Watson 
329d8a7b7a3SRobert Watson static void
3301c3f91cdSRobert Watson stub_create_fragment(struct mbuf *datagram, struct label *datagramlabel,
331d8a7b7a3SRobert Watson     struct mbuf *fragment, struct label *fragmentlabel)
332d8a7b7a3SRobert Watson {
333d8a7b7a3SRobert Watson 
334d8a7b7a3SRobert Watson }
335d8a7b7a3SRobert Watson 
336d8a7b7a3SRobert Watson static void
3371c3f91cdSRobert Watson stub_create_ifnet(struct ifnet *ifnet, struct label *ifnetlabel)
338d8a7b7a3SRobert Watson {
339d8a7b7a3SRobert Watson 
340d8a7b7a3SRobert Watson }
341d8a7b7a3SRobert Watson 
342d8a7b7a3SRobert Watson static void
343a557af22SRobert Watson stub_create_inpcb_from_socket(struct socket *so, struct label *solabel,
344a557af22SRobert Watson     struct inpcb *inp, struct label *inplabel)
345a557af22SRobert Watson {
346a557af22SRobert Watson 
347a557af22SRobert Watson }
348a557af22SRobert Watson 
349a557af22SRobert Watson static void
350ba53d9c9SRobert Watson stub_create_sysv_msgmsg(struct ucred *cred, struct msqid_kernel *msqkptr,
351ba53d9c9SRobert Watson     struct label *msqlabel, struct msg *msgptr, struct label *msglabel)
352ba53d9c9SRobert Watson {
353ba53d9c9SRobert Watson 
354ba53d9c9SRobert Watson }
355ba53d9c9SRobert Watson 
356ba53d9c9SRobert Watson static void
357ba53d9c9SRobert Watson stub_create_sysv_msgqueue(struct ucred *cred, struct msqid_kernel *msqkptr,
358ba53d9c9SRobert Watson     struct label *msqlabel)
359ba53d9c9SRobert Watson {
360ba53d9c9SRobert Watson 
361ba53d9c9SRobert Watson }
362ba53d9c9SRobert Watson 
363ba53d9c9SRobert Watson static void
364ba53d9c9SRobert Watson stub_create_sysv_sema(struct ucred *cred, struct semid_kernel *semakptr,
365ba53d9c9SRobert Watson     struct label *semalabel)
366ba53d9c9SRobert Watson {
367ba53d9c9SRobert Watson 
368ba53d9c9SRobert Watson }
369ba53d9c9SRobert Watson 
370ba53d9c9SRobert Watson static void
371ba53d9c9SRobert Watson stub_create_sysv_shm(struct ucred *cred, struct shmid_kernel *shmsegptr,
372ba53d9c9SRobert Watson     struct label *shmalabel)
373ba53d9c9SRobert Watson {
374ba53d9c9SRobert Watson 
375ba53d9c9SRobert Watson }
376ba53d9c9SRobert Watson 
377ba53d9c9SRobert Watson static void
3781c3f91cdSRobert Watson stub_create_ipq(struct mbuf *fragment, struct label *fragmentlabel,
379d8a7b7a3SRobert Watson     struct ipq *ipq, struct label *ipqlabel)
380d8a7b7a3SRobert Watson {
381d8a7b7a3SRobert Watson 
382d8a7b7a3SRobert Watson }
383d8a7b7a3SRobert Watson 
384d8a7b7a3SRobert Watson static void
3852d92ec98SRobert Watson stub_create_mbuf_from_inpcb(struct inpcb *inp, struct label *inplabel,
3862d92ec98SRobert Watson     struct mbuf *m, struct label *mlabel)
3872d92ec98SRobert Watson {
3882d92ec98SRobert Watson 
3892d92ec98SRobert Watson }
3902d92ec98SRobert Watson 
3912d92ec98SRobert Watson static void
3921c3f91cdSRobert Watson stub_create_mbuf_from_mbuf(struct mbuf *oldmbuf,
393d8a7b7a3SRobert Watson     struct label *oldmbuflabel, struct mbuf *newmbuf,
394d8a7b7a3SRobert Watson     struct label *newmbuflabel)
395d8a7b7a3SRobert Watson {
396d8a7b7a3SRobert Watson 
397d8a7b7a3SRobert Watson }
398d8a7b7a3SRobert Watson 
399d8a7b7a3SRobert Watson static void
4001c3f91cdSRobert Watson stub_create_mbuf_linklayer(struct ifnet *ifnet, struct label *ifnetlabel,
401d8a7b7a3SRobert Watson     struct mbuf *mbuf, struct label *mbuflabel)
402d8a7b7a3SRobert Watson {
403d8a7b7a3SRobert Watson 
404d8a7b7a3SRobert Watson }
405d8a7b7a3SRobert Watson 
406d8a7b7a3SRobert Watson static void
4071c3f91cdSRobert Watson stub_create_mbuf_from_bpfdesc(struct bpf_d *bpf_d, struct label *bpflabel,
408d8a7b7a3SRobert Watson     struct mbuf *mbuf, struct label *mbuflabel)
409d8a7b7a3SRobert Watson {
410d8a7b7a3SRobert Watson 
411d8a7b7a3SRobert Watson }
412d8a7b7a3SRobert Watson 
413d8a7b7a3SRobert Watson static void
4141c3f91cdSRobert Watson stub_create_mbuf_from_ifnet(struct ifnet *ifnet, struct label *ifnetlabel,
415d8a7b7a3SRobert Watson     struct mbuf *m, struct label *mbuflabel)
416d8a7b7a3SRobert Watson {
417d8a7b7a3SRobert Watson 
418d8a7b7a3SRobert Watson }
419d8a7b7a3SRobert Watson 
420d8a7b7a3SRobert Watson static void
4211c3f91cdSRobert Watson stub_create_mbuf_multicast_encap(struct mbuf *oldmbuf,
422d8a7b7a3SRobert Watson     struct label *oldmbuflabel, struct ifnet *ifnet, struct label *ifnetlabel,
423d8a7b7a3SRobert Watson     struct mbuf *newmbuf, struct label *newmbuflabel)
424d8a7b7a3SRobert Watson {
425d8a7b7a3SRobert Watson 
426d8a7b7a3SRobert Watson }
427d8a7b7a3SRobert Watson 
428d8a7b7a3SRobert Watson static void
4291c3f91cdSRobert Watson stub_create_mbuf_netlayer(struct mbuf *oldmbuf,
430d8a7b7a3SRobert Watson     struct label *oldmbuflabel, struct mbuf *newmbuf, struct label *newmbuflabel)
431d8a7b7a3SRobert Watson {
432d8a7b7a3SRobert Watson 
433d8a7b7a3SRobert Watson }
434d8a7b7a3SRobert Watson 
435d8a7b7a3SRobert Watson static int
4361c3f91cdSRobert Watson stub_fragment_match(struct mbuf *fragment, struct label *fragmentlabel,
437d8a7b7a3SRobert Watson     struct ipq *ipq, struct label *ipqlabel)
438d8a7b7a3SRobert Watson {
439d8a7b7a3SRobert Watson 
440d8a7b7a3SRobert Watson 	return (1);
441d8a7b7a3SRobert Watson }
442d8a7b7a3SRobert Watson 
443d8a7b7a3SRobert Watson static void
44464f00af8SRobert Watson stub_reflect_mbuf_icmp(struct mbuf *m, struct label *mlabel)
44564f00af8SRobert Watson {
44664f00af8SRobert Watson 
44764f00af8SRobert Watson }
44864f00af8SRobert Watson 
44964f00af8SRobert Watson static void
45064f00af8SRobert Watson stub_reflect_mbuf_tcp(struct mbuf *m, struct label *mlabel)
45164f00af8SRobert Watson {
45264f00af8SRobert Watson 
45364f00af8SRobert Watson }
45464f00af8SRobert Watson 
45564f00af8SRobert Watson static void
4561c3f91cdSRobert Watson stub_relabel_ifnet(struct ucred *cred, struct ifnet *ifnet,
457d8a7b7a3SRobert Watson     struct label *ifnetlabel, struct label *newlabel)
458d8a7b7a3SRobert Watson {
459d8a7b7a3SRobert Watson 
460d8a7b7a3SRobert Watson }
461d8a7b7a3SRobert Watson 
462d8a7b7a3SRobert Watson static void
4631c3f91cdSRobert Watson stub_update_ipq(struct mbuf *fragment, struct label *fragmentlabel,
464d8a7b7a3SRobert Watson     struct ipq *ipq, struct label *ipqlabel)
465d8a7b7a3SRobert Watson {
466d8a7b7a3SRobert Watson 
467d8a7b7a3SRobert Watson }
468d8a7b7a3SRobert Watson 
469a557af22SRobert Watson static void
470a557af22SRobert Watson stub_inpcb_sosetlabel(struct socket *so, struct label *solabel,
471a557af22SRobert Watson     struct inpcb *inp, struct label *inplabel)
472a557af22SRobert Watson {
473a557af22SRobert Watson 
474a557af22SRobert Watson }
475a557af22SRobert Watson 
476d8a7b7a3SRobert Watson /*
477d8a7b7a3SRobert Watson  * Labeling event operations: processes.
478d8a7b7a3SRobert Watson  */
479d8a7b7a3SRobert Watson static void
4801c3f91cdSRobert Watson stub_execve_transition(struct ucred *old, struct ucred *new,
481939b97cbSRobert Watson     struct vnode *vp, struct label *vnodelabel,
482ef5def59SRobert Watson     struct label *interpvnodelabel, struct image_params *imgp,
483ef5def59SRobert Watson     struct label *execlabel)
484d8a7b7a3SRobert Watson {
485d8a7b7a3SRobert Watson 
486d8a7b7a3SRobert Watson }
487d8a7b7a3SRobert Watson 
488d8a7b7a3SRobert Watson static int
4891c3f91cdSRobert Watson stub_execve_will_transition(struct ucred *old, struct vnode *vp,
490939b97cbSRobert Watson     struct label *vnodelabel, struct label *interpvnodelabel,
491ef5def59SRobert Watson     struct image_params *imgp, struct label *execlabel)
492d8a7b7a3SRobert Watson {
493d8a7b7a3SRobert Watson 
494d8a7b7a3SRobert Watson 	return (0);
495d8a7b7a3SRobert Watson }
496d8a7b7a3SRobert Watson 
497d8a7b7a3SRobert Watson static void
4981c3f91cdSRobert Watson stub_create_proc0(struct ucred *cred)
499d8a7b7a3SRobert Watson {
500d8a7b7a3SRobert Watson 
501d8a7b7a3SRobert Watson }
502d8a7b7a3SRobert Watson 
503d8a7b7a3SRobert Watson static void
5041c3f91cdSRobert Watson stub_create_proc1(struct ucred *cred)
505d8a7b7a3SRobert Watson {
506d8a7b7a3SRobert Watson 
507d8a7b7a3SRobert Watson }
508d8a7b7a3SRobert Watson 
509d8a7b7a3SRobert Watson static void
5101c3f91cdSRobert Watson stub_relabel_cred(struct ucred *cred, struct label *newlabel)
511d8a7b7a3SRobert Watson {
512d8a7b7a3SRobert Watson 
513d8a7b7a3SRobert Watson }
514d8a7b7a3SRobert Watson 
51509de2dc2SRobert Watson static void
5161c3f91cdSRobert Watson stub_thread_userret(struct thread *td)
51709de2dc2SRobert Watson {
51809de2dc2SRobert Watson 
51909de2dc2SRobert Watson }
52009de2dc2SRobert Watson 
521d8a7b7a3SRobert Watson /*
522ba53d9c9SRobert Watson  * Label cleanup/flush operations
523ba53d9c9SRobert Watson  */
524ba53d9c9SRobert Watson static void
525ba53d9c9SRobert Watson stub_cleanup_sysv_msgmsg(struct label *msglabel)
526ba53d9c9SRobert Watson {
527ba53d9c9SRobert Watson 
528ba53d9c9SRobert Watson }
529ba53d9c9SRobert Watson 
530ba53d9c9SRobert Watson static void
531ba53d9c9SRobert Watson stub_cleanup_sysv_msgqueue(struct label *msqlabel)
532ba53d9c9SRobert Watson {
533ba53d9c9SRobert Watson 
534ba53d9c9SRobert Watson }
535ba53d9c9SRobert Watson 
536ba53d9c9SRobert Watson static void
537ba53d9c9SRobert Watson stub_cleanup_sysv_sema(struct label *semalabel)
538ba53d9c9SRobert Watson {
539ba53d9c9SRobert Watson 
540ba53d9c9SRobert Watson }
541ba53d9c9SRobert Watson 
542ba53d9c9SRobert Watson static void
543ba53d9c9SRobert Watson stub_cleanup_sysv_shm(struct label *shmlabel)
544ba53d9c9SRobert Watson {
545ba53d9c9SRobert Watson 
546ba53d9c9SRobert Watson }
547ba53d9c9SRobert Watson 
548ba53d9c9SRobert Watson /*
549d8a7b7a3SRobert Watson  * Access control checks.
550d8a7b7a3SRobert Watson  */
551d8a7b7a3SRobert Watson static int
5521c3f91cdSRobert Watson stub_check_bpfdesc_receive(struct bpf_d *bpf_d, struct label *bpflabel,
553d8a7b7a3SRobert Watson     struct ifnet *ifnet, struct label *ifnet_label)
554d8a7b7a3SRobert Watson {
555d8a7b7a3SRobert Watson 
556d8a7b7a3SRobert Watson         return (0);
557d8a7b7a3SRobert Watson }
558d8a7b7a3SRobert Watson 
559d8a7b7a3SRobert Watson static int
5601c3f91cdSRobert Watson stub_check_cred_relabel(struct ucred *cred, struct label *newlabel)
561d8a7b7a3SRobert Watson {
562d8a7b7a3SRobert Watson 
563d8a7b7a3SRobert Watson 	return (0);
564d8a7b7a3SRobert Watson }
565d8a7b7a3SRobert Watson 
566d8a7b7a3SRobert Watson static int
5671c3f91cdSRobert Watson stub_check_cred_visible(struct ucred *u1, struct ucred *u2)
568d8a7b7a3SRobert Watson {
569d8a7b7a3SRobert Watson 
570d8a7b7a3SRobert Watson 	return (0);
571d8a7b7a3SRobert Watson }
572d8a7b7a3SRobert Watson 
573d8a7b7a3SRobert Watson static int
5741c3f91cdSRobert Watson stub_check_ifnet_relabel(struct ucred *cred, struct ifnet *ifnet,
5751979061bSRobert Watson     struct label *ifnetlabel, struct label *newlabel)
576d8a7b7a3SRobert Watson {
577d8a7b7a3SRobert Watson 
578d8a7b7a3SRobert Watson 	return (0);
579d8a7b7a3SRobert Watson }
580d8a7b7a3SRobert Watson 
581d8a7b7a3SRobert Watson static int
5821c3f91cdSRobert Watson stub_check_ifnet_transmit(struct ifnet *ifnet, struct label *ifnetlabel,
583d8a7b7a3SRobert Watson     struct mbuf *m, struct label *mbuflabel)
584d8a7b7a3SRobert Watson {
585d8a7b7a3SRobert Watson 
586d8a7b7a3SRobert Watson 	return (0);
587d8a7b7a3SRobert Watson }
588d8a7b7a3SRobert Watson 
589d8a7b7a3SRobert Watson static int
590a557af22SRobert Watson stub_check_inpcb_deliver(struct inpcb *inp, struct label *inplabel,
591a557af22SRobert Watson     struct mbuf *m, struct label *mlabel)
592a557af22SRobert Watson {
593a557af22SRobert Watson 
594a557af22SRobert Watson 	return (0);
595a557af22SRobert Watson }
596a557af22SRobert Watson 
597a557af22SRobert Watson static int
598ba53d9c9SRobert Watson stub_check_sysv_msgmsq(struct ucred *cred, struct msg *msgptr,
599ba53d9c9SRobert Watson     struct label *msglabel, struct msqid_kernel *msqkptr,
600ba53d9c9SRobert Watson     struct label *msqklabel)
601ba53d9c9SRobert Watson {
602ba53d9c9SRobert Watson 
603ba53d9c9SRobert Watson 	return (0);
604ba53d9c9SRobert Watson }
605ba53d9c9SRobert Watson 
606ba53d9c9SRobert Watson static int
607ba53d9c9SRobert Watson stub_check_sysv_msgrcv(struct ucred *cred, struct msg *msgptr,
608ba53d9c9SRobert Watson     struct label *msglabel)
609ba53d9c9SRobert Watson {
610ba53d9c9SRobert Watson 
611ba53d9c9SRobert Watson 	return (0);
612ba53d9c9SRobert Watson }
613ba53d9c9SRobert Watson 
614ba53d9c9SRobert Watson 
615ba53d9c9SRobert Watson static int
616ba53d9c9SRobert Watson stub_check_sysv_msgrmid(struct ucred *cred, struct msg *msgptr,
617ba53d9c9SRobert Watson     struct label *msglabel)
618ba53d9c9SRobert Watson {
619ba53d9c9SRobert Watson 
620ba53d9c9SRobert Watson 	return (0);
621ba53d9c9SRobert Watson }
622ba53d9c9SRobert Watson 
623ba53d9c9SRobert Watson 
624ba53d9c9SRobert Watson static int
625ba53d9c9SRobert Watson stub_check_sysv_msqget(struct ucred *cred, struct msqid_kernel *msqkptr,
626ba53d9c9SRobert Watson     struct label *msqklabel)
627ba53d9c9SRobert Watson {
628ba53d9c9SRobert Watson 
629ba53d9c9SRobert Watson 	return (0);
630ba53d9c9SRobert Watson }
631ba53d9c9SRobert Watson 
632ba53d9c9SRobert Watson 
633ba53d9c9SRobert Watson static int
634ba53d9c9SRobert Watson stub_check_sysv_msqsnd(struct ucred *cred, struct msqid_kernel *msqkptr,
635ba53d9c9SRobert Watson     struct label *msqklabel)
636ba53d9c9SRobert Watson {
637ba53d9c9SRobert Watson 
638ba53d9c9SRobert Watson 	return (0);
639ba53d9c9SRobert Watson }
640ba53d9c9SRobert Watson 
641ba53d9c9SRobert Watson static int
642ba53d9c9SRobert Watson stub_check_sysv_msqrcv(struct ucred *cred, struct msqid_kernel *msqkptr,
643ba53d9c9SRobert Watson     struct label *msqklabel)
644ba53d9c9SRobert Watson {
645ba53d9c9SRobert Watson 
646ba53d9c9SRobert Watson 	return (0);
647ba53d9c9SRobert Watson }
648ba53d9c9SRobert Watson 
649ba53d9c9SRobert Watson 
650ba53d9c9SRobert Watson static int
651ba53d9c9SRobert Watson stub_check_sysv_msqctl(struct ucred *cred, struct msqid_kernel *msqkptr,
652ba53d9c9SRobert Watson     struct label *msqklabel, int cmd)
653ba53d9c9SRobert Watson {
654ba53d9c9SRobert Watson 
655ba53d9c9SRobert Watson 	return (0);
656ba53d9c9SRobert Watson }
657ba53d9c9SRobert Watson 
658ba53d9c9SRobert Watson 
659ba53d9c9SRobert Watson static int
660ba53d9c9SRobert Watson stub_check_sysv_semctl(struct ucred *cred, struct semid_kernel *semakptr,
661ba53d9c9SRobert Watson     struct label *semaklabel, int cmd)
662ba53d9c9SRobert Watson {
663ba53d9c9SRobert Watson 
664ba53d9c9SRobert Watson 	return (0);
665ba53d9c9SRobert Watson }
666ba53d9c9SRobert Watson 
667ba53d9c9SRobert Watson static int
668ba53d9c9SRobert Watson stub_check_sysv_semget(struct ucred *cred, struct semid_kernel *semakptr,
669ba53d9c9SRobert Watson     struct label *semaklabel)
670ba53d9c9SRobert Watson {
671ba53d9c9SRobert Watson 
672ba53d9c9SRobert Watson 	return (0);
673ba53d9c9SRobert Watson }
674ba53d9c9SRobert Watson 
675ba53d9c9SRobert Watson 
676ba53d9c9SRobert Watson static int
677ba53d9c9SRobert Watson stub_check_sysv_semop(struct ucred *cred, struct semid_kernel *semakptr,
678ba53d9c9SRobert Watson     struct label *semaklabel, size_t accesstype)
679ba53d9c9SRobert Watson {
680ba53d9c9SRobert Watson 
681ba53d9c9SRobert Watson 	return (0);
682ba53d9c9SRobert Watson }
683ba53d9c9SRobert Watson 
684ba53d9c9SRobert Watson static int
685ba53d9c9SRobert Watson stub_check_sysv_shmat(struct ucred *cred, struct shmid_kernel *shmsegptr,
686ba53d9c9SRobert Watson     struct label *shmseglabel, int shmflg)
687ba53d9c9SRobert Watson {
688ba53d9c9SRobert Watson 
689ba53d9c9SRobert Watson 	return (0);
690ba53d9c9SRobert Watson }
691ba53d9c9SRobert Watson 
692ba53d9c9SRobert Watson static int
693ba53d9c9SRobert Watson stub_check_sysv_shmctl(struct ucred *cred, struct shmid_kernel *shmsegptr,
694ba53d9c9SRobert Watson     struct label *shmseglabel, int cmd)
695ba53d9c9SRobert Watson {
696ba53d9c9SRobert Watson 
697ba53d9c9SRobert Watson 	return (0);
698ba53d9c9SRobert Watson }
699ba53d9c9SRobert Watson 
700ba53d9c9SRobert Watson static int
701ba53d9c9SRobert Watson stub_check_sysv_shmdt(struct ucred *cred, struct shmid_kernel *shmsegptr,
702ba53d9c9SRobert Watson     struct label *shmseglabel)
703ba53d9c9SRobert Watson {
704ba53d9c9SRobert Watson 
705ba53d9c9SRobert Watson 	return (0);
706ba53d9c9SRobert Watson }
707ba53d9c9SRobert Watson 
708ba53d9c9SRobert Watson 
709ba53d9c9SRobert Watson static int
710ba53d9c9SRobert Watson stub_check_sysv_shmget(struct ucred *cred, struct shmid_kernel *shmsegptr,
711ba53d9c9SRobert Watson     struct label *shmseglabel, int shmflg)
712ba53d9c9SRobert Watson {
713ba53d9c9SRobert Watson 
714ba53d9c9SRobert Watson 	return (0);
715ba53d9c9SRobert Watson }
716ba53d9c9SRobert Watson 
717ba53d9c9SRobert Watson static int
7181c3f91cdSRobert Watson stub_check_kenv_dump(struct ucred *cred)
71909de2dc2SRobert Watson {
72009de2dc2SRobert Watson 
72109de2dc2SRobert Watson 	return (0);
72209de2dc2SRobert Watson }
72309de2dc2SRobert Watson 
72409de2dc2SRobert Watson static int
7251c3f91cdSRobert Watson stub_check_kenv_get(struct ucred *cred, char *name)
72609de2dc2SRobert Watson {
72709de2dc2SRobert Watson 
72809de2dc2SRobert Watson 	return (0);
72909de2dc2SRobert Watson }
73009de2dc2SRobert Watson 
73109de2dc2SRobert Watson static int
7321c3f91cdSRobert Watson stub_check_kenv_set(struct ucred *cred, char *name, char *value)
73309de2dc2SRobert Watson {
73409de2dc2SRobert Watson 
73509de2dc2SRobert Watson 	return (0);
73609de2dc2SRobert Watson }
73709de2dc2SRobert Watson 
73809de2dc2SRobert Watson static int
7391c3f91cdSRobert Watson stub_check_kenv_unset(struct ucred *cred, char *name)
74009de2dc2SRobert Watson {
74109de2dc2SRobert Watson 
74209de2dc2SRobert Watson 	return (0);
74309de2dc2SRobert Watson }
74409de2dc2SRobert Watson 
74509de2dc2SRobert Watson static int
7461c3f91cdSRobert Watson stub_check_kld_load(struct ucred *cred, struct vnode *vp,
74709de2dc2SRobert Watson     struct label *vlabel)
74809de2dc2SRobert Watson {
74909de2dc2SRobert Watson 
75009de2dc2SRobert Watson 	return (0);
75109de2dc2SRobert Watson }
75209de2dc2SRobert Watson 
75309de2dc2SRobert Watson static int
7541c3f91cdSRobert Watson stub_check_kld_stat(struct ucred *cred)
75509de2dc2SRobert Watson {
75609de2dc2SRobert Watson 
75709de2dc2SRobert Watson 	return (0);
75809de2dc2SRobert Watson }
75909de2dc2SRobert Watson 
76009de2dc2SRobert Watson static int
7611c3f91cdSRobert Watson stub_check_kld_unload(struct ucred *cred)
76209de2dc2SRobert Watson {
76309de2dc2SRobert Watson 
76409de2dc2SRobert Watson 	return (0);
76509de2dc2SRobert Watson }
76609de2dc2SRobert Watson 
76709de2dc2SRobert Watson static int
7681c3f91cdSRobert Watson stub_check_mount_stat(struct ucred *cred, struct mount *mp,
769d8a7b7a3SRobert Watson     struct label *mntlabel)
770d8a7b7a3SRobert Watson {
771d8a7b7a3SRobert Watson 
772d8a7b7a3SRobert Watson 	return (0);
773d8a7b7a3SRobert Watson }
774d8a7b7a3SRobert Watson 
775d8a7b7a3SRobert Watson static int
77691c2dc94SRobert Watson stub_check_pipe_ioctl(struct ucred *cred, struct pipepair *pp,
777d8a7b7a3SRobert Watson     struct label *pipelabel, unsigned long cmd, void /* caddr_t */ *data)
778d8a7b7a3SRobert Watson {
779d8a7b7a3SRobert Watson 
780d8a7b7a3SRobert Watson 	return (0);
781d8a7b7a3SRobert Watson }
782d8a7b7a3SRobert Watson 
783d8a7b7a3SRobert Watson static int
78491c2dc94SRobert Watson stub_check_pipe_poll(struct ucred *cred, struct pipepair *pp,
785c024c3eeSRobert Watson     struct label *pipelabel)
786c024c3eeSRobert Watson {
787c024c3eeSRobert Watson 
788c024c3eeSRobert Watson 	return (0);
789c024c3eeSRobert Watson }
790c024c3eeSRobert Watson 
791c024c3eeSRobert Watson static int
79291c2dc94SRobert Watson stub_check_pipe_read(struct ucred *cred, struct pipepair *pp,
793c024c3eeSRobert Watson     struct label *pipelabel)
794d8a7b7a3SRobert Watson {
795d8a7b7a3SRobert Watson 
796d8a7b7a3SRobert Watson 	return (0);
797d8a7b7a3SRobert Watson }
798d8a7b7a3SRobert Watson 
799d8a7b7a3SRobert Watson static int
80091c2dc94SRobert Watson stub_check_pipe_relabel(struct ucred *cred, struct pipepair *pp,
801d8a7b7a3SRobert Watson     struct label *pipelabel, struct label *newlabel)
802d8a7b7a3SRobert Watson {
803d8a7b7a3SRobert Watson 
804d8a7b7a3SRobert Watson 	return (0);
805d8a7b7a3SRobert Watson }
806d8a7b7a3SRobert Watson 
807d8a7b7a3SRobert Watson static int
80891c2dc94SRobert Watson stub_check_pipe_stat(struct ucred *cred, struct pipepair *pp,
809c024c3eeSRobert Watson     struct label *pipelabel)
810c024c3eeSRobert Watson {
811c024c3eeSRobert Watson 
812c024c3eeSRobert Watson 	return (0);
813c024c3eeSRobert Watson }
814c024c3eeSRobert Watson 
815c024c3eeSRobert Watson static int
81691c2dc94SRobert Watson stub_check_pipe_write(struct ucred *cred, struct pipepair *pp,
817c024c3eeSRobert Watson     struct label *pipelabel)
818c024c3eeSRobert Watson {
819c024c3eeSRobert Watson 
820c024c3eeSRobert Watson 	return (0);
821c024c3eeSRobert Watson }
822c024c3eeSRobert Watson 
823c024c3eeSRobert Watson static int
8241c3f91cdSRobert Watson stub_check_proc_debug(struct ucred *cred, struct proc *proc)
825d8a7b7a3SRobert Watson {
826d8a7b7a3SRobert Watson 
827d8a7b7a3SRobert Watson 	return (0);
828d8a7b7a3SRobert Watson }
829d8a7b7a3SRobert Watson 
830d8a7b7a3SRobert Watson static int
8311c3f91cdSRobert Watson stub_check_proc_sched(struct ucred *cred, struct proc *proc)
832d8a7b7a3SRobert Watson {
833d8a7b7a3SRobert Watson 
834d8a7b7a3SRobert Watson 	return (0);
835d8a7b7a3SRobert Watson }
836d8a7b7a3SRobert Watson 
837d8a7b7a3SRobert Watson static int
8381c3f91cdSRobert Watson stub_check_proc_signal(struct ucred *cred, struct proc *proc, int signum)
839d8a7b7a3SRobert Watson {
840d8a7b7a3SRobert Watson 
841d8a7b7a3SRobert Watson 	return (0);
842d8a7b7a3SRobert Watson }
843d8a7b7a3SRobert Watson 
844d8a7b7a3SRobert Watson static int
8451c3f91cdSRobert Watson stub_check_socket_bind(struct ucred *cred, struct socket *socket,
846d8a7b7a3SRobert Watson     struct label *socketlabel, struct sockaddr *sockaddr)
847d8a7b7a3SRobert Watson {
848d8a7b7a3SRobert Watson 
849d8a7b7a3SRobert Watson 	return (0);
850d8a7b7a3SRobert Watson }
851d8a7b7a3SRobert Watson 
852d8a7b7a3SRobert Watson static int
8531c3f91cdSRobert Watson stub_check_socket_connect(struct ucred *cred, struct socket *socket,
854d8a7b7a3SRobert Watson     struct label *socketlabel, struct sockaddr *sockaddr)
855d8a7b7a3SRobert Watson {
856d8a7b7a3SRobert Watson 
857d8a7b7a3SRobert Watson 	return (0);
858d8a7b7a3SRobert Watson }
859d8a7b7a3SRobert Watson 
860d8a7b7a3SRobert Watson static int
8611c3f91cdSRobert Watson stub_check_socket_deliver(struct socket *so, struct label *socketlabel,
862fb95b5d3SRobert Watson     struct mbuf *m, struct label *mbuflabel)
863d8a7b7a3SRobert Watson {
864d8a7b7a3SRobert Watson 
865d8a7b7a3SRobert Watson 	return (0);
866d8a7b7a3SRobert Watson }
867d8a7b7a3SRobert Watson 
868d8a7b7a3SRobert Watson static int
8691c3f91cdSRobert Watson stub_check_socket_listen(struct ucred *cred, struct socket *so,
870fb95b5d3SRobert Watson     struct label *socketlabel)
871d8a7b7a3SRobert Watson {
872d8a7b7a3SRobert Watson 
873d8a7b7a3SRobert Watson 	return (0);
874d8a7b7a3SRobert Watson }
875d8a7b7a3SRobert Watson 
876d8a7b7a3SRobert Watson static int
8771c3f91cdSRobert Watson stub_check_socket_relabel(struct ucred *cred, struct socket *socket,
878d8a7b7a3SRobert Watson     struct label *socketlabel, struct label *newlabel)
879d8a7b7a3SRobert Watson {
880d8a7b7a3SRobert Watson 
881d8a7b7a3SRobert Watson 	return (0);
882d8a7b7a3SRobert Watson }
883d8a7b7a3SRobert Watson 
884d8a7b7a3SRobert Watson static int
8851c3f91cdSRobert Watson stub_check_socket_visible(struct ucred *cred, struct socket *socket,
886d8a7b7a3SRobert Watson    struct label *socketlabel)
887d8a7b7a3SRobert Watson {
888d8a7b7a3SRobert Watson 
889d8a7b7a3SRobert Watson 	return (0);
890d8a7b7a3SRobert Watson }
891d8a7b7a3SRobert Watson 
892d8a7b7a3SRobert Watson static int
8931c3f91cdSRobert Watson stub_check_sysarch_ioperm(struct ucred *cred)
89409de2dc2SRobert Watson {
89509de2dc2SRobert Watson 
89609de2dc2SRobert Watson 	return (0);
89709de2dc2SRobert Watson }
89809de2dc2SRobert Watson 
89909de2dc2SRobert Watson static int
9001c3f91cdSRobert Watson stub_check_system_acct(struct ucred *cred, struct vnode *vp,
90109de2dc2SRobert Watson     struct label *vlabel)
90209de2dc2SRobert Watson {
90309de2dc2SRobert Watson 
90409de2dc2SRobert Watson 	return (0);
90509de2dc2SRobert Watson }
90609de2dc2SRobert Watson 
90709de2dc2SRobert Watson static int
9081c3f91cdSRobert Watson stub_check_system_reboot(struct ucred *cred, int how)
909927f6069SRobert Watson {
910927f6069SRobert Watson 
911927f6069SRobert Watson 	return (0);
912927f6069SRobert Watson }
913927f6069SRobert Watson 
914927f6069SRobert Watson static int
9151c3f91cdSRobert Watson stub_check_system_settime(struct ucred *cred)
91609de2dc2SRobert Watson {
91709de2dc2SRobert Watson 
91809de2dc2SRobert Watson 	return (0);
91909de2dc2SRobert Watson }
92009de2dc2SRobert Watson 
92109de2dc2SRobert Watson static int
9221c3f91cdSRobert Watson stub_check_system_swapon(struct ucred *cred, struct vnode *vp,
923927f6069SRobert Watson     struct label *label)
924927f6069SRobert Watson {
925927f6069SRobert Watson 
926927f6069SRobert Watson 	return (0);
927927f6069SRobert Watson }
928927f6069SRobert Watson 
929927f6069SRobert Watson static int
9301c3f91cdSRobert Watson stub_check_system_swapoff(struct ucred *cred, struct vnode *vp,
93109de2dc2SRobert Watson     struct label *label)
93209de2dc2SRobert Watson {
93309de2dc2SRobert Watson 
93409de2dc2SRobert Watson 	return (0);
93509de2dc2SRobert Watson }
93609de2dc2SRobert Watson 
93709de2dc2SRobert Watson static int
93863dba32bSPawel Jakub Dawidek stub_check_system_sysctl(struct ucred *cred, struct sysctl_oid *oidp,
93963dba32bSPawel Jakub Dawidek     void *arg1, int arg2, struct sysctl_req *req)
940927f6069SRobert Watson {
941927f6069SRobert Watson 
942927f6069SRobert Watson 	return (0);
943927f6069SRobert Watson }
944927f6069SRobert Watson 
945927f6069SRobert Watson static int
9461c3f91cdSRobert Watson stub_check_vnode_access(struct ucred *cred, struct vnode *vp,
947b914de36SRobert Watson     struct label *label, int acc_mode)
948d8a7b7a3SRobert Watson {
949d8a7b7a3SRobert Watson 
950d8a7b7a3SRobert Watson 	return (0);
951d8a7b7a3SRobert Watson }
952d8a7b7a3SRobert Watson 
953d8a7b7a3SRobert Watson static int
9541c3f91cdSRobert Watson stub_check_vnode_chdir(struct ucred *cred, struct vnode *dvp,
955d8a7b7a3SRobert Watson     struct label *dlabel)
956d8a7b7a3SRobert Watson {
957d8a7b7a3SRobert Watson 
958d8a7b7a3SRobert Watson 	return (0);
959d8a7b7a3SRobert Watson }
960d8a7b7a3SRobert Watson 
961d8a7b7a3SRobert Watson static int
9621c3f91cdSRobert Watson stub_check_vnode_chroot(struct ucred *cred, struct vnode *dvp,
963d8a7b7a3SRobert Watson     struct label *dlabel)
964d8a7b7a3SRobert Watson {
965d8a7b7a3SRobert Watson 
966d8a7b7a3SRobert Watson 	return (0);
967d8a7b7a3SRobert Watson }
968d8a7b7a3SRobert Watson 
969d8a7b7a3SRobert Watson static int
9701c3f91cdSRobert Watson stub_check_vnode_create(struct ucred *cred, struct vnode *dvp,
971d8a7b7a3SRobert Watson     struct label *dlabel, struct componentname *cnp, struct vattr *vap)
972d8a7b7a3SRobert Watson {
973d8a7b7a3SRobert Watson 
974d8a7b7a3SRobert Watson 	return (0);
975d8a7b7a3SRobert Watson }
976d8a7b7a3SRobert Watson 
977d8a7b7a3SRobert Watson static int
9781c3f91cdSRobert Watson stub_check_vnode_delete(struct ucred *cred, struct vnode *dvp,
979d8a7b7a3SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label,
980d8a7b7a3SRobert Watson     struct componentname *cnp)
981d8a7b7a3SRobert Watson {
982d8a7b7a3SRobert Watson 
983d8a7b7a3SRobert Watson 	return (0);
984d8a7b7a3SRobert Watson }
985d8a7b7a3SRobert Watson 
986d8a7b7a3SRobert Watson static int
9871c3f91cdSRobert Watson stub_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp,
988d8a7b7a3SRobert Watson     struct label *label, acl_type_t type)
989d8a7b7a3SRobert Watson {
990d8a7b7a3SRobert Watson 
991d8a7b7a3SRobert Watson 	return (0);
992d8a7b7a3SRobert Watson }
993d8a7b7a3SRobert Watson 
994d8a7b7a3SRobert Watson static int
99564f00af8SRobert Watson stub_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp,
99664f00af8SRobert Watson     struct label *label, int attrnamespace, const char *name)
99764f00af8SRobert Watson {
99864f00af8SRobert Watson 
99964f00af8SRobert Watson 	return (0);
100064f00af8SRobert Watson }
100164f00af8SRobert Watson 
100264f00af8SRobert Watson static int
10031c3f91cdSRobert Watson stub_check_vnode_exec(struct ucred *cred, struct vnode *vp,
1004ef5def59SRobert Watson     struct label *label, struct image_params *imgp,
1005ef5def59SRobert Watson     struct label *execlabel)
1006d8a7b7a3SRobert Watson {
1007d8a7b7a3SRobert Watson 
1008d8a7b7a3SRobert Watson 	return (0);
1009d8a7b7a3SRobert Watson }
1010d8a7b7a3SRobert Watson 
1011d8a7b7a3SRobert Watson static int
10121c3f91cdSRobert Watson stub_check_vnode_getacl(struct ucred *cred, struct vnode *vp,
1013d8a7b7a3SRobert Watson     struct label *label, acl_type_t type)
1014d8a7b7a3SRobert Watson {
1015d8a7b7a3SRobert Watson 
1016d8a7b7a3SRobert Watson 	return (0);
1017d8a7b7a3SRobert Watson }
1018d8a7b7a3SRobert Watson 
1019d8a7b7a3SRobert Watson static int
10201c3f91cdSRobert Watson stub_check_vnode_getextattr(struct ucred *cred, struct vnode *vp,
1021d8a7b7a3SRobert Watson     struct label *label, int attrnamespace, const char *name, struct uio *uio)
1022d8a7b7a3SRobert Watson {
1023d8a7b7a3SRobert Watson 
1024d8a7b7a3SRobert Watson 	return (0);
1025d8a7b7a3SRobert Watson }
1026d8a7b7a3SRobert Watson 
1027d8a7b7a3SRobert Watson static int
10281c3f91cdSRobert Watson stub_check_vnode_link(struct ucred *cred, struct vnode *dvp,
1029c27b50f5SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label,
1030c27b50f5SRobert Watson     struct componentname *cnp)
1031c27b50f5SRobert Watson {
1032c27b50f5SRobert Watson 
1033c27b50f5SRobert Watson 	return (0);
1034c27b50f5SRobert Watson }
1035c27b50f5SRobert Watson 
1036c27b50f5SRobert Watson static int
103764f00af8SRobert Watson stub_check_vnode_listextattr(struct ucred *cred, struct vnode *vp,
103864f00af8SRobert Watson     struct label *label, int attrnamespace)
103964f00af8SRobert Watson {
104064f00af8SRobert Watson 
104164f00af8SRobert Watson 	return (0);
104264f00af8SRobert Watson }
104364f00af8SRobert Watson 
104464f00af8SRobert Watson static int
10451c3f91cdSRobert Watson stub_check_vnode_lookup(struct ucred *cred, struct vnode *dvp,
1046d8a7b7a3SRobert Watson     struct label *dlabel, struct componentname *cnp)
1047d8a7b7a3SRobert Watson {
1048d8a7b7a3SRobert Watson 
1049d8a7b7a3SRobert Watson 	return (0);
1050d8a7b7a3SRobert Watson }
1051d8a7b7a3SRobert Watson 
1052d8a7b7a3SRobert Watson static int
10531c3f91cdSRobert Watson stub_check_vnode_mmap(struct ucred *cred, struct vnode *vp,
1054e183f80eSRobert Watson     struct label *label, int prot)
1055e183f80eSRobert Watson {
1056e183f80eSRobert Watson 
1057e183f80eSRobert Watson 	return (0);
1058e183f80eSRobert Watson }
1059e183f80eSRobert Watson 
1060e183f80eSRobert Watson static int
10611c3f91cdSRobert Watson stub_check_vnode_mprotect(struct ucred *cred, struct vnode *vp,
1062e183f80eSRobert Watson     struct label *label, int prot)
1063e183f80eSRobert Watson {
1064e183f80eSRobert Watson 
1065e183f80eSRobert Watson 	return (0);
1066e183f80eSRobert Watson }
1067e183f80eSRobert Watson 
1068e183f80eSRobert Watson static int
10691c3f91cdSRobert Watson stub_check_vnode_open(struct ucred *cred, struct vnode *vp,
1070b914de36SRobert Watson     struct label *filelabel, int acc_mode)
1071d8a7b7a3SRobert Watson {
1072d8a7b7a3SRobert Watson 
1073d8a7b7a3SRobert Watson 	return (0);
1074d8a7b7a3SRobert Watson }
1075d8a7b7a3SRobert Watson 
1076d8a7b7a3SRobert Watson static int
10771c3f91cdSRobert Watson stub_check_vnode_poll(struct ucred *active_cred, struct ucred *file_cred,
1078177142e4SRobert Watson     struct vnode *vp, struct label *label)
10797f724f8bSRobert Watson {
10807f724f8bSRobert Watson 
10817f724f8bSRobert Watson 	return (0);
10827f724f8bSRobert Watson }
10837f724f8bSRobert Watson 
10847f724f8bSRobert Watson static int
10851c3f91cdSRobert Watson stub_check_vnode_read(struct ucred *active_cred, struct ucred *file_cred,
1086177142e4SRobert Watson     struct vnode *vp, struct label *label)
10877f724f8bSRobert Watson {
10887f724f8bSRobert Watson 
10897f724f8bSRobert Watson 	return (0);
10907f724f8bSRobert Watson }
10917f724f8bSRobert Watson 
10927f724f8bSRobert Watson static int
10931c3f91cdSRobert Watson stub_check_vnode_readdir(struct ucred *cred, struct vnode *vp,
1094d8a7b7a3SRobert Watson     struct label *dlabel)
1095d8a7b7a3SRobert Watson {
1096d8a7b7a3SRobert Watson 
1097d8a7b7a3SRobert Watson 	return (0);
1098d8a7b7a3SRobert Watson }
1099d8a7b7a3SRobert Watson 
1100d8a7b7a3SRobert Watson static int
11011c3f91cdSRobert Watson stub_check_vnode_readlink(struct ucred *cred, struct vnode *vp,
1102d8a7b7a3SRobert Watson     struct label *vnodelabel)
1103d8a7b7a3SRobert Watson {
1104d8a7b7a3SRobert Watson 
1105d8a7b7a3SRobert Watson 	return (0);
1106d8a7b7a3SRobert Watson }
1107d8a7b7a3SRobert Watson 
1108d8a7b7a3SRobert Watson static int
11091c3f91cdSRobert Watson stub_check_vnode_relabel(struct ucred *cred, struct vnode *vp,
1110d8a7b7a3SRobert Watson     struct label *vnodelabel, struct label *newlabel)
1111d8a7b7a3SRobert Watson {
1112d8a7b7a3SRobert Watson 
1113d8a7b7a3SRobert Watson 	return (0);
1114d8a7b7a3SRobert Watson }
1115d8a7b7a3SRobert Watson 
1116d8a7b7a3SRobert Watson static int
11171c3f91cdSRobert Watson stub_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp,
1118d8a7b7a3SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label,
1119d8a7b7a3SRobert Watson     struct componentname *cnp)
1120d8a7b7a3SRobert Watson {
1121d8a7b7a3SRobert Watson 
1122d8a7b7a3SRobert Watson 	return (0);
1123d8a7b7a3SRobert Watson }
1124d8a7b7a3SRobert Watson 
1125d8a7b7a3SRobert Watson static int
11261c3f91cdSRobert Watson stub_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp,
1127d8a7b7a3SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label, int samedir,
1128d8a7b7a3SRobert Watson     struct componentname *cnp)
1129d8a7b7a3SRobert Watson {
1130d8a7b7a3SRobert Watson 
1131d8a7b7a3SRobert Watson 	return (0);
1132d8a7b7a3SRobert Watson }
1133d8a7b7a3SRobert Watson 
1134d8a7b7a3SRobert Watson static int
11351c3f91cdSRobert Watson stub_check_vnode_revoke(struct ucred *cred, struct vnode *vp,
1136d8a7b7a3SRobert Watson     struct label *label)
1137d8a7b7a3SRobert Watson {
1138d8a7b7a3SRobert Watson 
1139d8a7b7a3SRobert Watson 	return (0);
1140d8a7b7a3SRobert Watson }
1141d8a7b7a3SRobert Watson 
1142d8a7b7a3SRobert Watson static int
11431c3f91cdSRobert Watson stub_check_vnode_setacl(struct ucred *cred, struct vnode *vp,
1144d8a7b7a3SRobert Watson     struct label *label, acl_type_t type, struct acl *acl)
1145d8a7b7a3SRobert Watson {
1146d8a7b7a3SRobert Watson 
1147d8a7b7a3SRobert Watson 	return (0);
1148d8a7b7a3SRobert Watson }
1149d8a7b7a3SRobert Watson 
1150d8a7b7a3SRobert Watson static int
11511c3f91cdSRobert Watson stub_check_vnode_setextattr(struct ucred *cred, struct vnode *vp,
1152d8a7b7a3SRobert Watson     struct label *label, int attrnamespace, const char *name, struct uio *uio)
1153d8a7b7a3SRobert Watson {
1154d8a7b7a3SRobert Watson 
1155d8a7b7a3SRobert Watson 	return (0);
1156d8a7b7a3SRobert Watson }
1157d8a7b7a3SRobert Watson 
1158d8a7b7a3SRobert Watson static int
11591c3f91cdSRobert Watson stub_check_vnode_setflags(struct ucred *cred, struct vnode *vp,
1160d8a7b7a3SRobert Watson     struct label *label, u_long flags)
1161d8a7b7a3SRobert Watson {
1162d8a7b7a3SRobert Watson 
1163d8a7b7a3SRobert Watson 	return (0);
1164d8a7b7a3SRobert Watson }
1165d8a7b7a3SRobert Watson 
1166d8a7b7a3SRobert Watson static int
11671c3f91cdSRobert Watson stub_check_vnode_setmode(struct ucred *cred, struct vnode *vp,
1168d8a7b7a3SRobert Watson     struct label *label, mode_t mode)
1169d8a7b7a3SRobert Watson {
1170d8a7b7a3SRobert Watson 
1171d8a7b7a3SRobert Watson 	return (0);
1172d8a7b7a3SRobert Watson }
1173d8a7b7a3SRobert Watson 
1174d8a7b7a3SRobert Watson static int
11751c3f91cdSRobert Watson stub_check_vnode_setowner(struct ucred *cred, struct vnode *vp,
1176d8a7b7a3SRobert Watson     struct label *label, uid_t uid, gid_t gid)
1177d8a7b7a3SRobert Watson {
1178d8a7b7a3SRobert Watson 
1179d8a7b7a3SRobert Watson 	return (0);
1180d8a7b7a3SRobert Watson }
1181d8a7b7a3SRobert Watson 
1182d8a7b7a3SRobert Watson static int
11831c3f91cdSRobert Watson stub_check_vnode_setutimes(struct ucred *cred, struct vnode *vp,
1184d8a7b7a3SRobert Watson     struct label *label, struct timespec atime, struct timespec mtime)
1185d8a7b7a3SRobert Watson {
1186d8a7b7a3SRobert Watson 
1187d8a7b7a3SRobert Watson 	return (0);
1188d8a7b7a3SRobert Watson }
1189d8a7b7a3SRobert Watson 
1190d8a7b7a3SRobert Watson static int
11911c3f91cdSRobert Watson stub_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred,
1192177142e4SRobert Watson     struct vnode *vp, struct label *label)
1193d8a7b7a3SRobert Watson {
1194d8a7b7a3SRobert Watson 
1195d8a7b7a3SRobert Watson 	return (0);
1196d8a7b7a3SRobert Watson }
1197d8a7b7a3SRobert Watson 
11987f724f8bSRobert Watson static int
11991c3f91cdSRobert Watson stub_check_vnode_write(struct ucred *active_cred,
1200177142e4SRobert Watson     struct ucred *file_cred, struct vnode *vp, struct label *label)
12017f724f8bSRobert Watson {
12027f724f8bSRobert Watson 
12037f724f8bSRobert Watson 	return (0);
12047f724f8bSRobert Watson }
12057f724f8bSRobert Watson 
12061c3f91cdSRobert Watson static struct mac_policy_ops mac_stub_ops =
1207d8a7b7a3SRobert Watson {
12081c3f91cdSRobert Watson 	.mpo_destroy = stub_destroy,
12091c3f91cdSRobert Watson 	.mpo_init = stub_init,
12101c3f91cdSRobert Watson 	.mpo_syscall = stub_syscall,
12111c3f91cdSRobert Watson 	.mpo_init_bpfdesc_label = stub_init_label,
12121c3f91cdSRobert Watson 	.mpo_init_cred_label = stub_init_label,
12131c3f91cdSRobert Watson 	.mpo_init_devfsdirent_label = stub_init_label,
12141c3f91cdSRobert Watson 	.mpo_init_ifnet_label = stub_init_label,
1215a557af22SRobert Watson 	.mpo_init_inpcb_label = stub_init_label_waitcheck,
1216ba53d9c9SRobert Watson 	.mpo_init_sysv_msgmsg_label = stub_init_label,
1217ba53d9c9SRobert Watson 	.mpo_init_sysv_msgqueue_label = stub_init_label,
1218ba53d9c9SRobert Watson 	.mpo_init_sysv_sema_label = stub_init_label,
1219ba53d9c9SRobert Watson 	.mpo_init_sysv_shm_label = stub_init_label,
12201c3f91cdSRobert Watson 	.mpo_init_ipq_label = stub_init_label_waitcheck,
12211c3f91cdSRobert Watson 	.mpo_init_mbuf_label = stub_init_label_waitcheck,
12221c3f91cdSRobert Watson 	.mpo_init_mount_label = stub_init_label,
12231c3f91cdSRobert Watson 	.mpo_init_mount_fs_label = stub_init_label,
12241c3f91cdSRobert Watson 	.mpo_init_pipe_label = stub_init_label,
12251c3f91cdSRobert Watson 	.mpo_init_socket_label = stub_init_label_waitcheck,
12261c3f91cdSRobert Watson 	.mpo_init_socket_peer_label = stub_init_label_waitcheck,
12271c3f91cdSRobert Watson 	.mpo_init_vnode_label = stub_init_label,
12281c3f91cdSRobert Watson 	.mpo_destroy_bpfdesc_label = stub_destroy_label,
12291c3f91cdSRobert Watson 	.mpo_destroy_cred_label = stub_destroy_label,
12301c3f91cdSRobert Watson 	.mpo_destroy_devfsdirent_label = stub_destroy_label,
12311c3f91cdSRobert Watson 	.mpo_destroy_ifnet_label = stub_destroy_label,
1232a557af22SRobert Watson 	.mpo_destroy_inpcb_label = stub_destroy_label,
1233ba53d9c9SRobert Watson 	.mpo_destroy_sysv_msgmsg_label = stub_destroy_label,
1234ba53d9c9SRobert Watson 	.mpo_destroy_sysv_msgqueue_label = stub_destroy_label,
1235ba53d9c9SRobert Watson 	.mpo_destroy_sysv_sema_label = stub_destroy_label,
1236ba53d9c9SRobert Watson 	.mpo_destroy_sysv_shm_label = stub_destroy_label,
12371c3f91cdSRobert Watson 	.mpo_destroy_ipq_label = stub_destroy_label,
12381c3f91cdSRobert Watson 	.mpo_destroy_mbuf_label = stub_destroy_label,
12391c3f91cdSRobert Watson 	.mpo_destroy_mount_label = stub_destroy_label,
12401c3f91cdSRobert Watson 	.mpo_destroy_mount_fs_label = stub_destroy_label,
12411c3f91cdSRobert Watson 	.mpo_destroy_pipe_label = stub_destroy_label,
12421c3f91cdSRobert Watson 	.mpo_destroy_socket_label = stub_destroy_label,
12431c3f91cdSRobert Watson 	.mpo_destroy_socket_peer_label = stub_destroy_label,
12441c3f91cdSRobert Watson 	.mpo_destroy_vnode_label = stub_destroy_label,
124556d9e932SRobert Watson 	.mpo_copy_cred_label = stub_copy_label,
12462220907bSRobert Watson 	.mpo_copy_ifnet_label = stub_copy_label,
12470196273bSRobert Watson 	.mpo_copy_mbuf_label = stub_copy_label,
12480196273bSRobert Watson 	.mpo_copy_pipe_label = stub_copy_label,
1249b0323ea3SRobert Watson 	.mpo_copy_socket_label = stub_copy_label,
12500196273bSRobert Watson 	.mpo_copy_vnode_label = stub_copy_label,
12511c3f91cdSRobert Watson 	.mpo_externalize_cred_label = stub_externalize_label,
12521c3f91cdSRobert Watson 	.mpo_externalize_ifnet_label = stub_externalize_label,
12531c3f91cdSRobert Watson 	.mpo_externalize_pipe_label = stub_externalize_label,
12541c3f91cdSRobert Watson 	.mpo_externalize_socket_label = stub_externalize_label,
12551c3f91cdSRobert Watson 	.mpo_externalize_socket_peer_label = stub_externalize_label,
12561c3f91cdSRobert Watson 	.mpo_externalize_vnode_label = stub_externalize_label,
12571c3f91cdSRobert Watson 	.mpo_internalize_cred_label = stub_internalize_label,
12581c3f91cdSRobert Watson 	.mpo_internalize_ifnet_label = stub_internalize_label,
12591c3f91cdSRobert Watson 	.mpo_internalize_pipe_label = stub_internalize_label,
12601c3f91cdSRobert Watson 	.mpo_internalize_socket_label = stub_internalize_label,
12611c3f91cdSRobert Watson 	.mpo_internalize_vnode_label = stub_internalize_label,
12621c3f91cdSRobert Watson 	.mpo_associate_vnode_devfs = stub_associate_vnode_devfs,
12631c3f91cdSRobert Watson 	.mpo_associate_vnode_extattr = stub_associate_vnode_extattr,
12641c3f91cdSRobert Watson 	.mpo_associate_vnode_singlelabel = stub_associate_vnode_singlelabel,
12651c3f91cdSRobert Watson 	.mpo_create_devfs_device = stub_create_devfs_device,
12661c3f91cdSRobert Watson 	.mpo_create_devfs_directory = stub_create_devfs_directory,
12671c3f91cdSRobert Watson 	.mpo_create_devfs_symlink = stub_create_devfs_symlink,
1268ba53d9c9SRobert Watson 	.mpo_create_sysv_msgmsg = stub_create_sysv_msgmsg,
1269ba53d9c9SRobert Watson 	.mpo_create_sysv_msgqueue = stub_create_sysv_msgqueue,
1270ba53d9c9SRobert Watson 	.mpo_create_sysv_sema = stub_create_sysv_sema,
1271ba53d9c9SRobert Watson 	.mpo_create_sysv_shm = stub_create_sysv_shm,
12721c3f91cdSRobert Watson 	.mpo_create_vnode_extattr = stub_create_vnode_extattr,
12731c3f91cdSRobert Watson 	.mpo_create_mount = stub_create_mount,
12741c3f91cdSRobert Watson 	.mpo_create_root_mount = stub_create_root_mount,
12751c3f91cdSRobert Watson 	.mpo_relabel_vnode = stub_relabel_vnode,
12761c3f91cdSRobert Watson 	.mpo_setlabel_vnode_extattr = stub_setlabel_vnode_extattr,
12771c3f91cdSRobert Watson 	.mpo_update_devfsdirent = stub_update_devfsdirent,
12781c3f91cdSRobert Watson 	.mpo_create_mbuf_from_socket = stub_create_mbuf_from_socket,
12791c3f91cdSRobert Watson 	.mpo_create_pipe = stub_create_pipe,
12801c3f91cdSRobert Watson 	.mpo_create_socket = stub_create_socket,
12811c3f91cdSRobert Watson 	.mpo_create_socket_from_socket = stub_create_socket_from_socket,
12821c3f91cdSRobert Watson 	.mpo_relabel_pipe = stub_relabel_pipe,
12831c3f91cdSRobert Watson 	.mpo_relabel_socket = stub_relabel_socket,
12841c3f91cdSRobert Watson 	.mpo_set_socket_peer_from_mbuf = stub_set_socket_peer_from_mbuf,
12851c3f91cdSRobert Watson 	.mpo_set_socket_peer_from_socket = stub_set_socket_peer_from_socket,
12861c3f91cdSRobert Watson 	.mpo_create_bpfdesc = stub_create_bpfdesc,
12871c3f91cdSRobert Watson 	.mpo_create_ifnet = stub_create_ifnet,
1288a557af22SRobert Watson 	.mpo_create_inpcb_from_socket = stub_create_inpcb_from_socket,
12891c3f91cdSRobert Watson 	.mpo_create_ipq = stub_create_ipq,
12901c3f91cdSRobert Watson 	.mpo_create_datagram_from_ipq = stub_create_datagram_from_ipq,
12911c3f91cdSRobert Watson 	.mpo_create_fragment = stub_create_fragment,
12921c3f91cdSRobert Watson 	.mpo_create_ipq = stub_create_ipq,
12932d92ec98SRobert Watson 	.mpo_create_mbuf_from_inpcb = stub_create_mbuf_from_inpcb,
12941c3f91cdSRobert Watson 	.mpo_create_mbuf_from_mbuf = stub_create_mbuf_from_mbuf,
12951c3f91cdSRobert Watson 	.mpo_create_mbuf_linklayer = stub_create_mbuf_linklayer,
12961c3f91cdSRobert Watson 	.mpo_create_mbuf_from_bpfdesc = stub_create_mbuf_from_bpfdesc,
12971c3f91cdSRobert Watson 	.mpo_create_mbuf_from_ifnet = stub_create_mbuf_from_ifnet,
12981c3f91cdSRobert Watson 	.mpo_create_mbuf_multicast_encap = stub_create_mbuf_multicast_encap,
12991c3f91cdSRobert Watson 	.mpo_create_mbuf_netlayer = stub_create_mbuf_netlayer,
13001c3f91cdSRobert Watson 	.mpo_fragment_match = stub_fragment_match,
130164f00af8SRobert Watson 	.mpo_reflect_mbuf_icmp = stub_reflect_mbuf_icmp,
130264f00af8SRobert Watson 	.mpo_reflect_mbuf_tcp = stub_reflect_mbuf_tcp,
13031c3f91cdSRobert Watson 	.mpo_relabel_ifnet = stub_relabel_ifnet,
13041c3f91cdSRobert Watson 	.mpo_update_ipq = stub_update_ipq,
1305a557af22SRobert Watson 	.mpo_inpcb_sosetlabel = stub_inpcb_sosetlabel,
13061c3f91cdSRobert Watson 	.mpo_execve_transition = stub_execve_transition,
13071c3f91cdSRobert Watson 	.mpo_execve_will_transition = stub_execve_will_transition,
13081c3f91cdSRobert Watson 	.mpo_create_proc0 = stub_create_proc0,
13091c3f91cdSRobert Watson 	.mpo_create_proc1 = stub_create_proc1,
13101c3f91cdSRobert Watson 	.mpo_relabel_cred = stub_relabel_cred,
13111c3f91cdSRobert Watson 	.mpo_thread_userret = stub_thread_userret,
1312ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_msgmsg = stub_cleanup_sysv_msgmsg,
1313ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_msgqueue = stub_cleanup_sysv_msgqueue,
1314ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_sema = stub_cleanup_sysv_sema,
1315ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_shm = stub_cleanup_sysv_shm,
13161c3f91cdSRobert Watson 	.mpo_check_bpfdesc_receive = stub_check_bpfdesc_receive,
13171c3f91cdSRobert Watson 	.mpo_check_cred_relabel = stub_check_cred_relabel,
13181c3f91cdSRobert Watson 	.mpo_check_cred_visible = stub_check_cred_visible,
13191c3f91cdSRobert Watson 	.mpo_check_ifnet_relabel = stub_check_ifnet_relabel,
13201c3f91cdSRobert Watson 	.mpo_check_ifnet_transmit = stub_check_ifnet_transmit,
1321a557af22SRobert Watson 	.mpo_check_inpcb_deliver = stub_check_inpcb_deliver,
1322ba53d9c9SRobert Watson 	.mpo_check_sysv_msgmsq = stub_check_sysv_msgmsq,
1323ba53d9c9SRobert Watson 	.mpo_check_sysv_msgrcv = stub_check_sysv_msgrcv,
1324ba53d9c9SRobert Watson 	.mpo_check_sysv_msgrmid = stub_check_sysv_msgrmid,
1325ba53d9c9SRobert Watson 	.mpo_check_sysv_msqget = stub_check_sysv_msqget,
1326ba53d9c9SRobert Watson 	.mpo_check_sysv_msqsnd = stub_check_sysv_msqsnd,
1327ba53d9c9SRobert Watson 	.mpo_check_sysv_msqrcv = stub_check_sysv_msqrcv,
1328ba53d9c9SRobert Watson 	.mpo_check_sysv_msqctl = stub_check_sysv_msqctl,
1329ba53d9c9SRobert Watson 	.mpo_check_sysv_semctl = stub_check_sysv_semctl,
1330ba53d9c9SRobert Watson 	.mpo_check_sysv_semget = stub_check_sysv_semget,
1331ba53d9c9SRobert Watson 	.mpo_check_sysv_semop = stub_check_sysv_semop,
1332ba53d9c9SRobert Watson 	.mpo_check_sysv_shmat = stub_check_sysv_shmat,
1333ba53d9c9SRobert Watson 	.mpo_check_sysv_shmctl = stub_check_sysv_shmctl,
1334ba53d9c9SRobert Watson 	.mpo_check_sysv_shmdt = stub_check_sysv_shmdt,
1335ba53d9c9SRobert Watson 	.mpo_check_sysv_shmget = stub_check_sysv_shmget,
13361c3f91cdSRobert Watson 	.mpo_check_kenv_dump = stub_check_kenv_dump,
13371c3f91cdSRobert Watson 	.mpo_check_kenv_get = stub_check_kenv_get,
13381c3f91cdSRobert Watson 	.mpo_check_kenv_set = stub_check_kenv_set,
13391c3f91cdSRobert Watson 	.mpo_check_kenv_unset = stub_check_kenv_unset,
13401c3f91cdSRobert Watson 	.mpo_check_kld_load = stub_check_kld_load,
13411c3f91cdSRobert Watson 	.mpo_check_kld_stat = stub_check_kld_stat,
13421c3f91cdSRobert Watson 	.mpo_check_kld_unload = stub_check_kld_unload,
13431c3f91cdSRobert Watson 	.mpo_check_mount_stat = stub_check_mount_stat,
13441c3f91cdSRobert Watson 	.mpo_check_pipe_ioctl = stub_check_pipe_ioctl,
13451c3f91cdSRobert Watson 	.mpo_check_pipe_poll = stub_check_pipe_poll,
13461c3f91cdSRobert Watson 	.mpo_check_pipe_read = stub_check_pipe_read,
13471c3f91cdSRobert Watson 	.mpo_check_pipe_relabel = stub_check_pipe_relabel,
13481c3f91cdSRobert Watson 	.mpo_check_pipe_stat = stub_check_pipe_stat,
13491c3f91cdSRobert Watson 	.mpo_check_pipe_write = stub_check_pipe_write,
13501c3f91cdSRobert Watson 	.mpo_check_proc_debug = stub_check_proc_debug,
13511c3f91cdSRobert Watson 	.mpo_check_proc_sched = stub_check_proc_sched,
13521c3f91cdSRobert Watson 	.mpo_check_proc_signal = stub_check_proc_signal,
13531c3f91cdSRobert Watson 	.mpo_check_socket_bind = stub_check_socket_bind,
13541c3f91cdSRobert Watson 	.mpo_check_socket_connect = stub_check_socket_connect,
13551c3f91cdSRobert Watson 	.mpo_check_socket_deliver = stub_check_socket_deliver,
13561c3f91cdSRobert Watson 	.mpo_check_socket_listen = stub_check_socket_listen,
13571c3f91cdSRobert Watson 	.mpo_check_socket_relabel = stub_check_socket_relabel,
13581c3f91cdSRobert Watson 	.mpo_check_socket_visible = stub_check_socket_visible,
13591c3f91cdSRobert Watson 	.mpo_check_sysarch_ioperm = stub_check_sysarch_ioperm,
13601c3f91cdSRobert Watson 	.mpo_check_system_acct = stub_check_system_acct,
13611c3f91cdSRobert Watson 	.mpo_check_system_reboot = stub_check_system_reboot,
13621c3f91cdSRobert Watson 	.mpo_check_system_settime = stub_check_system_settime,
13631c3f91cdSRobert Watson 	.mpo_check_system_swapon = stub_check_system_swapon,
13641c3f91cdSRobert Watson 	.mpo_check_system_swapoff = stub_check_system_swapoff,
13651c3f91cdSRobert Watson 	.mpo_check_system_sysctl = stub_check_system_sysctl,
13661c3f91cdSRobert Watson 	.mpo_check_vnode_access = stub_check_vnode_access,
13671c3f91cdSRobert Watson 	.mpo_check_vnode_chdir = stub_check_vnode_chdir,
13681c3f91cdSRobert Watson 	.mpo_check_vnode_chroot = stub_check_vnode_chroot,
13691c3f91cdSRobert Watson 	.mpo_check_vnode_create = stub_check_vnode_create,
13701c3f91cdSRobert Watson 	.mpo_check_vnode_delete = stub_check_vnode_delete,
13711c3f91cdSRobert Watson 	.mpo_check_vnode_deleteacl = stub_check_vnode_deleteacl,
137264f00af8SRobert Watson 	.mpo_check_vnode_deleteextattr = stub_check_vnode_deleteextattr,
13731c3f91cdSRobert Watson 	.mpo_check_vnode_exec = stub_check_vnode_exec,
13741c3f91cdSRobert Watson 	.mpo_check_vnode_getacl = stub_check_vnode_getacl,
13751c3f91cdSRobert Watson 	.mpo_check_vnode_getextattr = stub_check_vnode_getextattr,
13761c3f91cdSRobert Watson 	.mpo_check_vnode_link = stub_check_vnode_link,
137764f00af8SRobert Watson 	.mpo_check_vnode_listextattr = stub_check_vnode_listextattr,
13781c3f91cdSRobert Watson 	.mpo_check_vnode_lookup = stub_check_vnode_lookup,
13791c3f91cdSRobert Watson 	.mpo_check_vnode_mmap = stub_check_vnode_mmap,
13801c3f91cdSRobert Watson 	.mpo_check_vnode_mprotect = stub_check_vnode_mprotect,
13811c3f91cdSRobert Watson 	.mpo_check_vnode_open = stub_check_vnode_open,
13821c3f91cdSRobert Watson 	.mpo_check_vnode_poll = stub_check_vnode_poll,
13831c3f91cdSRobert Watson 	.mpo_check_vnode_read = stub_check_vnode_read,
13841c3f91cdSRobert Watson 	.mpo_check_vnode_readdir = stub_check_vnode_readdir,
13851c3f91cdSRobert Watson 	.mpo_check_vnode_readlink = stub_check_vnode_readlink,
13861c3f91cdSRobert Watson 	.mpo_check_vnode_relabel = stub_check_vnode_relabel,
13871c3f91cdSRobert Watson 	.mpo_check_vnode_rename_from = stub_check_vnode_rename_from,
13881c3f91cdSRobert Watson 	.mpo_check_vnode_rename_to = stub_check_vnode_rename_to,
13891c3f91cdSRobert Watson 	.mpo_check_vnode_revoke = stub_check_vnode_revoke,
13901c3f91cdSRobert Watson 	.mpo_check_vnode_setacl = stub_check_vnode_setacl,
13911c3f91cdSRobert Watson 	.mpo_check_vnode_setextattr = stub_check_vnode_setextattr,
13921c3f91cdSRobert Watson 	.mpo_check_vnode_setflags = stub_check_vnode_setflags,
13931c3f91cdSRobert Watson 	.mpo_check_vnode_setmode = stub_check_vnode_setmode,
13941c3f91cdSRobert Watson 	.mpo_check_vnode_setowner = stub_check_vnode_setowner,
13951c3f91cdSRobert Watson 	.mpo_check_vnode_setutimes = stub_check_vnode_setutimes,
13961c3f91cdSRobert Watson 	.mpo_check_vnode_stat = stub_check_vnode_stat,
13971c3f91cdSRobert Watson 	.mpo_check_vnode_write = stub_check_vnode_write,
1398d8a7b7a3SRobert Watson };
1399d8a7b7a3SRobert Watson 
14001c3f91cdSRobert Watson MAC_POLICY_SET(&mac_stub_ops, mac_stub, "TrustedBSD MAC/Stub",
1401740348c4SRobert Watson     MPC_LOADTIME_FLAG_UNLOADOK, NULL);
1402