+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 "rx/rxkad.h":
+ ctypedef char rxkad_level
+
+ enum:
+ MAXKTCNAMELEN
+ MAXKTCREALMLEN
+
+ enum:
+ rxkad_clear
+ rxkad_crypt
+
+ struct ktc_encryptionKey:
+ pass
+
+ struct ktc_principal:
+ 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,
+ rx_securityClass *securityObject,
+ int serviceSecurityIndex)
+
+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,
+ ktc_principal *client)
+
+cdef extern from "afs/prclient.h":
+ enum:
+ PRSRV
+