1b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* 2b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * Copyright 2011 Tresys Technology, LLC. All rights reserved. 3b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 4b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * Redistribution and use in source and binary forms, with or without 5b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * modification, are permitted provided that the following conditions are met: 6b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 7b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 1. Redistributions of source code must retain the above copyright notice, 8b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this list of conditions and the following disclaimer. 9b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 10b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 2. Redistributions in binary form must reproduce the above copyright notice, 11b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this list of conditions and the following disclaimer in the documentation 12b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * and/or other materials provided with the distribution. 13b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 14b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * THIS SOFTWARE IS PROVIDED BY TRESYS TECHNOLOGY, LLC ``AS IS'' AND ANY EXPRESS 15b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 17b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * EVENT SHALL TRESYS TECHNOLOGY, LLC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 21b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 22b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 23b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 25b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * The views and conclusions contained in the software and documentation are those 26b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * of the authors and should not be interpreted as representing official policies, 27b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * either expressed or implied, of Tresys Technology, LLC. 28b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence */ 29b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 30b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#ifndef CIL_INTERNAL_H_ 31b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_INTERNAL_H_ 32b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 33b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <stdlib.h> 34b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <stdio.h> 35b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <stdint.h> 36b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <arpa/inet.h> 37b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 38b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <sepol/policydb/services.h> 39b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <sepol/policydb/policydb.h> 40c303ca910add05bb5fc9f515d880b393f02d695cJames Carter#include <sepol/policydb/flask_types.h> 41b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 42b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include <cil/cil.h> 43b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 44b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_flavor.h" 45b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_tree.h" 46b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_symtab.h" 47b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_mem.h" 48b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 49b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_MAX_NAME_LENGTH 2048 50b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 51b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 52b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_pass { 53b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_INIT = 0, 54b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 55b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_TIF, 56b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_IN, 5776ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence CIL_PASS_BLKIN_LINK, 5876ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence CIL_PASS_BLKIN_COPY, 59b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_BLKABS, 60b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_MACRO, 61b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_CALL1, 62b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_CALL2, 63b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_ALIAS1, 64b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_ALIAS2, 65b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_MISC1, 66b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_MLS, 67b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_MISC2, 68b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_MISC3, 69b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 70b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PASS_NUM 71b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 72b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 73b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 74b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* 75b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence Keywords 76b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence*/ 77b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_T1; 78b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_T2; 79b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_T3; 80b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_R1; 81b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_R2; 82b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_R3; 83b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_U1; 84b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_U2; 85b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_U3; 86b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_L1; 87b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_L2; 88b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_H1; 89b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_H2; 90b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_AND; 91b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_OR; 92b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NOT; 93b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_EQ; 94b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NEQ; 95b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_DOM; 96b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_DOMBY; 97b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONS_INCOMP; 98b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONDTRUE; 99b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONDFALSE; 100b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SELF; 101b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_OBJECT_R; 102b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_STAR; 103b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TCP; 104b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_UDP; 1053895fbbe0cf2ec52d6b6eda66084b6e9f8d88fb2Richard Haineschar *CIL_KEY_DCCP; 106b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_AUDITALLOW; 107b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TUNABLEIF; 108b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ALLOW; 109b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_DONTAUDIT; 110b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPETRANSITION; 111b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPECHANGE; 112b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CALL; 113b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TUNABLE; 114b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_XOR; 115b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ALL; 116b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_RANGE; 117b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_GLOB; 118b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_FILE; 119b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_DIR; 120b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CHAR; 121b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_BLOCK; 122b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SOCKET; 123b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_PIPE; 124b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SYMLINK; 125b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ANY; 126b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_XATTR; 127b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TASK; 128b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TRANS; 129b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPE; 130b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLE; 131b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_USER; 13277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiychar *CIL_KEY_USERATTRIBUTE; 13377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiychar *CIL_KEY_USERATTRIBUTESET; 134b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SENSITIVITY; 135b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CATEGORY; 136b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CATSET; 137b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_LEVEL; 138b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_LEVELRANGE; 139b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CLASS; 140b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_IPADDR; 141b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_MAP_CLASS; 142b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CLASSPERMISSION; 143b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_BOOL; 144b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_STRING; 145b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NAME; 146b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SOURCE; 147b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TARGET; 148b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_LOW; 149b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_HIGH; 150b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_LOW_HIGH; 151b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_HANDLEUNKNOWN; 152b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_HANDLEUNKNOWN_ALLOW; 153b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_HANDLEUNKNOWN_DENY; 154b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_HANDLEUNKNOWN_REJECT; 155b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_MACRO; 156b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_IN; 157b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_MLS; 158b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_DEFAULTRANGE; 159b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_BLOCKINHERIT; 160b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_BLOCKABSTRACT; 161b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CLASSORDER; 162b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CLASSMAPPING; 163b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CLASSPERMISSIONSET; 164b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_COMMON; 165b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CLASSCOMMON; 166b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SID; 167b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SIDCONTEXT; 168b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SIDORDER; 169b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_USERLEVEL; 170b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_USERRANGE; 171b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_USERBOUNDS; 172b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_USERPREFIX; 173b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SELINUXUSER; 174b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SELINUXUSERDEFAULT; 175b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEATTRIBUTE; 176b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEATTRIBUTESET; 177b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEALIAS; 178b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEALIASACTUAL; 179b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEBOUNDS; 180b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEPERMISSIVE; 181b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_RANGETRANSITION; 182b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_USERROLE; 183b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLETYPE; 184b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLETRANSITION; 185b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLEALLOW; 186b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLEATTRIBUTE; 187b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLEATTRIBUTESET; 188b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROLEBOUNDS; 189b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_BOOLEANIF; 190b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NEVERALLOW; 191b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_TYPEMEMBER; 192b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SENSALIAS; 193b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SENSALIASACTUAL; 194b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CATALIAS; 195b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CATALIASACTUAL; 196b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CATORDER; 197b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SENSITIVITYORDER; 198b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_SENSCAT; 199b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONSTRAIN; 200b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_MLSCONSTRAIN; 201b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_VALIDATETRANS; 202b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_MLSVALIDATETRANS; 203b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_CONTEXT; 204b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_FILECON; 205b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_PORTCON; 206b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NODECON; 207b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_GENFSCON; 208b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NETIFCON; 209b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_PIRQCON; 210b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_IOMEMCON; 211b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_IOPORTCON; 212b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_PCIDEVICECON; 213f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graafchar *CIL_KEY_DEVICETREECON; 214b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_FSUSE; 215b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_POLICYCAP; 216b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_OPTIONAL; 217b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_DEFAULTUSER; 218b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_DEFAULTROLE; 219b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_DEFAULTTYPE; 220b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_ROOT; 221b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_NODE; 222b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencechar *CIL_KEY_PERM; 223ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencechar *CIL_KEY_ALLOWX; 224ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencechar *CIL_KEY_AUDITALLOWX; 225ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencechar *CIL_KEY_DONTAUDITX; 226f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrencechar *CIL_KEY_NEVERALLOWX; 227ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencechar *CIL_KEY_PERMISSIONX; 228ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencechar *CIL_KEY_IOCTL; 22971dd7b71338e832da8e446d565e6cd871b8a08f6Yuli Khodorkovskiychar *CIL_KEY_UNORDERED; 230875a6bcbe8885c927122c6931b3a01d821e04b10James Carterchar *CIL_KEY_SRC_INFO; 231875a6bcbe8885c927122c6931b3a01d821e04b10James Carterchar *CIL_KEY_SRC_CIL; 232875a6bcbe8885c927122c6931b3a01d821e04b10James Carterchar *CIL_KEY_SRC_HLL; 233b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 234b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* 235b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence Symbol Table Array Indices 236b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence*/ 237b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_sym_index { 238b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_BLOCKS = 0, 239b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_USERS, 240b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ROLES, 241b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_TYPES, 242b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_COMMONS, 243b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_CLASSES, 244b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_CLASSPERMSETS, 245b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_BOOLS, 246b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_TUNABLES, 247b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_SENS, 248b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_CATS, 249b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_SIDS, 250b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_CONTEXTS, 251b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_LEVELS, 252b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_LEVELRANGES, 253b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_POLICYCAPS, 254b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_IPADDRS, 255b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_NAMES, 256ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence CIL_SYM_PERMX, 257b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_NUM, 258b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_UNKNOWN, 259b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_PERMS // Special case for permissions. This symtab is not included in arrays 260b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 261b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 262b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_sym_array { 263b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ARRAY_ROOT = 0, 264b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ARRAY_BLOCK, 265b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ARRAY_IN, 266b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ARRAY_MACRO, 267b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ARRAY_CONDBLOCK, 268b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_SYM_ARRAY_NUM 269b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 270b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 271b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceextern int cil_sym_sizes[CIL_SYM_ARRAY_NUM][CIL_SYM_NUM]; 272b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 273b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_CLASS_SYM_SIZE 256 274c303ca910add05bb5fc9f515d880b393f02d695cJames Carter#define CIL_PERMS_PER_CLASS (sizeof(sepol_access_vector_t) * 8) 275b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 276b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_db { 277b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *parse; 278b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *ast; 279b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_type *selftype; 280b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *sidorder; 281b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *classorder; 282b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *catorder; 283b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *sensitivityorder; 284b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *netifcon; 285b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *genfscon; 286b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *filecon; 287b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *nodecon; 288b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *portcon; 289b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *pirqcon; 290b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *iomemcon; 291b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *ioportcon; 292b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *pcidevicecon; 293f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf struct cil_sort *devicetreecon; 294b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sort *fsuse; 295b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *userprefixes; 296b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *selinuxusers; 297b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *names; 298bea07710d0c269e28215f871494dace902b05ac1James Carter int num_types_and_attrs; 299bea07710d0c269e28215f871494dace902b05ac1James Carter int num_classes; 300b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int num_cats; 301b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int num_types; 302b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int num_roles; 30377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy int num_users; 304b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_type **val_to_type; 305b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_role **val_to_role; 30677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_user **val_to_user; 307b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int disable_dontaudit; 308b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int disable_neverallow; 309a58c158840adfad1cfb6259aa3a39c229557a570James Carter int attrs_expand_generated; 310a58c158840adfad1cfb6259aa3a39c229557a570James Carter unsigned attrs_expand_size; 311b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int preserve_tunables; 312b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int handle_unknown; 313b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int mls; 3148147bc762241b899444e43557c45f7f79c707502Steve Lawrence int target_platform; 3158147bc762241b899444e43557c45f7f79c707502Steve Lawrence int policy_version; 316b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 317b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 31880afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrencestruct cil_root { 31980afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrence symtab_t symtab[CIL_SYM_NUM]; 32080afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrence}; 32180afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrence 322b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_sort { 323b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_flavor flavor; 324b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t count; 325b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t index; 326b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void **array; 327b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 328b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 329b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_block { 330b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 331b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t symtab[CIL_SYM_NUM]; 332b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint16_t is_abstract; 33376ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence struct cil_list *bi_nodes; 334b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 335b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 336b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_blockinherit { 337b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *block_str; 33876ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence struct cil_block *block; 339b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 340b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 341b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_blockabstract { 342b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *block_str; 343b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 344b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 345b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_in { 346b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t symtab[CIL_SYM_NUM]; 347b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *block_str; 348b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 349b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 350b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_optional { 351b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 35276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence int enabled; 353b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 354b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 355b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_perm { 356b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 357b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence unsigned int value; 358b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *classperms; /* Only used for map perms */ 359b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 360b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 361b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_class { 362b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 363b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t perms; 364b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence unsigned int num_perms; 365b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *common; /* Only used for kernel class */ 366b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t ordered; /* Only used for kernel class */ 367b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 368b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 369b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classorder { 370b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *class_list_str; 371b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 372b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 373b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classperms_set { 374b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *set_str; 375b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_classpermission *set; 376b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 377b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 378b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classperms { 379b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *class_str; 380b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *class; 381b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *perm_strs; 382b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *perms; 383b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 384b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 385b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classpermission { 386b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 387b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *classperms; 388b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 389b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 390b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classpermissionset { 391b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *set_str; 392b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *classperms; 393b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 394b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 395b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classmapping { 396b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *map_class_str; 397b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *map_perm_str; 398b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *classperms; 399b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 400b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 401b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_classcommon { 402b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *class_str; 403b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *common_str; 404b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 405b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 406b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_alias { 407b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 408b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *actual; 409b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 410b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 411b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_aliasactual { 412b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *alias_str; 413b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *actual_str; 414b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 415b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 416b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_sid { 417b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 418b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 419b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t ordered; 420b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 421b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 422b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_sidcontext { 423b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *sid_str; 424b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 425b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 426b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 427b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 428b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_sidorder { 429b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *sid_list_str; 430b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 431b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 432b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_user { 433b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 434b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_user *bounds; 43577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy ebitmap_t *roles; 436b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_level *dftlevel; 437b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_levelrange *range; 43877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy int value; 43977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy}; 44077779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy 44177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiystruct cil_userattribute { 44277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_symtab_datum datum; 44377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_list *expr_list; 44477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy ebitmap_t *users; 44577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy}; 44677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy 44777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiystruct cil_userattributeset { 44877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy char *attr_str; 44977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_list *str_expr; 45077779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_list *datum_expr; 451b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 452b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 453b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_userrole { 454b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *user_str; 45577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy void *user; 456b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *role_str; 457b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *role; 458b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 459b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 460b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_userlevel { 461b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *user_str; 462b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *level_str; 463b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_level *level; 464b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 465b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 466b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_userrange { 467b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *user_str; 468b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *range_str; 469b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_levelrange *range; 470b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 471b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 472b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_userprefix { 473b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *user_str; 474b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_user *user; 475b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *prefix_str; 476b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 477b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 478b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_selinuxuser { 479b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *name_str; 480b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *user_str; 481b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_user *user; 482b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *range_str; 483b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_levelrange *range; 484b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 485b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 486b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_role { 487b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 488b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_role *bounds; 489b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ebitmap_t *types; 490b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int value; 491b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 492b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 493b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_roleattribute { 494b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 495b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *expr_list; 496b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ebitmap_t *roles; 497b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 498b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 499b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_roleattributeset { 500b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *attr_str; 501b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 502b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 503b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 504b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 505b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_roletype { 506b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *role_str; 507b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *role; /* role or attribute */ 508b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *type_str; 509b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *type; /* type, alias, or attribute */ 510b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 511b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 512b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_type { 513b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 514b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_type *bounds; 515b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int value; 516b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 517b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 518a58c158840adfad1cfb6259aa3a39c229557a570James Carter#define CIL_ATTR_AVRULE 0x01 519a58c158840adfad1cfb6259aa3a39c229557a570James Carter#define CIL_ATTR_NEVERALLOW 0x02 520a58c158840adfad1cfb6259aa3a39c229557a570James Carter#define CIL_ATTR_CONSTRAINT 0x04 521b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_typeattribute { 522b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 523b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *expr_list; 524b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ebitmap_t *types; 525a58c158840adfad1cfb6259aa3a39c229557a570James Carter int used; // whether or not this attribute was used in a binary policy rule 526b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 527b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 528b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_typeattributeset { 529b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *attr_str; 530b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 531b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 532b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 533b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 534b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_typepermissive { 535b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *type_str; 536b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *type; /* type or alias */ 537b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 538b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 539b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_name { 540b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 541b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *name_str; 542b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 543b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 544b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_nametypetransition { 545b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *src_str; 546b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *src; /* type, alias, or attribute */ 547b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *tgt_str; 548b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *tgt; /* type, alias, or attribute */ 549b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *obj_str; 550b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *obj; 551b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *name_str; 552b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_name *name; 553b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *result_str; 554b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *result; /* type or alias */ 555b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 556b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 557b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 558b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_rangetransition { 559b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *src_str; 560b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *src; /* type, alias, or attribute */ 561b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *exec_str; 562b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *exec; /* type, alias, or attribute */ 563b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *obj_str; 564b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *obj; 565b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *range_str; 566b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_levelrange *range; 567b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 568b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 569b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_bool { 570b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 571b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint16_t value; 572b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 573b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 574b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_tunable { 575b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 576b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint16_t value; 577b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 578b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 579b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_AVRULE_ALLOWED 1 580b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_AVRULE_AUDITALLOW 2 581b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_AVRULE_DONTAUDIT 8 582b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_AVRULE_NEVERALLOW 128 583b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_AVRULE_AV (AVRULE_ALLOWED | AVRULE_AUDITALLOW | AVRULE_DONTAUDIT | AVRULE_NEVERALLOW) 584b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_avrule { 585f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence int is_extended; 586b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t rule_kind; 587b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *src_str; 588b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *src; /* type, alias, or attribute */ 589b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *tgt_str; 590b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *tgt; /* type, alias, or attribute */ 591f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence union { 592f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence struct cil_list *classperms; 593f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence struct { 594f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence char *permx_str; 595f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence struct cil_permissionx *permx; 596f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence } x; 597f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence } perms; 598b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 599b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 600ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence#define CIL_PERMX_KIND_IOCTL 1 601ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencestruct cil_permissionx { 602ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence struct cil_symtab_datum datum; 603ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence uint32_t kind; 604ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence char *obj_str; 605f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence struct cil_class *obj; 606ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence struct cil_list *expr_str; 607ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence ebitmap_t *perms; 608ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence}; 609ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrence 610b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_TYPE_TRANSITION 16 611b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_TYPE_MEMBER 32 612b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_TYPE_CHANGE 64 613b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_AVRULE_TYPE (AVRULE_TRANSITION | AVRULE_MEMBER | AVRULE_CHANGE) 614b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_type_rule { 615b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t rule_kind; 616b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *src_str; 617b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *src; /* type, alias, or attribute */ 618b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *tgt_str; 619b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *tgt; /* type, alias, or attribute */ 620b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *obj_str; 621b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *obj; 622b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *result_str; 623b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *result; /* type or alias */ 624b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 625b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 626b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_roletransition { 627b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *src_str; 628b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_role *src; 629b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *tgt_str; 630b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *tgt; /* type, alias, or attribute */ 631b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *obj_str; 632b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *obj; 633b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *result_str; 634b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_role *result; 635b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 636b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 637b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_roleallow { 638b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *src_str; 639b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *src; /* role or attribute */ 640b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *tgt_str; 641b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *tgt; /* role or attribute */ 642b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 643b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 644b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_sens { 645b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 646b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *cats_list; 647b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t ordered; 648b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 649b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 650b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_sensorder { 651b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *sens_list_str; 652b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 653b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 654b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_cat { 655b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 656b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t ordered; 657b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int value; 658b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 659b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 660b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_cats { 661b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t evaluated; 662b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 663b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 664b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 665b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 666b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_catset { 667b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 668b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_cats *cats; 669b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 670b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 671b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_catorder { 672b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *cat_list_str; 673b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 674b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 675b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_senscat { 676b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *sens_str; 677b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_cats *cats; 678b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 679b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 680b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_level { 681b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 682b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *sens_str; 683b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sens *sens; 684b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_cats *cats; 685b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 686b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 687b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_levelrange { 688b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 689b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *low_str; 690b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_level *low; 691b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *high_str; 692b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_level *high; 693b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 694b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 695b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_context { 696b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 697b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *user_str; 698b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_user *user; 699b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *role_str; 700b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_role *role; 701b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *type_str; 702b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence void *type; /* type or alias */ 703b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *range_str; 704b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_levelrange *range; 705b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 706b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 707b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_filecon_types { 708b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_FILE = 1, 709b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_DIR, 710b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_CHAR, 711b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_BLOCK, 712b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_SOCKET, 713b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_PIPE, 714b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_SYMLINK, 715b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FILECON_ANY 716b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 717b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 718b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_filecon { 719b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *path_str; 720b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_filecon_types type; 721b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 722b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 723b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 724b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 725b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_protocol { 726b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_PROTOCOL_UDP = 1, 7273895fbbe0cf2ec52d6b6eda66084b6e9f8d88fb2Richard Haines CIL_PROTOCOL_TCP, 7283895fbbe0cf2ec52d6b6eda66084b6e9f8d88fb2Richard Haines CIL_PROTOCOL_DCCP 729b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 730b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 731b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_portcon { 732b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_protocol proto; 733b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t port_low; 734b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t port_high; 735b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 736b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 737b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 738b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 739b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_nodecon { 740b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *addr_str; 741b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_ipaddr *addr; 742b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *mask_str; 743b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_ipaddr *mask; 744b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 745b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 746b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 747b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 748b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_ipaddr { 749b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 750b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int family; 751b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence union { 752b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct in_addr v4; 753b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct in6_addr v6; 754b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } ip; 755b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 756b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 757b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_genfscon { 758b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *fs_str; 759b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *path_str; 760b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 761b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 762b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 763b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 764b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_netifcon { 765b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *interface_str; 766b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *if_context_str; 767b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *if_context; 768b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *packet_context_str; 769b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *packet_context; 770b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 771b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 772b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 773b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_pirqcon { 774b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t pirq; 775b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 776b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 777b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 778b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 779b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_iomemcon { 78082030de5dc8d08a9417842156293c65fef9dc70cDaniel De Graaf uint64_t iomem_low; 78182030de5dc8d08a9417842156293c65fef9dc70cDaniel De Graaf uint64_t iomem_high; 782b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 783b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 784b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 785b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 786b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_ioportcon { 787b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t ioport_low; 788b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t ioport_high; 789b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 790b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 791b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 792b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 793b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_pcidevicecon { 794b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t dev; 795b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 796b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 797b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 798b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 799f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graafstruct cil_devicetreecon { 800f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf char *path; 801f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf char *context_str; 802f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf struct cil_context *context; 803f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf}; 804f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf 805f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf 806b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* Ensure that CIL uses the same values as sepol services.h */ 807b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_fsuse_types { 808b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FSUSE_XATTR = SECURITY_FS_USE_XATTR, 809b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FSUSE_TASK = SECURITY_FS_USE_TASK, 810b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_FSUSE_TRANS = SECURITY_FS_USE_TRANS 811b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 812b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 813b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_fsuse { 814b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_fsuse_types type; 815b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *fs_str; 816b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *context_str; 817b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_context *context; 818b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 819b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 820b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_MLS_LEVELS "l1 l2 h1 h2" 821b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_CONSTRAIN_KEYS "t1 t2 r1 r2 u1 u2" 822b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_MLSCONSTRAIN_KEYS CIL_MLS_LEVELS CIL_CONSTRAIN_KEYS 823b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_CONSTRAIN_OPER "== != eq dom domby incomp not and or" 824b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_constrain { 825b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *classperms; 826b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 827b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 828b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 829b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 830b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_validatetrans { 831b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *class_str; 832b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *class; 833b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 834b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 835b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 836b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 837b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_param { 838b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *str; 839b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_flavor flavor; 840b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 841b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 842b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_macro { 843b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 844b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t symtab[CIL_SYM_NUM]; 845b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *params; 846b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 847b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 848b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_args { 849b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *arg_str; 850b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum *arg; 851b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *param_str; 852b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_flavor flavor; 853b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 854b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 855b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_call { 856b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *macro_str; 857b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_macro *macro; 858b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *args_tree; 859b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *args; 860b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int copied; 861b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 862b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 863b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_TRUE 1 864b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_FALSE 0 865b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 866b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_condblock { 867b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_flavor flavor; 868b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t symtab[CIL_SYM_NUM]; 869b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 870b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 871b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_booleanif { 872b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 873b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 874b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int preserved_tunable; 875b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 876b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 877b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_tunableif { 878b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *str_expr; 879b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *datum_expr; 880b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 881b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 882b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_policycap { 883b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_symtab_datum datum; 884b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 885b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 886b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_bounds { 887b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *parent_str; 888b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *child_str; 889b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 890b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 891b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* Ensure that CIL uses the same values as sepol policydb.h */ 892b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_default_object { 893b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_SOURCE = DEFAULT_SOURCE, 894b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_TARGET = DEFAULT_TARGET, 895b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 896b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 897b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* Default labeling behavior for users, roles, and types */ 898b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_default { 899b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_flavor flavor; 900b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *class_strs; 901b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *class_datums; 902b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_default_object object; 903b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 904b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 905b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* Ensure that CIL uses the same values as sepol policydb.h */ 906b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceenum cil_default_object_range { 907b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_SOURCE_LOW = DEFAULT_SOURCE_LOW, 908b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_SOURCE_HIGH = DEFAULT_SOURCE_HIGH, 909b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_SOURCE_LOW_HIGH = DEFAULT_SOURCE_LOW_HIGH, 910b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_TARGET_LOW = DEFAULT_TARGET_LOW, 911b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_TARGET_HIGH = DEFAULT_TARGET_HIGH, 912b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CIL_DEFAULT_TARGET_LOW_HIGH = DEFAULT_TARGET_LOW_HIGH, 913b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 914b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 915b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* Default labeling behavior for range */ 916b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_defaultrange { 917b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *class_strs; 918b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *class_datums; 919b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence enum cil_default_object_range object_range; 920b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 921b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 922b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_handleunknown { 923b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int handle_unknown; 924b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 925b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 926b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_mls { 927b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int value; 928b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 929b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 930875a6bcbe8885c927122c6931b3a01d821e04b10James Carterstruct cil_src_info { 931875a6bcbe8885c927122c6931b3a01d821e04b10James Carter int is_cil; 932875a6bcbe8885c927122c6931b3a01d821e04b10James Carter char *path; 933875a6bcbe8885c927122c6931b3a01d821e04b10James Carter}; 934875a6bcbe8885c927122c6931b3a01d821e04b10James Carter 935b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_db_init(struct cil_db **db); 936b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_db_destroy(struct cil_db **db); 937b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 93880afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrencevoid cil_root_init(struct cil_root **root); 93980afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrencevoid cil_root_destroy(struct cil_root *root); 94080afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrence 941b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_destroy_data(void **data, enum cil_flavor flavor); 942b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 943b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceint cil_flavor_to_symtab_index(enum cil_flavor flavor, enum cil_sym_index *index); 944b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceconst char * cil_node_to_string(struct cil_tree_node *node); 945b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 9468147bc762241b899444e43557c45f7f79c707502Steve Lawrenceint cil_userprefixes_to_string(struct cil_db *db, char **out, size_t *size); 9478147bc762241b899444e43557c45f7f79c707502Steve Lawrenceint cil_selinuxusers_to_string(struct cil_db *db, char **out, size_t *size); 9488147bc762241b899444e43557c45f7f79c707502Steve Lawrenceint cil_filecons_to_string(struct cil_db *db, char **out, size_t *size); 949b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 950b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_symtab_array_init(symtab_t symtab[], int symtab_sizes[CIL_SYM_NUM]); 951b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_symtab_array_destroy(symtab_t symtab[]); 952b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_destroy_ast_symtabs(struct cil_tree_node *root); 95380afe7b2ce0b06f93b6b3a07e58cab1aee8afc91Steve Lawrenceint cil_get_symtab(struct cil_tree_node *ast_node, symtab_t **symtab, enum cil_sym_index sym_index); 954b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 955b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sort_init(struct cil_sort **sort); 956b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sort_destroy(struct cil_sort **sort); 957b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_netifcon_init(struct cil_netifcon **netifcon); 958b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_context_init(struct cil_context **context); 959b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_level_init(struct cil_level **level); 960b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_levelrange_init(struct cil_levelrange **lvlrange); 961b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sens_init(struct cil_sens **sens); 962b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_block_init(struct cil_block **block); 963b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_blockinherit_init(struct cil_blockinherit **inherit); 964b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_blockabstract_init(struct cil_blockabstract **abstract); 965b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_in_init(struct cil_in **in); 966b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_class_init(struct cil_class **class); 967b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classorder_init(struct cil_classorder **classorder); 968b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classcommon_init(struct cil_classcommon **classcommon); 969b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sid_init(struct cil_sid **sid); 970b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sidcontext_init(struct cil_sidcontext **sidcontext); 971b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sidorder_init(struct cil_sidorder **sidorder); 972b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_userrole_init(struct cil_userrole **userrole); 973b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_userprefix_init(struct cil_userprefix **userprefix); 974b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_selinuxuser_init(struct cil_selinuxuser **selinuxuser); 975b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_roleattribute_init(struct cil_roleattribute **attribute); 976b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_roleattributeset_init(struct cil_roleattributeset **attrset); 977b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_roletype_init(struct cil_roletype **roletype); 978b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_typeattribute_init(struct cil_typeattribute **attribute); 979b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_typeattributeset_init(struct cil_typeattributeset **attrset); 980b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_alias_init(struct cil_alias **alias); 981b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_aliasactual_init(struct cil_aliasactual **aliasactual); 982b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_typepermissive_init(struct cil_typepermissive **typeperm); 983b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_name_init(struct cil_name **name); 984b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_nametypetransition_init(struct cil_nametypetransition **nametypetrans); 985b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_rangetransition_init(struct cil_rangetransition **rangetrans); 986b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_bool_init(struct cil_bool **cilbool); 987b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_boolif_init(struct cil_booleanif **bif); 988b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_condblock_init(struct cil_condblock **cb); 989b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_tunable_init(struct cil_tunable **ciltun); 990b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_tunif_init(struct cil_tunableif **tif); 991b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_avrule_init(struct cil_avrule **avrule); 992ef93dfe0393c4a60483c3f7729dd98a2f886606aSteve Lawrencevoid cil_permissionx_init(struct cil_permissionx **permx); 993b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_type_rule_init(struct cil_type_rule **type_rule); 994b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_roletransition_init(struct cil_roletransition **roletrans); 995b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_roleallow_init(struct cil_roleallow **role_allow); 996b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_catset_init(struct cil_catset **catset); 997b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_cats_init(struct cil_cats **cats); 998b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_senscat_init(struct cil_senscat **senscat); 999b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_filecon_init(struct cil_filecon **filecon); 1000b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_portcon_init(struct cil_portcon **portcon); 1001b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_nodecon_init(struct cil_nodecon **nodecon); 1002b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_genfscon_init(struct cil_genfscon **genfscon); 1003b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_pirqcon_init(struct cil_pirqcon **pirqcon); 1004b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_iomemcon_init(struct cil_iomemcon **iomemcon); 1005b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_ioportcon_init(struct cil_ioportcon **ioportcon); 1006b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_pcidevicecon_init(struct cil_pcidevicecon **pcidevicecon); 1007f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graafvoid cil_devicetreecon_init(struct cil_devicetreecon **devicetreecon); 1008b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_fsuse_init(struct cil_fsuse **fsuse); 1009b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_constrain_init(struct cil_constrain **constrain); 1010b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_validatetrans_init(struct cil_validatetrans **validtrans); 1011b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_ipaddr_init(struct cil_ipaddr **ipaddr); 1012b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_perm_init(struct cil_perm **perm); 1013b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classpermission_init(struct cil_classpermission **cp); 1014b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classpermissionset_init(struct cil_classpermissionset **cps); 1015b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classperms_set_init(struct cil_classperms_set **cp_set); 1016b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classperms_init(struct cil_classperms **cp); 1017b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_classmapping_init(struct cil_classmapping **mapping); 1018b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_user_init(struct cil_user **user); 1019b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_userlevel_init(struct cil_userlevel **usrlvl); 1020b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_userrange_init(struct cil_userrange **userrange); 1021b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_role_init(struct cil_role **role); 1022b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_type_init(struct cil_type **type); 1023b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_cat_init(struct cil_cat **cat); 1024b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_catorder_init(struct cil_catorder **catorder); 1025b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_sensorder_init(struct cil_sensorder **sensorder); 1026b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_args_init(struct cil_args **args); 1027b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_call_init(struct cil_call **call); 1028b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_optional_init(struct cil_optional **optional); 1029b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_param_init(struct cil_param **param); 1030b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_macro_init(struct cil_macro **macro); 1031b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_policycap_init(struct cil_policycap **policycap); 1032b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_bounds_init(struct cil_bounds **bounds); 1033b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_default_init(struct cil_default **def); 1034b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_defaultrange_init(struct cil_defaultrange **def); 1035b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_handleunknown_init(struct cil_handleunknown **unk); 1036b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid cil_mls_init(struct cil_mls **mls); 1037875a6bcbe8885c927122c6931b3a01d821e04b10James Cartervoid cil_src_info_init(struct cil_src_info **info); 103877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiyvoid cil_userattribute_init(struct cil_userattribute **attribute); 103977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiyvoid cil_userattributeset_init(struct cil_userattributeset **attrset); 1040b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1041b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#endif 1042