Initial import
[py-rsbac] / rsbac / lib.py
1 # -*- coding:utf-8 -*-
2
3 # py-rsbac - RSBAC Python bindings
4 # Copyright (C) 2006  Frederic Jolliton <pyrsbac@tuxee.net>
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20 # declareFast allows to skip declarations of arguments or result
21 # types. However, the program expect no error checking defined here.
22 g_withArgTypes       = False
23 g_withResType        = False
24 g_withErrorChecking  = False
25
26 # For debugging purpose. Note that ctypes doesn't check if extra
27 # arguments are passed when calling a function. Thus, we need
28 # argumentChecker wrapper around C functions to ensure we don't pass
29 # more arguments than expected.
30 g_checkArgumentCount = True
31
32 # For debugging purpose. When a function is called, print its name and
33 # all its arguments. Be careful, because it can coredump when printing
34 # non initialized strings.
35 g_debug = False
36
37 import sys
38
39 from ctypes import *
40 from rsbac.headers import *
41
42 g_rsbac = CDLL( 'librsbac.so' )
43 # slower, but perhaps more correct:
44 #from ctypes.util import find_library
45 #g_rsbac = CDLL( find_library( 'rsbac' ) )
46
47 def debugVar( var ) :
48     if isinstance( var , ( Structure , Union ) ) :
49         return '%s(%s)' \
50             % ( var.__class__.__name__ ,
51                 ', '.join( [ '%s=%s' % ( name , debugVar( getattr( var , name ) ) )
52                              for name,desc in var._fields_ ] ) )
53     elif "'CArgObject'" in str( type( var ) ) : # ICK! FIXME
54         return '&' + debugVar( var._obj )
55     else :
56         return repr( var )
57
58 def debugCall( f ) :
59     def fun( *args ) :
60         print '[**] %s(%s) =>' % ( f.__name__ , ', '.join( map( debugVar , args ) ) ) ,
61         sys.stdout.flush()
62         r = f( *args )
63         print debugVar( r )
64         return r
65     fun.__name__ = '[dbg]' + f.__name__
66     return fun
67
68 def argumentChecker( f , count ) :
69     """Wrapper to check argument count.
70
71     This wrapper checks that the function 'f' is called with exactly
72     'count' arguments.
73
74     f -- function (or any callable)
75     count -- argument count as integer
76
77     Returns the wrapped function.
78
79     """
80     def fun( *args ) :
81         if len( args ) != count :
82             raise TypeError , \
83                 '%s() takes exactly %d argument%s (%d given)' \
84                 % ( f.__name__ , count , ( '' , 's' )[ count != 1 ] , len( args ) )
85         return f( *args )
86     fun.__name__ = '[wrapped]' + f.__name__
87     fun.__doc__ = f.__doc__
88     return fun
89
90 def declareFast( name , res , args = None , errcheck = None ) :
91     if args is None :
92         args = []
93     fun = getattr( g_rsbac , name )
94     if g_withResType :
95         setattr( fun , 'restype' , res )
96     if g_withArgTypes :        
97         setattr( fun , 'argtypes' , args )
98     if g_withErrorChecking and errcheck is not None :
99         setattr( fun , 'errcheck' , errcheck )
100     if g_debug :
101         fun = debugCall( fun )
102     if g_checkArgumentCount and g_withArgTypes :
103         fun = argumentChecker( fun , len( args ) )
104     thisModule = sys.modules[ __name__ ]
105     setattr( thisModule , name , fun )
106
107 def declare( name , res , args = None , errcheck = None ) :
108     if args is None :
109         args = []
110     try :
111         fun = getattr( g_rsbac , name )
112     except AttributeError :
113         # If the function doesn't exist, just store None. It's up to
114         # the user to check for None if he want to know if the
115         # function exist or not before calling it.
116         fun = None
117     else :
118         fun.restype = res
119         fun.argtypes = args
120         if errcheck is not None :
121             fun.errcheck = errcheck
122     if g_debug :
123         fun = debugCall( fun )
124     if g_checkArgumentCount and fun is not None :
125         fun = argumentChecker( fun , len( args ) )
126     thisModule = sys.modules[ __name__ ]
127     setattr( thisModule , name , fun )
128
129 # getname.c
130
131 declare( 'get_request_name' ,
132          c_char_p ,
133          [ c_char_p ,
134            rsbac_adf_request_t ] )
135
136 declare( 'get_request_nr' ,
137          rsbac_adf_request_t ,
138          [ c_char_p ] )
139
140 declare( 'get_result_name' ,
141          c_char_p ,
142          [ c_char_p ,
143            rsbac_adf_req_ret_t ] )
144
145 declare( 'get_result_nr' ,
146          rsbac_adf_req_ret_t ,
147          [ c_char_p ] )
148
149 declare( 'get_attr_module' ,
150          rsbac_switch_target_t ,
151          [ rsbac_attribute_t ] )
152
153 declare( 'get_attribute_name' ,
154          c_char_p ,
155          [ c_char_p ,
156            rsbac_attribute_t ] )
157
158 declare( 'get_attribute_nr' ,
159          rsbac_attribute_t ,
160          [ c_char_p ] )
161
162 declare( 'get_attribute_value_name' ,
163          c_char_p ,
164          [ c_char_p ,
165            rsbac_attribute_t ,
166            POINTER( rsbac_attribute_value_t ) ] )
167
168 declare( 'get_scd_type_name' ,
169          c_char_p ,
170          [ c_char_p ,
171            rsbac_scd_type_t ] )
172
173 declare( 'get_scd_type_nr' ,
174          rsbac_scd_type_t ,
175          [ c_char_p ] )
176
177 declare( 'get_target_name' ,
178          c_char_p ,
179          [ c_char_p ,
180            rsbac_target_t ,
181            c_char_p ,
182            rsbac_target_id_t ] )
183
184 declare( 'get_target_name_only' ,
185          c_char_p ,
186          [ c_char_p ,
187            rsbac_target_t ] )
188
189 declare( 'get_target_nr' ,
190          rsbac_target_t ,
191          [ c_char_p ] )
192
193 declare( 'get_ipc_target_name' ,
194          c_char_p ,
195          [ c_char_p ,
196            rsbac_ipc_type_t ] )
197
198 declare( 'get_ipc_target_nr' ,
199          rsbac_ipc_type_t ,
200          [ c_char_p ] )
201
202 declare( 'get_switch_target_name' ,
203          c_char_p ,
204          [ c_char_p ,
205            rsbac_switch_target_t ] )
206
207 declare( 'get_switch_target_nr' ,
208          rsbac_switch_target_t ,
209          [ c_char_p ] )
210
211 declare( 'get_error_name' ,
212          c_char_p ,
213          [ c_char_p , c_int ] )
214
215 declare( 'get_attribute_param' ,
216          c_char_p ,
217          [ c_char_p ,
218            rsbac_attribute_t ] )
219
220 declare( 'get_log_level_name' ,
221          c_char_p ,
222          [ c_char_p ,
223            rsbac_log_level_t ] )
224
225 declare( 'get_log_level_nr' ,
226          rsbac_log_level_t ,
227          [ c_char_p ] )
228
229 declare( 'get_cap_name' ,
230          c_char_p ,
231          [ c_char_p , c_uint ] )
232
233 declare( 'get_cap_nr' ,
234          c_int ,
235          [ c_char_p ] )
236
237 # rc_getname.c
238
239 declare( 'get_rc_target_name' ,
240          c_char_p ,
241          [ c_char_p ,
242            rsbac_rc_target_t ] )
243
244 declare( 'get_rc_target_nr' ,
245          rsbac_rc_target_t ,
246          [ c_char_p ] )
247
248 declare( 'get_rc_admin_name' ,
249          c_char_p ,
250          [ c_char_p ,
251            rsbac_rc_admin_type_t ] )
252
253 declare( 'get_rc_admin_nr' ,
254          rsbac_rc_admin_type_t ,
255          [ c_char_p ] )
256
257 declare( 'get_rc_scd_type_name' ,
258          c_char_p ,
259          [ c_char_p ,
260            rsbac_rc_scd_type_t ] )
261
262 declare( 'get_rc_scd_type_nr' ,
263          rsbac_rc_scd_type_t ,
264          [ c_char_p ] )
265
266 declare( 'get_rc_item_name' ,
267          c_char_p ,
268          [ c_char_p ,
269            rsbac_rc_item_t ] )
270
271 declare( 'get_rc_item_nr' ,
272          rsbac_rc_item_t ,
273          [ c_char_p ] )
274
275 declare( 'get_rc_item_param' ,
276          c_char_p ,
277          [ c_char_p ,
278            rsbac_rc_item_t ] )
279
280 declare( 'get_rc_special_right_name' ,
281          c_char_p ,
282          [ c_char_p ,
283            rsbac_rc_special_rights_t ] )
284
285 declare( 'get_rc_special_right_nr' ,
286          rsbac_rc_special_rights_t ,
287          [ c_char_p ] )
288
289 # res_getname.c
290
291 declare( 'get_res_name' ,
292          c_char_p ,
293          [ c_char_p , c_uint ] )
294
295 declare( 'get_res_nr' ,
296          c_int ,
297          [ c_char_p ] )
298
299 # syscall_wrapper.c
300
301 declare( 'rsbac_version' , c_int )
302
303 declare( 'rsbac_stats' , c_int )
304
305 declare( 'rsbac_check' , c_int , [ c_int , c_int ] )
306
307 declare( 'rsbac_write' , c_int )
308
309 declareFast( 'rsbac_get_attr_n' ,
310              c_int ,
311              [ rsbac_list_ta_number_t ,
312                rsbac_switch_target_t ,
313                rsbac_target_t ,
314                c_char_p ,
315                rsbac_attribute_t ,
316                POINTER( rsbac_attribute_value_t ) ,
317                c_int ] )
318
319 declareFast( 'rsbac_get_attr' , 
320              c_int ,
321              [ rsbac_list_ta_number_t ,
322                rsbac_switch_target_t ,
323                rsbac_target_t ,
324                POINTER( rsbac_target_id_t ) ,
325                rsbac_attribute_t ,
326                POINTER( rsbac_attribute_value_t ) ,
327                c_int ] )
328
329 declareFast( 'rsbac_set_attr_n' ,
330              c_int ,
331              [ rsbac_list_ta_number_t ,
332                rsbac_switch_target_t ,
333                rsbac_target_t ,
334                c_char_p ,
335                rsbac_attribute_t ,
336                POINTER( rsbac_attribute_value_t ) ,
337                c_int ] )
338
339 declareFast( 'rsbac_set_attr' ,
340              c_int ,
341              [ rsbac_list_ta_number_t ,
342                rsbac_switch_target_t ,
343                rsbac_target_t ,
344                POINTER( rsbac_target_id_t ) ,
345                rsbac_attribute_t ,
346                POINTER( rsbac_attribute_value_t ) ,
347                c_int ] )
348
349 declareFast( 'rsbac_remove_target' ,
350              c_int ,
351              [ rsbac_list_ta_number_t ,
352                rsbac_target_t ,
353                POINTER( rsbac_target_id_t ) ] )
354
355 declareFast( 'rsbac_remove_target_n' ,
356              c_int ,
357              [ rsbac_list_ta_number_t ,
358                rsbac_target_t ,
359                c_char_p ] )
360
361 declare( 'rsbac_net_list_all_netdev' ,
362          c_int ,
363          [ rsbac_list_ta_number_t ,
364            POINTER( rsbac_netdev_id_t ) ,
365            c_ulong ] )
366
367 declare( 'rsbac_net_template' ,
368          c_int ,
369          [ rsbac_list_ta_number_t ,
370            rsbac_net_temp_syscall_t ,
371            rsbac_net_temp_id_t ,
372            POINTER( rsbac_net_temp_syscall_data_t ) ] )
373
374 declare( 'rsbac_net_list_all_template' ,
375          c_int ,
376          [ rsbac_list_ta_number_t ,
377            POINTER( rsbac_net_temp_id_t ) ,
378            c_ulong ] )
379
380 declare( 'rsbac_switch' ,
381          c_int ,
382          [ rsbac_switch_target_t , c_int ] )
383
384 declare( 'rsbac_get_switch' ,
385          c_int ,
386          [ rsbac_switch_target_t ,
387            POINTER( c_int ) ,
388            POINTER( c_int ) ] )
389
390 # MAC
391
392 # PM
393
394 # DAZ
395
396 declare( 'rsbac_daz_flush_cache' , c_int )
397
398 # RC
399
400 declare( 'rsbac_rc_copy_role' ,
401          c_int ,
402          [ rsbac_list_ta_number_t ,
403            rsbac_rc_role_id_t ,
404            rsbac_rc_role_id_t ] )
405
406 declare( 'rsbac_rc_copy_type' ,
407          c_int ,
408          [ rsbac_list_ta_number_t ,
409            rsbac_target_t ,
410            rsbac_rc_type_id_t ,
411            rsbac_rc_type_id_t ] )
412
413 declare( 'rsbac_rc_get_item' ,
414          c_int ,
415          [ rsbac_list_ta_number_t ,
416            rsbac_rc_target_t ,
417            POINTER( rsbac_rc_target_id_t ) ,
418            POINTER( rsbac_rc_target_id_t ) ,
419            rsbac_rc_item_t ,
420            POINTER( rsbac_rc_item_value_t ) ,
421            POINTER( rsbac_time_t ) ] )
422
423 declare( 'rsbac_rc_set_item' ,
424          c_int ,
425          [ rsbac_list_ta_number_t ,
426            rsbac_rc_target_t ,
427            POINTER( rsbac_rc_target_id_t ) ,
428            POINTER( rsbac_rc_target_id_t ) ,
429            rsbac_rc_item_t ,
430            POINTER( rsbac_rc_item_value_t ) ,
431            rsbac_time_t ] )
432
433 declare( 'rsbac_rc_get_list' ,
434          c_int ,
435          [ rsbac_list_ta_number_t ,
436            rsbac_rc_target_t ,
437            POINTER( rsbac_rc_target_id_t ) ,
438            rsbac_rc_item_t ,
439            c_uint ,
440            POINTER( c_uint32 ) ,
441            POINTER( rsbac_time_t ) ] )
442
443 declare( 'rsbac_rc_change_role' ,
444          c_int ,
445          [ rsbac_rc_role_id_t ,
446            c_char_p ] )
447
448 declare( 'rsbac_rc_get_eff_rights_n' ,
449          c_int ,
450          [ rsbac_list_ta_number_t ,
451            rsbac_target_t ,
452            c_char_p ,
453            POINTER( rsbac_rc_request_vector_t ) ,
454            POINTER( rsbac_time_t ) ] )
455
456 declare( 'rsbac_rc_get_current_role' ,
457          c_int ,
458          [ POINTER( rsbac_rc_role_id_t ) ] )
459
460 declare( 'rsbac_rc_select_fd_create_type' ,
461          c_int ,
462          [ rsbac_rc_type_id_t ] )
463
464 # AUTH
465
466 declare( 'rsbac_auth_add_p_cap' ,
467          c_int ,
468          [ rsbac_list_ta_number_t ,
469            rsbac_pid_t ,
470            rsbac_auth_cap_type_t ,
471            rsbac_auth_cap_range_t ,
472            rsbac_time_t ] )
473
474 declare( 'rsbac_auth_remove_p_cap' ,
475          c_int ,
476          [ rsbac_list_ta_number_t ,
477            rsbac_pid_t ,
478            rsbac_auth_cap_type_t ,
479            rsbac_auth_cap_range_t ] )
480
481 declare( 'rsbac_auth_add_f_cap' ,
482          c_int ,
483          [ rsbac_list_ta_number_t ,
484            c_char_p ,
485            rsbac_auth_cap_type_t ,
486            rsbac_auth_cap_range_t ,
487            rsbac_time_t ] )
488
489 declare( 'rsbac_auth_remove_f_cap' ,
490          c_int ,
491          [ rsbac_list_ta_number_t ,
492            c_char_p ,
493            rsbac_auth_cap_type_t ,
494            rsbac_auth_cap_range_t ] )
495
496 declare( 'rsbac_auth_get_f_caplist' ,
497          c_int ,
498          [ rsbac_list_ta_number_t ,
499            c_char_p ,
500            rsbac_auth_cap_type_t ,
501            POINTER( rsbac_auth_cap_range_t ) ,
502            POINTER( rsbac_time_t ) ,
503            c_uint ] )
504
505 declare( 'rsbac_auth_get_p_caplist' ,
506          c_int ,
507          [ rsbac_list_ta_number_t ,
508            rsbac_pid_t ,
509            rsbac_auth_cap_type_t ,
510            POINTER( rsbac_auth_cap_range_t ) ,
511            POINTER( rsbac_time_t ) ,
512            c_uint ] )
513
514 # REG
515
516 declare( 'rsbac_reg' ,
517          c_int ,
518          [ rsbac_reg_handle_t , c_void_p ] )
519
520 # ACL
521
522 declare( 'rsbac_acl' ,
523          c_int ,
524          [ rsbac_list_ta_number_t ,
525            rsbac_acl_syscall_type_t ,
526            POINTER( rsbac_acl_syscall_arg_t ) ] )
527
528 declare( 'rsbac_acl_n' ,
529          c_int ,
530          [ rsbac_list_ta_number_t ,
531            rsbac_acl_syscall_type_t ,
532            POINTER( rsbac_acl_syscall_n_arg_t ) ] )
533
534 declare( 'rsbac_acl_get_rights' ,
535          c_int ,
536          [ rsbac_list_ta_number_t ,
537            POINTER( rsbac_acl_syscall_arg_t ) ,
538            POINTER( rsbac_acl_rights_vector_t ) ,
539            c_uint ] )
540
541 declare( 'rsbac_acl_get_rights_n' ,
542          c_int ,
543          [ rsbac_list_ta_number_t ,
544            POINTER( rsbac_acl_syscall_n_arg_t ) ,
545            POINTER( rsbac_acl_rights_vector_t ) ,
546            c_uint ] )
547
548 declare( 'rsbac_acl_get_tlist' ,
549          c_int ,
550          [ rsbac_list_ta_number_t ,
551            rsbac_target_t ,
552            POINTER( rsbac_target_id_t ) ,
553            POINTER( rsbac_acl_entry_t ) ,
554            POINTER( rsbac_time_t ) ,
555            c_int ] )
556
557 declare( 'rsbac_acl_get_tlist_n' ,
558          c_int ,
559          [ rsbac_list_ta_number_t ,
560            rsbac_target_t ,
561            c_char_p ,
562            POINTER( rsbac_acl_entry_t ) ,
563            POINTER( rsbac_time_t ) ,
564            c_int ] )
565
566 declare( 'rsbac_acl_get_mask' ,
567          c_int ,
568          [ rsbac_ta_number_t ,
569            rsbac_target_t ,
570            POINTER( rsbac_target_id_t ) ,
571            POINTER( rsbac_acl_rights_vector_t ) ] )
572
573 declare( 'rsbac_acl_get_mask_n' ,
574          c_int ,
575          [ rsbac_ta_number_t ,
576            rsbac_target_t ,
577            c_char_p ,
578            POINTER( rsbac_acl_rights_vector_t ) ] )
579
580 declare( 'rsbac_acl_group' ,
581          c_int ,
582          [ rsbac_ta_number_t ,
583            rsbac_acl_group_syscall_type_t ,
584            POINTER( rsbac_acl_group_syscall_arg_t ) ] )
585
586 # JAIL
587
588 declare( 'rsbac_jail' ,
589          c_int ,
590          [ rsbac_version_t ,
591            c_char_p ,
592            rsbac_jail_ip_t ,
593            rsbac_jail_flags_t ,
594            rsbac_cap_vector_t ,
595            rsbac_jail_scd_vector_t ,
596            rsbac_jail_scd_vector_t ] )
597
598 # UM
599
600 declare( 'rsbac_um_auth_name' ,
601          c_int ,
602          [ c_char_p , c_char_p ] )
603
604 declare( 'rsbac_um_auth_uid' ,
605          c_int ,
606          [ rsbac_uid_t , c_char_p ] )
607
608 declare( 'rsbac_um_add_user' ,
609          c_int ,
610          [ rsbac_list_ta_number_t ,
611            rsbac_uid_t ,
612            POINTER( rsbac_um_user_entry_t ) ,
613            c_char_p ,
614            rsbac_time_t ] )
615
616 declare( 'rsbac_um_add_group' ,
617          c_int ,
618          [ rsbac_list_ta_number_t ,
619            rsbac_gid_t ,
620            POINTER( rsbac_um_group_entry_t ) ,
621            c_char_p ,
622            rsbac_time_t ] )
623
624 declare( 'rsbac_um_add_gm' ,
625          c_int ,
626          [ rsbac_list_ta_number_t ,
627            rsbac_uid_t ,
628            rsbac_gid_t ,
629            rsbac_time_t ] )
630
631 declare( 'rsbac_um_mod_user' ,
632          c_int ,
633          [ rsbac_list_ta_number_t ,
634            rsbac_uid_t ,
635            rsbac_um_mod_t ,
636            POINTER( rsbac_um_mod_data_t ) ] )
637
638 declare( 'rsbac_um_mod_group' ,
639          c_int ,
640          [ rsbac_list_ta_number_t ,
641            rsbac_gid_t ,
642            rsbac_um_mod_t ,
643            POINTER( rsbac_um_mod_data_t ) ] )
644
645 declare( 'rsbac_um_get_user_item' ,
646          c_int ,
647          [ rsbac_list_ta_number_t ,
648            rsbac_uid_t ,
649            rsbac_um_mod_t ,
650            POINTER( rsbac_um_mod_data_t ) ] )
651
652 declare( 'rsbac_um_get_group_item' ,
653          c_int ,
654          [ rsbac_list_ta_number_t ,
655            rsbac_gid_t ,
656            rsbac_um_mod_t ,
657            POINTER( rsbac_um_mod_data_t ) ] )
658
659 declare( 'rsbac_um_remove_user' ,
660          c_int ,
661          [ rsbac_list_ta_number_t ,
662            rsbac_uid_t ] )
663
664 declare( 'rsbac_um_remove_group' ,
665          c_int ,
666          [ rsbac_list_ta_number_t ,
667            rsbac_gid_t ] )
668
669 declare( 'rsbac_um_remove_gm' ,
670          c_int ,
671          [ rsbac_uid_t , rsbac_gid_t ] )
672
673 declare( 'rsbac_um_user_exists' ,
674          c_int ,
675          [ rsbac_list_ta_number_t ,
676            rsbac_uid_t ] )
677
678 declare( 'rsbac_um_group_exists' ,
679          c_int ,
680          [ rsbac_list_ta_number_t ,
681            rsbac_gid_t ] )
682
683 declare( 'rsbac_um_get_next_user' ,
684          c_int ,
685          [ rsbac_list_ta_number_t ,
686            rsbac_uid_t ,
687            POINTER( rsbac_uid_t ) ] )
688
689 declare( 'rsbac_um_get_user_list' ,
690          c_int ,
691          [ rsbac_list_ta_number_t ,
692            POINTER( rsbac_uid_t ) ,
693            c_uint ] )
694
695 declare( 'rsbac_um_get_gm_list' ,
696          c_int ,
697          [ rsbac_list_ta_number_t ,
698            rsbac_uid_t ,
699            POINTER( rsbac_gid_t ) ,
700            c_uint ] )
701
702 declare( 'rsbac_um_get_gm_user_list' ,
703          c_int ,
704          [ rsbac_list_ta_number_t ,
705            rsbac_gid_t ,
706            POINTER( rsbac_uid_t ) ,
707            c_uint ] )
708
709 declare( 'rsbac_um_get_group_list' ,
710          c_int ,
711          [ rsbac_list_ta_number_t ,
712            POINTER( rsbac_gid_t ) ,
713            c_uint ] )
714
715 declare( 'rsbac_um_get_uid' ,
716          c_int ,
717          [ rsbac_list_ta_number_t ,
718            c_char_p ,
719            POINTER( rsbac_uid_t ) ] )
720
721 declare( 'rsbac_um_get_gid' ,
722          c_int ,
723          [ rsbac_list_ta_number_t ,
724            c_char_p ,
725            POINTER( rsbac_gid_t ) ] )
726
727 declare( 'rsbac_um_set_pass' ,
728          c_int ,
729          [ rsbac_uid_t ,
730            c_char_p ,
731            c_char_p ] )
732
733 declare( 'rsbac_um_set_pass_name' ,
734          c_int ,
735          [ c_char_p ,
736            c_char_p ,
737            c_char_p ] )
738
739 declare( 'rsbac_um_set_group_pass' ,
740          c_int ,
741          [ rsbac_gid_t ,
742            c_char_p ] )
743
744 declare( 'rsbac_um_check_account' ,
745          c_int ,
746          [ rsbac_uid_t ] )
747
748 declare( 'rsbac_um_check_account_name' ,
749          c_int ,
750          [ c_char_p ] )
751
752 # Transaction
753
754 declare( 'rsbac_list_ta_begin' ,
755          c_int ,
756          [ rsbac_time_t ,
757            POINTER( rsbac_list_ta_number_t ) ,
758            rsbac_uid_t ,
759            c_char_p ] )
760
761 declare( 'rsbac_list_ta_refresh' ,
762          c_int ,
763          [ rsbac_time_t ,
764            rsbac_list_ta_number_t ,
765            c_char_p ] )
766
767 declare( 'rsbac_list_ta_commit' ,
768          c_int ,
769          [ rsbac_list_ta_number_t ,
770            c_char_p ] )
771
772 declare( 'rsbac_list_ta_forget' ,
773          c_int ,
774          [ rsbac_list_ta_number_t ,
775            c_char_p ] )
776
777 # Misc
778
779 declare( 'rsbac_list_all_dev' ,
780          c_int ,
781          [ rsbac_list_ta_number_t ,
782            POINTER( rsbac_dev_desc_t ) ,
783            c_ulong ] )
784
785 # rsbac_acl_list_all_dev
786
787 declare( 'rsbac_list_all_user' ,
788          c_int ,
789          [ rsbac_list_ta_number_t ,
790            POINTER( rsbac_uid_t ) ,
791            c_ulong ] )
792
793 # rsbac_acl_list_all_user
794
795 declare( 'rsbac_list_all_group' ,
796          c_int ,
797          [ rsbac_list_ta_number_t ,
798            POINTER( rsbac_gid_t ) ,
799            c_ulong ] )
800
801 # rsbac_acl_list_all_group
802
803 # rsbac_list_all_ipc
804
805 # DEBUG/LOG
806
807 declare( 'rsbac_adf_log_switch' ,
808          c_int ,
809          [ rsbac_adf_request_t ,
810            rsbac_target_t ,
811            c_uint ] )
812
813 declare( 'rsbac_get_adf_log' ,
814          c_int ,
815          [ rsbac_adf_request_t ,
816            rsbac_target_t ,
817            POINTER( c_uint ) ] )
818
819 declare( 'rsbac_log' ,
820          c_int ,
821          [ c_int ,
822            c_char_p ,
823            c_int ] )
824
825 declare( 'rsbac_init' ,
826          c_int ,
827          [ c_char_p ] )
828
829 # Local Variables:
830 # indent-tabs-mode: nil
831 # python-indent: 4
832 # End: