X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-afs.git/blobdiff_plain/7f4b67d7f215fd22223ced8526783cd45f7b0e29..a7a1e67a14a9c997fd668ca874687dffccb92491:/afs/afs.pxd diff --git a/afs/afs.pxd b/afs/afs.pxd index 5fb03e7..090a65e 100644 --- a/afs/afs.pxd +++ b/afs/afs.pxd @@ -1,12 +1,136 @@ +cdef extern from *: + ctypedef long size_t + +cdef extern from "errno.h": + int errno + +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: + 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 unsigned long afs_uint32 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 "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 + 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) + 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)