1db2661ceSRobert Watson /*- 2f6a41092SRobert Watson * Copyright (c) 1999-2002 Robert N. M. Watson 3f6a41092SRobert Watson * Copyright (c) 2001-2002 Networks Associates Technology, Inc. 4db2661ceSRobert Watson * All rights reserved. 5db2661ceSRobert Watson * 6db2661ceSRobert Watson * This software was developed by Robert Watson for the TrustedBSD Project. 7db2661ceSRobert Watson * 8db2661ceSRobert Watson * This software was developed for the FreeBSD Project in part by NAI Labs, 9db2661ceSRobert Watson * the Security Research Division of Network Associates, Inc. under 10db2661ceSRobert Watson * DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the DARPA 11db2661ceSRobert Watson * CHATS research program. 12db2661ceSRobert Watson * 13db2661ceSRobert Watson * Redistribution and use in source and binary forms, with or without 14db2661ceSRobert Watson * modification, are permitted provided that the following conditions 15db2661ceSRobert Watson * are met: 16db2661ceSRobert Watson * 1. Redistributions of source code must retain the above copyright 17db2661ceSRobert Watson * notice, this list of conditions and the following disclaimer. 18db2661ceSRobert Watson * 2. Redistributions in binary form must reproduce the above copyright 19db2661ceSRobert Watson * notice, this list of conditions and the following disclaimer in the 20db2661ceSRobert Watson * documentation and/or other materials provided with the distribution. 21db2661ceSRobert Watson * 22db2661ceSRobert Watson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 23db2661ceSRobert Watson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24db2661ceSRobert Watson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25db2661ceSRobert Watson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 26db2661ceSRobert Watson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27db2661ceSRobert Watson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28db2661ceSRobert Watson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29db2661ceSRobert Watson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30db2661ceSRobert Watson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31db2661ceSRobert Watson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32db2661ceSRobert Watson * SUCH DAMAGE. 33db2661ceSRobert Watson */ 34db2661ceSRobert Watson /* 35db2661ceSRobert Watson * Definitions for the TrustedBSD LOMAC integrity policy module. 36db2661ceSRobert Watson */ 37db2661ceSRobert Watson #ifndef _SYS_SECURITY_MAC_LOMAC_H 38db2661ceSRobert Watson #define _SYS_SECURITY_MAC_LOMAC_H 39db2661ceSRobert Watson 40db2661ceSRobert Watson #define MAC_LOMAC_EXTATTR_NAMESPACE EXTATTR_NAMESPACE_SYSTEM 41db2661ceSRobert Watson #define MAC_LOMAC_EXTATTR_NAME "mac_lomac" 42db2661ceSRobert Watson 43db2661ceSRobert Watson #define MAC_LOMAC_LABEL_NAME "lomac" 44db2661ceSRobert Watson 45db2661ceSRobert Watson #define MAC_LOMAC_FLAG_SINGLE 0x00000001 /* ml_single initialized */ 46db2661ceSRobert Watson #define MAC_LOMAC_FLAG_RANGE 0x00000002 /* ml_range* initialized */ 47db2661ceSRobert Watson #define MAC_LOMAC_FLAG_AUX 0x00000004 /* ml_auxsingle initialized */ 48db2661ceSRobert Watson #define MAC_LOMAC_FLAGS_BOTH (MAC_LOMAC_FLAG_SINGLE | MAC_LOMAC_FLAG_RANGE) 49db2661ceSRobert Watson #define MAC_LOMAC_FLAG_UPDATE 0x00000008 /* must demote this process */ 50db2661ceSRobert Watson 51db2661ceSRobert Watson #define MAC_LOMAC_TYPE_UNDEF 0 /* Undefined */ 52db2661ceSRobert Watson #define MAC_LOMAC_TYPE_GRADE 1 /* Hierarchal grade with mb_grade. */ 53db2661ceSRobert Watson #define MAC_LOMAC_TYPE_LOW 2 /* Dominated by any 54db2661ceSRobert Watson * MAC_LOMAC_TYPE_LABEL. */ 55db2661ceSRobert Watson #define MAC_LOMAC_TYPE_HIGH 3 /* Dominates any 56db2661ceSRobert Watson * MAC_LOMAC_TYPE_LABEL. */ 57*bc5ade0dSPedro F. Giffuni #define MAC_LOMAC_TYPE_EQUAL 4 /* Equivalent to any 58db2661ceSRobert Watson * MAC_LOMAC_TYPE_LABEL. */ 59db2661ceSRobert Watson 60db2661ceSRobert Watson /* 61db2661ceSRobert Watson * Structures and constants associated with a LOMAC Integrity policy. 62db2661ceSRobert Watson * mac_lomac represents a LOMAC label, with mb_type determining its properties, 63db2661ceSRobert Watson * and mb_grade represents the hierarchal grade if valid for the current 64db2661ceSRobert Watson * mb_type. 65db2661ceSRobert Watson */ 66db2661ceSRobert Watson 67db2661ceSRobert Watson struct mac_lomac_element { 68db2661ceSRobert Watson u_short mle_type; 69db2661ceSRobert Watson u_short mle_grade; 70db2661ceSRobert Watson }; 71db2661ceSRobert Watson 72db2661ceSRobert Watson /* 73db2661ceSRobert Watson * LOMAC labels start with two components: a single label, and a label 74db2661ceSRobert Watson * range. Depending on the context, one or both may be used; the ml_flags 75db2661ceSRobert Watson * field permits the provider to indicate what fields are intended for 76db2661ceSRobert Watson * use. The auxiliary label works the same way, but is only valid on 77db2661ceSRobert Watson * filesystem objects to provide inheritance semantics on directories 78db2661ceSRobert Watson * and "non-demoting" execution on executable files. 79db2661ceSRobert Watson */ 80db2661ceSRobert Watson struct mac_lomac { 81db2661ceSRobert Watson int ml_flags; 82db2661ceSRobert Watson struct mac_lomac_element ml_single; 83db2661ceSRobert Watson struct mac_lomac_element ml_rangelow, ml_rangehigh; 84db2661ceSRobert Watson struct mac_lomac_element ml_auxsingle; 85db2661ceSRobert Watson }; 86db2661ceSRobert Watson 87db2661ceSRobert Watson #endif /* !_SYS_SECURITY_MAC_LOMAC_H */ 88