xref: /aosp_15_r20/external/selinux/libsemanage/src/modules.h (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
1*2d543d20SAndroid Build Coastguard Worker /* Author: Joshua Brindle <[email protected]>
2*2d543d20SAndroid Build Coastguard Worker  *         Jason Tang     <[email protected]>
3*2d543d20SAndroid Build Coastguard Worker  *         Caleb Case     <[email protected]>
4*2d543d20SAndroid Build Coastguard Worker  *
5*2d543d20SAndroid Build Coastguard Worker  * Copyright (C) 2005,2009 Tresys Technology, LLC
6*2d543d20SAndroid Build Coastguard Worker  *
7*2d543d20SAndroid Build Coastguard Worker  *  This library is free software; you can redistribute it and/or
8*2d543d20SAndroid Build Coastguard Worker  *  modify it under the terms of the GNU Lesser General Public
9*2d543d20SAndroid Build Coastguard Worker  *  License as published by the Free Software Foundation; either
10*2d543d20SAndroid Build Coastguard Worker  *  version 2.1 of the License, or (at your option) any later version.
11*2d543d20SAndroid Build Coastguard Worker  *
12*2d543d20SAndroid Build Coastguard Worker  *  This library is distributed in the hope that it will be useful,
13*2d543d20SAndroid Build Coastguard Worker  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14*2d543d20SAndroid Build Coastguard Worker  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15*2d543d20SAndroid Build Coastguard Worker  *  Lesser General Public License for more details.
16*2d543d20SAndroid Build Coastguard Worker  *
17*2d543d20SAndroid Build Coastguard Worker  *  You should have received a copy of the GNU Lesser General Public
18*2d543d20SAndroid Build Coastguard Worker  *  License along with this library; if not, write to the Free Software
19*2d543d20SAndroid Build Coastguard Worker  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
20*2d543d20SAndroid Build Coastguard Worker  */
21*2d543d20SAndroid Build Coastguard Worker 
22*2d543d20SAndroid Build Coastguard Worker #ifndef _SEMANAGE_INTERNAL_MODULES_H_
23*2d543d20SAndroid Build Coastguard Worker #define _SEMANAGE_INTERNAL_MODULES_H_
24*2d543d20SAndroid Build Coastguard Worker 
25*2d543d20SAndroid Build Coastguard Worker #include <stdint.h>
26*2d543d20SAndroid Build Coastguard Worker 
27*2d543d20SAndroid Build Coastguard Worker #include "semanage/modules.h"
28*2d543d20SAndroid Build Coastguard Worker 
29*2d543d20SAndroid Build Coastguard Worker 
30*2d543d20SAndroid Build Coastguard Worker int semanage_module_upgrade_file(semanage_handle_t * sh,
31*2d543d20SAndroid Build Coastguard Worker 				 const char *module_name);
32*2d543d20SAndroid Build Coastguard Worker int semanage_module_install_base_file(semanage_handle_t * sh,
33*2d543d20SAndroid Build Coastguard Worker 				 const char *module_name);
34*2d543d20SAndroid Build Coastguard Worker 
35*2d543d20SAndroid Build Coastguard Worker /* Module Info */
36*2d543d20SAndroid Build Coastguard Worker struct semanage_module_info {
37*2d543d20SAndroid Build Coastguard Worker 	uint16_t priority;	/* key, module priority */
38*2d543d20SAndroid Build Coastguard Worker 	char *name;		/* key, module name */
39*2d543d20SAndroid Build Coastguard Worker 	char *lang_ext;		/* module source language extension */
40*2d543d20SAndroid Build Coastguard Worker 	int enabled;		/* module enabled/disabled status */
41*2d543d20SAndroid Build Coastguard Worker };
42*2d543d20SAndroid Build Coastguard Worker 
43*2d543d20SAndroid Build Coastguard Worker /* Initializes a pre-allocated module info struct.
44*2d543d20SAndroid Build Coastguard Worker  *
45*2d543d20SAndroid Build Coastguard Worker  * Returns 0 on success and -1 on error.
46*2d543d20SAndroid Build Coastguard Worker  */
47*2d543d20SAndroid Build Coastguard Worker int semanage_module_info_init(semanage_handle_t *sh,
48*2d543d20SAndroid Build Coastguard Worker 			      semanage_module_info_t *modinfo);
49*2d543d20SAndroid Build Coastguard Worker 
50*2d543d20SAndroid Build Coastguard Worker /* Clones module info @source's members into module info @target.
51*2d543d20SAndroid Build Coastguard Worker  *
52*2d543d20SAndroid Build Coastguard Worker  * Returns 0 on success and -1 on error.
53*2d543d20SAndroid Build Coastguard Worker  */
54*2d543d20SAndroid Build Coastguard Worker int semanage_module_info_clone(semanage_handle_t *sh,
55*2d543d20SAndroid Build Coastguard Worker 			       const semanage_module_info_t *source,
56*2d543d20SAndroid Build Coastguard Worker 			       semanage_module_info_t *target);
57*2d543d20SAndroid Build Coastguard Worker 
58*2d543d20SAndroid Build Coastguard Worker /* Convert a cstring to a priority.
59*2d543d20SAndroid Build Coastguard Worker  *
60*2d543d20SAndroid Build Coastguard Worker  * Returns 0 on success and -1 on error.
61*2d543d20SAndroid Build Coastguard Worker  */
62*2d543d20SAndroid Build Coastguard Worker int semanage_string_to_priority(const char *str, uint16_t *priority);
63*2d543d20SAndroid Build Coastguard Worker 
64*2d543d20SAndroid Build Coastguard Worker int semanage_module_info_validate(const semanage_module_info_t *modinfo);
65*2d543d20SAndroid Build Coastguard Worker int semanage_module_validate_priority(uint16_t priority);
66*2d543d20SAndroid Build Coastguard Worker int semanage_module_validate_name(const char *name);
67*2d543d20SAndroid Build Coastguard Worker int semanage_module_validate_enabled(int enabled);
68*2d543d20SAndroid Build Coastguard Worker int semanage_module_validate_lang_ext(const char *ext);
69*2d543d20SAndroid Build Coastguard Worker int semanage_module_validate_version(const char *version);
70*2d543d20SAndroid Build Coastguard Worker 
71*2d543d20SAndroid Build Coastguard Worker /* Module Key */
72*2d543d20SAndroid Build Coastguard Worker struct semanage_module_key {
73*2d543d20SAndroid Build Coastguard Worker 	uint16_t priority;	/* module priority */
74*2d543d20SAndroid Build Coastguard Worker 	char *name;		/* module name */
75*2d543d20SAndroid Build Coastguard Worker };
76*2d543d20SAndroid Build Coastguard Worker 
77*2d543d20SAndroid Build Coastguard Worker /* Initializes a pre-allocated module key struct.
78*2d543d20SAndroid Build Coastguard Worker  *
79*2d543d20SAndroid Build Coastguard Worker  * Returns 0 on success, and -1 on error.
80*2d543d20SAndroid Build Coastguard Worker  */
81*2d543d20SAndroid Build Coastguard Worker int semanage_module_key_init(semanage_handle_t *sh,
82*2d543d20SAndroid Build Coastguard Worker 			     semanage_module_key_t *modkey);
83*2d543d20SAndroid Build Coastguard Worker 
84*2d543d20SAndroid Build Coastguard Worker /* Module Paths */
85*2d543d20SAndroid Build Coastguard Worker 
86*2d543d20SAndroid Build Coastguard Worker enum semanage_module_path_type {
87*2d543d20SAndroid Build Coastguard Worker 	SEMANAGE_MODULE_PATH_PRIORITY,
88*2d543d20SAndroid Build Coastguard Worker 	SEMANAGE_MODULE_PATH_NAME,
89*2d543d20SAndroid Build Coastguard Worker 	SEMANAGE_MODULE_PATH_HLL,
90*2d543d20SAndroid Build Coastguard Worker 	SEMANAGE_MODULE_PATH_CIL,
91*2d543d20SAndroid Build Coastguard Worker 	SEMANAGE_MODULE_PATH_LANG_EXT,
92*2d543d20SAndroid Build Coastguard Worker 	SEMANAGE_MODULE_PATH_DISABLED,
93*2d543d20SAndroid Build Coastguard Worker };
94*2d543d20SAndroid Build Coastguard Worker 
95*2d543d20SAndroid Build Coastguard Worker /* Get the module path for the given path @type.
96*2d543d20SAndroid Build Coastguard Worker  *
97*2d543d20SAndroid Build Coastguard Worker  * Returns 0 on success and -1 on error.
98*2d543d20SAndroid Build Coastguard Worker  */
99*2d543d20SAndroid Build Coastguard Worker int semanage_module_get_path(semanage_handle_t *sh,
100*2d543d20SAndroid Build Coastguard Worker 			     const semanage_module_info_t *module,
101*2d543d20SAndroid Build Coastguard Worker 			     enum semanage_module_path_type type,
102*2d543d20SAndroid Build Coastguard Worker 			     char *path,
103*2d543d20SAndroid Build Coastguard Worker 			     size_t len);
104*2d543d20SAndroid Build Coastguard Worker 
105*2d543d20SAndroid Build Coastguard Worker extern const size_t CHECKSUM_CONTENT_SIZE;
106*2d543d20SAndroid Build Coastguard Worker void semanage_hash_to_checksum_string(const uint8_t *hash, char *checksum);
107*2d543d20SAndroid Build Coastguard Worker 
108*2d543d20SAndroid Build Coastguard Worker #endif
109