Debianize PyAFS.
[invirt/packages/python-afs.git] / afs / _util.pxd
1 cdef extern from *:
2     ctypedef long size_t
3
4 cdef extern from "errno.h":
5     int errno
6
7 cdef extern from "string.h":
8     char * strerror(int errnum)
9     char * strncpy(char *s1, char *s2, size_t n)
10     void * memset(void *b, int c, size_t n)
11     void * memcpy(void *s1, void *s2, size_t n)
12     size_t strlen(char *s)
13
14 cdef extern from "stdlib.h":
15      void * malloc(size_t size)
16      void free(void *)
17
18 cdef extern from "netinet/in.h":
19     struct in_addr:
20         int s_addr
21     struct sockaddr_in:
22         short sin_family
23         unsigned short sin_port
24         in_addr sin_addr
25         char sin_zero[8]
26
27 cdef extern from "afs/stds.h":
28     ctypedef unsigned long afs_uint32
29     ctypedef long afs_int32
30
31 cdef extern from "afs/dirpath.h":
32     char * AFSDIR_CLIENT_ETC_DIRPATH
33
34 cdef extern from "afs/cellconfig.h":
35     enum:
36         MAXCELLCHARS
37         MAXHOSTSPERCELL
38         MAXHOSTCHARS
39
40     # We just pass afsconf_dir structs around to other AFS functions,
41     # so this can be treated as opaque
42     struct afsconf_dir:
43         pass
44
45     # For afsconf_cell, on the other hand, we care about everything
46     struct afsconf_cell:
47         char name[MAXCELLCHARS]
48         short numServers
49         short flags
50         sockaddr_in hostAddr[MAXHOSTSPERCELL]
51         char hostName[MAXHOSTSPERCELL][MAXHOSTCHARS]
52         char *linkedCell
53         int timeout
54
55     afsconf_dir *afsconf_Open(char *adir)
56     int afsconf_GetCellInfo(afsconf_dir *adir,
57                             char *acellName,
58                             char *aservice,
59                             afsconf_cell *acellInfo)
60
61 cdef extern from "rx/rxkad.h":
62     ctypedef char rxkad_level
63
64     enum:
65         MAXKTCNAMELEN
66         MAXKTCREALMLEN
67
68     enum:
69         rxkad_clear
70         rxkad_crypt
71
72     struct ktc_encryptionKey:
73         pass
74
75     struct ktc_principal:
76         char name[MAXKTCNAMELEN]
77         char instance[MAXKTCNAMELEN]
78         char cell[MAXKTCREALMLEN]
79
80     struct rx_securityClass:
81         pass
82
83     rx_securityClass *rxkad_NewClientSecurityObject(rxkad_level level,
84                                                     ktc_encryptionKey *sessionKey,
85                                                     afs_int32 kvno,
86                                                     int ticketLen,
87                                                     char *ticket)
88     rx_securityClass *rxnull_NewClientSecurityObject()
89
90     int rxs_Release(rx_securityClass *aobj)
91
92 cdef extern from "rx/rx.h":
93     int rx_Init(int port)
94     void rx_Finalize()
95
96     struct rx_connection:
97         pass
98
99     rx_connection *rx_NewConnection(afs_uint32 shost,
100                                     unsigned short sport,
101                                     unsigned short sservice,
102                                     rx_securityClass *securityObject,
103                                     int serviceSecurityIndex)
104
105 cdef extern from "afs/auth.h":
106     enum:
107         MAXKTCTICKETLEN
108
109     struct ktc_token:
110         ktc_encryptionKey sessionKey
111         short kvno
112         int ticketLen
113         char ticket[MAXKTCTICKETLEN]
114
115     int ktc_GetToken(ktc_principal *server,
116                      ktc_token *token,
117                      int tokenLen,
118                      ktc_principal *client)
119
120 cdef extern from "afs/prclient.h":
121     enum:
122         PRSRV
123
124 cdef extern from "ubik.h":
125     enum:
126         MAXSERVERS
127
128     # ubik_client is an opaque struct, so we don't care about its members
129     struct ubik_client:
130         pass
131
132     int ubik_ClientInit(rx_connection **serverconns,
133                         ubik_client **aclient)
134     afs_int32 ubik_ClientDestroy(ubik_client *aclient)
135
136 cdef extern from "afs/com_err.h":
137     char * afs_error_message(int)
138
139 # All AFS error tables
140 cdef extern from "afs/auth.h":
141     void initialize_KTC_error_table()
142 cdef extern from "afs/cellconfig.h":
143     void initialize_ACFG_error_table()
144 cdef extern from "afs/pterror.h":
145     void initialize_PT_error_table()
146 cdef extern from "rx/rxkad.h":
147     void initialize_RXK_error_table()
148 cdef extern from "ubik.h":
149     void initialize_U_error_table()
150
151 cdef extern from "afs/vice.h":
152     struct ViceIoctl:
153         void *cin "in"
154         void *out
155         unsigned short out_size
156         unsigned short in_size
157
158 cdef extern from "afs/venus.h":
159     enum:
160         # PIOCTLS to Venus that we use
161         VIOCGETAL, VIOC_GETVCXSTATUS2, VIOCSETAL, VIOC_FILE_CELL_NAME
162
163 # pioctl doesn't actually have a header, so we have to define it here
164 cdef extern int pioctl(char *, afs_int32, ViceIoctl *, afs_int32)
165 cdef int pioctl_read(char *, afs_int32, void *, unsigned short, afs_int32) except -1
166 cdef int pioctl_write(char *, afs_int32, char *, afs_int32) except -1
167