1 #ifndef _SEPOL_IBPKEY_RECORD_H_
2 #define _SEPOL_IBPKEY_RECORD_H_
3 
4 #include <stddef.h>
5 #include <stdint.h>
6 #include <sepol/context_record.h>
7 #include <sepol/handle.h>
8 
9 #define INET6_ADDRLEN 16
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 struct sepol_ibpkey;
16 struct sepol_ibpkey_key;
17 typedef struct sepol_ibpkey sepol_ibpkey_t;
18 typedef struct sepol_ibpkey_key sepol_ibpkey_key_t;
19 
20 extern int sepol_ibpkey_compare(const sepol_ibpkey_t *ibpkey,
21 				const sepol_ibpkey_key_t *key);
22 
23 extern int sepol_ibpkey_compare2(const sepol_ibpkey_t *ibpkey,
24 				 const sepol_ibpkey_t *ibpkey2);
25 
26 extern int sepol_ibpkey_key_create(sepol_handle_t *handle,
27 				   const char *subnet_prefix,
28 				   int low, int high,
29 				   sepol_ibpkey_key_t **key_ptr);
30 
31 extern void sepol_ibpkey_key_unpack(const sepol_ibpkey_key_t *key,
32 				    uint64_t *subnet_prefix,
33 				    int *low, int *high);
34 
35 extern int sepol_ibpkey_key_extract(sepol_handle_t *handle,
36 				    const sepol_ibpkey_t *ibpkey,
37 				    sepol_ibpkey_key_t **key_ptr);
38 
39 extern void sepol_ibpkey_key_free(sepol_ibpkey_key_t *key);
40 
41 extern int sepol_ibpkey_get_low(const sepol_ibpkey_t *ibpkey);
42 
43 extern int sepol_ibpkey_get_high(const sepol_ibpkey_t *ibpkey);
44 
45 extern void sepol_ibpkey_set_pkey(sepol_ibpkey_t *ibpkey, int pkey_num);
46 
47 extern void sepol_ibpkey_set_range(sepol_ibpkey_t *ibpkey, int low, int high);
48 
49 extern int sepol_ibpkey_get_subnet_prefix(sepol_handle_t *handle,
50 					  const sepol_ibpkey_t *ibpkey,
51 					  char **subnet_prefix);
52 
53 extern uint64_t sepol_ibpkey_get_subnet_prefix_bytes(const sepol_ibpkey_t *ibpkey);
54 
55 extern int sepol_ibpkey_set_subnet_prefix(sepol_handle_t *handle,
56 					  sepol_ibpkey_t *ibpkey,
57 					  const char *subnet_prefix);
58 
59 extern void sepol_ibpkey_set_subnet_prefix_bytes(sepol_ibpkey_t *ibpkey,
60 						 uint64_t subnet_prefix);
61 
62 extern sepol_context_t *sepol_ibpkey_get_con(const sepol_ibpkey_t *ibpkey);
63 
64 extern int sepol_ibpkey_set_con(sepol_handle_t *handle,
65 				sepol_ibpkey_t *ibpkey, sepol_context_t *con);
66 
67 extern int sepol_ibpkey_create(sepol_handle_t *handle, sepol_ibpkey_t **ibpkey_ptr);
68 
69 extern int sepol_ibpkey_clone(sepol_handle_t *handle,
70 			      const sepol_ibpkey_t *ibpkey,
71 			      sepol_ibpkey_t **ibpkey_ptr);
72 
73 extern void sepol_ibpkey_free(sepol_ibpkey_t *ibpkey);
74 
75 
76 #ifdef __cplusplus
77 }
78 #endif
79 
80 #endif
81