extern void rx_rto_setPeerTimeoutSecs(struct rx_peer *, int secs);
-extern void rx_SetEpoch(afs_uint32 epoch);
extern int rx_Init(u_int port);
extern int rx_InitHost(u_int host, u_int port);
-extern void rx_SetBusyChannelError(afs_int32 onoff);
#ifdef AFS_NT40_ENV
extern void rx_DebugOnOff(int on);
extern void rx_StatsOnOff(int on);
extern void rxi_CallError(struct rx_call *call, afs_int32 error);
extern void rx_SetConnSecondsUntilNatPing(struct rx_connection *conn,
afs_int32 seconds);
-extern void rx_KeepAliveOn(struct rx_call *call);
-extern void rx_KeepAliveOff(struct rx_call *call);
extern int rxs_Release(struct rx_securityClass *aobj);
#ifndef KERNEL
extern void rx_PrintTheseStats(FILE * file, struct rx_statistics *s, int size,
void rxi_DebugPrint(char *format, ...)
AFS_ATTRIBUTE_FORMAT(__printf__, 1, 2);
+extern int rx_GetNetworkError(struct rx_connection *conn, int *err_origin,
+ int *err_type, int *err_code, const char **msg);
+
/* rx_clock.c */
#if !defined(clock_Init)
extern void clock_Init(void);
#if !defined(clock_UpdateTime)
extern void clock_UpdateTime(void);
#endif
-#if defined(UKERNEL) && !defined(osi_GetTime)
-extern int osi_GetTime(struct timeval *tv);
-#endif
/* rx_clock_nt.c */
extern void shutdown_rxevent(void);
extern struct rxepoch *rxepoch_Allocate(struct clock *when);
extern void rxevent_Init(int nEvents, void (*scheduler) (void));
-extern void rxevent_Cancel(struct rxevent **ev);
extern int rxevent_RaiseEvents(struct clock *next);
# ifndef AFS_LINUX26_ENV
extern void osi_AssertFailK(const char *expr, const char *file, int line) AFS_NORETURN;
# endif
-extern void rxk_ListenerProc(void);
extern void rxk_Listener(void);
# ifndef UKERNEL
extern void afs_rxevent_daemon(void);
struct iovec *dvec, int nvecs, afs_int32 asize,
int istack);
# endif
-# ifdef RXK_UPCALL_ENV
+# ifdef AFS_SOCKPROXY_ENV
+extern void rxk_SockProxySetup(void);
+extern void rxk_SockProxyFinish(void);
+extern int rxk_SockProxyReply(struct afs_uspc_param *uspc,
+ struct afs_pkt_hdr *pkts_recv,
+ struct afs_pkt_hdr **pkts_send);
+# elif defined(RXK_UPCALL_ENV)
extern void rx_upcall(socket_t so, void *arg, __unused int waitflag);
# else
extern int osi_NetReceive(osi_socket so, struct sockaddr_in *addr,
extern void multi_Ready(struct rx_call *call,
void *mh, int index);
extern void multi_Finalize(struct multi_handle *mh);
-extern void multi_Finalize_Ignore(struct multi_handle *mh);
int want);
extern int rxi_ReadPacket(osi_socket socket, struct rx_packet *p,
afs_uint32 * host, u_short * port);
-extern struct rx_packet *rxi_SplitJumboPacket(struct rx_packet *p,
- afs_uint32 host, short port,
- int first);
#ifndef KERNEL
extern int osi_NetSend(osi_socket socket, void *addr, struct iovec *dvec,
int nvecs, int length, int istack);
#endif
+extern int rxi_NetSend(osi_socket socket, void *addr, struct iovec *dvec,
+ int nvecs, int length, int istack);
extern struct rx_packet *rxi_ReceiveDebugPacket(struct rx_packet *ap,
osi_socket asocket,
afs_uint32 ahost, short aport,
struct rx_connection *conn,
struct rx_packet **list, int len, int istack);
extern void rxi_SendRawAbort(osi_socket socket, afs_uint32 host, u_short port,
- afs_int32 error, struct rx_packet *source,
- int istack);
+ afs_uint32 serial, afs_int32 error,
+ struct rx_packet *source, int istack);
extern struct rx_packet *rxi_SendSpecial(struct rx_call *call,
struct rx_connection *conn,
struct rx_packet *optionalPacket,
extern int rx_WritevProc(struct rx_call *call, struct iovec *iov, int nio,
int nbytes);
extern void rxi_FlushWrite(struct rx_call *call);
+extern void rxi_FlushWriteLocked(struct rx_call *call);
extern void rx_FlushWrite(struct rx_call *call);
#endif
extern osi_socket rxi_GetUDPSocket(u_short port);
extern void rxi_InitPeerParams(struct rx_peer *pp);
-extern int rxi_HandleSocketError(int socket);
#if defined(AFS_AIX32_ENV) && !defined(KERNEL)
#ifndef osi_Alloc