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
12typedef sepol_context_t semanage_context_t;
13typedef sepol_ibpkey_t semanage_ibpkey_t;
14typedef sepol_ibpkey_key_t semanage_ibpkey_key_t;
15#define _SEMANAGE_IBPKEY_DEFINED_
16#define _SEMANAGE_CONTEXT_DEFINED_
17
18typedef semanage_ibpkey_t record_t;
19typedef 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
26int 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
32hidden_def(semanage_ibpkey_compare)
33
34int semanage_ibpkey_compare2(const semanage_ibpkey_t *ibpkey,
35			     const semanage_ibpkey_t *ibpkey2)
36{
37	return sepol_ibpkey_compare2(ibpkey, ibpkey2);
38}
39
40hidden_def(semanage_ibpkey_compare2)
41
42hidden int semanage_ibpkey_compare2_qsort(const semanage_ibpkey_t **ibpkey,
43					  const semanage_ibpkey_t **ibpkey2)
44{
45	return sepol_ibpkey_compare2(*ibpkey, *ibpkey2);
46}
47
48int semanage_ibpkey_key_create(semanage_handle_t *handle,
49			       const char *subnet_prefix,
50			       int low, int high,
51			       semanage_ibpkey_key_t **key_ptr)
52{
53	return sepol_ibpkey_key_create(handle->sepolh, subnet_prefix, low, high, key_ptr);
54}
55
56int semanage_ibpkey_key_extract(semanage_handle_t *handle,
57				const semanage_ibpkey_t *ibpkey,
58				semanage_ibpkey_key_t **key_ptr)
59{
60	return sepol_ibpkey_key_extract(handle->sepolh, ibpkey, key_ptr);
61}
62
63hidden_def(semanage_ibpkey_key_extract)
64
65void semanage_ibpkey_key_free(semanage_ibpkey_key_t *key)
66{
67	sepol_ibpkey_key_free(key);
68}
69
70hidden_def(semanage_ibpkey_key_free)
71
72int semanage_ibpkey_get_subnet_prefix(semanage_handle_t *handle,
73				      const semanage_ibpkey_t *ibpkey,
74				      char **subnet_prefix_ptr)
75{
76	return sepol_ibpkey_get_subnet_prefix(handle->sepolh, ibpkey, subnet_prefix_ptr);
77}
78
79hidden_def(semanage_ibpkey_get_subnet_prefix)
80
81uint64_t semanage_ibpkey_get_subnet_prefix_bytes(const semanage_ibpkey_t *ibpkey)
82{
83	return sepol_ibpkey_get_subnet_prefix_bytes(ibpkey);
84}
85
86hidden_def(semanage_ibpkey_get_subnet_prefix_bytes)
87
88int semanage_ibpkey_set_subnet_prefix(semanage_handle_t *handle,
89				      semanage_ibpkey_t *ibpkey,
90				      const char *subnet_prefix)
91{
92	return sepol_ibpkey_set_subnet_prefix(handle->sepolh, ibpkey, subnet_prefix);
93}
94
95hidden_def(semanage_ibpkey_set_subnet_prefix)
96
97void semanage_ibpkey_set_subnet_prefix_bytes(semanage_ibpkey_t *ibpkey,
98					     uint64_t subnet_prefix)
99{
100	return sepol_ibpkey_set_subnet_prefix_bytes(ibpkey, subnet_prefix);
101}
102
103hidden_def(semanage_ibpkey_set_subnet_prefix_bytes)
104
105int semanage_ibpkey_get_low(const semanage_ibpkey_t *ibpkey)
106{
107	return sepol_ibpkey_get_low(ibpkey);
108}
109
110hidden_def(semanage_ibpkey_get_low)
111
112int semanage_ibpkey_get_high(const semanage_ibpkey_t *ibpkey)
113{
114	return sepol_ibpkey_get_high(ibpkey);
115}
116
117hidden_def(semanage_ibpkey_get_high)
118
119void semanage_ibpkey_set_pkey(semanage_ibpkey_t *ibpkey, int ibpkey_num)
120{
121	sepol_ibpkey_set_pkey(ibpkey, ibpkey_num);
122}
123
124hidden_def(semanage_ibpkey_set_pkey)
125
126void semanage_ibpkey_set_range(semanage_ibpkey_t *ibpkey, int low, int high)
127{
128	sepol_ibpkey_set_range(ibpkey, low, high);
129}
130
131hidden_def(semanage_ibpkey_set_range)
132
133semanage_context_t *semanage_ibpkey_get_con(const semanage_ibpkey_t *ibpkey)
134{
135	return sepol_ibpkey_get_con(ibpkey);
136}
137
138hidden_def(semanage_ibpkey_get_con)
139
140int semanage_ibpkey_set_con(semanage_handle_t *handle,
141			    semanage_ibpkey_t *ibpkey, semanage_context_t *con)
142{
143	return sepol_ibpkey_set_con(handle->sepolh, ibpkey, con);
144}
145
146hidden_def(semanage_ibpkey_set_con)
147
148int semanage_ibpkey_create(semanage_handle_t *handle,
149			   semanage_ibpkey_t **ibpkey_ptr)
150{
151	return sepol_ibpkey_create(handle->sepolh, ibpkey_ptr);
152}
153
154hidden_def(semanage_ibpkey_create)
155
156int semanage_ibpkey_clone(semanage_handle_t *handle,
157			  const semanage_ibpkey_t *ibpkey,
158			  semanage_ibpkey_t **ibpkey_ptr)
159{
160	return sepol_ibpkey_clone(handle->sepolh, ibpkey, ibpkey_ptr);
161}
162
163hidden_def(semanage_ibpkey_clone)
164
165void semanage_ibpkey_free(semanage_ibpkey_t *ibpkey)
166{
167	sepol_ibpkey_free(ibpkey);
168}
169
170hidden_def(semanage_ibpkey_free)
171
172/* key base functions */
173record_table_t SEMANAGE_IBPKEY_RTABLE = {
174	.create = semanage_ibpkey_create,
175	.key_extract = semanage_ibpkey_key_extract,
176	.key_free = semanage_ibpkey_key_free,
177	.clone = semanage_ibpkey_clone,
178	.compare = semanage_ibpkey_compare,
179	.compare2 = semanage_ibpkey_compare2,
180	.compare2_qsort = semanage_ibpkey_compare2_qsort,
181	.free = semanage_ibpkey_free,
182};
183