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
7struct sepol_iface;
8struct sepol_iface_key;
9typedef struct sepol_iface sepol_iface_t;
10typedef struct sepol_iface_key sepol_iface_key_t;
11
12/* Key */
13extern int sepol_iface_compare(const sepol_iface_t * iface,
14			       const sepol_iface_key_t * key);
15
16extern int sepol_iface_compare2(const sepol_iface_t * iface,
17				const sepol_iface_t * iface2);
18
19extern void sepol_iface_key_unpack(const sepol_iface_key_t * key,
20				   const char **name);
21
22extern int sepol_iface_key_create(sepol_handle_t * handle,
23				  const char *name,
24				  sepol_iface_key_t ** key_ptr);
25
26extern int sepol_iface_key_extract(sepol_handle_t * handle,
27				   const sepol_iface_t * iface,
28				   sepol_iface_key_t ** key_ptr);
29
30extern void sepol_iface_key_free(sepol_iface_key_t * key);
31
32/* Name */
33extern const char *sepol_iface_get_name(const sepol_iface_t * iface);
34
35extern int sepol_iface_set_name(sepol_handle_t * handle,
36				sepol_iface_t * iface, const char *name);
37
38/* Context */
39extern sepol_context_t *sepol_iface_get_ifcon(const sepol_iface_t * iface);
40
41extern int sepol_iface_set_ifcon(sepol_handle_t * handle,
42				 sepol_iface_t * iface, sepol_context_t * con);
43
44extern sepol_context_t *sepol_iface_get_msgcon(const sepol_iface_t * iface);
45
46extern int sepol_iface_set_msgcon(sepol_handle_t * handle,
47				  sepol_iface_t * iface, sepol_context_t * con);
48
49/* Create/Clone/Destroy */
50extern int sepol_iface_create(sepol_handle_t * handle,
51			      sepol_iface_t ** iface_ptr);
52
53extern int sepol_iface_clone(sepol_handle_t * handle,
54			     const sepol_iface_t * iface,
55			     sepol_iface_t ** iface_ptr);
56
57extern void sepol_iface_free(sepol_iface_t * iface);
58
59#endif
60