ACL implementation. Current features:
[invirt/packages/python-afs.git] / afs / afs.pxd
index 057c2a7..02518e2 100644 (file)
@@ -8,6 +8,11 @@ cdef extern from "string.h":
     char * strerror(int errnum)
     char * strncpy(char *s1, char *s2, size_t n)
     void * memset(void *b, int c, size_t n)
+    void * memcpy(void *s1, void *s2, size_t n)
+
+cdef extern from "stdlib.h":
+     void * malloc(size_t size)
+     void free(void *)
 
 cdef extern from "netinet/in.h":
     struct in_addr:
@@ -30,12 +35,12 @@ cdef extern from "afs/cellconfig.h":
         MAXCELLCHARS
         MAXHOSTSPERCELL
         MAXHOSTCHARS
-    
+
     # We just pass afsconf_dir structs around to other AFS functions,
     # so this can be treated as opaque
     struct afsconf_dir:
         pass
-    
+
     # For afsconf_cell, on the other hand, we care about everything
     struct afsconf_cell:
         char name[MAXCELLCHARS]
@@ -45,7 +50,7 @@ cdef extern from "afs/cellconfig.h":
         char hostName[MAXHOSTSPERCELL][MAXHOSTCHARS]
         char *linkedCell
         int timeout
-     
+
     afsconf_dir *afsconf_Open(char *adir)
     int afsconf_GetCellInfo(afsconf_dir *adir,
                             char *acellName,
@@ -54,15 +59,15 @@ cdef extern from "afs/cellconfig.h":
 
 cdef extern from "rx/rxkad.h":
     ctypedef char rxkad_level
-    
+
     enum:
         MAXKTCNAMELEN
         MAXKTCREALMLEN
-    
+
     enum:
         rxkad_clear
         rxkad_crypt
-    
+
     struct ktc_encryptionKey:
         pass
 
@@ -70,26 +75,26 @@ cdef extern from "rx/rxkad.h":
         char name[MAXKTCNAMELEN]
         char instance[MAXKTCNAMELEN]
         char cell[MAXKTCREALMLEN]
-    
+
     struct rx_securityClass:
         pass
-    
+
     rx_securityClass *rxkad_NewClientSecurityObject(rxkad_level level,
                                                     ktc_encryptionKey *sessionKey,
                                                     afs_int32 kvno,
                                                     int ticketLen,
                                                     char *ticket)
     rx_securityClass *rxnull_NewClientSecurityObject()
-    
+
     int rxs_Release(rx_securityClass *aobj)
 
 cdef extern from "rx/rx.h":
     int rx_Init(int port)
     void rx_Finalize()
-    
+
     struct rx_connection:
         pass
-    
+
     rx_connection *rx_NewConnection(afs_uint32 shost,
                                     unsigned short sport,
                                     unsigned short sservice,
@@ -99,13 +104,13 @@ cdef extern from "rx/rx.h":
 cdef extern from "afs/auth.h":
     enum:
         MAXKTCTICKETLEN
-    
+
     struct ktc_token:
         ktc_encryptionKey sessionKey
         short kvno
         int ticketLen
         char ticket[MAXKTCTICKETLEN]
-    
+
     int ktc_GetToken(ktc_principal *server,
                      ktc_token *token,
                      int tokenLen,
@@ -118,14 +123,43 @@ cdef extern from "afs/prclient.h":
 cdef extern from "ubik.h":
     enum:
         MAXSERVERS
-    
+
     # ubik_client is an opaque struct, so we don't care about its members
     struct ubik_client:
         pass
-    
+
     int ubik_ClientInit(rx_connection **serverconns,
                         ubik_client **aclient)
     afs_int32 ubik_ClientDestroy(ubik_client *aclient)
 
 cdef extern from "afs/com_err.h":
     char * afs_error_message(int)
+
+# All AFS error tables
+cdef extern from "afs/auth.h":
+    void initialize_KTC_error_table()
+cdef extern from "afs/cellconfig.h":
+    void initialize_ACFG_error_table()
+cdef extern from "afs/pterror.h":
+    void initialize_PT_error_table()
+cdef extern from "rx/rxkad.h":
+    void initialize_RXK_error_table()
+cdef extern from "ubik.h":
+    void initialize_U_error_table()
+
+cdef extern from "afs/vice.h":
+    struct ViceIoctl:
+        void *cin "in"
+        void *out
+        unsigned short out_size
+        unsigned short in_size
+
+cdef import from "afs/venus.h":
+    enum:
+        # PIOCTLS to Venus that we use
+        VIOCGETAL, VIOC_GETVCXSTATUS2
+
+# pioctl doesn't actually have a header, so we have to define it here
+cdef extern int pioctl(char *, afs_int32, ViceIoctl *, afs_int32)
+cdef int pioctl_read(char *, afs_int32, void *, unsigned short, afs_int32) except -1
+