Get information about the current cell.
[invirt/packages/python-afs.git] / afs / afs.pxd
index e0684d9..5d50e09 100644 (file)
@@ -1,13 +1,62 @@
+cdef extern from "errno.h":
+    int errno
+
+cdef extern from "string.h":
+    char * strerror(int errnum)
+
+cdef extern from "netinet/in.h":
+    struct in_addr:
+        int s_addr
+    struct sockaddr_in:
+        short sin_family
+        unsigned short sin_port
+        in_addr sin_addr
+        char sin_zero[8]
+
 cdef extern from "afs/stds.h":
     ctypedef long afs_int32
 
+cdef extern from "afs/dirpath.h":
+    char * AFSDIR_CLIENT_ETC_DIRPATH
+
+cdef extern from "afs/cellconfig.h":
+    enum:
+        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]
+        short numServers
+        short flags
+        sockaddr_in hostAddr[MAXHOSTSPERCELL]
+        char hostName[MAXHOSTSPERCELL][MAXHOSTCHARS]
+        char *linkedCell
+        int timeout
+     
+    afsconf_dir *afsconf_Open(char *adir)
+    int afsconf_GetCellInfo(afsconf_dir *adir,
+                            char *acellName,
+                            char *aservice,
+                            afsconf_cell *acellInfo)
+
 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
 
 cdef extern from "rx/rx.h":
     int rx_Init(int port)
     void rx_Finalize()
+
+cdef extern from "afs/com_err.h":
+    char * error_message(int)