1 #ifndef _SEPOL_IFACE_RECORD_H_
2 #define _SEPOL_IFACE_RECORD_H_
3 
4 #include <sepol/handle.h>
5 #include <sepol/context_record.h>
6 #include <sys/cdefs.h>
7 
8 __BEGIN_DECLS
9 
10 struct sepol_iface;
11 struct sepol_iface_key;
12 typedef struct sepol_iface sepol_iface_t;
13 typedef struct sepol_iface_key sepol_iface_key_t;
14 
15 /* Key */
16 extern int sepol_iface_compare(const sepol_iface_t * iface,
17 			       const sepol_iface_key_t * key);
18 
19 extern int sepol_iface_compare2(const sepol_iface_t * iface,
20 				const sepol_iface_t * iface2);
21 
22 extern void sepol_iface_key_unpack(const sepol_iface_key_t * key,
23 				   const char **name);
24 
25 extern int sepol_iface_key_create(sepol_handle_t * handle,
26 				  const char *name,
27 				  sepol_iface_key_t ** key_ptr);
28 
29 extern int sepol_iface_key_extract(sepol_handle_t * handle,
30 				   const sepol_iface_t * iface,
31 				   sepol_iface_key_t ** key_ptr);
32 
33 extern void sepol_iface_key_free(sepol_iface_key_t * key);
34 
35 /* Name */
36 extern const char *sepol_iface_get_name(const sepol_iface_t * iface);
37 
38 extern int sepol_iface_set_name(sepol_handle_t * handle,
39 				sepol_iface_t * iface, const char *name);
40 
41 /* Context */
42 extern sepol_context_t *sepol_iface_get_ifcon(const sepol_iface_t * iface);
43 
44 extern int sepol_iface_set_ifcon(sepol_handle_t * handle,
45 				 sepol_iface_t * iface, sepol_context_t * con);
46 
47 extern sepol_context_t *sepol_iface_get_msgcon(const sepol_iface_t * iface);
48 
49 extern int sepol_iface_set_msgcon(sepol_handle_t * handle,
50 				  sepol_iface_t * iface, sepol_context_t * con);
51 
52 /* Create/Clone/Destroy */
53 extern int sepol_iface_create(sepol_handle_t * handle,
54 			      sepol_iface_t ** iface_ptr);
55 
56 extern int sepol_iface_clone(sepol_handle_t * handle,
57 			     const sepol_iface_t * iface,
58 			     sepol_iface_t ** iface_ptr);
59 
60 extern void sepol_iface_free(sepol_iface_t * iface);
61 
62 __END_DECLS
63 #endif
64