All of lore.kernel.org
 help / color / mirror / Atom feed
* [SEMANAGE] Swig update: typemaps
@ 2005-12-25 20:55 Ivan Gyurdiev
  2006-01-02 19:06 ` Joshua Brindle
  0 siblings, 1 reply; 5+ messages in thread
From: Ivan Gyurdiev @ 2005-12-25 20:55 UTC (permalink / raw)
  To: SELinux List; +Cc: Stephen Smalley, Joshua Brindle

[-- Attachment #1: Type: text/plain, Size: 394 bytes --]

Merry Christmas everyone!

This patch updates the typemaps to add booleans, interfaces, context, 
and char** (for context_to_string). I really don't know what I'm doing 
here with those typemaps, so I would appreciate if someone (Joshua?) can 
look over. I was just following the pattern, with minor changes, and it 
seems to work for a port list function that I wrote for the semanage tool.



[-- Attachment #2: libsemanage10.swig_update_typemaps.diff --]
[-- Type: text/x-patch, Size: 3360 bytes --]

diff -Naurp --exclude-from excludes old/libsemanage/src/semanageswig.i new/libsemanage/src/semanageswig.i
--- old/libsemanage/src/semanageswig.i	2005-12-25 15:50:26.000000000 -0500
+++ new/libsemanage/src/semanageswig.i	2005-12-25 15:48:13.000000000 -0500
@@ -51,7 +51,13 @@
 	}	
 	semanage_port_t *semanage_port_by_idx(semanage_port_t **list, int n) {
 		return list[n];
-	}	
+	}
+	semanage_iface_t *semanage_iface_by_idx(semanage_iface_t **list, int n) {
+		return list[n];
+	}
+	semanage_bool_t *semanage_bool_by_idx(semanage_bool_t **list, int n) {
+		return list[n];
+	}
 	char *char_by_idx(char **list, int n) {
 		return list[n];
 	}
@@ -67,6 +73,14 @@
 %apply int *OUTPUT { int * };
 %apply int *OUTPUT { size_t * };
 
+%typemap(in, numinputs=0) char **(char *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) char** {
+	$result = t_output_helper($result, SWIG_FromCharPtr(*$1));
+}
+
 %typemap(in, numinputs=0) char ***(char **temp) {
 	$1 = &temp;
 }
@@ -87,6 +101,74 @@
 	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_module_info, 0));
 }
 
+/** context typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_context_t ** parameter */
+%typemap(in, numinputs=0) semanage_context_t **(semanage_context_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_context_t** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_context, 0));
+}
+
+/** boolean typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_bool_t *** parameter */
+%typemap(in, numinputs=0) semanage_bool_t ***(semanage_bool_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_bool_t *** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_bool, 0));
+}
+
+%typemap(in, numinputs=0) semanage_bool_t **(semanage_bool_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_bool_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_bool, 0));
+}
+
+%typemap(argout) semanage_bool_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_bool_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_bool_key_t **(semanage_bool_key_t *temp) {
+	$1 = &temp;
+}
+
+/** interface typemaps **/
+
+/* the wrapper will setup this parameter for passing... the resulting python functions
+   will not take the semanage_iface_t *** parameter */
+%typemap(in, numinputs=0) semanage_iface_t ***(semanage_iface_t **temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_iface_t *** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_p_semanage_iface, 0));
+}
+
+%typemap(in, numinputs=0) semanage_iface_t **(semanage_iface_t *temp) {
+	$1 = &temp;
+}
+
+%typemap(argout) semanage_iface_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_iface, 0));
+}
+
+%typemap(argout) semanage_iface_key_t ** {
+	$result = t_output_helper($result, SWIG_NewPointerObj(*$1, SWIGTYPE_p_semanage_iface_key, 0));
+}
+
+%typemap(in, numinputs=0) semanage_iface_key_t **(semanage_iface_key_t *temp) {
+	$1 = &temp;
+}
+
 /** seuser typemaps **/
 
 /* the wrapper will setup this parameter for passing... the resulting python functions

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [SEMANAGE] Swig update: typemaps
  2006-01-02 19:58   ` Joshua Brindle
