1 /* Copyright (C) 2005 Red Hat, Inc. */
2 
3 /* Object: semanage_bool_t (Policy Boolean)
4  * Object: semanage_bool_key_t (Policy Boolean Key)
5  * Implements: record_t (Database Record)
6  * Implements: record_key_t (Database Record Key)
7  */
8 
9 #include <sepol/boolean_record.h>
10 
11 typedef sepol_bool_t semanage_bool_t;
12 typedef sepol_bool_key_t semanage_bool_key_t;
13 #define _SEMANAGE_BOOL_DEFINED_
14 
15 typedef semanage_bool_t record_t;
16 typedef semanage_bool_key_t record_key_t;
17 #define DBASE_RECORD_DEFINED
18 
19 #include "boolean_internal.h"
20 #include "handle.h"
21 #include "database.h"
22 #include <stdlib.h>
23 #include <selinux/selinux.h>
24 
25 /* Key */
semanage_bool_key_create(semanage_handle_t * handle,const char * name,semanage_bool_key_t ** key)26 int semanage_bool_key_create(semanage_handle_t * handle,
27 			     const char *name, semanage_bool_key_t ** key)
28 {
29 
30 	return sepol_bool_key_create(handle->sepolh, name, key);
31 }
32 
semanage_bool_key_extract(semanage_handle_t * handle,const semanage_bool_t * boolean,semanage_bool_key_t ** key)33 int semanage_bool_key_extract(semanage_handle_t * handle,
34 			      const semanage_bool_t * boolean,
35 			      semanage_bool_key_t ** key)
36 {
37 
38 	return sepol_bool_key_extract(handle->sepolh, boolean, key);
39 }
40 
hidden_def(semanage_bool_key_extract)41 hidden_def(semanage_bool_key_extract)
42 
43 void semanage_bool_key_free(semanage_bool_key_t * key)
44 {
45 	sepol_bool_key_free(key);
46 }
47 
hidden_def(semanage_bool_key_free)48 hidden_def(semanage_bool_key_free)
49 
50 int semanage_bool_compare(const semanage_bool_t * boolean,
51 			  const semanage_bool_key_t * key)
52 {
53 
54 	return sepol_bool_compare(boolean, key);
55 }
56 
hidden_def(semanage_bool_compare)57 hidden_def(semanage_bool_compare)
58 
59 int semanage_bool_compare2(const semanage_bool_t * boolean,
60 			   const semanage_bool_t * boolean2)
61 {
62 
63 	return sepol_bool_compare2(boolean, boolean2);
64 }
65 
hidden_def(semanage_bool_compare2)66 hidden_def(semanage_bool_compare2)
67 
68 static int semanage_bool_compare2_qsort(const semanage_bool_t ** boolean,
69 					const semanage_bool_t ** boolean2)
70 {
71 
72 	return sepol_bool_compare2(*boolean, *boolean2);
73 }
74 
75 /* Name */
semanage_bool_get_name(const semanage_bool_t * boolean)76 const char *semanage_bool_get_name(const semanage_bool_t * boolean)
77 {
78 
79 	return sepol_bool_get_name(boolean);
80 }
81 
hidden_def(semanage_bool_get_name)82 hidden_def(semanage_bool_get_name)
83 
84 int semanage_bool_set_name(semanage_handle_t * handle,
85 			   semanage_bool_t * boolean, const char *name)
86 {
87 	int rc;
88 	char *subname = selinux_boolean_sub(name);
89 	rc = sepol_bool_set_name(handle->sepolh, boolean, subname);
90 	free(subname);
91 	return rc;
92 }
93 
hidden_def(semanage_bool_set_name)94 hidden_def(semanage_bool_set_name)
95 
96 /* Value */
97 int semanage_bool_get_value(const semanage_bool_t * boolean)
98 {
99 
100 	return sepol_bool_get_value(boolean);
101 }
102 
hidden_def(semanage_bool_get_value)103 hidden_def(semanage_bool_get_value)
104 
105 void semanage_bool_set_value(semanage_bool_t * boolean, int value)
106 {
107 
108 	sepol_bool_set_value(boolean, value);
109 }
110 
hidden_def(semanage_bool_set_value)111 hidden_def(semanage_bool_set_value)
112 
113 /* Create/Clone/Destroy */
114 int semanage_bool_create(semanage_handle_t * handle,
115 			 semanage_bool_t ** bool_ptr)
116 {
117 
118 	return sepol_bool_create(handle->sepolh, bool_ptr);
119 }
120 
hidden_def(semanage_bool_create)121 hidden_def(semanage_bool_create)
122 
123 int semanage_bool_clone(semanage_handle_t * handle,
124 			const semanage_bool_t * boolean,
125 			semanage_bool_t ** bool_ptr)
126 {
127 
128 	return sepol_bool_clone(handle->sepolh, boolean, bool_ptr);
129 }
130 
hidden_def(semanage_bool_clone)131 hidden_def(semanage_bool_clone)
132 
133 void semanage_bool_free(semanage_bool_t * boolean)
134 {
135 
136 	sepol_bool_free(boolean);
137 }
138 
139 hidden_def(semanage_bool_free)
140 
141 /* Record base functions */
142 record_table_t SEMANAGE_BOOL_RTABLE = {
143 	.create = semanage_bool_create,
144 	.key_extract = semanage_bool_key_extract,
145 	.key_free = semanage_bool_key_free,
146 	.clone = semanage_bool_clone,
147 	.compare = semanage_bool_compare,
148 	.compare2 = semanage_bool_compare2,
149 	.compare2_qsort = semanage_bool_compare2_qsort,
150 	.free = semanage_bool_free,
151 };
152