#define _RX_PROTOTYPES_H
/* rx.c */
+#ifndef KERNEL
+#ifndef AFS_PTHREAD_ENV
+extern int (*registerProgram) (PROCESS, char *);
+extern int (*swapNameProgram) (PROCESS, const char *, char *);
+#endif
+#endif
+extern int (*rx_justReceived) (struct rx_packet *, struct sockaddr_in *);
+extern int (*rx_almostSent) (struct rx_packet *, struct sockaddr_in *);
+
+
extern void rx_SetEpoch(afs_uint32 epoch);
extern int rx_Init(u_int port);
extern int rx_InitHost(u_int host, u_int port);
+#ifdef AFS_NT40_ENV
+extern void rx_DebugOnOff(int on);
+#endif
#ifndef KERNEL
extern void rxi_StartServerProcs(int nExistingProcs);
#endif
afs_int32(*serviceProc) (struct
rx_call *
acall));
+extern struct rx_service *rx_NewServiceHost(afs_uint32 host, u_short port,
+ u_short serviceId,
+ char *serviceName,
+ struct rx_securityClass
+ **securityObjects,
+ int nSecurityObjects,
+ afs_int32(*serviceProc) (struct
+ rx_call *
+ acall));
extern void rxi_ServerProc(int threadID, struct rx_call *newcall,
osi_socket * socketp);
extern void rx_WakeupServerProcs(void);
extern void rx_SetArrivalProc(register struct rx_call *call,
register void (*proc) (register struct rx_call *
call,
- register VOID * mh,
+ register void * mh,
register int index),
- register VOID * handle, register int arg);
+ register void * handle, register int arg);
extern afs_int32 rx_EndCall(register struct rx_call *call, afs_int32 rc);
extern void rx_Finalize(void);
extern void rxi_PacketsUnWait(void);
extern char *rxi_Alloc(register size_t size);
extern void rxi_Free(void *addr, register size_t size);
+extern void rxi_SetPeerMtu(register afs_uint32 host, register afs_uint32 port,
+ int mtu);
extern struct rx_peer *rxi_FindPeer(register afs_uint32 host,
register u_short port,
struct rx_peer *origPeer, int create);
extern void rxi_AckAll(struct rxevent *event, register struct rx_call *call,
char *dummy);
extern void rxi_SendDelayedAck(struct rxevent *event,
- register struct rx_call *call, char *dummy);
+ void *call /* struct rx_call *call */, void *dummy);
extern void rxi_ClearTransmitQueue(register struct rx_call *call,
register int force);
extern void rxi_ClearReceiveQueue(register struct rx_call *call);
*optionalPacket, int serial, int reason,
int istack);
extern void rxi_StartUnlocked(struct rxevent *event,
- register struct rx_call *call,
+ void *call, /* register struct rx_call */
void *arg1, int istack);
-extern void rxi_Start(struct rxevent *event, register struct rx_call *call,
+extern void rxi_Start(struct rxevent *event,
+ void *call, /* register struct rx_call */
void *arg1, int istack);
extern void rxi_Send(register struct rx_call *call,
register struct rx_packet *p, int istack);
extern int rxi_CheckCall(register struct rx_call *call);
#endif /* RX_ENABLE_LOCKS */
extern void rxi_KeepAliveEvent(struct rxevent *event,
- register struct rx_call *call, char *dummy);
+ void *call /* struct rx_call *call */,
+ void *dummy);
extern void rxi_ScheduleKeepAliveEvent(register struct rx_call *call);
extern void rxi_KeepAliveOn(register struct rx_call *call);
extern void rxi_SendDelayedConnAbort(struct rxevent *event,
- register struct rx_connection *conn,
- char *dummy);
+ void *conn, /* struct rx_connection *conn */
+ void *dummy);
extern void rxi_SendDelayedCallAbort(struct rxevent *event,
- register struct rx_call *call,
- char *dummy);
+ void *call, /* struct rx_call *call */
+ void *dummy);
extern void rxi_ChallengeEvent(struct rxevent *event,
- register struct rx_connection *conn,
+ void *conn, /* struct rx_connection *conn */
void *arg1, int atries);
extern void rxi_ChallengeOn(register struct rx_connection *conn);
extern void rxi_ComputeRoundTripTime(register struct rx_packet *p,
register struct clock *sentp,
register struct rx_peer *peer);
-extern void rxi_ReapConnections(void);
+extern void rxi_ReapConnections(struct rxevent *unused, void *unused1,
+ void *unused2);
extern int rxs_Release(struct rx_securityClass *aobj);
#ifndef KERNEL
-extern void rx_PrintTheseStats(FILE * file, struct rx_stats *s, int size,
+extern void rx_PrintTheseStats(FILE * file, struct rx_statistics *s, int size,
afs_int32 freePackets, char version);
extern void rx_PrintStats(FILE * file);
extern void rx_PrintPeerStats(FILE * file, struct rx_peer *peer);
afs_uint32 * supportedValues);
extern afs_int32 rx_GetServerStats(osi_socket socket, afs_uint32 remoteAddr,
afs_uint16 remotePort,
- struct rx_stats *stat,
+ struct rx_statistics *stat,
afs_uint32 * supportedValues);
extern afs_int32 rx_GetServerVersion(osi_socket socket, afs_uint32 remoteAddr,
afs_uint16 remotePort,
extern void rx_clearPeerRPCStats(afs_uint32 clearFlag);
extern void rx_SetRxStatUserOk(int (*proc) (struct rx_call * call));
extern int rx_RxStatUserOk(struct rx_call *call);
+extern afs_int32 rx_SetSecurityConfiguration(struct rx_service *service,
+ rx_securityConfigVariables type,
+ void *value);
-
-/* old style till varargs */
-#if 0
-void
- rxi_DebugPrint(char *format, int a1, int a2, int a3, int a4, int a5, int a6,
- int a7, int a8, int a9, int a10, int a11, int a12, int a13,
- int a14, int a15);
-#else
-void rxi_DebugPrint();
-#endif
+void rxi_DebugInit(void);
+void rxi_DebugPrint(char *format, ...);
/* rx_clock.c */
#if !defined(clock_Init)
/* this func seems to be called with tons of different style routines, need to look
at another time. */
#else
-extern struct rxevent *rxevent_Post(struct clock *when, void (*func) (),
+extern struct rxevent *rxevent_Post(struct clock *when,
+ void (*func) (struct rxevent *, void *, void *),
void *arg, void *arg1);
-extern struct rxevent *rxevent_Post2(struct clock *when, void (*func) (),
+extern struct rxevent *rxevent_Post2(struct clock *when,
+ void (*func) (struct rxevent *, void *, void *, int),
void *arg, void *arg1, int arg2);
+extern struct rxevent *rxevent_PostNow(struct clock *when, struct clock *now,
+ void (*func) (struct rxevent *, void *, void *), void *arg, void *arg1);
+extern struct rxevent *rxevent_PostNow2(struct clock *when, struct clock *now,
+ void (*func) (struct rxevent *, void *, void *, int), void *arg,
+ void *arg1, int arg2);
#endif
extern void shutdown_rxevent(void);
extern struct rxepoch *rxepoch_Allocate(struct clock *when);
/* rx_getaddr.c */
-extern void rxi_setaddr(afs_int32 x);
-extern afs_int32 rxi_getaddr(void);
+extern void rxi_setaddr(afs_uint32 x);
+extern afs_uint32 rxi_getaddr(void);
+extern int rx_getAllAddr(afs_uint32 * buffer, int maxSize);
+extern int rx_getAllAddrMaskMtu(afs_uint32 addrBuffer[],
+ afs_uint32 maskBuffer[],
+ afs_uint32 mtuBuffer[],
+ int maxSize);
/* rx_globals.c */
/* rx_kcommon.c */
-extern int (*rxk_PacketArrivalProc) (register struct rx_packet * ahandle,
- register struct sockaddr_in * afrom,
- char *arock, afs_int32 asize);
-extern int (*rxk_GetPacketProc) (char **ahandle, int asize);
+struct socket;
+extern int (*rxk_PacketArrivalProc) (struct rx_packet * ahandle,
+ struct sockaddr_in * afrom,
+ struct socket *arock,
+ afs_int32 asize);
+extern int (*rxk_GetPacketProc) (struct rx_packet **ahandle, int asize);
extern afs_int32 afs_termState;
extern int rxk_initDone;
extern void rxk_shutdownPorts(void);
extern osi_socket rxi_GetUDPSocket(u_short port);
extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port);
-extern void osi_Panic();
+#if defined(KERNEL) && defined(AFS_LINUX26_ENV)
+#define osi_Panic(msg...) do { printk(KERN_CRIT "openafs: " msg); BUG(); } while (0)
+#undef osi_Assert
+#define osi_Assert(expr) \
+ do { if (!(expr)) { osi_AssertFailK(#expr, __FILE__, __LINE__); BUG(); } } while (0)
+#else
+extern void osi_Panic(char *fmt, ...);
+#endif
extern int osi_utoa(char *buf, size_t len, unsigned long val);
extern void rxi_InitPeerParams(register struct rx_peer *pp);
extern void shutdown_rxkernel(void);
extern int rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host,
int *port);
#ifdef UKERNEL
-extern void rx_ServerProc(void);
+extern void *rx_ServerProc(void *);
#endif
extern void osi_AssertFailK(const char *expr, const char *file, int line);
extern void rxk_ListenerProc(void);
extern void rxk_Listener(void);
#ifndef UKERNEL
extern void afs_rxevent_daemon(void);
+#endif
+#if defined(AFS_DARWIN80_ENV) && defined(KERNEL)
+extern ifnet_t rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp);
+#else
extern struct ifnet *rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp);
#endif
extern void osi_StopListener(void);
-
/* ARCH/rx_kmutex.c */
#if defined(KERNEL) && defined(AFS_LINUX20_ENV)
extern void afs_mutex_init(afs_kmutex_t * l);
#endif
extern int osi_NetReceive(osi_socket so, struct sockaddr_in *addr,
struct iovec *dvec, int nvecs, int *lengthp);
+#if defined(KERNEL) && defined(AFS_SUN510_ENV)
+extern void osi_StartNetIfPoller(void);
+extern void osi_NetIfPoller(void);
+extern struct afs_ifinfo afsifinfo[ADDRSPERSITE];
+#endif
extern void osi_StopListener(void);
extern int rxi_FindIfMTU(afs_uint32 addr);
#ifndef RXK_LISTENER_ENV
/* rx_lwp.c */
-extern void rx_ServerProc(void);
extern void rxi_Sleep(void *addr);
extern void rxi_Delay(int seconds);
extern void rxi_InitializeThreadSupport(void);
extern void rxi_ReScheduleEvents(void);
#endif
extern void rxi_InitializeThreadSupport(void);
-extern void rxi_StartServerProc(void (*proc) (void), int stacksize);
+extern void rxi_StartServerProc(void *(*proc) (void *), int stacksize);
extern void rxi_StartListener(void);
-extern void rx_ServerProc(void);
+extern void *rx_ServerProc(void *);
extern int rxi_Listen(osi_socket sock);
-extern int rxi_Recvmsg(int socket, struct msghdr *msg_p, int flags);
+extern int rxi_Recvmsg(osi_socket socket, struct msghdr *msg_p, int flags);
extern int rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags);
register int nConns);
extern int multi_Select(register struct multi_handle *mh);
extern void multi_Ready(register struct rx_call *call,
- register VOID *mh, register int index);
+ register void *mh, register int index);
extern void multi_Finalize(register struct multi_handle *mh);
extern void multi_Finalize_Ignore(register struct multi_handle *mh);
unsigned int offset, int resid, char *out);
extern afs_int32 rx_SlowWritePacket(struct rx_packet *packet, int offset,
int resid, char *in);
-extern void rxi_freeCBuf(struct rx_packet *c);
extern int rxi_RoundUpPacket(struct rx_packet *p, unsigned int nb);
extern int rxi_AllocDataBuf(struct rx_packet *p, int nb, int cla_ss);
extern void rxi_MorePackets(int apackets);
extern void rxi_FreeAllPackets(void);
extern void rx_CheckPackets(void);
extern void rxi_FreePacketNoLock(struct rx_packet *p);
-extern int rxi_FreeDataBufsNoLock(struct rx_packet *p, int first);
+extern int rxi_FreeDataBufsNoLock(struct rx_packet *p, afs_uint32 first);
extern void rxi_RestoreDataBufs(struct rx_packet *p);
extern int rxi_TrimDataBufs(struct rx_packet *p, int first);
extern void rxi_FreePacket(struct rx_packet *p);
extern struct rx_packet *rxi_AllocPacketNoLock(int cla_ss);
extern struct rx_packet *rxi_AllocPacket(int cla_ss);
+extern int rxi_AllocPackets(int cla_ss, int num_pkts, struct rx_queue *q);
+extern int rxi_FreePackets(int num_pkts, struct rx_queue *q);
extern struct rx_packet *rxi_AllocSendPacket(register struct rx_call *call,
int want);
-extern int rxi_ReadPacket(int socket, register struct rx_packet *p,
+extern int rxi_ReadPacket(osi_socket socket, register struct rx_packet *p,
afs_uint32 * host, u_short * port);
extern struct rx_packet *rxi_SplitJumboPacket(register struct rx_packet *p,
afs_int32 host, short port,
/* rx_pthread.c */
extern void rxi_Delay(int sec);
extern void rxi_InitializeThreadSupport(void);
-extern void rxi_StartServerProc(void (*proc) (void), int stacksize);
+extern void rxi_StartServerProc(void *(*proc) (void *), int stacksize);
#ifndef rxi_ReScheduleEvents
extern void rxi_ReScheduleEvents(void);
#endif
-extern void rx_ServerProc(void);
+extern void *rx_ServerProc(void *);
extern void rxi_StartListener(void);
extern int rxi_Listen(osi_socket sock);
-extern int rxi_Recvmsg(int socket, struct msghdr *msg_p, int flags);
+extern int rxi_Recvmsg(osi_socket socket, struct msghdr *msg_p, int flags);
extern int rxi_Sendmsg(osi_socket socket, struct msghdr *msg_p, int flags);
#endif
extern osi_socket rxi_GetUDPSocket(u_short port);
extern void osi_AssertFailU(const char *expr, const char *file, int line);
-extern int rx_getAllAddr(afs_int32 * buffer, int maxSize);
-extern void osi_Panic(); /* leave without args till stdarg rewrite */
extern void rxi_InitPeerParams(struct rx_peer *pp);
+extern int rxi_HandleSocketError(int socket);
#if defined(AFS_AIX32_ENV) && !defined(KERNEL)
extern void *osi_Alloc(afs_int32 x);
extern void rx_GetIFInfo(void);
extern void rx_SetNoJumbo(void);
-
+extern void rx_SetMaxMTU(int mtu);
/* rx_xmit_nt.c */