1101099Srwatson/*-
2126097Srwatson * Copyright (c) 1999-2002 Robert N. M. Watson
3136742Srwatson * Copyright (c) 2001-2004 Networks Associates Technology, Inc.
4101099Srwatson * All rights reserved.
5101099Srwatson *
6101099Srwatson * This software was developed by Robert Watson for the TrustedBSD Project.
7101099Srwatson *
8106393Srwatson * This software was developed for the FreeBSD Project in part by Network
9106393Srwatson * Associates Laboratories, the Security Research Division of Network
10106393Srwatson * Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"),
11106393Srwatson * as part of the DARPA CHATS research program.
12101099Srwatson *
13101099Srwatson * Redistribution and use in source and binary forms, with or without
14101099Srwatson * modification, are permitted provided that the following conditions
15101099Srwatson * are met:
16101099Srwatson * 1. Redistributions of source code must retain the above copyright
17101099Srwatson *    notice, this list of conditions and the following disclaimer.
18101099Srwatson * 2. Redistributions in binary form must reproduce the above copyright
19101099Srwatson *    notice, this list of conditions and the following disclaimer in the
20101099Srwatson *    documentation and/or other materials provided with the distribution.
21101099Srwatson *
22101099Srwatson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23101099Srwatson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24101099Srwatson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25101099Srwatson * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
26101099Srwatson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27101099Srwatson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28101099Srwatson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29101099Srwatson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30101099Srwatson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31101099Srwatson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32101099Srwatson * SUCH DAMAGE.
33101099Srwatson *
34101099Srwatson * $FreeBSD$
35101099Srwatson */
36101099Srwatson
37101099Srwatson#ifndef _SYS_SECURITY_MAC_BSDEXTENDED_H
38101099Srwatson#define	_SYS_SECURITY_MAC_BSDEXTENDED_H
39101099Srwatson
40157986Sdwmalone#define MB_VERSION 2 /* Used to check library and kernel are the same. */
41101099Srwatson
42136739Srwatson/*
43171253Srwatson * Rights that can be represented in mbr_mode.  These have the same values as
44171253Srwatson * the V* rights in vnode.h, but in order to avoid sharing user and kernel
45171253Srwatson * constants, we define them here.  That will also improve ABI stability if
46171253Srwatson * the in-kernel values change.
47136739Srwatson */
48136739Srwatson#define	MBI_EXEC	000100
49136739Srwatson#define	MBI_WRITE	000200
50136739Srwatson#define	MBI_READ	000400
51136739Srwatson#define	MBI_ADMIN	010000
52136739Srwatson#define	MBI_STAT	020000
53136739Srwatson#define	MBI_APPEND	040000
54136739Srwatson#define	MBI_ALLPERM	(MBI_EXEC | MBI_WRITE | MBI_READ | MBI_ADMIN | \
55136739Srwatson			    MBI_STAT | MBI_APPEND)
56136739Srwatson
57157986Sdwmalone#define	MBS_UID_DEFINED	0x00000001	/* uid field should be matched */
58157986Sdwmalone#define	MBS_GID_DEFINED	0x00000002	/* gid field should be matched */
59157986Sdwmalone#define	MBS_PRISON_DEFINED 0x00000004	/* prison field should be matched */
60157986Sdwmalone
61157986Sdwmalone#define MBS_ALL_FLAGS (MBS_UID_DEFINED | MBS_GID_DEFINED | MBS_PRISON_DEFINED)
62157986Sdwmalone
63157986Sdwmalonestruct mac_bsdextended_subject {
64157986Sdwmalone	int	mbs_flags;
65157986Sdwmalone	int	mbs_neg;
66157986Sdwmalone	uid_t	mbs_uid_min;
67157986Sdwmalone	uid_t	mbs_uid_max;
68157986Sdwmalone	gid_t	mbs_gid_min;
69157986Sdwmalone	gid_t	mbs_gid_max;
70157986Sdwmalone	int	mbs_prison;
71101099Srwatson};
72101099Srwatson
73157986Sdwmalone#define	MBO_UID_DEFINED	0x00000001	/* uid field should be matched */
74157986Sdwmalone#define	MBO_GID_DEFINED	0x00000002	/* gid field should be matched */
75157986Sdwmalone#define	MBO_FSID_DEFINED 0x00000004	/* fsid field should be matched */
76157986Sdwmalone#define	MBO_SUID	0x00000008	/* object must be suid */
77157986Sdwmalone#define	MBO_SGID	0x00000010	/* object must be sgid */
78157986Sdwmalone#define	MBO_UID_SUBJECT	0x00000020	/* uid must match subject */
79157986Sdwmalone#define	MBO_GID_SUBJECT	0x00000040	/* gid must match subject */
80157986Sdwmalone#define	MBO_TYPE_DEFINED 0x00000080	/* object type should be matched */
81157986Sdwmalone
82157986Sdwmalone#define MBO_ALL_FLAGS (MBO_UID_DEFINED | MBO_GID_DEFINED | MBO_FSID_DEFINED | \
83157986Sdwmalone	    MBO_SUID | MBO_SGID | MBO_UID_SUBJECT | MBO_GID_SUBJECT | \
84157986Sdwmalone	    MBO_TYPE_DEFINED)
85157986Sdwmalone
86157986Sdwmalone#define MBO_TYPE_REG	0x00000001
87157986Sdwmalone#define MBO_TYPE_DIR	0x00000002
88157986Sdwmalone#define MBO_TYPE_BLK	0x00000004
89157986Sdwmalone#define MBO_TYPE_CHR	0x00000008
90157986Sdwmalone#define MBO_TYPE_LNK	0x00000010
91157986Sdwmalone#define MBO_TYPE_SOCK	0x00000020
92157986Sdwmalone#define MBO_TYPE_FIFO	0x00000040
93157986Sdwmalone
94157986Sdwmalone#define MBO_ALL_TYPE	(MBO_TYPE_REG | MBO_TYPE_DIR | MBO_TYPE_BLK | \
95157986Sdwmalone	    MBO_TYPE_CHR | MBO_TYPE_LNK | MBO_TYPE_SOCK | MBO_TYPE_FIFO)
96157986Sdwmalone
97157986Sdwmalonestruct mac_bsdextended_object {
98157986Sdwmalone	int	mbo_flags;
99157986Sdwmalone	int	mbo_neg;
100157986Sdwmalone	uid_t	mbo_uid_min;
101157986Sdwmalone	uid_t	mbo_uid_max;
102157986Sdwmalone	gid_t	mbo_gid_min;
103157986Sdwmalone	gid_t	mbo_gid_max;
104157986Sdwmalone	struct fsid mbo_fsid;
105157986Sdwmalone	int	mbo_type;
106157986Sdwmalone};
107157986Sdwmalone
108101099Srwatsonstruct mac_bsdextended_rule {
109157986Sdwmalone	struct mac_bsdextended_subject	mbr_subject;
110157986Sdwmalone	struct mac_bsdextended_object	mbr_object;
111101099Srwatson	mode_t				mbr_mode;	/* maximum access */
112101099Srwatson};
113101099Srwatson
114101099Srwatson#endif /* _SYS_SECURITY_MAC_BSDEXTENDED_H */
115