@ 2006-01-02 18:30     ` Ivan Gyurdiev
  2006-01-02 20:33       ` Joshua Brindle
  0 siblings, 1 reply; 5+ messages in thread
From: Ivan Gyurdiev @ 2006-01-02 18:30 UTC (permalink / raw)
  To: Joshua Brindle; +Cc: SELinux List, Stephen Smalley

>
>>
>>
>> Have to be careful with this one, you don't want it messing with 
>> other char**. Did you run all the tests in pywrap-test after 
>> rebuilding this to make sure it didn't interrupt anything else?
>>
>> The rest look fine.
>>
>
> Speaking of which. Anytime you add anything to the wrapper please add 
> the corresponding tests to pywrap-test. I'd like it if there was 
> always a test for anything in mainline (I think Steve would too)

I have my own set of tests in C that I run (with valgrind). They're 
probably more detailed than what you have, but in terms of code are an 
awful mess, so I can't really submit them to use.

No, I didn't run pywrap-test. Does this work:

Testing users...
Query status (0 is good):  124
User list size:  4
User name:  system_u
   User mls level:  s0
   User mls range:  s0-s0:c0.c255
   User number of roles:  1
   User roles:
       system_r
User name:  user_u
   User mls level:  s0
   User mls range:  s0-s0:c0.c255
   User number of roles:  3
   User roles:
       system_r
       sysadm_r
       user_r
User name:  root
   User mls level:  s0
   User mls range:  s0-s0:c0.c255
   User number of roles:  3
   User roles:
       system_r
       sysadm_r
       user_r
User name:  Ivan
   User mls level:  s0
   User mls range:  s0-s0:c1.c4,c55
   User number of roles:  1
   User roles:
       staff_r

Testing seusers...
Query status (0 is good):  124
SEUser list size:  2
seuser name:  root
   seuser mls range:  s0
   seuser sename:  root
seuser name:  default
   seuser mls range:  s0
   seuser sename:  user_u

Testing modules...
Transaction number:  124
Module list size:  0
No modules installed!
This is not necessarily a test failure.

Testing user write...
Starting transaction...
Commit status (transaction number):  0
Removing user...
Commit status (transaction number):  0

Testing seuser write...
Starting transaction...
Commit status (transaction number):  0
Removing seuser...
Commit status (transaction number):  0


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [SEMANAGE] Swig update: typemaps
  2005-12-25 20:55 [SEMANAGE] Swig update: typemaps Ivan Gyurdiev
@ 2006-01-02 19:06 ` Joshua Brindle
  2006-01-02 19:58   ` Joshua Brindle
  0 siblings, 1 reply; 5+ messages in thread
From: Joshua Brindle @ 2006-01-02 19:06 UTC (permalink / raw)
  To: Ivan Gyurdiev; +Cc: SELinux List, Stephen Smalley

Ivan Gyurdiev wrote:
> Merry Christmas everyone!
> 
> This patch updates the typemaps to add booleans, interfaces, context, 
> and char** (for context_to_string). I really don't know what I'm doing 
> here with those typemaps, so I would appreciate if someone (Joshua?) can 
> look over. I was just following the pattern, with minor changes, and it 
> seems to work for a port list function that I wrote for the semanage tool.
> 
> 
> 
> ------------------------------------------------------------------------
> 
> diff -Naurp --exclude-from excludes old/libsemanage/src/semanageswig.i new/libsemanage/src/semanageswig.i
> --- old/libsemanage/src/semanageswig.i	2005-12-25 15:50:26.000000000 -0500
> +++ new/libsemanage/src/semanageswig.i	2005-12-25 15:48:13.000000000 -0500
> @@ -51,7 +51,13 @@
>  	}	
>  	semanage_port_t *semanage_port_by_idx(semanage_port_t **list, int n) {
>  		return list[n];
> -	}	
> +	}
> +	semanage_iface_t *semanage_iface_by_idx(semanage_iface_t **list, int n) {
> +		return list[n];
> +	}
> +	semanage_bool_t *semanage_bool_by_idx(semanage_bool_t **list, int n) {
> +		return list[n];
> +	}
>  	char *char_by_idx(char **list, int n) {
>  		return list[n];
>  	}
Man.. adding that first semanage_*_by_idx was just a quick hack to get 
something working, we should probably move those into the proper 
libsemanage API instead of just adding them to the wrapper (they are 
clearly useful)

