fa88a619a8b244e52d8288540345b4cb723a5a20
[openafs.git] / src / rx / rx_prototypes.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  * 
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef _RX_PROTOTYPES_H
11 #define _RX_PROTOTYPES_H
12
13 /* rx.c */
14 extern void rx_SetEpoch(afs_uint32 epoch);
15 extern int rx_Init(u_int port);
16 extern int rx_InitHost(u_int host, u_int port);
17 #ifdef AFS_NT40_ENV
18 extern void rx_DebugOnOff(int on);
19 #endif
20 #ifndef KERNEL
21 extern void rxi_StartServerProcs(int nExistingProcs);
22 #endif
23 extern void rx_StartServer(int donateMe);
24 extern struct rx_connection *rx_NewConnection(register afs_uint32 shost,
25                                               u_short sport, u_short sservice,
26                                               register struct rx_securityClass
27                                               *securityObject,
28                                               int serviceSecurityIndex);
29 extern void rx_SetConnDeadTime(register struct rx_connection *conn,
30                                register int seconds);
31 extern void rxi_CleanupConnection(struct rx_connection *conn);
32 extern void rxi_DestroyConnection(register struct rx_connection *conn);
33 extern void rx_GetConnection(register struct rx_connection *conn);
34 extern void rx_DestroyConnection(register struct rx_connection *conn);
35 extern struct rx_call *rx_NewCall(register struct rx_connection *conn);
36 extern int rxi_HasActiveCalls(register struct rx_connection *aconn);
37 extern int rxi_GetCallNumberVector(register struct rx_connection *aconn,
38                                    register afs_int32 * aint32s);
39 extern int rxi_SetCallNumberVector(register struct rx_connection *aconn,
40                                    register afs_int32 * aint32s);
41 extern struct rx_service *rx_NewService(u_short port, u_short serviceId,
42                                         char *serviceName,
43                                         struct rx_securityClass
44                                         **securityObjects,
45                                         int nSecurityObjects,
46                                         afs_int32(*serviceProc) (struct
47                                                                  rx_call *
48                                                                  acall));
49 extern void rxi_ServerProc(int threadID, struct rx_call *newcall,
50                            osi_socket * socketp);
51 extern void rx_WakeupServerProcs(void);
52 extern struct rx_call *rx_GetCall(int tno, struct rx_service *cur_service,
53                                   osi_socket * socketp);
54 extern void rx_SetArrivalProc(register struct rx_call *call,
55                               register void (*proc) (register struct rx_call *
56                                                     call,
57                                                     register VOID * mh,
58                                                     register int index),
59                               register VOID * handle, register int arg);
60 extern afs_int32 rx_EndCall(register struct rx_call *call, afs_int32 rc);
61 extern void rx_Finalize(void);
62 extern void rxi_PacketsUnWait(void);
63 extern struct rx_service *rxi_FindService(register osi_socket socket,
64                                           register u_short serviceId);
65 extern struct rx_call *rxi_NewCall(register struct rx_connection *conn,
66                                    register int channel);
67
68 /* Don't like this - change source at some point to make calls identical */
69 #ifdef RX_ENABLE_LOCKS
70 extern void rxi_FreeCall(register struct rx_call *call, int haveCTLock);
71 #else /* RX_ENABLE_LOCKS */
72 extern void rxi_FreeCall(register struct rx_call *call);
73 #endif /* RX_ENABLE_LOCKS */
74
75 extern char *rxi_Alloc(register size_t size);
76 extern void rxi_Free(void *addr, register size_t size);
77 extern struct rx_peer *rxi_FindPeer(register afs_uint32 host,
78                                     register u_short port,
79                                     struct rx_peer *origPeer, int create);
80 extern struct rx_connection *rxi_FindConnection(osi_socket socket,
81                                                 register afs_int32 host,
82                                                 register u_short port,
83                                                 u_short serviceId,
84                                                 afs_uint32 cid,
85                                                 afs_uint32 epoch, int type,
86                                                 u_int securityIndex);
87 extern struct rx_packet *rxi_ReceivePacket(register struct rx_packet *np,
88                                            osi_socket socket, afs_uint32 host,
89                                            u_short port, int *tnop,
90                                            struct rx_call **newcallp);
91 extern int rxi_IsConnInteresting(struct rx_connection *aconn);
92 extern struct rx_packet *rxi_ReceiveDataPacket(register struct rx_call *call,
93                                                register struct rx_packet *np,
94                                                int istack, osi_socket socket,
95                                                afs_uint32 host, u_short port,
96                                                int *tnop,
97                                                struct rx_call **newcallp);
98 extern struct rx_packet *rxi_ReceiveAckPacket(register struct rx_call *call,
99                                               struct rx_packet *np,
100                                               int istack);
101 extern struct rx_packet *rxi_ReceiveResponsePacket(register struct
102                                                    rx_connection *conn, register struct rx_packet
103                                                    *np, int istack);
104 extern struct rx_packet *rxi_ReceiveChallengePacket(register struct
105                                                     rx_connection *conn, register struct rx_packet
106                                                     *np, int istack);
107 extern void rxi_AttachServerProc(register struct rx_call *call,
108                                  register osi_socket socket,
109                                  register int *tnop,
110                                  register struct rx_call **newcallp);
111 extern void rxi_AckAll(struct rxevent *event, register struct rx_call *call,
112                        char *dummy);
113 extern void rxi_SendDelayedAck(struct rxevent *event,
114                                register struct rx_call *call, char *dummy);
115 extern void rxi_ClearTransmitQueue(register struct rx_call *call,
116                                    register int force);
117 extern void rxi_ClearReceiveQueue(register struct rx_call *call);
118 extern struct rx_packet *rxi_SendCallAbort(register struct rx_call *call,
119                                            struct rx_packet *packet,
120                                            int istack, int force);
121 extern struct rx_packet *rxi_SendConnectionAbort(register struct rx_connection
122                                                  *conn,
123                                                  struct rx_packet *packet,
124                                                  int istack, int force);
125 extern void rxi_ConnectionError(register struct rx_connection *conn,
126                                 register afs_int32 error);
127 extern void rxi_CallError(register struct rx_call *call, afs_int32 error);
128 extern void rxi_ResetCall(register struct rx_call *call,
129                           register int newcall);
130 extern struct rx_packet *rxi_SendAck(register struct rx_call *call, register struct rx_packet
131                                      *optionalPacket, int serial, int reason,
132                                      int istack);
133 extern void rxi_StartUnlocked(struct rxevent *event,
134                               register struct rx_call *call,
135                               void *arg1, int istack);
136 extern void rxi_Start(struct rxevent *event, register struct rx_call *call,
137                       void *arg1, int istack);
138 extern void rxi_Send(register struct rx_call *call,
139                      register struct rx_packet *p, int istack);
140 #ifdef RX_ENABLE_LOCKS
141 extern int rxi_CheckCall(register struct rx_call *call, int haveCTLock);
142 #else /* RX_ENABLE_LOCKS */
143 extern int rxi_CheckCall(register struct rx_call *call);
144 #endif /* RX_ENABLE_LOCKS */
145 extern void rxi_KeepAliveEvent(struct rxevent *event,
146                                register struct rx_call *call, char *dummy);
147 extern void rxi_ScheduleKeepAliveEvent(register struct rx_call *call);
148 extern void rxi_KeepAliveOn(register struct rx_call *call);
149 extern void rxi_SendDelayedConnAbort(struct rxevent *event,
150                                      register struct rx_connection *conn,
151                                      char *dummy);
152 extern void rxi_SendDelayedCallAbort(struct rxevent *event,
153                                      register struct rx_call *call,
154                                      char *dummy);
155 extern void rxi_ChallengeEvent(struct rxevent *event,
156                                register struct rx_connection *conn,
157                                void *arg1, int atries);
158 extern void rxi_ChallengeOn(register struct rx_connection *conn);
159 extern void rxi_ComputeRoundTripTime(register struct rx_packet *p,
160                                      register struct clock *sentp,
161                                      register struct rx_peer *peer);
162 extern void rxi_ReapConnections(void);
163 extern int rxs_Release(struct rx_securityClass *aobj);
164 #ifndef KERNEL
165 extern void rx_PrintTheseStats(FILE * file, struct rx_stats *s, int size,
166                                afs_int32 freePackets, char version);
167 extern void rx_PrintStats(FILE * file);
168 extern void rx_PrintPeerStats(FILE * file, struct rx_peer *peer);
169 #endif
170 extern afs_int32 rx_GetServerDebug(osi_socket socket, afs_uint32 remoteAddr,
171                                    afs_uint16 remotePort,
172                                    struct rx_debugStats *stat,
173                                    afs_uint32 * supportedValues);
174 extern afs_int32 rx_GetServerStats(osi_socket socket, afs_uint32 remoteAddr,
175                                    afs_uint16 remotePort,
176                                    struct rx_stats *stat,
177                                    afs_uint32 * supportedValues);
178 extern afs_int32 rx_GetServerVersion(osi_socket socket, afs_uint32 remoteAddr,
179                                      afs_uint16 remotePort,
180                                      size_t version_length, char *version);
181 extern afs_int32 rx_GetServerConnections(osi_socket socket,
182                                          afs_uint32 remoteAddr,
183                                          afs_uint16 remotePort,
184                                          afs_int32 * nextConnection,
185                                          int allConnections,
186                                          afs_uint32 debugSupportedValues,
187                                          struct rx_debugConn *conn,
188                                          afs_uint32 * supportedValues);
189 extern afs_int32 rx_GetServerPeers(osi_socket socket, afs_uint32 remoteAddr,
190                                    afs_uint16 remotePort,
191                                    afs_int32 * nextPeer,
192                                    afs_uint32 debugSupportedValues,
193                                    struct rx_debugPeer *peer,
194                                    afs_uint32 * supportedValues);
195 extern void shutdown_rx(void);
196 #ifndef osirx_AssertMine
197 extern void osirx_AssertMine(afs_kmutex_t * lockaddr, char *msg);
198 #endif
199 #ifndef KERNEL
200 extern int rx_KeyCreate(rx_destructor_t rtn);
201 #endif
202 extern void rx_SetSpecific(struct rx_connection *conn, int key, void *ptr);
203 extern void *rx_GetSpecific(struct rx_connection *conn, int key);
204 extern void rx_IncrementTimeAndCount(struct rx_peer *peer,
205                                      afs_uint32 rxInterface,
206                                      afs_uint32 currentFunc,
207                                      afs_uint32 totalFunc,
208                                      struct clock *queueTime,
209                                      struct clock *execTime,
210                                      afs_hyper_t * bytesSent,
211                                      afs_hyper_t * bytesRcvd, int isServer);
212 extern void rx_MarshallProcessRPCStats(afs_uint32 callerVersion, int count,
213                                        rx_function_entry_v1_t * stats,
214                                        afs_uint32 ** ptrP);
215 extern int rx_RetrieveProcessRPCStats(afs_uint32 callerVersion,
216                                       afs_uint32 * myVersion,
217                                       afs_uint32 * clock_sec,
218                                       afs_uint32 * clock_usec,
219                                       size_t * allocSize,
220                                       afs_uint32 * statCount,
221                                       afs_uint32 ** stats);
222 extern int rx_RetrievePeerRPCStats(afs_uint32 callerVersion,
223                                    afs_uint32 * myVersion,
224                                    afs_uint32 * clock_sec,
225                                    afs_uint32 * clock_usec,
226                                    size_t * allocSize, afs_uint32 * statCount,
227                                    afs_uint32 ** stats);
228 extern void rx_FreeRPCStats(afs_uint32 * stats, size_t allocSize);
229 extern int rx_queryProcessRPCStats(void);
230 extern int rx_queryPeerRPCStats(void);
231 extern void rx_enableProcessRPCStats(void);
232 extern void rx_enablePeerRPCStats(void);
233 extern void rx_disableProcessRPCStats(void);
234 extern void rx_disablePeerRPCStats(void);
235 extern void rx_clearProcessRPCStats(afs_uint32 clearFlag);
236 extern void rx_clearPeerRPCStats(afs_uint32 clearFlag);
237 extern void rx_SetRxStatUserOk(int (*proc) (struct rx_call * call));
238 extern int rx_RxStatUserOk(struct rx_call *call);
239
240
241 /* old style till varargs */
242 #if 0
243 void
244 rxi_DebugPrint(char *format, int a1, int a2, int a3, int a4, int a5, int a6,
245                int a7, int a8, int a9, int a10, int a11, int a12, int a13,
246                int a14, int a15);
247 void
248 rxi_DebugInit(void);
249 #else
250 void rxi_DebugInit();
251 void rxi_DebugPrint();
252 #endif
253
254 /* rx_clock.c */
255 #if !defined(clock_Init)
256 extern void clock_Init(void);
257 #endif
258 #if !defined(clock_UnInit)
259 extern int clock_UnInit(void);
260 #endif
261 #if !defined(clock_UpdateTime)
262 extern void clock_UpdateTime(void);
263 #endif
264
265 /* rx_clock_nt.c */
266
267
268 /* rx_conncache.c */
269 extern void rxi_DeleteCachedConnections(void);
270 extern struct rx_connection *rx_GetCachedConnection(unsigned int remoteAddr,
271                                                     unsigned short port,
272                                                     unsigned short service,
273                                                     struct rx_securityClass
274                                                     *securityObject,
275                                                     int securityIndex);
276 extern void rx_ReleaseCachedConnection(struct rx_connection *conn);
277
278
279 /* rxdebug.c */
280
281
282 /* rx_event.c */
283 extern int rxevent_nFree;
284 extern int rxevent_nPosted;
285 #if 0
286 extern struct rxevent *rxevent_Post(struct clock *when,
287                                     void (*func) (struct rxevent * event,
288                                                   struct rx_connection * conn,
289                                                   struct rx_call * acall),
290                                     void *arg, void *arg1);
291 /* this func seems to be called with tons of different style routines, need to look
292 at another time. */
293 #else
294 extern struct rxevent *rxevent_Post(struct clock *when, void (*func) (),
295                                     void *arg, void *arg1);
296 extern struct rxevent *rxevent_Post2(struct clock *when, void (*func) (),
297                                     void *arg, void *arg1, int arg2);
298 #endif
299 extern void shutdown_rxevent(void);
300 extern struct rxepoch *rxepoch_Allocate(struct clock *when);
301 extern void rxevent_Init(int nEvents, void (*scheduler) (void));
302 extern void rxevent_Cancel_1(register struct rxevent *ev,
303                              register struct rx_call *call,
304                              register int type);
305 extern int rxevent_RaiseEvents(struct clock *next);
306
307
308
309
310 /* rx_getaddr.c */
311 extern void rxi_setaddr(afs_int32 x);
312 extern afs_int32 rxi_getaddr(void);
313
314 /* rx_globals.c */
315
316
317 /* rx_kcommon.c */
318 struct socket;
319 extern int (*rxk_PacketArrivalProc) (struct rx_packet * ahandle,
320                                      struct sockaddr_in * afrom,
321                                      struct socket *arock,
322                                      afs_int32 asize);
323 extern int (*rxk_GetPacketProc) (struct rx_packet **ahandle, int asize);
324 extern afs_int32 afs_termState;
325 extern int rxk_initDone;
326
327 extern int rxk_DelPort(u_short aport);
328 extern void rxk_shutdownPorts(void);
329 extern osi_socket rxi_GetUDPSocket(u_short port);
330 extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port);
331 extern void osi_Panic();
332 extern int osi_utoa(char *buf, size_t len, unsigned long val);
333 extern void rxi_InitPeerParams(register struct rx_peer *pp);
334 extern void shutdown_rxkernel(void);
335 #ifdef AFS_USERSPACE_IP_ADDR
336 extern int rxi_GetcbiInfo(void);
337 extern afs_int32 rxi_Findcbi(afs_uint32 addr);
338 #else
339 extern int rxi_GetIFInfo(void);
340 #endif
341 #ifndef UKERNEL
342 #if 0
343 extern int rxk_FreeSocket(register struct socket *asocket);
344 #endif
345 #ifndef AFS_NT40_ENV
346 extern osi_socket *rxk_NewSocket(short aport);
347 #endif
348 #endif
349 extern int rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host,
350                           int *port);
351 #ifdef UKERNEL
352 extern void rx_ServerProc(void);
353 #endif
354 extern void osi_AssertFailK(const char *expr, const char *file, int line);
355 extern void rxk_ListenerProc(void);
356 extern void rxk_Listener(void);
357 #ifndef UKERNEL
358 extern void afs_rxevent_daemon(void);
359 #endif
360 #if defined(AFS_DARWIN80_ENV) && defined(KERNEL)
361 extern ifnet_t rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp);
362 #else
363 extern struct ifnet *rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp);
364 #endif
365 extern void osi_StopListener(void);
366
367
368 /* ARCH/rx_kmutex.c */
369 #if defined(KERNEL) && defined(AFS_LINUX20_ENV)
370 extern void afs_mutex_init(afs_kmutex_t * l);
371 extern void afs_mutex_enter(afs_kmutex_t * l);
372 extern int afs_mutex_tryenter(afs_kmutex_t * l);
373 extern void afs_mutex_exit(afs_kmutex_t * l);
374 extern int afs_cv_wait(afs_kcondvar_t * cv, afs_kmutex_t * l, int sigok);
375 extern void afs_cv_timedwait(afs_kcondvar_t * cv, afs_kmutex_t * l,
376                              int waittime);
377 #endif
378
379
380
381 /* ARCH/rx_knet.c */
382 #if defined(KERNEL) && !defined(AFS_SGI_ENV)
383 extern int osi_NetSend(osi_socket asocket, struct sockaddr_in *addr,
384                        struct iovec *dvec, int nvecs, afs_int32 asize,
385                        int istack);
386 #endif
387 extern int osi_NetReceive(osi_socket so, struct sockaddr_in *addr,
388                           struct iovec *dvec, int nvecs, int *lengthp);
389 extern void osi_StopListener(void);
390 extern int rxi_FindIfMTU(afs_uint32 addr);
391 #ifndef RXK_LISTENER_ENV
392 extern void rxk_init();
393 #endif
394
395 /* UKERNEL/rx_knet.c */
396 #ifdef UKERNEL
397 extern void afs_rxevent_daemon(void);
398 #endif
399
400
401 /* rx_lwp.c */
402 extern void rx_ServerProc(void);
403 extern void rxi_Sleep(void *addr);
404 extern void rxi_Delay(int seconds);
405 extern void rxi_InitializeThreadSupport(void);
406 extern void rxi_Wakeup(void *addr);
407 extern void rxi_StopListener(void);
408 #ifndef KERNEL
409 extern void rxi_ReScheduleEvents(void);
410 #endif
411 extern void rxi_InitializeThreadSupport(void);
412 extern void rxi_StartServerProc(void (*proc) (void), int stacksize);
413 extern void rxi_StartListener(void);
414 extern void rx_ServerProc(void);
415 extern int rxi_Listen(osi_socket sock);
416 extern int rxi_Recvmsg(osi_socket socket, struct msghdr *msg_p, int flags);
417 extern int rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags);
418
419
420 /* rx_misc.c */
421 #ifndef osi_alloc
422 extern char *osi_alloc(afs_int32 x);
423 #endif
424 #ifndef osi_free
425 extern int osi_free(char *x, afs_int32 size);
426 #endif
427 extern int hton_syserr_conv(register afs_int32 code);
428 extern int ntoh_syserr_conv(int code);
429
430
431 /* rx_multi.c */
432 extern struct multi_handle *multi_Init(struct rx_connection **conns,
433                                        register int nConns);
434 extern int multi_Select(register struct multi_handle *mh);
435 extern void multi_Ready(register struct rx_call *call,
436                         register VOID *mh, register int index);
437 extern void multi_Finalize(register struct multi_handle *mh);
438 extern void multi_Finalize_Ignore(register struct multi_handle *mh);
439
440
441
442 /* rx_null.c */
443 extern struct rx_securityClass *rxnull_NewServerSecurityObject(void);
444 extern struct rx_securityClass *rxnull_NewClientSecurityObject(void);
445
446 /* rx_packet.c */
447 extern afs_int32 rx_SlowGetInt32(struct rx_packet *packet, size_t offset);
448 extern afs_int32 rx_SlowPutInt32(struct rx_packet *packet, size_t offset,
449                                  afs_int32 data);
450 extern afs_int32 rx_SlowReadPacket(struct rx_packet *packet,
451                                    unsigned int offset, int resid, char *out);
452 extern afs_int32 rx_SlowWritePacket(struct rx_packet *packet, int offset,
453                                     int resid, char *in);
454 extern int rxi_RoundUpPacket(struct rx_packet *p, unsigned int nb);
455 extern int rxi_AllocDataBuf(struct rx_packet *p, int nb, int cla_ss);
456 extern void rxi_MorePackets(int apackets);
457 extern void rxi_MorePacketsNoLock(int apackets);
458 extern void rxi_FreeAllPackets(void);
459 extern void rx_CheckPackets(void);
460 extern void rxi_FreePacketNoLock(struct rx_packet *p);
461 extern int rxi_FreeDataBufsNoLock(struct rx_packet *p, int first);
462 extern void rxi_RestoreDataBufs(struct rx_packet *p);
463 extern int rxi_TrimDataBufs(struct rx_packet *p, int first);
464 extern void rxi_FreePacket(struct rx_packet *p);
465 extern struct rx_packet *rxi_AllocPacketNoLock(int cla_ss);
466 extern struct rx_packet *rxi_AllocPacket(int cla_ss);
467 extern int rxi_AllocPackets(int cla_ss, int num_pkts, struct rx_queue *q);
468 extern int rxi_FreePackets(int num_pkts, struct rx_queue *q);
469 extern struct rx_packet *rxi_AllocSendPacket(register struct rx_call *call,
470                                              int want);
471 extern int rxi_ReadPacket(osi_socket socket, register struct rx_packet *p,
472                           afs_uint32 * host, u_short * port);
473 extern struct rx_packet *rxi_SplitJumboPacket(register struct rx_packet *p,
474                                               afs_int32 host, short port,
475                                               int first);
476 #ifndef KERNEL
477 extern int osi_NetSend(osi_socket socket, void *addr, struct iovec *dvec,
478                        int nvecs, int length, int istack);
479 #endif
480 extern struct rx_packet *rxi_ReceiveDebugPacket(register struct rx_packet *ap,
481                                                 osi_socket asocket,
482                                                 afs_int32 ahost, short aport,
483                                                 int istack);
484 extern struct rx_packet *rxi_ReceiveVersionPacket(register struct rx_packet
485                                                   *ap, osi_socket asocket,
486                                                   afs_int32 ahost,
487                                                   short aport, int istack);
488 extern void rxi_SendPacket(struct rx_call *call, struct rx_connection *conn,
489                            struct rx_packet *p, int istack);
490 extern void rxi_SendPacketList(struct rx_call *call,
491                                struct rx_connection *conn,
492                                struct rx_packet **list, int len, int istack);
493 extern struct rx_packet *rxi_SendSpecial(register struct rx_call *call,
494                                          register struct rx_connection *conn,
495                                          struct rx_packet *optionalPacket,
496                                          int type, char *data, int nbytes,
497                                          int istack);
498 extern void rxi_EncodePacketHeader(register struct rx_packet *p);
499 extern void rxi_DecodePacketHeader(register struct rx_packet *p);
500 extern void rxi_PrepareSendPacket(register struct rx_call *call,
501                                   register struct rx_packet *p,
502                                   register int last);
503 extern int rxi_AdjustIfMTU(int mtu);
504 extern int rxi_AdjustMaxMTU(int mtu, int peerMaxMTU);
505 extern int rxi_AdjustDgramPackets(int frags, int mtu);
506
507
508 /* rxperf.c */
509
510
511 /* rx_pthread.c */
512 extern void rxi_Delay(int sec);
513 extern void rxi_InitializeThreadSupport(void);
514 extern void rxi_StartServerProc(void (*proc) (void), int stacksize);
515 #ifndef rxi_ReScheduleEvents
516 extern void rxi_ReScheduleEvents(void);
517 #endif
518 extern void rx_ServerProc(void);
519 extern void rxi_StartListener(void);
520 extern int rxi_Listen(osi_socket sock);
521 extern int rxi_Recvmsg(osi_socket socket, struct msghdr *msg_p, int flags);
522 extern int rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags);
523
524
525 /* rx_rdwr.c */
526 extern int rxi_ReadProc(register struct rx_call *call, register char *buf,
527                         register int nbytes);
528 extern int rx_ReadProc(struct rx_call *call, char *buf, int nbytes);
529 extern int rx_ReadProc32(struct rx_call *call, afs_int32 * value);
530 extern int rxi_FillReadVec(struct rx_call *call, afs_uint32 serial);
531 extern int rxi_ReadvProc(struct rx_call *call, struct iovec *iov, int *nio,
532                          int maxio, int nbytes);
533 extern int rx_ReadvProc(struct rx_call *call, struct iovec *iov, int *nio,
534                         int maxio, int nbytes);
535 extern int rxi_WriteProc(register struct rx_call *call, register char *buf,
536                          register int nbytes);
537 extern int rx_WriteProc(struct rx_call *call, char *buf, int nbytes);
538 extern int rx_WriteProc32(register struct rx_call *call,
539                           register afs_int32 * value);
540 extern int rxi_WritevAlloc(struct rx_call *call, struct iovec *iov, int *nio,
541                            int maxio, int nbytes);
542 extern int rx_WritevAlloc(struct rx_call *call, struct iovec *iov, int *nio,
543                           int maxio, int nbytes);
544 extern int rxi_WritevProc(struct rx_call *call, struct iovec *iov, int nio,
545                           int nbytes);
546 extern int rx_WritevProc(struct rx_call *call, struct iovec *iov, int nio,
547                          int nbytes);
548 extern void rxi_FlushWrite(register struct rx_call *call);
549 extern void rx_FlushWrite(struct rx_call *call);
550
551 /* rx_trace.c */
552
553
554 /* rx_user.c */
555 #ifdef AFS_PTHREAD_ENV
556 extern pthread_mutex_t rx_if_init_mutex;
557 extern pthread_mutex_t rx_if_mutex;
558 #endif
559 extern osi_socket rxi_GetUDPSocket(u_short port);
560 extern void osi_AssertFailU(const char *expr, const char *file, int line);
561 extern int rx_getAllAddr(afs_int32 * buffer, int maxSize);
562 extern void osi_Panic();        /* leave without args till stdarg rewrite */
563 extern void rxi_InitPeerParams(struct rx_peer *pp);
564
565 #if defined(AFS_AIX32_ENV) && !defined(KERNEL)
566 extern void *osi_Alloc(afs_int32 x);
567 extern void osi_Free(void *x, afs_int32 size);
568 #endif /* defined(AFS_AIX32_ENV) && !defined(KERNEL) */
569
570 extern void rx_GetIFInfo(void);
571 extern void rx_SetNoJumbo(void);
572
573
574 /* rx_xmit_nt.c */
575
576
577 /* MISC PROTOTYPES - MOVE TO APPROPRIATE LOCATION LATER */
578
579 /* EXTERNAL PROTOTYPES - include here cause it causes too many issues to
580    include the afs_prototypes.h file - just make sure they match */
581 #ifndef afs_osi_Alloc
582 extern void *afs_osi_Alloc(size_t x);
583 #endif
584 #ifndef afs_osi_Alloc_NoSleep
585 extern void *afs_osi_Alloc_NoSleep(size_t x);
586 #endif
587 #ifndef afs_osi_Free
588 extern void afs_osi_Free(void *x, size_t asize);
589 #endif
590 #ifndef afs_osi_Wakeup
591 extern int afs_osi_Wakeup(void *event);
592 #endif
593 #ifndef afs_osi_Sleep
594 extern void afs_osi_Sleep(void *event);
595 #endif
596 extern unsigned int afs_random(void);
597 extern void osi_linux_rxkreg(void);
598
599 #endif /* _RX_PROTOTYPES_H */