1*2d543d20SAndroid Build Coastguard Worker /* Author Dave Quigley 2*2d543d20SAndroid Build Coastguard Worker * based on semanageswig_python.i by Spencer Shimko 3*2d543d20SAndroid Build Coastguard Worker */ 4*2d543d20SAndroid Build Coastguard Worker 5*2d543d20SAndroid Build Coastguard Worker %header %{ 6*2d543d20SAndroid Build Coastguard Worker #include <stdlib.h> 7*2d543d20SAndroid Build Coastguard Worker #include <semanage/semanage.h> 8*2d543d20SAndroid Build Coastguard Worker 9*2d543d20SAndroid Build Coastguard Worker #define STATUS_SUCCESS 0 10*2d543d20SAndroid Build Coastguard Worker #define STATUS_ERR -1 11*2d543d20SAndroid Build Coastguard Worker %} 12*2d543d20SAndroid Build Coastguard Worker /* a few helpful typemaps are available in this library */ 13*2d543d20SAndroid Build Coastguard Worker %include <typemaps.i> 14*2d543d20SAndroid Build Coastguard Worker 15*2d543d20SAndroid Build Coastguard Worker /* wrap all int*'s so they can be used for results 16*2d543d20SAndroid Build Coastguard Worker if it becomes necessary to send in data this should be changed to INOUT */ 17*2d543d20SAndroid Build Coastguard Worker %apply int *OUTPUT { int * }; 18*2d543d20SAndroid Build Coastguard Worker %apply int *OUTPUT { size_t * }; 19*2d543d20SAndroid Build Coastguard Worker %apply int *OUTPUT { unsigned int * }; 20*2d543d20SAndroid Build Coastguard Worker 21*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) char **(char *temp=NULL) { 22*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 23*2d543d20SAndroid Build Coastguard Worker } 24*2d543d20SAndroid Build Coastguard Worker 25*2d543d20SAndroid Build Coastguard Worker %typemap(argout) char** { 26*2d543d20SAndroid Build Coastguard Worker %append_output(SWIG_FromCharPtr(*$1)); 27*2d543d20SAndroid Build Coastguard Worker free(*$1); 28*2d543d20SAndroid Build Coastguard Worker } 29*2d543d20SAndroid Build Coastguard Worker 30*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) char ***(char **temp=NULL) { 31*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 32*2d543d20SAndroid Build Coastguard Worker } 33*2d543d20SAndroid Build Coastguard Worker 34*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting ruby functions 35*2d543d20SAndroid Build Coastguard Worker will not take the semanage_module_info_t ** parameter */ 36*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_module_info_t **(semanage_module_info_t *temp=NULL) { 37*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 38*2d543d20SAndroid Build Coastguard Worker } 39*2d543d20SAndroid Build Coastguard Worker 40*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_module_info_t ** { 41*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 42*2d543d20SAndroid Build Coastguard Worker } 43*2d543d20SAndroid Build Coastguard Worker 44*2d543d20SAndroid Build Coastguard Worker /** context typemaps **/ 45*2d543d20SAndroid Build Coastguard Worker 46*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 47*2d543d20SAndroid Build Coastguard Worker will not take the semanage_context_t ** parameter */ 48*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_context_t **(semanage_context_t *temp=NULL) { 49*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 50*2d543d20SAndroid Build Coastguard Worker } 51*2d543d20SAndroid Build Coastguard Worker 52*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_context_t** { 53*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 54*2d543d20SAndroid Build Coastguard Worker } 55*2d543d20SAndroid Build Coastguard Worker 56*2d543d20SAndroid Build Coastguard Worker /** boolean typemaps **/ 57*2d543d20SAndroid Build Coastguard Worker 58*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 59*2d543d20SAndroid Build Coastguard Worker will not take the semanage_bool_t *** parameter */ 60*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_bool_t ***(semanage_bool_t **temp=NULL) { 61*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 62*2d543d20SAndroid Build Coastguard Worker } 63*2d543d20SAndroid Build Coastguard Worker 64*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp=NULL) { 65*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 66*2d543d20SAndroid Build Coastguard Worker } 67*2d543d20SAndroid Build Coastguard Worker 68*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_bool_t ** { 69*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 70*2d543d20SAndroid Build Coastguard Worker } 71*2d543d20SAndroid Build Coastguard Worker 72*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_bool_key_t ** { 73*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 74*2d543d20SAndroid Build Coastguard Worker } 75*2d543d20SAndroid Build Coastguard Worker 76*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_bool_key_t **(semanage_bool_key_t *temp=NULL) { 77*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 78*2d543d20SAndroid Build Coastguard Worker } 79*2d543d20SAndroid Build Coastguard Worker 80*2d543d20SAndroid Build Coastguard Worker /** fcontext typemaps **/ 81*2d543d20SAndroid Build Coastguard Worker 82*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 83*2d543d20SAndroid Build Coastguard Worker will not take the semanage_fcontext_t *** parameter */ 84*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_fcontext_t ***(semanage_fcontext_t **temp=NULL) { 85*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 86*2d543d20SAndroid Build Coastguard Worker } 87*2d543d20SAndroid Build Coastguard Worker 88*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_fcontext_t **(semanage_fcontext_t *temp=NULL) { 89*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 90*2d543d20SAndroid Build Coastguard Worker } 91*2d543d20SAndroid Build Coastguard Worker 92*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_fcontext_t ** { 93*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 94*2d543d20SAndroid Build Coastguard Worker } 95*2d543d20SAndroid Build Coastguard Worker 96*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_fcontext_key_t ** { 97*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 98*2d543d20SAndroid Build Coastguard Worker } 99*2d543d20SAndroid Build Coastguard Worker 100*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_fcontext_key_t **(semanage_fcontext_key_t *temp=NULL) { 101*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 102*2d543d20SAndroid Build Coastguard Worker } 103*2d543d20SAndroid Build Coastguard Worker 104*2d543d20SAndroid Build Coastguard Worker /** interface typemaps **/ 105*2d543d20SAndroid Build Coastguard Worker 106*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 107*2d543d20SAndroid Build Coastguard Worker will not take the semanage_iface_t *** parameter */ 108*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_iface_t ***(semanage_iface_t **temp=NULL) { 109*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 110*2d543d20SAndroid Build Coastguard Worker } 111*2d543d20SAndroid Build Coastguard Worker 112*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp=NULL) { 113*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 114*2d543d20SAndroid Build Coastguard Worker } 115*2d543d20SAndroid Build Coastguard Worker 116*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_iface_t ** { 117*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 118*2d543d20SAndroid Build Coastguard Worker } 119*2d543d20SAndroid Build Coastguard Worker 120*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_iface_key_t ** { 121*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 122*2d543d20SAndroid Build Coastguard Worker } 123*2d543d20SAndroid Build Coastguard Worker 124*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_iface_key_t **(semanage_iface_key_t *temp=NULL) { 125*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 126*2d543d20SAndroid Build Coastguard Worker } 127*2d543d20SAndroid Build Coastguard Worker 128*2d543d20SAndroid Build Coastguard Worker /** seuser typemaps **/ 129*2d543d20SAndroid Build Coastguard Worker 130*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 131*2d543d20SAndroid Build Coastguard Worker will not take the semanage_seuser_t *** parameter */ 132*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_seuser_t ***(semanage_seuser_t **temp=NULL) { 133*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 134*2d543d20SAndroid Build Coastguard Worker } 135*2d543d20SAndroid Build Coastguard Worker 136*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_seuser_t **(semanage_seuser_t *temp=NULL) { 137*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 138*2d543d20SAndroid Build Coastguard Worker } 139*2d543d20SAndroid Build Coastguard Worker 140*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_seuser_t ** { 141*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 142*2d543d20SAndroid Build Coastguard Worker } 143*2d543d20SAndroid Build Coastguard Worker 144*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_seuser_key_t ** { 145*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 146*2d543d20SAndroid Build Coastguard Worker } 147*2d543d20SAndroid Build Coastguard Worker 148*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_seuser_key_t **(semanage_seuser_key_t *temp=NULL) { 149*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 150*2d543d20SAndroid Build Coastguard Worker } 151*2d543d20SAndroid Build Coastguard Worker 152*2d543d20SAndroid Build Coastguard Worker /** user typemaps **/ 153*2d543d20SAndroid Build Coastguard Worker 154*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 155*2d543d20SAndroid Build Coastguard Worker will not take the semanage_user_t *** parameter */ 156*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_user_t ***(semanage_user_t **temp=NULL) { 157*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 158*2d543d20SAndroid Build Coastguard Worker } 159*2d543d20SAndroid Build Coastguard Worker 160*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_user_t **(semanage_user_t *temp=NULL) { 161*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 162*2d543d20SAndroid Build Coastguard Worker } 163*2d543d20SAndroid Build Coastguard Worker 164*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_user_t ** { 165*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 166*2d543d20SAndroid Build Coastguard Worker } 167*2d543d20SAndroid Build Coastguard Worker 168*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_user_key_t ** { 169*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 170*2d543d20SAndroid Build Coastguard Worker } 171*2d543d20SAndroid Build Coastguard Worker 172*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_user_key_t **(semanage_user_key_t *temp=NULL) { 173*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 174*2d543d20SAndroid Build Coastguard Worker } 175*2d543d20SAndroid Build Coastguard Worker 176*2d543d20SAndroid Build Coastguard Worker /** port typemaps **/ 177*2d543d20SAndroid Build Coastguard Worker 178*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 179*2d543d20SAndroid Build Coastguard Worker will not take the semanage_port_t *** parameter */ 180*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_port_t ***(semanage_port_t **temp=NULL) { 181*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 182*2d543d20SAndroid Build Coastguard Worker } 183*2d543d20SAndroid Build Coastguard Worker 184*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_port_t **(semanage_port_t *temp=NULL) { 185*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 186*2d543d20SAndroid Build Coastguard Worker } 187*2d543d20SAndroid Build Coastguard Worker 188*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_port_t ** { 189*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 190*2d543d20SAndroid Build Coastguard Worker } 191*2d543d20SAndroid Build Coastguard Worker 192*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_port_key_t ** { 193*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 194*2d543d20SAndroid Build Coastguard Worker } 195*2d543d20SAndroid Build Coastguard Worker 196*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_port_key_t **(semanage_port_key_t *temp=NULL) { 197*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 198*2d543d20SAndroid Build Coastguard Worker } 199*2d543d20SAndroid Build Coastguard Worker 200*2d543d20SAndroid Build Coastguard Worker /** node typemaps **/ 201*2d543d20SAndroid Build Coastguard Worker 202*2d543d20SAndroid Build Coastguard Worker /* the wrapper will setup this parameter for passing... the resulting python functions 203*2d543d20SAndroid Build Coastguard Worker will not take the semanage_node_t *** parameter */ 204*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_node_t ***(semanage_node_t **temp=NULL) { 205*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 206*2d543d20SAndroid Build Coastguard Worker } 207*2d543d20SAndroid Build Coastguard Worker 208*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_node_t **(semanage_node_t *temp=NULL) { 209*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 210*2d543d20SAndroid Build Coastguard Worker } 211*2d543d20SAndroid Build Coastguard Worker 212*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_node_t ** { 213*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 214*2d543d20SAndroid Build Coastguard Worker } 215*2d543d20SAndroid Build Coastguard Worker 216*2d543d20SAndroid Build Coastguard Worker 217*2d543d20SAndroid Build Coastguard Worker %typemap(argout) semanage_node_key_t ** { 218*2d543d20SAndroid Build Coastguard Worker $result = SWIG_AppendOutput($result, SWIG_NewPointerObj(*$1, $*1_descriptor, 0)); 219*2d543d20SAndroid Build Coastguard Worker } 220*2d543d20SAndroid Build Coastguard Worker 221*2d543d20SAndroid Build Coastguard Worker %typemap(in, numinputs=0) semanage_node_key_t **(semanage_node_key_t *temp=NULL) { 222*2d543d20SAndroid Build Coastguard Worker $1 = &temp; 223*2d543d20SAndroid Build Coastguard Worker } 224*2d543d20SAndroid Build Coastguard Worker 225*2d543d20SAndroid Build Coastguard Worker %include "semanageswig.i" 226