xref: /freebsd/sys/security/mac_stub/mac_stub.c (revision 7f53207b920ab74fb4fb9de4964071bbb13bbbec)
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
845030a28b3SRobert Watson stub_check_proc_setuid(struct ucred *cred, uid_t uid)
846030a28b3SRobert Watson {
847030a28b3SRobert Watson 
848030a28b3SRobert Watson 	return (0);
849030a28b3SRobert Watson }
850030a28b3SRobert Watson 
851030a28b3SRobert Watson static int
852030a28b3SRobert Watson stub_check_proc_seteuid(struct ucred *cred, uid_t euid)
853030a28b3SRobert Watson {
854030a28b3SRobert Watson 
855030a28b3SRobert Watson 	return (0);
856030a28b3SRobert Watson }
857030a28b3SRobert Watson 
858030a28b3SRobert Watson static int
859030a28b3SRobert Watson stub_check_proc_setgid(struct ucred *cred, gid_t gid)
860030a28b3SRobert Watson {
861030a28b3SRobert Watson 
862030a28b3SRobert Watson 	return (0);
863030a28b3SRobert Watson }
864030a28b3SRobert Watson 
865030a28b3SRobert Watson static int
866030a28b3SRobert Watson stub_check_proc_setegid(struct ucred *cred, gid_t egid)
867030a28b3SRobert Watson {
868030a28b3SRobert Watson 
869030a28b3SRobert Watson 	return (0);
870030a28b3SRobert Watson }
871030a28b3SRobert Watson 
872030a28b3SRobert Watson static int
873030a28b3SRobert Watson stub_check_proc_setgroups(struct ucred *cred, int ngroups,
874030a28b3SRobert Watson 	gid_t *gidset)
875030a28b3SRobert Watson {
876030a28b3SRobert Watson 
877030a28b3SRobert Watson 	return (0);
878030a28b3SRobert Watson }
879030a28b3SRobert Watson 
880030a28b3SRobert Watson static int
881030a28b3SRobert Watson stub_check_proc_setreuid(struct ucred *cred, uid_t ruid, uid_t euid)
882030a28b3SRobert Watson {
883030a28b3SRobert Watson 
884030a28b3SRobert Watson 	return (0);
885030a28b3SRobert Watson }
886030a28b3SRobert Watson 
887030a28b3SRobert Watson static int
888030a28b3SRobert Watson stub_check_proc_setregid(struct ucred *cred, gid_t rgid, gid_t egid)
889030a28b3SRobert Watson {
890030a28b3SRobert Watson 
891030a28b3SRobert Watson 	return (0);
892030a28b3SRobert Watson }
893030a28b3SRobert Watson 
894030a28b3SRobert Watson static int
895030a28b3SRobert Watson stub_check_proc_setresuid(struct ucred *cred, uid_t ruid, uid_t euid,
896030a28b3SRobert Watson 	uid_t suid)
897030a28b3SRobert Watson {
898030a28b3SRobert Watson 
899030a28b3SRobert Watson 	return (0);
900030a28b3SRobert Watson }
901030a28b3SRobert Watson 
902030a28b3SRobert Watson static int
903030a28b3SRobert Watson stub_check_proc_setresgid(struct ucred *cred, gid_t rgid, gid_t egid,
904030a28b3SRobert Watson 	gid_t sgid)
905030a28b3SRobert Watson {
906030a28b3SRobert Watson 
907030a28b3SRobert Watson 	return (0);
908030a28b3SRobert Watson }
909030a28b3SRobert Watson 
910030a28b3SRobert Watson static int
9117f53207bSRobert Watson stub_check_socket_accept(struct ucred *cred, struct socket *socket,
9127f53207bSRobert Watson     struct label *socketlabel)
9137f53207bSRobert Watson {
9147f53207bSRobert Watson 
9157f53207bSRobert Watson 	return (0);
9167f53207bSRobert Watson }
9177f53207bSRobert Watson 
9187f53207bSRobert Watson static int
9191c3f91cdSRobert Watson stub_check_socket_bind(struct ucred *cred, struct socket *socket,
920d8a7b7a3SRobert Watson     struct label *socketlabel, struct sockaddr *sockaddr)
921d8a7b7a3SRobert Watson {
922d8a7b7a3SRobert Watson 
923d8a7b7a3SRobert Watson 	return (0);
924d8a7b7a3SRobert Watson }
925d8a7b7a3SRobert Watson 
926d8a7b7a3SRobert Watson static int
9271c3f91cdSRobert Watson stub_check_socket_connect(struct ucred *cred, struct socket *socket,
928d8a7b7a3SRobert Watson     struct label *socketlabel, struct sockaddr *sockaddr)
929d8a7b7a3SRobert Watson {
930d8a7b7a3SRobert Watson 
931d8a7b7a3SRobert Watson 	return (0);
932d8a7b7a3SRobert Watson }
933d8a7b7a3SRobert Watson 
934d8a7b7a3SRobert Watson static int
9351c3f91cdSRobert Watson stub_check_socket_deliver(struct socket *so, struct label *socketlabel,
936fb95b5d3SRobert Watson     struct mbuf *m, struct label *mbuflabel)
937d8a7b7a3SRobert Watson {
938d8a7b7a3SRobert Watson 
939d8a7b7a3SRobert Watson 	return (0);
940d8a7b7a3SRobert Watson }
941d8a7b7a3SRobert Watson 
942d8a7b7a3SRobert Watson static int
9431c3f91cdSRobert Watson stub_check_socket_listen(struct ucred *cred, struct socket *so,
944fb95b5d3SRobert Watson     struct label *socketlabel)
945d8a7b7a3SRobert Watson {
946d8a7b7a3SRobert Watson 
947d8a7b7a3SRobert Watson 	return (0);
948d8a7b7a3SRobert Watson }
949d8a7b7a3SRobert Watson 
950d8a7b7a3SRobert Watson static int
9517f53207bSRobert Watson stub_check_socket_poll(struct ucred *cred, struct socket *so,
9527f53207bSRobert Watson     struct label *socketlabel)
9537f53207bSRobert Watson {
9547f53207bSRobert Watson 
9557f53207bSRobert Watson 	return (0);
9567f53207bSRobert Watson }
9577f53207bSRobert Watson 
9587f53207bSRobert Watson static int
9597f53207bSRobert Watson stub_check_socket_receive(struct ucred *cred, struct socket *so,
9607f53207bSRobert Watson     struct label *socketlabel)
9617f53207bSRobert Watson {
9627f53207bSRobert Watson 
9637f53207bSRobert Watson 	return (0);
9647f53207bSRobert Watson }
9657f53207bSRobert Watson 
9667f53207bSRobert Watson static int
9671c3f91cdSRobert Watson stub_check_socket_relabel(struct ucred *cred, struct socket *socket,
968d8a7b7a3SRobert Watson     struct label *socketlabel, struct label *newlabel)
969d8a7b7a3SRobert Watson {
970d8a7b7a3SRobert Watson 
971d8a7b7a3SRobert Watson 	return (0);
972d8a7b7a3SRobert Watson }
9737f53207bSRobert Watson static int
9747f53207bSRobert Watson stub_check_socket_send(struct ucred *cred, struct socket *so,
9757f53207bSRobert Watson     struct label *socketlabel)
9767f53207bSRobert Watson {
9777f53207bSRobert Watson 
9787f53207bSRobert Watson 	return (0);
9797f53207bSRobert Watson }
9807f53207bSRobert Watson 
9817f53207bSRobert Watson static int
9827f53207bSRobert Watson stub_check_socket_stat(struct ucred *cred, struct socket *so,
9837f53207bSRobert Watson     struct label *socketlabel)
9847f53207bSRobert Watson {
9857f53207bSRobert Watson 
9867f53207bSRobert Watson 	return (0);
9877f53207bSRobert Watson }
988d8a7b7a3SRobert Watson 
989d8a7b7a3SRobert Watson static int
9901c3f91cdSRobert Watson stub_check_socket_visible(struct ucred *cred, struct socket *socket,
991d8a7b7a3SRobert Watson    struct label *socketlabel)
992d8a7b7a3SRobert Watson {
993d8a7b7a3SRobert Watson 
994d8a7b7a3SRobert Watson 	return (0);
995d8a7b7a3SRobert Watson }
996d8a7b7a3SRobert Watson 
997d8a7b7a3SRobert Watson static int
9981c3f91cdSRobert Watson stub_check_sysarch_ioperm(struct ucred *cred)
99909de2dc2SRobert Watson {
100009de2dc2SRobert Watson 
100109de2dc2SRobert Watson 	return (0);
100209de2dc2SRobert Watson }
100309de2dc2SRobert Watson 
100409de2dc2SRobert Watson static int
10051c3f91cdSRobert Watson stub_check_system_acct(struct ucred *cred, struct vnode *vp,
100609de2dc2SRobert Watson     struct label *vlabel)
100709de2dc2SRobert Watson {
100809de2dc2SRobert Watson 
100909de2dc2SRobert Watson 	return (0);
101009de2dc2SRobert Watson }
101109de2dc2SRobert Watson 
101209de2dc2SRobert Watson static int
10131c3f91cdSRobert Watson stub_check_system_reboot(struct ucred *cred, int how)
1014927f6069SRobert Watson {
1015927f6069SRobert Watson 
1016927f6069SRobert Watson 	return (0);
1017927f6069SRobert Watson }
1018927f6069SRobert Watson 
1019927f6069SRobert Watson static int
10201c3f91cdSRobert Watson stub_check_system_settime(struct ucred *cred)
102109de2dc2SRobert Watson {
102209de2dc2SRobert Watson 
102309de2dc2SRobert Watson 	return (0);
102409de2dc2SRobert Watson }
102509de2dc2SRobert Watson 
102609de2dc2SRobert Watson static int
10271c3f91cdSRobert Watson stub_check_system_swapon(struct ucred *cred, struct vnode *vp,
1028927f6069SRobert Watson     struct label *label)
1029927f6069SRobert Watson {
1030927f6069SRobert Watson 
1031927f6069SRobert Watson 	return (0);
1032927f6069SRobert Watson }
1033927f6069SRobert Watson 
1034927f6069SRobert Watson static int
10351c3f91cdSRobert Watson stub_check_system_swapoff(struct ucred *cred, struct vnode *vp,
103609de2dc2SRobert Watson     struct label *label)
103709de2dc2SRobert Watson {
103809de2dc2SRobert Watson 
103909de2dc2SRobert Watson 	return (0);
104009de2dc2SRobert Watson }
104109de2dc2SRobert Watson 
104209de2dc2SRobert Watson static int
104363dba32bSPawel Jakub Dawidek stub_check_system_sysctl(struct ucred *cred, struct sysctl_oid *oidp,
104463dba32bSPawel Jakub Dawidek     void *arg1, int arg2, struct sysctl_req *req)
1045927f6069SRobert Watson {
1046927f6069SRobert Watson 
1047927f6069SRobert Watson 	return (0);
1048927f6069SRobert Watson }
1049927f6069SRobert Watson 
1050927f6069SRobert Watson static int
10511c3f91cdSRobert Watson stub_check_vnode_access(struct ucred *cred, struct vnode *vp,
1052b914de36SRobert Watson     struct label *label, int acc_mode)
1053d8a7b7a3SRobert Watson {
1054d8a7b7a3SRobert Watson 
1055d8a7b7a3SRobert Watson 	return (0);
1056d8a7b7a3SRobert Watson }
1057d8a7b7a3SRobert Watson 
1058d8a7b7a3SRobert Watson static int
10591c3f91cdSRobert Watson stub_check_vnode_chdir(struct ucred *cred, struct vnode *dvp,
1060d8a7b7a3SRobert Watson     struct label *dlabel)
1061d8a7b7a3SRobert Watson {
1062d8a7b7a3SRobert Watson 
1063d8a7b7a3SRobert Watson 	return (0);
1064d8a7b7a3SRobert Watson }
1065d8a7b7a3SRobert Watson 
1066d8a7b7a3SRobert Watson static int
10671c3f91cdSRobert Watson stub_check_vnode_chroot(struct ucred *cred, struct vnode *dvp,
1068d8a7b7a3SRobert Watson     struct label *dlabel)
1069d8a7b7a3SRobert Watson {
1070d8a7b7a3SRobert Watson 
1071d8a7b7a3SRobert Watson 	return (0);
1072d8a7b7a3SRobert Watson }
1073d8a7b7a3SRobert Watson 
1074d8a7b7a3SRobert Watson static int
10751c3f91cdSRobert Watson stub_check_vnode_create(struct ucred *cred, struct vnode *dvp,
1076d8a7b7a3SRobert Watson     struct label *dlabel, struct componentname *cnp, struct vattr *vap)
1077d8a7b7a3SRobert Watson {
1078d8a7b7a3SRobert Watson 
1079d8a7b7a3SRobert Watson 	return (0);
1080d8a7b7a3SRobert Watson }
1081d8a7b7a3SRobert Watson 
1082d8a7b7a3SRobert Watson static int
10831c3f91cdSRobert Watson stub_check_vnode_delete(struct ucred *cred, struct vnode *dvp,
1084d8a7b7a3SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label,
1085d8a7b7a3SRobert Watson     struct componentname *cnp)
1086d8a7b7a3SRobert Watson {
1087d8a7b7a3SRobert Watson 
1088d8a7b7a3SRobert Watson 	return (0);
1089d8a7b7a3SRobert Watson }
1090d8a7b7a3SRobert Watson 
1091d8a7b7a3SRobert Watson static int
10921c3f91cdSRobert Watson stub_check_vnode_deleteacl(struct ucred *cred, struct vnode *vp,
1093d8a7b7a3SRobert Watson     struct label *label, acl_type_t type)
1094d8a7b7a3SRobert Watson {
1095d8a7b7a3SRobert Watson 
1096d8a7b7a3SRobert Watson 	return (0);
1097d8a7b7a3SRobert Watson }
1098d8a7b7a3SRobert Watson 
1099d8a7b7a3SRobert Watson static int
110064f00af8SRobert Watson stub_check_vnode_deleteextattr(struct ucred *cred, struct vnode *vp,
110164f00af8SRobert Watson     struct label *label, int attrnamespace, const char *name)
110264f00af8SRobert Watson {
110364f00af8SRobert Watson 
110464f00af8SRobert Watson 	return (0);
110564f00af8SRobert Watson }
110664f00af8SRobert Watson 
110764f00af8SRobert Watson static int
11081c3f91cdSRobert Watson stub_check_vnode_exec(struct ucred *cred, struct vnode *vp,
1109ef5def59SRobert Watson     struct label *label, struct image_params *imgp,
1110ef5def59SRobert Watson     struct label *execlabel)
1111d8a7b7a3SRobert Watson {
1112d8a7b7a3SRobert Watson 
1113d8a7b7a3SRobert Watson 	return (0);
1114d8a7b7a3SRobert Watson }
1115d8a7b7a3SRobert Watson 
1116d8a7b7a3SRobert Watson static int
11171c3f91cdSRobert Watson stub_check_vnode_getacl(struct ucred *cred, struct vnode *vp,
1118d8a7b7a3SRobert Watson     struct label *label, acl_type_t type)
1119d8a7b7a3SRobert Watson {
1120d8a7b7a3SRobert Watson 
1121d8a7b7a3SRobert Watson 	return (0);
1122d8a7b7a3SRobert Watson }
1123d8a7b7a3SRobert Watson 
1124d8a7b7a3SRobert Watson static int
11251c3f91cdSRobert Watson stub_check_vnode_getextattr(struct ucred *cred, struct vnode *vp,
1126d8a7b7a3SRobert Watson     struct label *label, int attrnamespace, const char *name, struct uio *uio)
1127d8a7b7a3SRobert Watson {
1128d8a7b7a3SRobert Watson 
1129d8a7b7a3SRobert Watson 	return (0);
1130d8a7b7a3SRobert Watson }
1131d8a7b7a3SRobert Watson 
1132d8a7b7a3SRobert Watson static int
11331c3f91cdSRobert Watson stub_check_vnode_link(struct ucred *cred, struct vnode *dvp,
1134c27b50f5SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label,
1135c27b50f5SRobert Watson     struct componentname *cnp)
1136c27b50f5SRobert Watson {
1137c27b50f5SRobert Watson 
1138c27b50f5SRobert Watson 	return (0);
1139c27b50f5SRobert Watson }
1140c27b50f5SRobert Watson 
1141c27b50f5SRobert Watson static int
114264f00af8SRobert Watson stub_check_vnode_listextattr(struct ucred *cred, struct vnode *vp,
114364f00af8SRobert Watson     struct label *label, int attrnamespace)
114464f00af8SRobert Watson {
114564f00af8SRobert Watson 
114664f00af8SRobert Watson 	return (0);
114764f00af8SRobert Watson }
114864f00af8SRobert Watson 
114964f00af8SRobert Watson static int
11501c3f91cdSRobert Watson stub_check_vnode_lookup(struct ucred *cred, struct vnode *dvp,
1151d8a7b7a3SRobert Watson     struct label *dlabel, struct componentname *cnp)
1152d8a7b7a3SRobert Watson {
1153d8a7b7a3SRobert Watson 
1154d8a7b7a3SRobert Watson 	return (0);
1155d8a7b7a3SRobert Watson }
1156d8a7b7a3SRobert Watson 
1157d8a7b7a3SRobert Watson static int
11581c3f91cdSRobert Watson stub_check_vnode_mmap(struct ucred *cred, struct vnode *vp,
1159c92163dcSChristian S.J. Peron     struct label *label, int prot, int flags)
1160e183f80eSRobert Watson {
1161e183f80eSRobert Watson 
1162e183f80eSRobert Watson 	return (0);
1163e183f80eSRobert Watson }
1164e183f80eSRobert Watson 
1165e183f80eSRobert Watson static int
11661c3f91cdSRobert Watson stub_check_vnode_open(struct ucred *cred, struct vnode *vp,
1167b914de36SRobert Watson     struct label *filelabel, int acc_mode)
1168d8a7b7a3SRobert Watson {
1169d8a7b7a3SRobert Watson 
1170d8a7b7a3SRobert Watson 	return (0);
1171d8a7b7a3SRobert Watson }
1172d8a7b7a3SRobert Watson 
1173d8a7b7a3SRobert Watson static int
11741c3f91cdSRobert Watson stub_check_vnode_poll(struct ucred *active_cred, struct ucred *file_cred,
1175177142e4SRobert Watson     struct vnode *vp, struct label *label)
11767f724f8bSRobert Watson {
11777f724f8bSRobert Watson 
11787f724f8bSRobert Watson 	return (0);
11797f724f8bSRobert Watson }
11807f724f8bSRobert Watson 
11817f724f8bSRobert Watson static int
11821c3f91cdSRobert Watson stub_check_vnode_read(struct ucred *active_cred, struct ucred *file_cred,
1183177142e4SRobert Watson     struct vnode *vp, struct label *label)
11847f724f8bSRobert Watson {
11857f724f8bSRobert Watson 
11867f724f8bSRobert Watson 	return (0);
11877f724f8bSRobert Watson }
11887f724f8bSRobert Watson 
11897f724f8bSRobert Watson static int
11901c3f91cdSRobert Watson stub_check_vnode_readdir(struct ucred *cred, struct vnode *vp,
1191d8a7b7a3SRobert Watson     struct label *dlabel)
1192d8a7b7a3SRobert Watson {
1193d8a7b7a3SRobert Watson 
1194d8a7b7a3SRobert Watson 	return (0);
1195d8a7b7a3SRobert Watson }
1196d8a7b7a3SRobert Watson 
1197d8a7b7a3SRobert Watson static int
11981c3f91cdSRobert Watson stub_check_vnode_readlink(struct ucred *cred, struct vnode *vp,
1199d8a7b7a3SRobert Watson     struct label *vnodelabel)
1200d8a7b7a3SRobert Watson {
1201d8a7b7a3SRobert Watson 
1202d8a7b7a3SRobert Watson 	return (0);
1203d8a7b7a3SRobert Watson }
1204d8a7b7a3SRobert Watson 
1205d8a7b7a3SRobert Watson static int
12061c3f91cdSRobert Watson stub_check_vnode_relabel(struct ucred *cred, struct vnode *vp,
1207d8a7b7a3SRobert Watson     struct label *vnodelabel, struct label *newlabel)
1208d8a7b7a3SRobert Watson {
1209d8a7b7a3SRobert Watson 
1210d8a7b7a3SRobert Watson 	return (0);
1211d8a7b7a3SRobert Watson }
1212d8a7b7a3SRobert Watson 
1213d8a7b7a3SRobert Watson static int
12141c3f91cdSRobert Watson stub_check_vnode_rename_from(struct ucred *cred, struct vnode *dvp,
1215d8a7b7a3SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label,
1216d8a7b7a3SRobert Watson     struct componentname *cnp)
1217d8a7b7a3SRobert Watson {
1218d8a7b7a3SRobert Watson 
1219d8a7b7a3SRobert Watson 	return (0);
1220d8a7b7a3SRobert Watson }
1221d8a7b7a3SRobert Watson 
1222d8a7b7a3SRobert Watson static int
12231c3f91cdSRobert Watson stub_check_vnode_rename_to(struct ucred *cred, struct vnode *dvp,
1224d8a7b7a3SRobert Watson     struct label *dlabel, struct vnode *vp, struct label *label, int samedir,
1225d8a7b7a3SRobert Watson     struct componentname *cnp)
1226d8a7b7a3SRobert Watson {
1227d8a7b7a3SRobert Watson 
1228d8a7b7a3SRobert Watson 	return (0);
1229d8a7b7a3SRobert Watson }
1230d8a7b7a3SRobert Watson 
1231d8a7b7a3SRobert Watson static int
12321c3f91cdSRobert Watson stub_check_vnode_revoke(struct ucred *cred, struct vnode *vp,
1233d8a7b7a3SRobert Watson     struct label *label)
1234d8a7b7a3SRobert Watson {
1235d8a7b7a3SRobert Watson 
1236d8a7b7a3SRobert Watson 	return (0);
1237d8a7b7a3SRobert Watson }
1238d8a7b7a3SRobert Watson 
1239d8a7b7a3SRobert Watson static int
12401c3f91cdSRobert Watson stub_check_vnode_setacl(struct ucred *cred, struct vnode *vp,
1241d8a7b7a3SRobert Watson     struct label *label, acl_type_t type, struct acl *acl)
1242d8a7b7a3SRobert Watson {
1243d8a7b7a3SRobert Watson 
1244d8a7b7a3SRobert Watson 	return (0);
1245d8a7b7a3SRobert Watson }
1246d8a7b7a3SRobert Watson 
1247d8a7b7a3SRobert Watson static int
12481c3f91cdSRobert Watson stub_check_vnode_setextattr(struct ucred *cred, struct vnode *vp,
1249d8a7b7a3SRobert Watson     struct label *label, int attrnamespace, const char *name, struct uio *uio)
1250d8a7b7a3SRobert Watson {
1251d8a7b7a3SRobert Watson 
1252d8a7b7a3SRobert Watson 	return (0);
1253d8a7b7a3SRobert Watson }
1254d8a7b7a3SRobert Watson 
1255d8a7b7a3SRobert Watson static int
12561c3f91cdSRobert Watson stub_check_vnode_setflags(struct ucred *cred, struct vnode *vp,
1257d8a7b7a3SRobert Watson     struct label *label, u_long flags)
1258d8a7b7a3SRobert Watson {
1259d8a7b7a3SRobert Watson 
1260d8a7b7a3SRobert Watson 	return (0);
1261d8a7b7a3SRobert Watson }
1262d8a7b7a3SRobert Watson 
1263d8a7b7a3SRobert Watson static int
12641c3f91cdSRobert Watson stub_check_vnode_setmode(struct ucred *cred, struct vnode *vp,
1265d8a7b7a3SRobert Watson     struct label *label, mode_t mode)
1266d8a7b7a3SRobert Watson {
1267d8a7b7a3SRobert Watson 
1268d8a7b7a3SRobert Watson 	return (0);
1269d8a7b7a3SRobert Watson }
1270d8a7b7a3SRobert Watson 
1271d8a7b7a3SRobert Watson static int
12721c3f91cdSRobert Watson stub_check_vnode_setowner(struct ucred *cred, struct vnode *vp,
1273d8a7b7a3SRobert Watson     struct label *label, uid_t uid, gid_t gid)
1274d8a7b7a3SRobert Watson {
1275d8a7b7a3SRobert Watson 
1276d8a7b7a3SRobert Watson 	return (0);
1277d8a7b7a3SRobert Watson }
1278d8a7b7a3SRobert Watson 
1279d8a7b7a3SRobert Watson static int
12801c3f91cdSRobert Watson stub_check_vnode_setutimes(struct ucred *cred, struct vnode *vp,
1281d8a7b7a3SRobert Watson     struct label *label, struct timespec atime, struct timespec mtime)
1282d8a7b7a3SRobert Watson {
1283d8a7b7a3SRobert Watson 
1284d8a7b7a3SRobert Watson 	return (0);
1285d8a7b7a3SRobert Watson }
1286d8a7b7a3SRobert Watson 
1287d8a7b7a3SRobert Watson static int
12881c3f91cdSRobert Watson stub_check_vnode_stat(struct ucred *active_cred, struct ucred *file_cred,
1289177142e4SRobert Watson     struct vnode *vp, struct label *label)
1290d8a7b7a3SRobert Watson {
1291d8a7b7a3SRobert Watson 
1292d8a7b7a3SRobert Watson 	return (0);
1293d8a7b7a3SRobert Watson }
1294d8a7b7a3SRobert Watson 
12957f724f8bSRobert Watson static int
12961c3f91cdSRobert Watson stub_check_vnode_write(struct ucred *active_cred,
1297177142e4SRobert Watson     struct ucred *file_cred, struct vnode *vp, struct label *label)
12987f724f8bSRobert Watson {
12997f724f8bSRobert Watson 
13007f724f8bSRobert Watson 	return (0);
13017f724f8bSRobert Watson }
13027f724f8bSRobert Watson 
13031c3f91cdSRobert Watson static struct mac_policy_ops mac_stub_ops =
1304d8a7b7a3SRobert Watson {
13051c3f91cdSRobert Watson 	.mpo_destroy = stub_destroy,
13061c3f91cdSRobert Watson 	.mpo_init = stub_init,
13071c3f91cdSRobert Watson 	.mpo_syscall = stub_syscall,
13081c3f91cdSRobert Watson 	.mpo_init_bpfdesc_label = stub_init_label,
13091c3f91cdSRobert Watson 	.mpo_init_cred_label = stub_init_label,
13101c3f91cdSRobert Watson 	.mpo_init_devfsdirent_label = stub_init_label,
13111c3f91cdSRobert Watson 	.mpo_init_ifnet_label = stub_init_label,
1312a557af22SRobert Watson 	.mpo_init_inpcb_label = stub_init_label_waitcheck,
1313ba53d9c9SRobert Watson 	.mpo_init_sysv_msgmsg_label = stub_init_label,
1314ba53d9c9SRobert Watson 	.mpo_init_sysv_msgqueue_label = stub_init_label,
1315ba53d9c9SRobert Watson 	.mpo_init_sysv_sema_label = stub_init_label,
1316ba53d9c9SRobert Watson 	.mpo_init_sysv_shm_label = stub_init_label,
13171c3f91cdSRobert Watson 	.mpo_init_ipq_label = stub_init_label_waitcheck,
13181c3f91cdSRobert Watson 	.mpo_init_mbuf_label = stub_init_label_waitcheck,
13191c3f91cdSRobert Watson 	.mpo_init_mount_label = stub_init_label,
13201c3f91cdSRobert Watson 	.mpo_init_mount_fs_label = stub_init_label,
13211c3f91cdSRobert Watson 	.mpo_init_pipe_label = stub_init_label,
13221c3f91cdSRobert Watson 	.mpo_init_socket_label = stub_init_label_waitcheck,
13231c3f91cdSRobert Watson 	.mpo_init_socket_peer_label = stub_init_label_waitcheck,
13241c3f91cdSRobert Watson 	.mpo_init_vnode_label = stub_init_label,
13251c3f91cdSRobert Watson 	.mpo_destroy_bpfdesc_label = stub_destroy_label,
13261c3f91cdSRobert Watson 	.mpo_destroy_cred_label = stub_destroy_label,
13271c3f91cdSRobert Watson 	.mpo_destroy_devfsdirent_label = stub_destroy_label,
13281c3f91cdSRobert Watson 	.mpo_destroy_ifnet_label = stub_destroy_label,
1329a557af22SRobert Watson 	.mpo_destroy_inpcb_label = stub_destroy_label,
1330ba53d9c9SRobert Watson 	.mpo_destroy_sysv_msgmsg_label = stub_destroy_label,
1331ba53d9c9SRobert Watson 	.mpo_destroy_sysv_msgqueue_label = stub_destroy_label,
1332ba53d9c9SRobert Watson 	.mpo_destroy_sysv_sema_label = stub_destroy_label,
1333ba53d9c9SRobert Watson 	.mpo_destroy_sysv_shm_label = stub_destroy_label,
13341c3f91cdSRobert Watson 	.mpo_destroy_ipq_label = stub_destroy_label,
13351c3f91cdSRobert Watson 	.mpo_destroy_mbuf_label = stub_destroy_label,
13361c3f91cdSRobert Watson 	.mpo_destroy_mount_label = stub_destroy_label,
13371c3f91cdSRobert Watson 	.mpo_destroy_mount_fs_label = stub_destroy_label,
13381c3f91cdSRobert Watson 	.mpo_destroy_pipe_label = stub_destroy_label,
13391c3f91cdSRobert Watson 	.mpo_destroy_socket_label = stub_destroy_label,
13401c3f91cdSRobert Watson 	.mpo_destroy_socket_peer_label = stub_destroy_label,
13411c3f91cdSRobert Watson 	.mpo_destroy_vnode_label = stub_destroy_label,
134256d9e932SRobert Watson 	.mpo_copy_cred_label = stub_copy_label,
13432220907bSRobert Watson 	.mpo_copy_ifnet_label = stub_copy_label,
13440196273bSRobert Watson 	.mpo_copy_mbuf_label = stub_copy_label,
13450196273bSRobert Watson 	.mpo_copy_pipe_label = stub_copy_label,
1346b0323ea3SRobert Watson 	.mpo_copy_socket_label = stub_copy_label,
13470196273bSRobert Watson 	.mpo_copy_vnode_label = stub_copy_label,
13481c3f91cdSRobert Watson 	.mpo_externalize_cred_label = stub_externalize_label,
13491c3f91cdSRobert Watson 	.mpo_externalize_ifnet_label = stub_externalize_label,
13501c3f91cdSRobert Watson 	.mpo_externalize_pipe_label = stub_externalize_label,
13511c3f91cdSRobert Watson 	.mpo_externalize_socket_label = stub_externalize_label,
13521c3f91cdSRobert Watson 	.mpo_externalize_socket_peer_label = stub_externalize_label,
13531c3f91cdSRobert Watson 	.mpo_externalize_vnode_label = stub_externalize_label,
13541c3f91cdSRobert Watson 	.mpo_internalize_cred_label = stub_internalize_label,
13551c3f91cdSRobert Watson 	.mpo_internalize_ifnet_label = stub_internalize_label,
13561c3f91cdSRobert Watson 	.mpo_internalize_pipe_label = stub_internalize_label,
13571c3f91cdSRobert Watson 	.mpo_internalize_socket_label = stub_internalize_label,
13581c3f91cdSRobert Watson 	.mpo_internalize_vnode_label = stub_internalize_label,
13591c3f91cdSRobert Watson 	.mpo_associate_vnode_devfs = stub_associate_vnode_devfs,
13601c3f91cdSRobert Watson 	.mpo_associate_vnode_extattr = stub_associate_vnode_extattr,
13611c3f91cdSRobert Watson 	.mpo_associate_vnode_singlelabel = stub_associate_vnode_singlelabel,
13621c3f91cdSRobert Watson 	.mpo_create_devfs_device = stub_create_devfs_device,
13631c3f91cdSRobert Watson 	.mpo_create_devfs_directory = stub_create_devfs_directory,
13641c3f91cdSRobert Watson 	.mpo_create_devfs_symlink = stub_create_devfs_symlink,
1365ba53d9c9SRobert Watson 	.mpo_create_sysv_msgmsg = stub_create_sysv_msgmsg,
1366ba53d9c9SRobert Watson 	.mpo_create_sysv_msgqueue = stub_create_sysv_msgqueue,
1367ba53d9c9SRobert Watson 	.mpo_create_sysv_sema = stub_create_sysv_sema,
1368ba53d9c9SRobert Watson 	.mpo_create_sysv_shm = stub_create_sysv_shm,
13691c3f91cdSRobert Watson 	.mpo_create_vnode_extattr = stub_create_vnode_extattr,
13701c3f91cdSRobert Watson 	.mpo_create_mount = stub_create_mount,
13711c3f91cdSRobert Watson 	.mpo_create_root_mount = stub_create_root_mount,
13721c3f91cdSRobert Watson 	.mpo_relabel_vnode = stub_relabel_vnode,
13731c3f91cdSRobert Watson 	.mpo_setlabel_vnode_extattr = stub_setlabel_vnode_extattr,
13741c3f91cdSRobert Watson 	.mpo_update_devfsdirent = stub_update_devfsdirent,
13751c3f91cdSRobert Watson 	.mpo_create_mbuf_from_socket = stub_create_mbuf_from_socket,
13761c3f91cdSRobert Watson 	.mpo_create_pipe = stub_create_pipe,
13771c3f91cdSRobert Watson 	.mpo_create_socket = stub_create_socket,
13781c3f91cdSRobert Watson 	.mpo_create_socket_from_socket = stub_create_socket_from_socket,
13791c3f91cdSRobert Watson 	.mpo_relabel_pipe = stub_relabel_pipe,
13801c3f91cdSRobert Watson 	.mpo_relabel_socket = stub_relabel_socket,
13811c3f91cdSRobert Watson 	.mpo_set_socket_peer_from_mbuf = stub_set_socket_peer_from_mbuf,
13821c3f91cdSRobert Watson 	.mpo_set_socket_peer_from_socket = stub_set_socket_peer_from_socket,
13831c3f91cdSRobert Watson 	.mpo_create_bpfdesc = stub_create_bpfdesc,
13841c3f91cdSRobert Watson 	.mpo_create_ifnet = stub_create_ifnet,
1385a557af22SRobert Watson 	.mpo_create_inpcb_from_socket = stub_create_inpcb_from_socket,
13861c3f91cdSRobert Watson 	.mpo_create_ipq = stub_create_ipq,
13871c3f91cdSRobert Watson 	.mpo_create_datagram_from_ipq = stub_create_datagram_from_ipq,
13881c3f91cdSRobert Watson 	.mpo_create_fragment = stub_create_fragment,
13891c3f91cdSRobert Watson 	.mpo_create_ipq = stub_create_ipq,
13902d92ec98SRobert Watson 	.mpo_create_mbuf_from_inpcb = stub_create_mbuf_from_inpcb,
13911c3f91cdSRobert Watson 	.mpo_create_mbuf_from_mbuf = stub_create_mbuf_from_mbuf,
13921c3f91cdSRobert Watson 	.mpo_create_mbuf_linklayer = stub_create_mbuf_linklayer,
13931c3f91cdSRobert Watson 	.mpo_create_mbuf_from_bpfdesc = stub_create_mbuf_from_bpfdesc,
13941c3f91cdSRobert Watson 	.mpo_create_mbuf_from_ifnet = stub_create_mbuf_from_ifnet,
13951c3f91cdSRobert Watson 	.mpo_create_mbuf_multicast_encap = stub_create_mbuf_multicast_encap,
13961c3f91cdSRobert Watson 	.mpo_create_mbuf_netlayer = stub_create_mbuf_netlayer,
13971c3f91cdSRobert Watson 	.mpo_fragment_match = stub_fragment_match,
139864f00af8SRobert Watson 	.mpo_reflect_mbuf_icmp = stub_reflect_mbuf_icmp,
139964f00af8SRobert Watson 	.mpo_reflect_mbuf_tcp = stub_reflect_mbuf_tcp,
14001c3f91cdSRobert Watson 	.mpo_relabel_ifnet = stub_relabel_ifnet,
14011c3f91cdSRobert Watson 	.mpo_update_ipq = stub_update_ipq,
1402a557af22SRobert Watson 	.mpo_inpcb_sosetlabel = stub_inpcb_sosetlabel,
14031c3f91cdSRobert Watson 	.mpo_execve_transition = stub_execve_transition,
14041c3f91cdSRobert Watson 	.mpo_execve_will_transition = stub_execve_will_transition,
14051c3f91cdSRobert Watson 	.mpo_create_proc0 = stub_create_proc0,
14061c3f91cdSRobert Watson 	.mpo_create_proc1 = stub_create_proc1,
14071c3f91cdSRobert Watson 	.mpo_relabel_cred = stub_relabel_cred,
14081c3f91cdSRobert Watson 	.mpo_thread_userret = stub_thread_userret,
1409ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_msgmsg = stub_cleanup_sysv_msgmsg,
1410ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_msgqueue = stub_cleanup_sysv_msgqueue,
1411ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_sema = stub_cleanup_sysv_sema,
1412ba53d9c9SRobert Watson 	.mpo_cleanup_sysv_shm = stub_cleanup_sysv_shm,
14131c3f91cdSRobert Watson 	.mpo_check_bpfdesc_receive = stub_check_bpfdesc_receive,
14141c3f91cdSRobert Watson 	.mpo_check_cred_relabel = stub_check_cred_relabel,
14151c3f91cdSRobert Watson 	.mpo_check_cred_visible = stub_check_cred_visible,
14161c3f91cdSRobert Watson 	.mpo_check_ifnet_relabel = stub_check_ifnet_relabel,
14171c3f91cdSRobert Watson 	.mpo_check_ifnet_transmit = stub_check_ifnet_transmit,
1418a557af22SRobert Watson 	.mpo_check_inpcb_deliver = stub_check_inpcb_deliver,
1419ba53d9c9SRobert Watson 	.mpo_check_sysv_msgmsq = stub_check_sysv_msgmsq,
1420ba53d9c9SRobert Watson 	.mpo_check_sysv_msgrcv = stub_check_sysv_msgrcv,
1421ba53d9c9SRobert Watson 	.mpo_check_sysv_msgrmid = stub_check_sysv_msgrmid,
1422ba53d9c9SRobert Watson 	.mpo_check_sysv_msqget = stub_check_sysv_msqget,
1423ba53d9c9SRobert Watson 	.mpo_check_sysv_msqsnd = stub_check_sysv_msqsnd,
1424ba53d9c9SRobert Watson 	.mpo_check_sysv_msqrcv = stub_check_sysv_msqrcv,
1425ba53d9c9SRobert Watson 	.mpo_check_sysv_msqctl = stub_check_sysv_msqctl,
1426ba53d9c9SRobert Watson 	.mpo_check_sysv_semctl = stub_check_sysv_semctl,
1427ba53d9c9SRobert Watson 	.mpo_check_sysv_semget = stub_check_sysv_semget,
1428ba53d9c9SRobert Watson 	.mpo_check_sysv_semop = stub_check_sysv_semop,
1429ba53d9c9SRobert Watson 	.mpo_check_sysv_shmat = stub_check_sysv_shmat,
1430ba53d9c9SRobert Watson 	.mpo_check_sysv_shmctl = stub_check_sysv_shmctl,
1431ba53d9c9SRobert Watson 	.mpo_check_sysv_shmdt = stub_check_sysv_shmdt,
1432ba53d9c9SRobert Watson 	.mpo_check_sysv_shmget = stub_check_sysv_shmget,
14331c3f91cdSRobert Watson 	.mpo_check_kenv_dump = stub_check_kenv_dump,
14341c3f91cdSRobert Watson 	.mpo_check_kenv_get = stub_check_kenv_get,
14351c3f91cdSRobert Watson 	.mpo_check_kenv_set = stub_check_kenv_set,
14361c3f91cdSRobert Watson 	.mpo_check_kenv_unset = stub_check_kenv_unset,
14371c3f91cdSRobert Watson 	.mpo_check_kld_load = stub_check_kld_load,
14381c3f91cdSRobert Watson 	.mpo_check_kld_stat = stub_check_kld_stat,
14391c3f91cdSRobert Watson 	.mpo_check_kld_unload = stub_check_kld_unload,
14401c3f91cdSRobert Watson 	.mpo_check_mount_stat = stub_check_mount_stat,
14411c3f91cdSRobert Watson 	.mpo_check_pipe_ioctl = stub_check_pipe_ioctl,
14421c3f91cdSRobert Watson 	.mpo_check_pipe_poll = stub_check_pipe_poll,
14431c3f91cdSRobert Watson 	.mpo_check_pipe_read = stub_check_pipe_read,
14441c3f91cdSRobert Watson 	.mpo_check_pipe_relabel = stub_check_pipe_relabel,
14451c3f91cdSRobert Watson 	.mpo_check_pipe_stat = stub_check_pipe_stat,
14461c3f91cdSRobert Watson 	.mpo_check_pipe_write = stub_check_pipe_write,
14471c3f91cdSRobert Watson 	.mpo_check_proc_debug = stub_check_proc_debug,
14481c3f91cdSRobert Watson 	.mpo_check_proc_sched = stub_check_proc_sched,
1449030a28b3SRobert Watson 	.mpo_check_proc_setuid = stub_check_proc_setuid,
1450030a28b3SRobert Watson 	.mpo_check_proc_seteuid = stub_check_proc_seteuid,
1451030a28b3SRobert Watson 	.mpo_check_proc_setgid = stub_check_proc_setgid,
1452030a28b3SRobert Watson 	.mpo_check_proc_setegid = stub_check_proc_setegid,
1453030a28b3SRobert Watson 	.mpo_check_proc_setgroups = stub_check_proc_setgroups,
1454030a28b3SRobert Watson 	.mpo_check_proc_setreuid = stub_check_proc_setreuid,
1455030a28b3SRobert Watson 	.mpo_check_proc_setregid = stub_check_proc_setregid,
1456030a28b3SRobert Watson 	.mpo_check_proc_setresuid = stub_check_proc_setresuid,
1457030a28b3SRobert Watson 	.mpo_check_proc_setresgid = stub_check_proc_setresgid,
14581c3f91cdSRobert Watson 	.mpo_check_proc_signal = stub_check_proc_signal,
14597f53207bSRobert Watson 	.mpo_check_socket_accept = stub_check_socket_accept,
14601c3f91cdSRobert Watson 	.mpo_check_socket_bind = stub_check_socket_bind,
14611c3f91cdSRobert Watson 	.mpo_check_socket_connect = stub_check_socket_connect,
14621c3f91cdSRobert Watson 	.mpo_check_socket_deliver = stub_check_socket_deliver,
14631c3f91cdSRobert Watson 	.mpo_check_socket_listen = stub_check_socket_listen,
14647f53207bSRobert Watson 	.mpo_check_socket_poll = stub_check_socket_poll,
14657f53207bSRobert Watson 	.mpo_check_socket_receive = stub_check_socket_receive,
14661c3f91cdSRobert Watson 	.mpo_check_socket_relabel = stub_check_socket_relabel,
14677f53207bSRobert Watson 	.mpo_check_socket_send = stub_check_socket_send,
14687f53207bSRobert Watson 	.mpo_check_socket_stat = stub_check_socket_stat,
14691c3f91cdSRobert Watson 	.mpo_check_socket_visible = stub_check_socket_visible,
14701c3f91cdSRobert Watson 	.mpo_check_sysarch_ioperm = stub_check_sysarch_ioperm,
14711c3f91cdSRobert Watson 	.mpo_check_system_acct = stub_check_system_acct,
14721c3f91cdSRobert Watson 	.mpo_check_system_reboot = stub_check_system_reboot,
14731c3f91cdSRobert Watson 	.mpo_check_system_settime = stub_check_system_settime,
14741c3f91cdSRobert Watson 	.mpo_check_system_swapon = stub_check_system_swapon,
14751c3f91cdSRobert Watson 	.mpo_check_system_swapoff = stub_check_system_swapoff,
14761c3f91cdSRobert Watson 	.mpo_check_system_sysctl = stub_check_system_sysctl,
14771c3f91cdSRobert Watson 	.mpo_check_vnode_access = stub_check_vnode_access,
14781c3f91cdSRobert Watson 	.mpo_check_vnode_chdir = stub_check_vnode_chdir,
14791c3f91cdSRobert Watson 	.mpo_check_vnode_chroot = stub_check_vnode_chroot,
14801c3f91cdSRobert Watson 	.mpo_check_vnode_create = stub_check_vnode_create,
14811c3f91cdSRobert Watson 	.mpo_check_vnode_delete = stub_check_vnode_delete,
14821c3f91cdSRobert Watson 	.mpo_check_vnode_deleteacl = stub_check_vnode_deleteacl,
148364f00af8SRobert Watson 	.mpo_check_vnode_deleteextattr = stub_check_vnode_deleteextattr,
14841c3f91cdSRobert Watson 	.mpo_check_vnode_exec = stub_check_vnode_exec,
14851c3f91cdSRobert Watson 	.mpo_check_vnode_getacl = stub_check_vnode_getacl,
14861c3f91cdSRobert Watson 	.mpo_check_vnode_getextattr = stub_check_vnode_getextattr,
14871c3f91cdSRobert Watson 	.mpo_check_vnode_link = stub_check_vnode_link,
148864f00af8SRobert Watson 	.mpo_check_vnode_listextattr = stub_check_vnode_listextattr,
14891c3f91cdSRobert Watson 	.mpo_check_vnode_lookup = stub_check_vnode_lookup,
14901c3f91cdSRobert Watson 	.mpo_check_vnode_mmap = stub_check_vnode_mmap,
14911c3f91cdSRobert Watson 	.mpo_check_vnode_open = stub_check_vnode_open,
14921c3f91cdSRobert Watson 	.mpo_check_vnode_poll = stub_check_vnode_poll,
14931c3f91cdSRobert Watson 	.mpo_check_vnode_read = stub_check_vnode_read,
14941c3f91cdSRobert Watson 	.mpo_check_vnode_readdir = stub_check_vnode_readdir,
14951c3f91cdSRobert Watson 	.mpo_check_vnode_readlink = stub_check_vnode_readlink,
14961c3f91cdSRobert Watson 	.mpo_check_vnode_relabel = stub_check_vnode_relabel,
14971c3f91cdSRobert Watson 	.mpo_check_vnode_rename_from = stub_check_vnode_rename_from,
14981c3f91cdSRobert Watson 	.mpo_check_vnode_rename_to = stub_check_vnode_rename_to,
14991c3f91cdSRobert Watson 	.mpo_check_vnode_revoke = stub_check_vnode_revoke,
15001c3f91cdSRobert Watson 	.mpo_check_vnode_setacl = stub_check_vnode_setacl,
15011c3f91cdSRobert Watson 	.mpo_check_vnode_setextattr = stub_check_vnode_setextattr,
15021c3f91cdSRobert Watson 	.mpo_check_vnode_setflags = stub_check_vnode_setflags,
15031c3f91cdSRobert Watson 	.mpo_check_vnode_setmode = stub_check_vnode_setmode,
15041c3f91cdSRobert Watson 	.mpo_check_vnode_setowner = stub_check_vnode_setowner,
15051c3f91cdSRobert Watson 	.mpo_check_vnode_setutimes = stub_check_vnode_setutimes,
15061c3f91cdSRobert Watson 	.mpo_check_vnode_stat = stub_check_vnode_stat,
15071c3f91cdSRobert Watson 	.mpo_check_vnode_write = stub_check_vnode_write,
1508d8a7b7a3SRobert Watson };
1509d8a7b7a3SRobert Watson 
15101c3f91cdSRobert Watson MAC_POLICY_SET(&mac_stub_ops, mac_stub, "TrustedBSD MAC/Stub",
1511740348c4SRobert Watson     MPC_LOADTIME_FLAG_UNLOADOK, NULL);
1512