1/* Authors: Dan Walsh
2 *          James Athey
3 */
4
5%module selinux
6%{
7	#include "../include/selinux/avc.h"
8	#include "../include/selinux/context.h"
9	#include "../include/selinux/get_context_list.h"
10	#include "../include/selinux/get_default_type.h"
11	#include "../include/selinux/label.h"
12	#include "../include/selinux/selinux.h"
13%}
14%apply int *OUTPUT { int *enforce };
15%apply int *OUTPUT { size_t * };
16
17%typedef unsigned mode_t;
18%typedef unsigned pid_t;
19
20%typemap(in, numinputs=0) (char ***names, int *len) (char **temp1, int temp2) {
21	$1 = &temp1;
22	$2 = &temp2;
23}
24
25%typemap(freearg) (char ***names, int *len) {
26	int i;
27	if (*$1) {
28		for (i = 0; i < *$2; i++) {
29			free((*$1)[i]);
30		}
31		free(*$1);
32	}
33}
34
35%typemap(in, numinputs=0) (char ***) (char **temp) {
36	$1 = &temp;
37}
38
39%typemap(freearg) (char ***) {
40	if (*$1) freeconary(*$1);
41}
42
43/* Ignore functions that don't make sense when wrapped */
44%ignore freecon;
45%ignore freeconary;
46
47/* Ignore functions that take a function pointer as an argument */
48%ignore set_matchpathcon_printf;
49%ignore set_matchpathcon_invalidcon;
50%ignore set_matchpathcon_canoncon;
51
52%ignore avc_add_callback;
53
54/* Ignore netlink stuff for now */
55%ignore avc_netlink_acquire_fd;
56%ignore avc_netlink_release_fd;
57%ignore avc_netlink_check_nb;
58
59%include "../include/selinux/avc.h"
60%include "../include/selinux/av_permissions.h"
61%include "../include/selinux/context.h"
62%include "../include/selinux/flask.h"
63%include "../include/selinux/get_context_list.h"
64%include "../include/selinux/get_default_type.h"
65%include "../include/selinux/label.h"
66%include "../include/selinux/selinux.h"
67