1 /* Copyright (C) 2017 Mellanox Technologies Inc. */
2
3 /* Object: semanage_ibpkey_t (Infiniband Pkey)
4 * Object: semanage_ibpkey_key_t (Infiniband Pkey Key)
5 * Implements: record_t (Database Record)
6 * Implements: record_key_t (Database Record Key)
7 */
8
9 #include <sepol/context_record.h>
10 #include <sepol/ibpkey_record.h>
11
12 typedef sepol_context_t semanage_context_t;
13 typedef sepol_ibpkey_t semanage_ibpkey_t;
14 typedef sepol_ibpkey_key_t semanage_ibpkey_key_t;
15 #define _SEMANAGE_IBPKEY_DEFINED_
16 #define _SEMANAGE_CONTEXT_DEFINED_
17
18 typedef semanage_ibpkey_t record_t;
19 typedef semanage_ibpkey_key_t record_key_t;
20 #define DBASE_RECORD_DEFINED
21
22 #include "ibpkey_internal.h"
23 #include "handle.h"
24 #include "database.h"
25
semanage_ibpkey_compare(const semanage_ibpkey_t * ibpkey,const semanage_ibpkey_key_t * key)26 int semanage_ibpkey_compare(const semanage_ibpkey_t *ibpkey,
27 const semanage_ibpkey_key_t *key)
28 {
29 return sepol_ibpkey_compare(ibpkey, key);
30 }
31
32
semanage_ibpkey_compare2(const semanage_ibpkey_t * ibpkey,const semanage_ibpkey_t * ibpkey2)33 int semanage_ibpkey_compare2(const semanage_ibpkey_t *ibpkey,
34 const semanage_ibpkey_t *ibpkey2)
35 {
36 return sepol_ibpkey_compare2(ibpkey, ibpkey2);
37 }
38
39
semanage_ibpkey_compare2_qsort(const semanage_ibpkey_t ** ibpkey,const semanage_ibpkey_t ** ibpkey2)40 int semanage_ibpkey_compare2_qsort(const semanage_ibpkey_t **ibpkey,
41 const semanage_ibpkey_t **ibpkey2)
42 {
43 return sepol_ibpkey_compare2(*ibpkey, *ibpkey2);
44 }
45
semanage_ibpkey_key_create(semanage_handle_t * handle,const char * subnet_prefix,int low,int high,semanage_ibpkey_key_t ** key_ptr)46 int semanage_ibpkey_key_create(semanage_handle_t *handle,
47 const char *subnet_prefix,
48 int low, int high,
49 semanage_ibpkey_key_t **key_ptr)
50 {
51 return sepol_ibpkey_key_create(handle->sepolh, subnet_prefix, low, high, key_ptr);
52 }
53
semanage_ibpkey_key_extract(semanage_handle_t * handle,const semanage_ibpkey_t * ibpkey,semanage_ibpkey_key_t ** key_ptr)54 int semanage_ibpkey_key_extract(semanage_handle_t *handle,
55 const semanage_ibpkey_t *ibpkey,
56 semanage_ibpkey_key_t **key_ptr)
57 {
58 return sepol_ibpkey_key_extract(handle->sepolh, ibpkey, key_ptr);
59 }
60
61
semanage_ibpkey_key_free(semanage_ibpkey_key_t * key)62 void semanage_ibpkey_key_free(semanage_ibpkey_key_t *key)
63 {
64 sepol_ibpkey_key_free(key);
65 }
66
67
semanage_ibpkey_get_subnet_prefix(semanage_handle_t * handle,const semanage_ibpkey_t * ibpkey,char ** subnet_prefix_ptr)68 int semanage_ibpkey_get_subnet_prefix(semanage_handle_t *handle,
69 const semanage_ibpkey_t *ibpkey,
70 char **subnet_prefix_ptr)
71 {
72 return sepol_ibpkey_get_subnet_prefix(handle->sepolh, ibpkey, subnet_prefix_ptr);
73 }
74
75
semanage_ibpkey_get_subnet_prefix_bytes(const semanage_ibpkey_t * ibpkey)76 uint64_t semanage_ibpkey_get_subnet_prefix_bytes(const semanage_ibpkey_t *ibpkey)
77 {
78 return sepol_ibpkey_get_subnet_prefix_bytes(ibpkey);
79 }
80
81
semanage_ibpkey_set_subnet_prefix(semanage_handle_t * handle,semanage_ibpkey_t * ibpkey,const char * subnet_prefix)82 int semanage_ibpkey_set_subnet_prefix(semanage_handle_t *handle,
83 semanage_ibpkey_t *ibpkey,
84 const char *subnet_prefix)
85 {
86 return sepol_ibpkey_set_subnet_prefix(handle->sepolh, ibpkey, subnet_prefix);
87 }
88
89
semanage_ibpkey_set_subnet_prefix_bytes(semanage_ibpkey_t * ibpkey,uint64_t subnet_prefix)90 void semanage_ibpkey_set_subnet_prefix_bytes(semanage_ibpkey_t *ibpkey,
91 uint64_t subnet_prefix)
92 {
93 return sepol_ibpkey_set_subnet_prefix_bytes(ibpkey, subnet_prefix);
94 }
95
96
semanage_ibpkey_get_low(const semanage_ibpkey_t * ibpkey)97 int semanage_ibpkey_get_low(const semanage_ibpkey_t *ibpkey)
98 {
99 return sepol_ibpkey_get_low(ibpkey);
100 }
101
102
semanage_ibpkey_get_high(const semanage_ibpkey_t * ibpkey)103 int semanage_ibpkey_get_high(const semanage_ibpkey_t *ibpkey)
104 {
105 return sepol_ibpkey_get_high(ibpkey);
106 }
107
108
semanage_ibpkey_set_pkey(semanage_ibpkey_t * ibpkey,int ibpkey_num)109 void semanage_ibpkey_set_pkey(semanage_ibpkey_t *ibpkey, int ibpkey_num)
110 {
111 sepol_ibpkey_set_pkey(ibpkey, ibpkey_num);
112 }
113
114
semanage_ibpkey_set_range(semanage_ibpkey_t * ibpkey,int low,int high)115 void semanage_ibpkey_set_range(semanage_ibpkey_t *ibpkey, int low, int high)
116 {
117 sepol_ibpkey_set_range(ibpkey, low, high);
118 }
119
120
semanage_ibpkey_get_con(const semanage_ibpkey_t * ibpkey)121 semanage_context_t *semanage_ibpkey_get_con(const semanage_ibpkey_t *ibpkey)
122 {
123 return sepol_ibpkey_get_con(ibpkey);
124 }
125
126
semanage_ibpkey_set_con(semanage_handle_t * handle,semanage_ibpkey_t * ibpkey,semanage_context_t * con)127 int semanage_ibpkey_set_con(semanage_handle_t *handle,
128 semanage_ibpkey_t *ibpkey, semanage_context_t *con)
129 {
130 return sepol_ibpkey_set_con(handle->sepolh, ibpkey, con);
131 }
132
133
semanage_ibpkey_create(semanage_handle_t * handle,semanage_ibpkey_t ** ibpkey_ptr)134 int semanage_ibpkey_create(semanage_handle_t *handle,
135 semanage_ibpkey_t **ibpkey_ptr)
136 {
137 return sepol_ibpkey_create(handle->sepolh, ibpkey_ptr);
138 }
139
140
semanage_ibpkey_clone(semanage_handle_t * handle,const semanage_ibpkey_t * ibpkey,semanage_ibpkey_t ** ibpkey_ptr)141 int semanage_ibpkey_clone(semanage_handle_t *handle,
142 const semanage_ibpkey_t *ibpkey,
143 semanage_ibpkey_t **ibpkey_ptr)
144 {
145 return sepol_ibpkey_clone(handle->sepolh, ibpkey, ibpkey_ptr);
146 }
147
148
semanage_ibpkey_free(semanage_ibpkey_t * ibpkey)149 void semanage_ibpkey_free(semanage_ibpkey_t *ibpkey)
150 {
151 sepol_ibpkey_free(ibpkey);
152 }
153
154
155 /* key base functions */
156 record_table_t SEMANAGE_IBPKEY_RTABLE = {
157 .create = semanage_ibpkey_create,
158 .key_extract = semanage_ibpkey_key_extract,
159 .key_free = semanage_ibpkey_key_free,
160 .clone = semanage_ibpkey_clone,
161 .compare = semanage_ibpkey_compare,
162 .compare2 = semanage_ibpkey_compare2,
163 .compare2_qsort = semanage_ibpkey_compare2_qsort,
164 .free = semanage_ibpkey_free,
165 };
166