Home | History | Annotate | Download | only in src
      1 /* Authors: Jason Tang <jtang (at) tresys.com>
      2  *
      3  * Copyright (C) 2004-2005 Tresys Technology, LLC
      4  *
      5  *  This library is free software; you can redistribute it and/or
      6  *  modify it under the terms of the GNU Lesser General Public
      7  *  License as published by the Free Software Foundation; either
      8  *  version 2.1 of the License, or (at your option) any later version.
      9  *
     10  *  This library is distributed in the hope that it will be useful,
     11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  *  Lesser General Public License for more details.
     14  *
     15  *  You should have received a copy of the GNU Lesser General Public
     16  *  License along with this library; if not, write to the Free Software
     17  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     18  */
     19 
     20 #ifndef SEMANAGE_CONF_H
     21 #define SEMANAGE_CONF_H
     22 
     23 #include <semanage/handle.h>
     24 #include <sys/types.h>
     25 #include <sys/stat.h>
     26 
     27 /* libsemanage has its own configuration file.	It has two main parts:
     28  *  - single options
     29  *  - external programs to execute whenever a policy is to be loaded
     30  */
     31 
     32 typedef struct semanage_conf {
     33 	enum semanage_connect_type store_type;
     34 	char *store_path;	/* used for both socket path and policy dir */
     35 	char *compiler_directory_path;
     36 	int server_port;
     37 	int policyvers;		/* version for server generated policies */
     38 	int target_platform;
     39 	int expand_check;
     40 	int save_previous;
     41 	int save_linked;
     42 	int disable_genhomedircon;
     43 	int usepasswd;
     44 	int handle_unknown;
     45 	mode_t file_mode;
     46 	int bzip_blocksize;
     47 	int bzip_small;
     48 	int remove_hll;
     49 	int ignore_module_cache;
     50 	char *ignoredirs;	/* ";" separated of list for genhomedircon to ignore */
     51 	struct external_prog *load_policy;
     52 	struct external_prog *setfiles;
     53 	struct external_prog *sefcontext_compile;
     54 	struct external_prog *mod_prog, *linked_prog, *kernel_prog;
     55 	char *store_root_path;
     56 } semanage_conf_t;
     57 
     58 /* A linked list of verification programs.  Each one is called in
     59  * order of appearance within the configuration file.
     60  */
     61 typedef struct external_prog {
     62 	char *path;
     63 	char *args;
     64 	struct external_prog *next;
     65 } external_prog_t;
     66 
     67 semanage_conf_t *semanage_conf_parse(const char *config_filename);
     68 void semanage_conf_destroy(semanage_conf_t * conf);
     69 
     70 #endif
     71