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
11typedef sepol_bool_t semanage_bool_t;
12typedef sepol_bool_key_t semanage_bool_key_t;
13#define _SEMANAGE_BOOL_DEFINED_
14
15typedef semanage_bool_t record_t;
16typedef 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 */
26int 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
33int 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
41hidden_def(semanage_bool_key_extract)
42
43void semanage_bool_key_free(semanage_bool_key_t * key)
44{
45	sepol_bool_key_free(key);
46}
47
48hidden_def(semanage_bool_key_free)
49
50int 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
57hidden_def(semanage_bool_compare)
58
59int 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
66hidden_def(semanage_bool_compare2)
67
68static 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 */
76const char *semanage_bool_get_name(const semanage_bool_t * boolean)
77{
78
79	return sepol_bool_get_name(boolean);
80}
81
82hidden_def(semanage_bool_get_name)
83
84int 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
94hidden_def(semanage_bool_set_name)
95
96/* Value */
97int semanage_bool_get_value(const semanage_bool_t * boolean)
98{
99
100	return sepol_bool_get_value(boolean);
101}
102
103hidden_def(semanage_bool_get_value)
104
105void semanage_bool_set_value(semanage_bool_t * boolean, int value)
106{
107
108	sepol_bool_set_value(boolean, value);
109}
110
111hidden_def(semanage_bool_set_value)
112
113/* Create/Clone/Destroy */
114int 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
121hidden_def(semanage_bool_create)
122
123int 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
131hidden_def(semanage_bool_clone)
132
133void semanage_bool_free(semanage_bool_t * boolean)
134{
135
136	sepol_bool_free(boolean);
137}
138
139hidden_def(semanage_bool_free)
140
141/* Record base functions */
142record_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