X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/python-afs.git/blobdiff_plain/1da4cb361e7de718e5eba34f9e036796cfa704e6..e450ff4c98d7c10f5eca5651512d03e14e486eff:/afs/afs.pxd diff --git a/afs/afs.pxd b/afs/afs.pxd index e518288..02518e2 100644 --- a/afs/afs.pxd +++ b/afs/afs.pxd @@ -7,6 +7,12 @@ cdef extern from "errno.h": 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: @@ -18,6 +24,7 @@ cdef extern from "netinet/in.h": 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": @@ -28,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] @@ -43,53 +50,116 @@ 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, 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 "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] -cdef extern from "afs/com_err.h": - char * error_message(int) + 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 - - # We don't look into this - struct ktc_encryptionKey: - pass - + 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 + + 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 +