• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _SEPOL_NODE_RECORD_H_
2 #define _SEPOL_NODE_RECORD_H_
3 
4 #include <stddef.h>
5 #include <sepol/context_record.h>
6 #include <sepol/handle.h>
7 
8 struct sepol_node;
9 struct sepol_node_key;
10 typedef struct sepol_node sepol_node_t;
11 typedef struct sepol_node_key sepol_node_key_t;
12 
13 #define SEPOL_PROTO_IP4 0
14 #define SEPOL_PROTO_IP6 1
15 
16 /* Key */
17 extern int sepol_node_compare(const sepol_node_t * node,
18 			      const sepol_node_key_t * key);
19 
20 extern int sepol_node_compare2(const sepol_node_t * node,
21 			       const sepol_node_t * node2);
22 
23 extern int sepol_node_key_create(sepol_handle_t * handle,
24 				 const char *addr,
25 				 const char *mask,
26 				 int proto, sepol_node_key_t ** key_ptr);
27 
28 extern void sepol_node_key_unpack(const sepol_node_key_t * key,
29 				  const char **addr,
30 				  const char **mask, int *proto);
31 
32 extern int sepol_node_key_extract(sepol_handle_t * handle,
33 				  const sepol_node_t * node,
34 				  sepol_node_key_t ** key_ptr);
35 
36 extern void sepol_node_key_free(sepol_node_key_t * key);
37 
38 /* Address */
39 extern int sepol_node_get_addr(sepol_handle_t * handle,
40 			       const sepol_node_t * node, char **addr);
41 
42 extern int sepol_node_get_addr_bytes(sepol_handle_t * handle,
43 				     const sepol_node_t * node,
44 				     char **addr, size_t * addr_sz);
45 
46 extern int sepol_node_set_addr(sepol_handle_t * handle,
47 			       sepol_node_t * node,
48 			       int proto, const char *addr);
49 
50 extern int sepol_node_set_addr_bytes(sepol_handle_t * handle,
51 				     sepol_node_t * node,
52 				     const char *addr, size_t addr_sz);
53 
54 /* Netmask */
55 extern int sepol_node_get_mask(sepol_handle_t * handle,
56 			       const sepol_node_t * node, char **mask);
57 
58 extern int sepol_node_get_mask_bytes(sepol_handle_t * handle,
59 				     const sepol_node_t * node,
60 				     char **mask, size_t * mask_sz);
61 
62 extern int sepol_node_set_mask(sepol_handle_t * handle,
63 			       sepol_node_t * node,
64 			       int proto, const char *mask);
65 
66 extern int sepol_node_set_mask_bytes(sepol_handle_t * handle,
67 				     sepol_node_t * node,
68 				     const char *mask, size_t mask_sz);
69 
70 /* Protocol */
71 extern int sepol_node_get_proto(const sepol_node_t * node);
72 
73 extern void sepol_node_set_proto(sepol_node_t * node, int proto);
74 
75 extern const char *sepol_node_get_proto_str(int proto);
76 
77 /* Context */
78 extern sepol_context_t *sepol_node_get_con(const sepol_node_t * node);
79 
80 extern int sepol_node_set_con(sepol_handle_t * handle,
81 			      sepol_node_t * node, sepol_context_t * con);
82 
83 /* Create/Clone/Destroy */
84 extern int sepol_node_create(sepol_handle_t * handle, sepol_node_t ** node_ptr);
85 
86 extern int sepol_node_clone(sepol_handle_t * handle,
87 			    const sepol_node_t * node,
88 			    sepol_node_t ** node_ptr);
89 
90 extern void sepol_node_free(sepol_node_t * node);
91 
92 #endif
93