> @@ -67,6 +73,14 @@
>  %apply int *OUTPUT { int * };
>  %apply int *OUTPUT { size_t * };
>  
> +%typemap(in, numinputs=0) char **(char *temp) {
> +	$1 = &temp;
> +}
> +
> +%typemap(argout) char** {
> +	$result = t_output_helper($result, SWIG_FromCharPtr(*$1));
> +}
> +

Have to be careful with this one, you don't want it messing with other 
char**. Did you run all the tests in pywrap-test after rebuilding this 
to make sure it didn't interrupt anything else?

The rest look fine.

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [SEMANAGE] Swig update: typemaps
  2006-01-02 19:06 ` Joshua Brindle
@ 2006-01-02 19:58   ` Joshua Brindle
  2006-01-02 18:30     ` Ivan Gyurdiev
  0 siblings, 1 reply; 5+ messages in thread
From: Joshua Brindle @ 2006-01-02 19:58 UTC (permalink / raw)
  To: Ivan Gyurdiev; +Cc: SELinux List, Stephen Smalley

Joshua Brindle wrote:
> Ivan Gyurdiev wrote:
> 
<snip>
>> @@ -67,6 +73,14 @@
>>  %apply int *OUTPUT { int * };
>>  %apply int *OUTPUT { size_t * };
>>  
>> +%typemap(in, numinputs=0) char **(char *temp) {
>> +    $1 = &temp;
>> +}
>> +
>> +%typemap(argout) char** {
>> +    $result = t_output_helper($result, SWIG_FromCharPtr(*$1));
>> +}
>> +
> 
> 
> Have to be careful with this one, you don't want it messing with other 
> char**. Did you run all the tests in pywrap-test after rebuilding this 
> to make sure it didn't interrupt anything else?
> 
> The rest look fine.
> 

Speaking of which. Anytime you add anything to the wrapper please add 
the corresponding tests to pywrap-test. I'd like it if there was always 
a test for anything in mainline (I think Steve would too)



--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [SEMANAGE] Swig update: typemaps
  2006-01-02 18:30     ` Ivan Gyurdiev
@ 2006-01-02 20:33       ` Joshua Brindle
  0 siblings, 0 replies; 5+ messages in thread
From: Joshua Brindle @ 2006-01-02 20:33 UTC (permalink / raw)
  To: Ivan Gyurdiev; +Cc: SELinux List, Stephen Smalley

Ivan Gyurdiev wrote:
>>
>>>
>>>
>>> Have to be careful with this one, you don't want it messing with 
>>> other char**. Did you run all the tests in pywrap-test after 
>>> rebuilding this to make sure it didn't interrupt anything else?
>>>
>>> The rest look fine.
>>>
>>
>> Speaking of which. Anytime you add anything to the wrapper please add 
>> the corresponding tests to pywrap-test. I'd like it if there was 
>> always a test for anything in mainline (I think Steve would too)
> 
> 
> I have my own set of tests in C that I run (with valgrind). They're 
> probably more detailed than what you have, but in terms of code are an 
> awful mess, so I can't really submit them to use.
> 

That is fine but there should be tests for the wrappers upstream. I 
consider this a requirement for adding wrappers.

--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2006-01-02 20:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-25 20:55 [SEMANAGE] Swig update: typemaps Ivan Gyurdiev
2006-01-02 19:06 ` Joshua Brindle
2006-01-02 19:58   ` Joshua Brindle
2006-01-02 18:30     ` Ivan Gyurdiev
2006-01-02 20:33       ` Joshua Brindle

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.