From: Derrick Brashear Date: Tue, 2 Jan 2007 17:17:49 +0000 (+0000) Subject: taking-rx-back-into-the-20th-century-20061228 X-Git-Tag: BP-openafs-windows-kdfs-ifs~880 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=365351a161356acbe09b5fdfe095c809a1d5fd05;p=packages%2Fo%2Fopenafs.git taking-rx-back-into-the-20th-century-20061228 ken's patch is now on the ipv6 branch ==================== This delta was composed from multiple commits as part of the CVS->Git migration. The checkin message with each commit was inconsistent. The following are the additional commit messages. ==================== restore deleted taddr declaration. ==================== ken's patch is now on the ipv6 branch --- diff --git a/src/afs/afs_mariner.c b/src/afs/afs_mariner.c index e94dbbec2..cbdf9ca1a 100644 --- a/src/afs/afs_mariner.c +++ b/src/afs/afs_mariner.c @@ -99,8 +99,7 @@ afs_MarinerLogFetch(register struct vcache *avc, register afs_int32 off, dvec.iov_base = tp1; dvec.iov_len = len; AFS_GUNLOCK(); - (void)osi_NetSend(afs_server->socket, (struct sockaddr_storage *) &taddr, - sizeof(taddr), &dvec, 1, len, 0); + (void)osi_NetSend(afs_server->socket, &taddr, &dvec, 1, len, 0); AFS_GLOCK(); osi_FreeSmallSpace(tp1); } /*afs_MarinerLogFetch */ @@ -133,8 +132,7 @@ afs_MarinerLog(register char *astring, register struct vcache *avc) dvec.iov_base = buf; dvec.iov_len = tp - buf; AFS_GUNLOCK(); - (void)osi_NetSend(afs_server->socket, (struct sockaddr_storage *) &taddr, - sizeof(taddr), &dvec, 1, tp - buf, 0); + (void)osi_NetSend(afs_server->socket, &taddr, &dvec, 1, tp - buf, 0); AFS_GLOCK(); osi_FreeSmallSpace(buf); } /*afs_MarinerLog */ diff --git a/src/bucoord/server.c b/src/bucoord/server.c index b4ba909ef..b7672ec89 100644 --- a/src/bucoord/server.c +++ b/src/bucoord/server.c @@ -32,6 +32,6 @@ BC_Print(acall, acode, aflags, amessage) tconn = rx_ConnectionOf(acall); tpeer = rx_PeerOf(tconn); - printf("From %s: %s <%d>\n", rx_AddrStringOf(tpeer), amessage, acode); + printf("From %08x: %s <%d>\n", tpeer->host, amessage, acode); return 0; } diff --git a/src/kauth/admin_tools.c b/src/kauth/admin_tools.c index f22f62f14..a1ed521c7 100644 --- a/src/kauth/admin_tools.c +++ b/src/kauth/admin_tools.c @@ -536,7 +536,7 @@ Unlock(struct cmd_syndesc *as, char *arock) { afs_int32 code, rcode = 0; afs_int32 count; - char *server; + afs_int32 server; char name[MAXKTCNAMELEN]; char instance[MAXKTCNAMELEN]; @@ -552,14 +552,16 @@ Unlock(struct cmd_syndesc *as, char *arock) code = ubik_CallIter(KAM_Unlock, conn, 0, &count, (long) name, (long) instance, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); if (code && (code != UNOSERVERS)) { - server = ""; + server = 0; if (conn && conn->conns[count - 1] && conn->conns[count - 1]->peer) { - server = rx_AddrStringOf(conn->conns[count - 1]->peer); + server = conn->conns[count - 1]->peer->host; } com_err(whoami, code, - "so %s.%s may still be locked (on server %s)", - name, instance, server); + "so %s.%s may still be locked (on server %d.%d.%d.%d)", + name, instance, ((server >> 24) & 0xFF), + ((server >> 16) & 0xFF), ((server >> 8) & 0xFF), + (server & 0xFF)); if (!rcode) { rcode = code; diff --git a/src/kauth/kalog.c b/src/kauth/kalog.c index 85b6bea61..f70bed58a 100644 --- a/src/kauth/kalog.c +++ b/src/kauth/kalog.c @@ -60,9 +60,9 @@ kalog_Init() } /* log a ticket usage */ -void -kalog_log(char *principal, char *instance, char *sprincipal, char *sinstance, - char *realm, int hostaddr, int type) +kalog_log(principal, instance, sprincipal, sinstance, realm, hostaddr, type) + char *principal, *instance, *sprincipal, *sinstance, *realm; + int hostaddr, type; { char keybuf[512]; /* not random! 63 . 63 , 63 . 63 max key */ datum key, data; @@ -131,7 +131,7 @@ kalog_log(char *principal, char *instance, char *sprincipal, char *sinstance, dbm_store(kalog_db, key, data, DBM_REPLACE); - ViceLog(verbose_track, ("%s from %s\n", keybuf, afs_inet_ntoa(hostaddr))); + ViceLog(verbose_track, ("%s from %x\n", keybuf, hostaddr)); } @@ -197,5 +197,5 @@ ka_log(char *principal, char *instance, char *sprincipal, char *sinstance, break; } - ViceLog(verbose_track, ("%s from %s\n", logbuf, afs_inet_ntoa(hostaddr))); + ViceLog(verbose_track, ("%s from %x\n", logbuf, hostaddr)); } diff --git a/src/kauth/kalog.h b/src/kauth/kalog.h index 0ae6c681c..ca71fb66a 100644 --- a/src/kauth/kalog.h +++ b/src/kauth/kalog.h @@ -47,11 +47,7 @@ typedef struct { #endif #endif /* AUTH_DBM_LOG */ -void ka_log(char *principal, char *instance, char *sprincipal, char *sinstance, - char *realm, int hostaddr, int type); #ifdef AUTH_DBM_LOG -void kalog_log(char *principal, char *instance, char *sprincipal, - char *sinstance, char *realm, int hostaddr, int type); #define KALOG(a,b,c,d,e,f,g) kalog_log(a,b,c,d,e,f,g) #else #define KALOG(a,b,c,d,e,f,g) ka_log(a,b,c,d,e,f,g) diff --git a/src/kauth/kaprocs.c b/src/kauth/kaprocs.c index 0f7fa42c6..5fe2fdb87 100644 --- a/src/kauth/kaprocs.c +++ b/src/kauth/kaprocs.c @@ -659,8 +659,7 @@ kamCreateUser(call, aname, ainstance, ainitpw) return code; } code = ubik_EndTrans(tt); - KALOG(aname, ainstance, NULL, NULL, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), + KALOG(aname, ainstance, NULL, NULL, NULL, call->conn->peer->host, LOG_CRUSER); return code; } @@ -958,8 +957,8 @@ kamSetPassword(call, aname, ainstance, akvno, apassword) goto abort; code = ubik_EndTrans(tt); - KALOG(aname, ainstance, NULL, NULL, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_CHPASSWD); + KALOG(aname, ainstance, NULL, NULL, NULL, call->conn->peer->host, + LOG_CHPASSWD); return code; abort: @@ -1296,15 +1295,15 @@ Authenticate(version, call, aname, ainstance, start, end, arequest, oanswer) des_pcbc_encrypt(oanswer->SeqBody, oanswer->SeqBody, oanswer->SeqLen, user_schedule, &tentry.key, ENCRYPT); code = ubik_EndTrans(tt); - KALOG(aname, ainstance, sname, sinst, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_AUTHENTICATE); + KALOG(aname, ainstance, sname, sinst, NULL, call->conn->peer->host, + LOG_AUTHENTICATE); return code; abort: COUNT_ABO; ubik_AbortTrans(tt); - KALOG(aname, ainstance, sname, sinst, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_AUTHFAILED); + KALOG(aname, ainstance, sname, sinst, NULL, call->conn->peer->host, + LOG_AUTHFAILED); return code; } @@ -1523,8 +1522,8 @@ kamSetFields(call, aname, ainstance, aflags, aexpiration, alifetime, goto abort; code = ubik_EndTrans(tt); - KALOG(aname, ainstance, NULL, NULL, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_SETFIELDS); + KALOG(aname, ainstance, NULL, NULL, NULL, call->conn->peer->host, + LOG_SETFIELDS); return code; abort: @@ -1602,8 +1601,8 @@ kamDeleteUser(call, aname, ainstance) goto abort; code = ubik_EndTrans(tt); - KALOG(aname, ainstance, NULL, NULL, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_DELUSER); + KALOG(aname, ainstance, NULL, NULL, NULL, call->conn->peer->host, + LOG_DELUSER); return code; } @@ -2012,7 +2011,7 @@ GetTicket(version, call, kvno, authDomain, aticket, sname, sinstance, atimes, schedule, &authSessionKey, ENCRYPT); code = ubik_EndTrans(tt); KALOG(name, instance, sname, sinstance, (import ? authDomain : NULL), - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_GETTICKET); + call->conn->peer->host, LOG_GETTICKET); return code; abort: @@ -2359,8 +2358,8 @@ SKAM_Unlock(call, aname, ainstance, spare1, spare2, spare3, spare4) kaux_write(to, 0, 0); /* zero failure counters at this offset */ code = ubik_EndTrans(tt); - KALOG(aname, ainstance, NULL, NULL, NULL, - rx_HostOf(rx_PeerOf(rx_ConnectionOf(call))), LOG_UNLOCK); + KALOG(aname, ainstance, NULL, NULL, NULL, call->conn->peer->host, + LOG_UNLOCK); goto exit; abort: diff --git a/src/rx/DARWIN/rx_knet.c b/src/rx/DARWIN/rx_knet.c index 1265dad98..cd299500a 100644 --- a/src/rx/DARWIN/rx_knet.c +++ b/src/rx/DARWIN/rx_knet.c @@ -20,12 +20,13 @@ RCSID #endif int -osi_NetReceive(osi_socket so, struct sockaddr_storage *saddr, int *slen, - struct iovec *dvec, int nvecs, int *alength) +osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, + int nvecs, int *alength) { #ifdef AFS_DARWIN80_ENV socket_t asocket = (socket_t)so; struct msghdr msg; + struct sockaddr_storage ss; int rlen; mbuf_t m; #else @@ -55,9 +56,9 @@ osi_NetReceive(osi_socket so, struct sockaddr_storage *saddr, int *slen, #if 1 resid = *alength; memset(&msg, 0, sizeof(struct msghdr)); - msg.msg_name = saddr; + msg.msg_name = &ss; msg.msg_namelen = sizeof(struct sockaddr_storage); - sa =(struct sockaddr *) saddr; + sa =(struct sockaddr *) &ss; code = sock_receivembuf(asocket, &msg, &m, 0, alength); if (!code) { size_t offset=0,sz; @@ -150,8 +151,8 @@ osi_StopListener(void) } int -osi_NetSend(osi_socket so, struct sockaddr_storage *saddr, int salen, - struct iovec *dvec, int nvecs, afs_int32 alength, int istack) +osi_NetSend(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, + int nvecs, afs_int32 alength, int istack) { #ifdef AFS_DARWIN80_ENV socket_t asocket = (socket_t)so; @@ -173,8 +174,7 @@ osi_NetSend(osi_socket so, struct sockaddr_storage *saddr, int salen, for (i = 0; i < nvecs; i++) iov[i] = dvec[i]; - saddr->ss_len = saddr->ss_family == AF_INET6 ? - sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in); + addr->sin_len = sizeof(struct sockaddr_in); if (haveGlock) AFS_GUNLOCK(); @@ -183,8 +183,8 @@ osi_NetSend(osi_socket so, struct sockaddr_storage *saddr, int salen, #endif #ifdef AFS_DARWIN80_ENV memset(&msg, 0, sizeof(struct msghdr)); - msg.msg_name = saddr; - msg.msg_namelen = saddr->ss_len; + msg.msg_name = addr; + msg.msg_namelen = ((struct sockaddr *)addr)->sa_len; msg.msg_iov = &iov[0]; msg.msg_iovlen = nvecs; code = sock_send(asocket, &msg, 0, &slen); diff --git a/src/rx/FBSD/rx_knet.c b/src/rx/FBSD/rx_knet.c index c24176f9b..e70dcb410 100644 --- a/src/rx/FBSD/rx_knet.c +++ b/src/rx/FBSD/rx_knet.c @@ -19,7 +19,7 @@ RCSID #ifdef RXK_LISTENER_ENV int -osi_NetReceive(osi_socket asocket, struct sockaddr_storage *saddr, int *slen, +osi_NetReceive(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, int nvecs, int *alength) { struct uio u; @@ -68,10 +68,8 @@ osi_NetReceive(osi_socket asocket, struct sockaddr_storage *saddr, int *slen, *alength -= u.uio_resid; if (sa) { if (sa->sa_family == AF_INET) { - if (saddr) { - memcpy(saddr, sa, sa->sa_len); - *slen = sa->sa_len; - } + if (addr) + *addr = *(struct sockaddr_in *)sa; } else printf("Unknown socket family %d in NetReceive\n", sa->sa_family); FREE(sa, M_SONAME); @@ -102,8 +100,8 @@ osi_StopListener(void) } int -osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int salen, - struct iovec *dvec, int nvecs, afs_int32 alength, int istack) +osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, + int nvecs, afs_int32 alength, int istack) { register afs_int32 code; int i; @@ -130,8 +128,7 @@ osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int salen, u.uio_procp = NULL; #endif - saddr->ss_len = saddr->ss_family == AF_INET6 ? - sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in); + addr->sin_len = sizeof(struct sockaddr_in); if (haveGlock) AFS_GUNLOCK(); @@ -140,11 +137,11 @@ osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int salen, #endif #ifdef AFS_FBSD50_ENV code = - sosend(asocket, (struct sockaddr *)saddr, &u, NULL, NULL, 0, + sosend(asocket, (struct sockaddr *)addr, &u, NULL, NULL, 0, curthread); #else code = - sosend(asocket, (struct sockaddr *)saddr, &u, NULL, NULL, 0, curproc); + sosend(asocket, (struct sockaddr *)addr, &u, NULL, NULL, 0, curproc); #endif #if KNET_DEBUG if (code) { diff --git a/src/rx/OBSD/rx_knet.c b/src/rx/OBSD/rx_knet.c index 73934e2ac..e2fa381e3 100644 --- a/src/rx/OBSD/rx_knet.c +++ b/src/rx/OBSD/rx_knet.c @@ -16,7 +16,7 @@ RCSID #include "../rx/rx_kcommon.h" int -osi_NetReceive(osi_socket asocket, struct sockaddr_storage *saddr, int *slen, +osi_NetReceive(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, int nvecs, int *alength) { struct uio u; @@ -42,7 +42,7 @@ osi_NetReceive(osi_socket asocket, struct sockaddr_storage *saddr, int *slen, if (haveGlock) AFS_GUNLOCK(); - code = soreceive(asocket, (saddr ? &nam : NULL), &u, NULL, NULL, NULL); + code = soreceive(asocket, (addr ? &nam : NULL), &u, NULL, NULL, NULL); if (haveGlock) AFS_GLOCK(); @@ -56,9 +56,8 @@ osi_NetReceive(osi_socket asocket, struct sockaddr_storage *saddr, int *slen, } *alength -= u.uio_resid; - if (saddr && nam) { - memcpy(saddr, mtod(nam, caddr_t), nam->m_len); - *slen = nam->m_len; + if (addr && nam) { + memcpy(addr, mtod(nam, caddr_t), nam->m_len); m_freem(nam); } @@ -82,8 +81,8 @@ osi_StopListener(void) */ int -osi_NetSend(osi_socket asocket, struct sockaddr_storage *addr, int slen, - struct iovec *dvec, int nvecs, afs_int32 alength, int istack) +osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, + int nvecs, afs_int32 alength, int istack) { int i, code; struct iovec iov[RX_MAXIOVECS]; @@ -109,8 +108,8 @@ osi_NetSend(osi_socket asocket, struct sockaddr_storage *addr, int slen, nam = m_get(M_DONTWAIT, MT_SONAME); if (!nam) return ENOBUFS; - nam->m_len = slen; - memcpy(mtod(nam, caddr_t), addr, slen); + nam->m_len = addr->sin_len = sizeof(struct sockaddr_in); + memcpy(mtod(nam, caddr_t), addr, addr->sin_len); if (haveGlock) AFS_GUNLOCK(); diff --git a/src/rx/SOLARIS/rx_knet.c b/src/rx/SOLARIS/rx_knet.c index 96b2899f8..85eaa5f7c 100644 --- a/src/rx/SOLARIS/rx_knet.c +++ b/src/rx/SOLARIS/rx_knet.c @@ -222,10 +222,11 @@ struct sockaddr_in rx_sockaddr; /* Allocate a new socket at specified port in network byte order. */ osi_socket * -rxk_NewSocketHost(struct sockaddr_storage *addr, int salen) +rxk_NewSocketHost(afs_uint32 ahost, short aport) { vnode_t *accessvp; struct sonode *so; + struct sockaddr_in addr; int error; int len; @@ -293,7 +294,11 @@ rxk_NewSocketHost(struct sockaddr_storage *addr, int salen) return NULL; } - error = sockfs_sobind(so, (struct sockaddr *)addr, salen, 0, 0); + addr.sin_family = AF_INET; + addr.sin_port = aport; + addr.sin_addr.s_addr = ahost; /* I wonder what the odds are on + needing to unbyteswap this */ + error = sockfs_sobind(so, (struct sockaddr *)&addr, sizeof(addr), 0, 0); if (error != 0) { return NULL; } @@ -339,7 +344,7 @@ osi_FreeSocket(register osi_socket *asocket) dvec.iov_len = 1; while (rxk_ListenerPid) { - osi_NetSend(rx_socket, &taddr, sizeof(taddr), &dvec, 1, 1, 0); + osi_NetSend(rx_socket, &taddr, &dvec, 1, 1, 0); afs_osi_Sleep(&rxk_ListenerPid); } @@ -352,8 +357,8 @@ osi_FreeSocket(register osi_socket *asocket) } int -osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int slen, - struct iovec *dvec, int nvecs, afs_int32 asize, int istack) +osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, + int nvecs, afs_int32 asize, int istack) { struct sonode *so = (struct sonode *)asocket; struct nmsghdr msg; @@ -366,8 +371,8 @@ osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int slen, osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvecs); } - msg.msg_name = (struct sockaddr *) saddr; - msg.msg_namelen = slen; + msg.msg_name = (struct sockaddr *)addr; + msg.msg_namelen = sizeof(struct sockaddr_in); msg.msg_iov = dvec; msg.msg_iovlen = nvecs; msg.msg_control = NULL; @@ -392,8 +397,8 @@ osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int slen, } int -osi_NetReceive(osi_socket so, struct sockaddr_storage *saddr, int *slen, - struct iovec *dvec, int nvecs, int *alength) +osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, + int nvecs, int *alength) { struct sonode *asocket = (struct sonode *)so; struct nmsghdr msg; @@ -407,7 +412,7 @@ osi_NetReceive(osi_socket so, struct sockaddr_storage *saddr, int *slen, } msg.msg_name = NULL; - msg.msg_namelen = *slen; + msg.msg_namelen = sizeof(struct sockaddr_in); msg.msg_iov = NULL; msg.msg_iovlen = 0; msg.msg_control = NULL; @@ -431,8 +436,7 @@ osi_NetReceive(osi_socket so, struct sockaddr_storage *saddr, int *slen, if (msg.msg_name == NULL) { error = -1; } else { - memcpy(saddr, msg.msg_name, msg.msg_namelen); - *slen = msg.msg_namelen; + memcpy(addr, msg.msg_name, msg.msg_namelen); kmem_free(msg.msg_name, msg.msg_namelen); *alength = *alength - uio.uio_resid; } diff --git a/src/rx/UKERNEL/rx_knet.c b/src/rx/UKERNEL/rx_knet.c index d484f8582..959e9cf87 100644 --- a/src/rx/UKERNEL/rx_knet.c +++ b/src/rx/UKERNEL/rx_knet.c @@ -64,8 +64,7 @@ void rxi_ListenerProc(osi_socket usockp, int *tnop, struct rx_call **newcallp) { struct rx_packet *tp; - struct sockaddr_storage saddr; - int slen; + afs_uint32 host; u_short port; int rc; @@ -77,9 +76,9 @@ rxi_ListenerProc(osi_socket usockp, int *tnop, struct rx_call **newcallp) while (1) { tp = rxi_AllocPacket(RX_PACKET_CLASS_RECEIVE); usr_assert(tp != NULL); - rc = rxi_ReadPacket(usockp, tp, &saddr, &slen); + rc = rxi_ReadPacket(usockp, tp, &host, &port); if (rc != 0) { - tp = rxi_ReceivePacket(tp, usockp, &saddr, slen, tnop, newcallp); + tp = rxi_ReceivePacket(tp, usockp, host, port, tnop, newcallp); if (newcallp && *newcallp) { if (tp) { rxi_FreePacket(tp); @@ -280,8 +279,8 @@ osi_StopListener(void) } int -osi_NetSend(osi_socket sockp, struct sockaddr_storage *addr, int addrlen, - struct iovec *iov, int nio, afs_int32 size, int stack) +osi_NetSend(osi_socket sockp, struct sockaddr_in *addr, struct iovec *iov, + int nio, afs_int32 size, int stack) { int rc; int i; @@ -301,7 +300,7 @@ osi_NetSend(osi_socket sockp, struct sockaddr_storage *addr, int addrlen, memset(&msg, 0, sizeof(msg)); msg.msg_name = (void *)addr; - msg.msg_namelen = addrlen; + msg.msg_namelen = sizeof(struct sockaddr_in); msg.msg_iov = &tmpiov[0]; msg.msg_iovlen = nio; diff --git a/src/rx/rx.c b/src/rx/rx.c index 155fdc987..51fbced9b 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -373,47 +373,8 @@ static int rxinit_status = 1; #define UNLOCK_RX_INIT #endif -/* - * Now, rx_InitHost is just a stub for rx_InitAddrs - * Parameters are in network byte order. - */ - int rx_InitHost(u_int host, u_int port) -{ - struct sockaddr_storage saddr; - int type = SOCK_DGRAM, len = sizeof(struct sockaddr_in); - - memset((void *) &saddr, 0, sizeof(saddr)); - rx_ssfamily(&saddr) = AF_INET; - ((struct sockaddr_in *) &saddr)->sin_addr.s_addr = host; - ((struct sockaddr_in *) &saddr)->sin_port = (u_short)port; -#ifdef STRUCT_SOCKADDR_HAS_SA_LEN - ((struct sockaddr_in *) &saddr)->sin_len = sizeof(struct sockaddr_in); -#endif - return rx_InitAddrs(&saddr, &type, &len, 1); -} - -/* - * New API: rx_InitAddrs(struct sockaddr_storage *, int *, int) - * - * Arguments: - * - * struct sockaddr_storage - array of struct sockaddr_storage elements, - * each one listing an interface/protocol to - * be listened on. - * int * - array of integers listing the socket type - * (SOCK_STREAM or SOCK_DGRAM) to be used - * by the corresponding struct sockaddr_storage - * int * - array of integers listing saddr sizes - * int - Number of elements in sockaddr_storage array. - * - * Note that in general only servers should call this function; clients - * should (for now) continue to call rx_Init(). - */ - -int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, int *salens, - int nelem) { #ifdef KERNEL osi_timeval_t tv; @@ -421,10 +382,10 @@ int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, int *salens, struct timeval tv; #endif /* KERNEL */ char *htable, *ptable; - int tmp_status, i; - + int tmp_status; + SPLVAR; - + INIT_PTHREAD_LOCKS; LOCK_RX_INIT; if (rxinit_status == 0) { @@ -439,7 +400,7 @@ int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, int *salens, if (afs_winsockInit() < 0) return -1; #endif - + #ifndef KERNEL /* * Initialize anything necessary to provide a non-premptive threading @@ -447,29 +408,15 @@ int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, int *salens, */ rxi_InitializeThreadSupport(); #endif - + /* Allocate and initialize a socket for client and perhaps server * connections. */ - - rx_socket = OSI_NULLSOCKET; - rx_port = 0; - - for (i = 0; i < nelem; i++) { - switch (types[i]) { - case SOCK_DGRAM: - rx_socket = rxi_GetHostUDPSocket(&saddrs[i], salens[i]); - if (rx_socket == OSI_NULLSOCKET) { - UNLOCK_RX_INIT; - return RX_ADDRINUSE; - } - rx_port = rx_ss2pn(&saddrs[i]); - break; - default: - return RX_INVALID_OPERATION; - } - + + rx_socket = rxi_GetHostUDPSocket(host, (u_short) port); + if (rx_socket == OSI_NULLSOCKET) { + UNLOCK_RX_INIT; + return RX_ADDRINUSE; } - #ifdef RX_ENABLE_LOCKS #ifdef RX_LOCKS_DB rxdb_init(); @@ -532,19 +479,20 @@ int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, int *salens, #else osi_GetTime(&tv); #endif - - if (! rx_port) { + if (port) { + rx_port = port; + } else { #if defined(KERNEL) && !defined(UKERNEL) /* Really, this should never happen in a real kernel */ rx_port = 0; #else - struct sockaddr_storage sn; - socklen_t addrlen = sizeof(sn); - if (getsockname((int)rx_socket, (struct sockaddr *)&sn, &addrlen)) { + struct sockaddr_in addr; + int addrlen = sizeof(addr); + if (getsockname((int)rx_socket, (struct sockaddr *)&addr, &addrlen)) { rx_Finalize(); return -1; } - rx_port = rx_ss2pn(&sn); + rx_port = addr.sin_port; #endif } rx_stats.minRtt.sec = 9999999; @@ -598,7 +546,6 @@ rx_Init(u_int port) return rx_InitHost(htonl(INADDR_ANY), port); } - /* called with unincremented nRequestsRunning to see if it is OK to start * a new thread in this service. Could be "no" for two reasons: over the * max quota, or would prevent others from reaching their min quota. @@ -788,50 +735,22 @@ rx_StartServer(int donateMe) return; } -/* - * Now, rx_NewConnection is just a stub for rx_NewConnectionAddrs() - */ - +/* Create a new client connection to the specified service, using the + * specified security object to implement the security model for this + * connection. */ struct rx_connection * rx_NewConnection(register afs_uint32 shost, u_short sport, u_short sservice, register struct rx_securityClass *securityObject, int serviceSecurityIndex) { - struct sockaddr_in sin; - int len = sizeof(sin), type = SOCK_DGRAM; - - memset((void *) &sin, 0, sizeof(sin)); - - sin.sin_family = AF_INET; - sin.sin_addr.s_addr = shost; - sin.sin_port = sport; - - return rx_NewConnectionAddrs((struct sockaddr_storage *) &sin, &type, - &len, 1, sservice, securityObject, - serviceSecurityIndex); -} - -/* Create a new client connection to the specified service, using the - * specified security object to implement the security model for this - * connection - * - * This follows the same logic as rx_InitAddrs() for the first four - * arguments. - */ -struct rx_connection * -rx_NewConnectionAddrs(struct sockaddr_storage *saddr, int *type, int *slen, - int nelem, u_short sservice, - struct rx_securityClass *securityObject, - int serviceSecurityIndex) -{ - int hashindex, i; + int hashindex; afs_int32 cid; register struct rx_connection *conn; SPLVAR; clock_NewTime(); - dpf(("rx_NewConnection(host %x, port %u, service %u, securityObject %x, serviceSecurityIndex %d)\n", ntohl(rx_ss2v4addr(saddr)), ntohs(rx_ss2pn(saddr)), sservice, securityObject, serviceSecurityIndex)); + dpf(("rx_NewConnection(host %x, port %u, service %u, securityObject %x, serviceSecurityIndex %d)\n", ntohl(shost), ntohs(sport), sservice, securityObject, serviceSecurityIndex)); /* Vasilsi said: "NETPRI protects Cid and Alloc", but can this be true in * the case of kmem_alloc? */ @@ -847,16 +766,7 @@ rx_NewConnectionAddrs(struct sockaddr_storage *saddr, int *type, int *slen, conn->type = RX_CLIENT_CONNECTION; conn->cid = cid; conn->epoch = rx_epoch; - /* - * Right now we're going to just call rxi_FindPeer for UDP connections - * We're only going to support one. - */ - for (i = 0; i < nelem; i++) { - if (type[i] == SOCK_DGRAM) { - conn->peer = rxi_FindPeer(&saddr[i], slen[i], type[i], 0, 1); - break; - } - } + conn->peer = rxi_FindPeer(shost, sport, 0, 1); conn->serviceId = sservice; conn->securityObject = securityObject; /* This doesn't work in all compilers with void (they're buggy), so fake it @@ -1400,17 +1310,7 @@ rx_NewServiceHost(afs_uint32 host, u_short port, u_short serviceId, if (socket == OSI_NULLSOCKET) { /* If we don't already have a socket (from another * service on same port) get a new one */ - struct sockaddr_in sin; - - memset((void *) &sin, 0, sizeof(sin)); - sin.sin_family = AF_INET; - sin.sin_addr.s_addr = htonl(INADDR_ANY); - sin.sin_port = port; -#ifdef STRUCT_SOCKADDR_HAS_SA_LEN - sin.sin_len = sizeof(sin); -#endif - socket = rxi_GetHostUDPSocket((struct sockaddr_storage *) &sin, - sizeof(sin)); + socket = rxi_GetHostUDPSocket(htonl(INADDR_ANY), port); if (socket == OSI_NULLSOCKET) { USERPRI; rxi_FreeService(tservice); @@ -2361,62 +2261,22 @@ rxi_Free(void *addr, register size_t size) * refcount will be be decremented. This is used to replace the peer * structure hanging off a connection structure */ struct rx_peer * -rxi_FindPeer(struct sockaddr_storage *saddr, int slen, int stype, - struct rx_peer *origPeer, int create) +rxi_FindPeer(register afs_uint32 host, register u_short port, + struct rx_peer *origPeer, int create) { register struct rx_peer *pp; - int hashIndex, i, j; - for (i = 0, j = 0; i < slen; i++) - j += ((unsigned char *) saddr)[i]; - hashIndex = j % rx_hashTableSize; + int hashIndex; + hashIndex = PEER_HASH(host, port); MUTEX_ENTER(&rx_peerHashTable_lock); for (pp = rx_peerHashTable[hashIndex]; pp; pp = pp->next) { - if (memcmp(saddr, &pp->saddr, slen) == 0 && stype == pp->socktype) - break; + if ((pp->host == host) && (pp->port == port)) + break; } if (!pp) { - if (create) { - pp = rxi_AllocPeer(); /* This bzero's *pp */ - memcpy(&pp->saddr, saddr, slen); - pp->saddrlen = slen; - pp->socktype = stype; - switch (rx_ssfamily(saddr)) { - case AF_INET: - /* - * Should be enough storage for a dotted quad - */ - snprintf(pp->addrstring, sizeof pp->addrstring, "%d.%d.%d.%d", - rx_ss2addrp(saddr)[0], rx_ss2addrp(saddr)[1], - rx_ss2addrp(saddr)[2], rx_ss2addrp(saddr)[3]); - break; -#ifdef AF_INET6 - case AF_INET6: - /* - * This gets more complicated, unfortunately - */ - if (IN6_IS_ADDR_V4COMPAT(&(rx_ss2sin6(saddr)->sin6_addr))) { - snprintf(pp->addrstring, - sizeof pp->addrstring, "%d.%d.%d.%d", - rx_ss2addrp(saddr)[12], rx_ss2addrp(saddr)[13], - rx_ss2addrp(saddr)[14], rx_ss2addrp(saddr)[15]); - } else { - snprintf(pp->addrstring, - sizeof pp->addrstring, "%x:%x:%x:%x:%x:%x:%x:%x", - ntohs(rx_ss2addrp6(saddr)[0]), - ntohs(rx_ss2addrp6(saddr)[1]), - ntohs(rx_ss2addrp6(saddr)[2]), - ntohs(rx_ss2addrp6(saddr)[3]), - ntohs(rx_ss2addrp6(saddr)[4]), - ntohs(rx_ss2addrp6(saddr)[5]), - ntohs(rx_ss2addrp6(saddr)[6]), - ntohs(rx_ss2addrp6(saddr)[7])); - } - break; -#endif /* AF_INET6 */ - default: - strcpy(pp->addrstring, "??.??.??.??"); - break; - } + if (create) { + pp = rxi_AllocPeer(); /* This bzero's *pp */ + pp->host = host; /* set here or in InitPeerParams is zero */ + pp->port = port; MUTEX_INIT(&pp->peer_lock, "peer_lock", MUTEX_DEFAULT, 0); queue_Init(&pp->congestionQueue); queue_Init(&pp->rpcStats); @@ -2451,8 +2311,8 @@ rxi_FindPeer(struct sockaddr_storage *saddr, int slen, int stype, * server connection is created, it will be created using the supplied * index, if the index is valid for this service */ struct rx_connection * -rxi_FindConnection(osi_socket socket, struct sockaddr_storage *saddr, - int slen, int socktype, u_short serviceId, afs_uint32 cid, +rxi_FindConnection(osi_socket socket, register afs_int32 host, + register u_short port, u_short serviceId, afs_uint32 cid, afs_uint32 epoch, int type, u_int securityIndex) { int hashindex, flag; @@ -2474,11 +2334,9 @@ rxi_FindConnection(osi_socket socket, struct sockaddr_storage *saddr, MUTEX_EXIT(&rx_connHashTable_lock); return (struct rx_connection *)0; } - if (memcmp(&pp->saddr, saddr, slen) == 0 && - socktype == pp->socktype) + if (pp->host == host && pp->port == port) break; - if (type == RX_CLIENT_CONNECTION && - rx_ss2pn(&pp->saddr) == rx_ss2pn(saddr)) + if (type == RX_CLIENT_CONNECTION && pp->port == port) break; /* So what happens when it's a callback connection? */ if ( /*type == RX_CLIENT_CONNECTION && */ @@ -2511,7 +2369,7 @@ rxi_FindConnection(osi_socket socket, struct sockaddr_storage *saddr, CV_INIT(&conn->conn_call_cv, "conn call cv", CV_DEFAULT, 0); conn->next = rx_connHashTable[hashindex]; rx_connHashTable[hashindex] = conn; - conn->peer = rxi_FindPeer(saddr, slen, socktype, 0, 1); + conn->peer = rxi_FindPeer(host, port, 0, 1); conn->type = RX_SERVER_CONNECTION; conn->lastSendTime = clock_Sec(); /* don't GC immediately */ conn->epoch = epoch; @@ -2565,7 +2423,7 @@ int (*rx_almostSent) () = 0; struct rx_packet * rxi_ReceivePacket(register struct rx_packet *np, osi_socket socket, - struct sockaddr_storage *saddr, int slen, int *tnop, + afs_uint32 host, u_short port, int *tnop, struct rx_call **newcallp) { register struct rx_call *call; @@ -2587,29 +2445,36 @@ rxi_ReceivePacket(register struct rx_packet *np, osi_socket socket, packetType = (np->header.type > 0 && np->header.type < RX_N_PACKET_TYPES) ? rx_packetTypes[np->header.type - 1] : "*UNKNOWN*"; dpf(("R %d %s: %x.%d.%d.%d.%d.%d.%d flags %d, packet %x", - np->header.serial, packetType, ntohl(rx_ss2v4addr(saddr)), - ntohs(rx_ss2pn(saddr)), np->header.serviceId, + np->header.serial, packetType, ntohl(host), ntohs(port), np->header.serviceId, np->header.epoch, np->header.cid, np->header.callNumber, np->header.seq, np->header.flags, np)); #endif if (np->header.type == RX_PACKET_TYPE_VERSION) { - return rxi_ReceiveVersionPacket(np, socket, saddr, slen, 1); + return rxi_ReceiveVersionPacket(np, socket, host, port, 1); } if (np->header.type == RX_PACKET_TYPE_DEBUG) { - return rxi_ReceiveDebugPacket(np, socket, saddr, slen, 1); + return rxi_ReceiveDebugPacket(np, socket, host, port, 1); } #ifdef RXDEBUG /* If an input tracer function is defined, call it with the packet and * network address. Note this function may modify its arguments. */ if (rx_justReceived) { - struct sockaddr_in *addr = (struct sockaddr_in *) saddr; + struct sockaddr_in addr; int drop; - drop = (*rx_justReceived) (np, addr); + addr.sin_family = AF_INET; + addr.sin_port = port; + addr.sin_addr.s_addr = host; +#ifdef STRUCT_SOCKADDR_HAS_SA_LEN + addr.sin_len = sizeof(addr); +#endif /* AFS_OSF_ENV */ + drop = (*rx_justReceived) (np, &addr); /* drop packet if return value is non-zero */ if (drop) return np; + port = addr.sin_port; /* in case fcn changed addr */ + host = addr.sin_addr.s_addr; } #endif @@ -2620,9 +2485,9 @@ rxi_ReceivePacket(register struct rx_packet *np, osi_socket socket, /* Find the connection (or fabricate one, if we're the server & if * necessary) associated with this packet */ conn = - rxi_FindConnection(socket, saddr, slen, SOCK_DGRAM, - np->header.serviceId, np->header.cid, - np->header.epoch, type, np->header.securityIndex); + rxi_FindConnection(socket, host, port, np->header.serviceId, + np->header.cid, np->header.epoch, type, + np->header.securityIndex); if (!conn) { /* If no connection found or fabricated, just ignore the packet. @@ -2757,7 +2622,7 @@ rxi_ReceivePacket(register struct rx_packet *np, osi_socket socket, MUTEX_EXIT(&conn->conn_call_lock); *call->callNumber = np->header.callNumber; if (np->header.callNumber == 0) - dpf(("RecPacket call 0 %d %s: %s.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", np->header.serial, rx_packetTypes[np->header.type - 1], rx_AddrStringOf(conn->peer), ntohs(rx_PortOf(conn->peer)), np->header.serial, np->header.epoch, np->header.cid, np->header.callNumber, np->header.seq, np->header.flags, (unsigned long)np, np->retryTime.sec, np->retryTime.usec / 1000, np->length)); + dpf(("RecPacket call 0 %d %s: %x.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", np->header.serial, rx_packetTypes[np->header.type - 1], ntohl(conn->peer->host), ntohs(conn->peer->port), np->header.serial, np->header.epoch, np->header.cid, np->header.callNumber, np->header.seq, np->header.flags, (unsigned long)np, np->retryTime.sec, np->retryTime.usec / 1000, np->length)); call->state = RX_STATE_PRECALL; clock_GetTime(&call->queueTime); @@ -2822,7 +2687,7 @@ rxi_ReceivePacket(register struct rx_packet *np, osi_socket socket, rxi_ResetCall(call, 0); *call->callNumber = np->header.callNumber; if (np->header.callNumber == 0) - dpf(("RecPacket call 0 %d %s: %s.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", np->header.serial, rx_packetTypes[np->header.type - 1], rx_AddrStringOf(conn->peer), ntohs(rx_PortOf(conn->peer)), np->header.serial, np->header.epoch, np->header.cid, np->header.callNumber, np->header.seq, np->header.flags, (unsigned long)np, np->retryTime.sec, np->retryTime.usec / 1000, np->length)); + dpf(("RecPacket call 0 %d %s: %x.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", np->header.serial, rx_packetTypes[np->header.type - 1], ntohl(conn->peer->host), ntohs(conn->peer->port), np->header.serial, np->header.epoch, np->header.cid, np->header.callNumber, np->header.seq, np->header.flags, (unsigned long)np, np->retryTime.sec, np->retryTime.usec / 1000, np->length)); call->state = RX_STATE_PRECALL; clock_GetTime(&call->queueTime); @@ -2983,7 +2848,7 @@ rxi_ReceivePacket(register struct rx_packet *np, osi_socket socket, /* Now do packet type-specific processing */ switch (np->header.type) { case RX_PACKET_TYPE_DATA: - np = rxi_ReceiveDataPacket(call, np, 1, socket, saddr, slen, tnop, + np = rxi_ReceiveDataPacket(call, np, 1, socket, host, port, tnop, newcallp); break; case RX_PACKET_TYPE_ACK: @@ -3227,8 +3092,8 @@ TryAttach(register struct rx_call *acall, register osi_socket socket, struct rx_packet * rxi_ReceiveDataPacket(register struct rx_call *call, register struct rx_packet *np, int istack, - osi_socket socket, struct sockaddr_storage *saddr, - int slen, int *tnop, struct rx_call **newcallp) + osi_socket socket, afs_uint32 host, u_short port, + int *tnop, struct rx_call **newcallp) { int ackNeeded = 0; /* 0 means no, otherwise ack_reason */ int newPackets = 0; @@ -3299,7 +3164,7 @@ rxi_ReceiveDataPacket(register struct rx_call *call, /* The RX_JUMBO_PACKET is set in all but the last packet in each * AFS 3.5 jumbogram. */ if (flags & RX_JUMBO_PACKET) { - tnp = rxi_SplitJumboPacket(np, saddr, slen, isFirst); + tnp = rxi_SplitJumboPacket(np, host, port, isFirst); } else { tnp = NULL; } @@ -6432,9 +6297,9 @@ rx_PrintStats(FILE * file) void rx_PrintPeerStats(FILE * file, struct rx_peer *peer) { -/* fprintf(file, "Peer %x.%d. " "Burst size %d, " "burst wait %u.%d.\n", + fprintf(file, "Peer %x.%d. " "Burst size %d, " "burst wait %u.%d.\n", ntohl(peer->host), (int)peer->port, (int)peer->burstSize, - (int)peer->burstWait.sec, (int)peer->burstWait.usec); */ + (int)peer->burstWait.sec, (int)peer->burstWait.usec); fprintf(file, " Rtt %d, " "retry time %u.%06d, " "total sent %d, " @@ -7064,7 +6929,7 @@ rxi_AddRpcStat(struct rx_queue *stats, afs_uint32 rxInterface, afs_uint32 currentFunc, afs_uint32 totalFunc, struct clock *queueTime, struct clock *execTime, afs_hyper_t * bytesSent, afs_hyper_t * bytesRcvd, int isServer, - struct sockaddr_storage *saddr, + afs_uint32 remoteHost, afs_uint32 remotePort, int addToPeerList, unsigned int *counter) { int rc = 0; @@ -7102,19 +6967,8 @@ rxi_AddRpcStat(struct rx_queue *stats, afs_uint32 rxInterface, } *counter += totalFunc; for (i = 0; i < totalFunc; i++) { - switch (rx_ssfamily(saddr)) { - case AF_INET: - rpc_stat->stats[i].remote_peer = - rx_ss2sin(saddr)->sin_addr.s_addr; - break; - default: -#ifdef AF_INET6 - case AF_INET6: - rpc_stat->stats[i].remote_peer = 0xffffffff; - break; -#endif /* AF_INET6 */ - } - rpc_stat->stats[i].remote_port = rx_ss2pn(saddr); + rpc_stat->stats[i].remote_peer = remoteHost; + rpc_stat->stats[i].remote_port = remotePort; rpc_stat->stats[i].remote_is_server = isServer; rpc_stat->stats[i].interfaceId = rxInterface; rpc_stat->stats[i].func_total = totalFunc; @@ -7217,18 +7071,13 @@ rx_IncrementTimeAndCount(struct rx_peer *peer, afs_uint32 rxInterface, if (rxi_monitor_peerStats) { rxi_AddRpcStat(&peer->rpcStats, rxInterface, currentFunc, totalFunc, queueTime, execTime, bytesSent, bytesRcvd, isServer, - &peer->saddr, 1, &rxi_rpc_peer_stat_cnt); + peer->host, peer->port, 1, &rxi_rpc_peer_stat_cnt); } if (rxi_monitor_processStats) { - struct sockaddr_in sin; - sin.sin_family = AF_INET; - sin.sin_addr.s_addr = 0xffffffff; - sin.sin_port = 0xffff; rxi_AddRpcStat(&processStats, rxInterface, currentFunc, totalFunc, queueTime, execTime, bytesSent, bytesRcvd, isServer, - (struct sockaddr_storage *) &sin, 0, - &rxi_rpc_process_stat_cnt); + 0xffffffff, 0xffffffff, 0, &rxi_rpc_process_stat_cnt); } MUTEX_EXIT(&peer->peer_lock); diff --git a/src/rx/rx.h b/src/rx/rx.h index f17a87d96..016fe7db2 100644 --- a/src/rx/rx.h +++ b/src/rx/rx.h @@ -98,7 +98,7 @@ #ifndef KERNEL typedef void (*rx_destructor_t) (void *); int rx_KeyCreate(rx_destructor_t); -osi_socket rxi_GetHostUDPSocket(struct sockaddr_storage *saddr, int salen); +osi_socket rxi_GetHostUDPSocket(u_int host, u_short port); osi_socket rxi_GetUDPSocket(u_short port); #endif /* KERNEL */ @@ -110,18 +110,8 @@ int ntoh_syserr_conv(int error); #define rx_ConnectionOf(call) ((call)->conn) #define rx_PeerOf(conn) ((conn)->peer) -#ifdef AF_INET6 -#define rx_HostOf(peer) ((peer)->saddr.ss_family == AF_INET ? \ - ((struct sockaddr_in *) &(peer)->saddr)->sin_addr.s_addr : \ - 0xffffffff) -#define rx_PortOf(peer) ((peer)->saddr.ss_family == AF_INET ? \ - ((struct sockaddr_in *) &(peer)->saddr)->sin_port : \ - ((struct sockaddr_in6 *) &(peer)->saddr)->sin6_port) -#else /* AF_INET6 */ -#define rx_HostOf(peer) (((struct sockaddr_in *) &(peer)->saddr)->sin_addr.saddr) -#define rx_PortOf(peer) (((struct sockaddr_in *) &(peer)->saddr)->sin_port) -#endif /* AF_INET6 */ -#define rx_AddrStringOf(peer) ((peer)->addrstring) +#define rx_HostOf(peer) ((peer)->host) +#define rx_PortOf(peer) ((peer)->port) #define rx_SetLocalStatus(call, status) ((call)->localStatus = (status)) #define rx_GetLocalStatus(call, status) ((call)->localStatus) #define rx_GetRemoteStatus(call) ((call)->remoteStatus) @@ -358,10 +348,6 @@ struct rx_serverQueueEntry { osi_socket *socketp; }; -/* If we don't support IPv6, use this as a fallback */ -#ifndef INET6_ADDRSTRLEN -#define INET6_ADDRSTRLEN 46 -#endif /* INET6_ADDRSTRLEN */ /* A peer refers to a peer process, specified by a (host,port) pair. There may be more than one peer on a given host. */ #ifdef KDUMP_RX_LOCK @@ -374,10 +360,8 @@ struct rx_peer { #ifdef RX_ENABLE_LOCKS afs_kmutex_t peer_lock; /* Lock peer */ #endif /* RX_ENABLE_LOCKS */ - struct sockaddr_storage saddr; /* Remote address structure */ - int saddrlen; /* Length of saddr */ - int socktype; /* Socket type (SOCK_DGRAM, etc) */ - char addrstring[INET6_ADDRSTRLEN]; /* Printable address format */ + afs_uint32 host; /* Remote IP address, in net byte order */ + u_short port; /* Remote UDP port, in net byte order */ /* interface mtu probably used for this host - includes RX Header */ u_short ifMTU; /* doesn't include IP header */ @@ -1051,27 +1035,7 @@ typedef struct rx_interface_stat { #define RX_STATS_SERVICE_ID 409 -/* - * Definitions for handling struct sockaddr_storage casts, and IPv6 - */ -#ifdef AF_INET6 -#define rx_ss2pn(x) ((x)->ss_family == AF_INET6 ? \ - ((struct sockaddr_in6 *) (x))->sin6_port : \ - ((struct sockaddr_in *) (x))->sin_port) -#define rx_ss2sin6(x) ((struct sockaddr_in6 *) (x)) -#define rx_ssfamily(x) ((x)->ss_family) -#define rx_ss2addrp6(x) ((afs_uint16 *) &(((struct sockaddr_in6 *) (x))->sin6_addr.s6_addr)) -#define rx_ss2v4addr(x) ((x)->ss_family == AF_INET ? \ - ((struct sockaddr_in *) (x))->sin_addr.s_addr : \ - 0xffffffff) -#else /* AF_INET6 */ -#define rx_ss2pn(x) (((struct sockaddr_in *) (x))->sin_port) -#define rx_ssfamily(x) (((struct sockaddr_in *) (x))->sin_family) -#define rx_ss2v4addr(x) (((struct sockaddr_in *) (x))->sin_addr.s_addr) -#endif /* AF_INET6 */ -#define rx_ss2sin(x) ((struct sockaddr_in *) (x)) -#define rx_ss2addrp(x) ((unsigned char *) &(((struct sockaddr_in *) (x))->sin_addr.s_addr)) #endif /* _RX_ End of rx.h */ diff --git a/src/rx/rx_globals.h b/src/rx/rx_globals.h index c8de2acec..736719843 100644 --- a/src/rx/rx_globals.h +++ b/src/rx/rx_globals.h @@ -493,9 +493,7 @@ EXT afs_kmutex_t rx_connHashTable_lock; #define CONN_HASH(host, port, cid, epoch, type) ((((cid)>>RX_CIDSHIFT)%rx_hashTableSize)) -#if 0 #define PEER_HASH(host, port) ((host ^ port) % rx_hashTableSize) -#endif /* Forward definitions of internal procedures */ #define rxi_ChallengeOff(conn) rxevent_Cancel((conn)->challengeEvent, (struct rx_call*)0, 0); diff --git a/src/rx/rx_kcommon.c b/src/rx/rx_kcommon.c index 37997dbcc..a63c279e6 100644 --- a/src/rx/rx_kcommon.c +++ b/src/rx/rx_kcommon.c @@ -30,7 +30,7 @@ int (*rxk_PacketArrivalProc) (struct rx_packet * ahandle, struct sockaddr_in * a int (*rxk_GetPacketProc) (struct rx_packet **ahandle, int asize); #endif -osi_socket *rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen); +osi_socket *rxk_NewSocketHost(afs_uint32 ahost, short aport); extern struct interfaceAddr afs_cb_interface; rxk_ports_t rxk_ports; @@ -108,29 +108,20 @@ rxk_shutdownPorts(void) } osi_socket -rxi_GetHostUDPSocket(struct sockaddr_storage *saddr, int salen) +rxi_GetHostUDPSocket(u_int host, u_short port) { osi_socket *sockp; - sockp = (osi_socket *)rxk_NewSocketHost(saddr, salen); + sockp = (osi_socket *)rxk_NewSocketHost(host, port); if (sockp == (osi_socket *)0) return OSI_NULLSOCKET; - rxk_AddPort(rx_ss2pn(saddr), (char *)sockp); + rxk_AddPort(port, (char *)sockp); return (osi_socket) sockp; } osi_socket rxi_GetUDPSocket(u_short port) { - struct sockaddr_storage saddr; - struct sockaddr_in *sin = (struct sockaddr_in *) &saddr; - - memset((void *) &saddr, 0, sizeof(saddr)); - - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = htonl(INADDR_ANY); - sin->sin_port = port; - - return rxi_GetHostUDPSocket(&saddr, sizeof(struct sockaddr_in)); + return rxi_GetHostUDPSocket(htonl(INADDR_ANY), port); } #if !defined(AFS_LINUX26_ENV) @@ -359,8 +350,9 @@ MyArrivalProc(struct rx_packet *ahandle, ahandle->length = asize - RX_HEADER_SIZE; rxi_DecodePacketHeader(ahandle); ahandle = - rxi_ReceivePacket(ahandle, arock, (struct sockaddr_storage *) afrom, - NULL, NULL); + rxi_ReceivePacket(ahandle, arock, + afrom->sin_addr.s_addr, afrom->sin_port, NULL, + NULL); /* free the packet if it has been returned */ if (ahandle) @@ -391,7 +383,7 @@ rxi_InitPeerParams(register struct rx_peer *pp) #ifdef ADAPT_MTU #ifndef AFS_SUN5_ENV #ifdef AFS_USERSPACE_IP_ADDR - i = rxi_Findcbi(rx_HostOf(pp)); + i = rxi_Findcbi(pp->host); if (i == -1) { pp->timeout.sec = 3; /* pp->timeout.usec = 0; */ @@ -421,7 +413,7 @@ rxi_InitPeerParams(register struct rx_peer *pp) (void)rxi_GetIFInfo(); #endif - ifn = rxi_FindIfnet(rx_HostOf(pp), NULL); + ifn = rxi_FindIfnet(pp->host, NULL); if (ifn) { pp->timeout.sec = 2; /* pp->timeout.usec = 0; */ @@ -447,7 +439,7 @@ rxi_InitPeerParams(register struct rx_peer *pp) } #endif /* else AFS_USERSPACE_IP_ADDR */ #else /* AFS_SUN5_ENV */ - mtu = rxi_FindIfMTU(rx_HostOf(pp)); + mtu = rxi_FindIfMTU(pp->host); if (mtu <= 0) { pp->timeout.sec = 3; @@ -851,7 +843,7 @@ rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp) * in network byte order. */ osi_socket * -rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) +rxk_NewSocketHost(afs_uint32 ahost, short aport) { register afs_int32 code; #ifdef AFS_DARWIN80_ENV @@ -862,6 +854,7 @@ rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) #if (!defined(AFS_HPUX1122_ENV) && !defined(AFS_FBSD50_ENV)) struct mbuf *nam; #endif + struct sockaddr_in myaddr; #ifdef AFS_HPUX110_ENV /* prototype copied from kernel source file streams/str_proto.h */ extern MBLKP allocb_wait(int, int); @@ -885,7 +878,7 @@ rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) /* we need a file associated with the socket so sosend in NetSend * will not fail */ /* blocking socket */ - code = socreate(rx_ssfamily(saddr), &newSocket, SOCK_DGRAM, 0, 0); + code = socreate(AF_INET, &newSocket, SOCK_DGRAM, 0, 0); fp = falloc(); if (!fp) goto bad; @@ -897,32 +890,38 @@ rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) newSocket->so_fp = (void *)fp; #else /* AFS_HPUX110_ENV */ - code = socreate(rx_ssfamilty(saddr), &newSocket, SOCK_DGRAM, 0, SS_NOWAIT); + code = socreate(AF_INET, &newSocket, SOCK_DGRAM, 0, SS_NOWAIT); #endif /* else AFS_HPUX110_ENV */ #elif defined(AFS_SGI65_ENV) || defined(AFS_OBSD_ENV) - code = socreate(rx_ssfamily(saddr), &newSocket, SOCK_DGRAM, IPPROTO_UDP); + code = socreate(AF_INET, &newSocket, SOCK_DGRAM, IPPROTO_UDP); #elif defined(AFS_FBSD50_ENV) - code = socreate(rx_ssfamily(saddr), &newSocket, SOCK_DGRAM, IPPROTO_UDP, + code = socreate(AF_INET, &newSocket, SOCK_DGRAM, IPPROTO_UDP, afs_osi_credp, curthread); #elif defined(AFS_FBSD40_ENV) - code = socreate(rx_ssfamily(saddr), &newSocket, SOCK_DGRAM, IPPROTO_UDP, - curproc); + code = socreate(AF_INET, &newSocket, SOCK_DGRAM, IPPROTO_UDP, curproc); #elif defined(AFS_DARWIN80_ENV) - code = sock_socket(rx_ssfamily(saddr), SOCK_DGRAM, IPPROTO_UDP, NULL, NULL, - &newSocket); + code = sock_socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP, NULL, NULL, &newSocket); #else - code = socreate(rx_ssfamily(saddr), &newSocket, SOCK_DGRAM, 0); + code = socreate(AF_INET, &newSocket, SOCK_DGRAM, 0); #endif /* AFS_HPUX102_ENV */ if (code) goto bad; + memset(&myaddr, 0, sizeof myaddr); + myaddr.sin_family = AF_INET; + myaddr.sin_port = aport; + myaddr.sin_addr.s_addr = ahost; +#ifdef STRUCT_SOCKADDR_HAS_SA_LEN + myaddr.sin_len = sizeof(myaddr); +#endif + #ifdef AFS_HPUX110_ENV bindnam = allocb_wait((addrsize + SO_MSGOFFSET + 1), BPRI_MED); if (!bindnam) { setuerror(ENOBUFS); goto bad; } - memcpy((caddr_t) bindnam->b_rptr + SO_MSGOFFSET, (caddr_t) addr, + memcpy((caddr_t) bindnam->b_rptr + SO_MSGOFFSET, (caddr_t) & myaddr, addrsize); bindnam->b_wptr = bindnam->b_rptr + (addrsize + SO_MSGOFFSET + 1); @@ -963,11 +962,11 @@ rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) #endif #if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV) #if defined(AFS_FBSD50_ENV) - code = sobind(newSocket, (struct sockaddr *) saddr, curthread); + code = sobind(newSocket, (struct sockaddr *)&myaddr, curthread); #elif defined(AFS_FBSD40_ENV) - code = sobind(newSocket, (struct sockaddr *) saddr, curproc); + code = sobind(newSocket, (struct sockaddr *)&myaddr, curproc); #else - code = sobind(newSocket, (struct sockaddr *) saddr); + code = sobind(newSocket, (struct sockaddr *)&myaddr); #endif if (code) { dpf(("sobind fails (%d)\n", (int)code)); @@ -987,8 +986,8 @@ rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) #endif goto bad; } - nam->m_len = salen; - memcpy(mtod(nam, caddr_t), saddr, salen); + nam->m_len = sizeof(myaddr); + memcpy(mtod(nam, caddr_t), &myaddr, sizeof(myaddr)); #ifdef AFS_SGI65_ENV BHV_PDATA(&bhv) = (void *)newSocket; code = sobind(&bhv, nam); @@ -1024,16 +1023,7 @@ rxk_NewSocketHost(struct sockaddr_storage *saddr, int salen) osi_socket * rxk_NewSocket(short aport) { - struct sockaddr_storage saddr; - struct sockaddr_in *sin = (struct sockaddr_in *) &saddr; - - memset((void *) &saddr, 0, sizeof(saddr)); - - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = 0; - sin->sin_port = aport; - - return rxk_NewSocketHost(&saddr, sizeof(struct sockaddr_in)); + return rxk_NewSocketHost(0, aport); } /* free socket allocated by rxk_NewSocket */ @@ -1110,10 +1100,10 @@ afs_rxevent_daemon(void) /* rxk_ReadPacket returns 1 if valid packet, 0 on error. */ int -rxk_ReadPacket(osi_socket so, struct rx_packet *p, - struct sockaddr_storage *saddr, int *slen) +rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host, int *port) { int code; + struct sockaddr_in from; int nbytes; afs_int32 rlen; register afs_int32 tlen; @@ -1149,8 +1139,7 @@ rxk_ReadPacket(osi_socket so, struct rx_packet *p, AFS_GUNLOCK(); } #endif - code = osi_NetReceive(rx_socket, saddr, slen, p->wirevec, p->niovecs, - &nbytes); + code = osi_NetReceive(rx_socket, &from, p->wirevec, p->niovecs, &nbytes); #ifdef RX_KERNEL_TRACE if (ICL_SETACTIVE(afs_iclSetp)) { @@ -1169,26 +1158,18 @@ rxk_ReadPacket(osi_socket so, struct rx_packet *p, if (nbytes <= 0) { MUTEX_ENTER(&rx_stats_mutex); rx_stats.bogusPacketOnRead++; - switch (rx_ssfamily(saddr)) { - case AF_INET: - rx_stats.bogusHost = rx_ss2sin(saddr)->sin_addr.s_addr; - break; - default: -#ifdef AF_INET6 - case AF_INET6: -#endif /* AF_INET6 */ - rx_stats.bogusHost = 0xffffffff; - } + rx_stats.bogusHost = from.sin_addr.s_addr; MUTEX_EXIT(&rx_stats_mutex); dpf(("B: bogus packet from [%x,%d] nb=%d", - ntohl(rx_ss2v4addr(saddr)), ntohs(rx_ss2pn(saddr)), - nbytes)); + from.sin_addr.s_addr, from.sin_port, nbytes)); } return -1; } else { /* Extract packet header. */ rxi_DecodePacketHeader(p); + *host = from.sin_addr.s_addr; + *port = from.sin_port; if (p->header.type > 0 && p->header.type < RX_N_PACKET_TYPES) { MUTEX_ENTER(&rx_stats_mutex); rx_stats.packetsRead[p->header.type - 1]++; @@ -1243,8 +1224,8 @@ rxk_Listener(void) #endif /* AFS_SUN5_ENV */ { struct rx_packet *rxp = NULL; - struct sockaddr_storage saddr; - int code, slen; + int code; + int host, port; #ifdef AFS_LINUX20_ENV rxk_ListenerPid = current->pid; @@ -1271,8 +1252,8 @@ rxk_Listener(void) if (!rxp) osi_Panic("rxk_Listener: No more Rx buffers!\n"); } - if (!(code = rxk_ReadPacket(rx_socket, rxp, &saddr, &slen))) { - rxp = rxi_ReceivePacket(rxp, rx_socket, &saddr, slen, 0, 0); + if (!(code = rxk_ReadPacket(rx_socket, rxp, &host, &port))) { + rxp = rxi_ReceivePacket(rxp, rx_socket, host, port, 0, 0); } } diff --git a/src/rx/rx_lwp.c b/src/rx/rx_lwp.c index 40b01dbfe..486141061 100644 --- a/src/rx/rx_lwp.c +++ b/src/rx/rx_lwp.c @@ -163,8 +163,8 @@ rxi_StartListener(void) static void rxi_ListenerProc(fd_set * rfds, int *tnop, struct rx_call **newcallp) { - struct sockaddr_storage saddr; - int slen; + afs_uint32 host; + u_short port; register struct rx_packet *p = (struct rx_packet *)0; osi_socket socket; struct clock cv; @@ -274,10 +274,9 @@ rxi_ListenerProc(fd_set * rfds, int *tnop, struct rx_call **newcallp) #ifdef AFS_NT40_ENV for (i = 0; p && i < rfds->fd_count; i++) { socket = rfds->fd_array[i]; - slen = sizeof(saddr); - if (rxi_ReadPacket(socket, p, &saddr, &slen)) { + if (rxi_ReadPacket(socket, p, &host, &port)) { *newcallp = NULL; - p = rxi_ReceivePacket(p, socket, &saddr, slen, tnop, + p = rxi_ReceivePacket(p, socket, host, port, tnop, newcallp); if (newcallp && *newcallp) { if (p) { @@ -296,9 +295,8 @@ rxi_ListenerProc(fd_set * rfds, int *tnop, struct rx_call **newcallp) p && socket <= rx_maxSocketNumber; socket++) { if (!FD_ISSET(socket, rfds)) continue; - slen = sizeof(saddr); - if (rxi_ReadPacket(socket, p, &saddr, &slen)) { - p = rxi_ReceivePacket(p, socket, &saddr, slen, tnop, + if (rxi_ReadPacket(socket, p, &host, &port)) { + p = rxi_ReceivePacket(p, socket, host, port, tnop, newcallp); if (newcallp && *newcallp) { if (p) { diff --git a/src/rx/rx_packet.c b/src/rx/rx_packet.c index 804cf383b..64b79f108 100644 --- a/src/rx/rx_packet.c +++ b/src/rx/rx_packet.c @@ -112,7 +112,7 @@ extern int (*rx_almostSent) (); static int AllocPacketBufs(int class, int num_pkts, struct rx_queue *q); static void rxi_SendDebugPacket(struct rx_packet *apacket, osi_socket asocket, - struct sockaddr_storage *saddr, int slen, + afs_int32 ahost, short aport, afs_int32 istack); static int rxi_FreeDataBufsToQueue(struct rx_packet *p, int first, @@ -1350,9 +1350,10 @@ CountFDs(register int amax) * the data length of the packet is stored in the packet structure. * The header is decoded. */ int -rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, - struct sockaddr_storage *saddr, int *slen) +rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, afs_uint32 * host, + u_short * port) { + struct sockaddr_in from; int nbytes; afs_int32 rlen; register afs_int32 tlen, savelen; @@ -1382,12 +1383,11 @@ rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, p->wirevec[p->niovecs - 1].iov_len += RX_EXTRABUFFERSIZE; memset((char *)&msg, 0, sizeof(msg)); - msg.msg_name = (char *)saddr; - msg.msg_namelen = *slen; + msg.msg_name = (char *)&from; + msg.msg_namelen = sizeof(struct sockaddr_in); msg.msg_iov = p->wirevec; msg.msg_iovlen = p->niovecs; nbytes = rxi_Recvmsg(socket, &msg, 0); - *slen = msg.msg_namelen; /* restore the vec to its correct state */ p->wirevec[p->niovecs - 1].iov_len = savelen; @@ -1401,20 +1401,10 @@ rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, } else if (nbytes <= 0) { MUTEX_ENTER(&rx_stats_mutex); rx_stats.bogusPacketOnRead++; - switch (rx_ssfamily(saddr)) { - case AF_INET: - rx_stats.bogusHost = rx_ss2sin(saddr)->sin_addr.s_addr; - break; - default: -#ifdef AF_INET6 - case AF_INET6: -#endif /* AF_INET6 */ - rx_stats.bogusHost = 0xffffffff; - break; - } + rx_stats.bogusHost = from.sin_addr.s_addr; MUTEX_EXIT(&rx_stats_mutex); - dpf(("B: bogus packet from [%x,%d] nb=%d", - ntohl(rx_ss2v4addr(saddr)), ntohs(rx_ss2pn(saddr)), nbytes)); + dpf(("B: bogus packet from [%x,%d] nb=%d", ntohl(from.sin_addr.s_addr), + ntohs(from.sin_port), nbytes)); } return 0; } @@ -1423,8 +1413,11 @@ rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, && (random() % 100 < rx_intentionallyDroppedOnReadPer100)) { rxi_DecodePacketHeader(p); + *host = from.sin_addr.s_addr; + *port = from.sin_port; + dpf(("Dropped %d %s: %x.%u.%u.%u.%u.%u.%u flags %d len %d", - p->header.serial, rx_packetTypes[p->header.type - 1], ntohl(rx_ss2v4addr(saddr)), ntohs(rx_ss2pn(saddr)), p->header.serial, + p->header.serial, rx_packetTypes[p->header.type - 1], ntohl(*host), ntohs(*port), p->header.serial, p->header.epoch, p->header.cid, p->header.callNumber, p->header.seq, p->header.flags, p->length)); rxi_TrimDataBufs(p, 1); @@ -1435,6 +1428,8 @@ rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, /* Extract packet header. */ rxi_DecodePacketHeader(p); + *host = from.sin_addr.s_addr; + *port = from.sin_port; if (p->header.type > 0 && p->header.type < RX_N_PACKET_TYPES) { struct rx_peer *peer; MUTEX_ENTER(&rx_stats_mutex); @@ -1451,7 +1446,7 @@ rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, * and this packet was an rxdebug packet, the peer structure would * never be cleaned up. */ - peer = rxi_FindPeer(saddr, *slen, SOCK_DGRAM, 0, 0); + peer = rxi_FindPeer(*host, *port, 0, 0); /* Since this may not be associated with a connection, * it may have no refCount, meaning we could race with * ReapConnections @@ -1481,8 +1476,8 @@ rxi_ReadPacket(osi_socket socket, register struct rx_packet *p, * last two pad bytes. */ struct rx_packet * -rxi_SplitJumboPacket(register struct rx_packet *p, - struct sockaddr_storage *saddr, int slen, int first) +rxi_SplitJumboPacket(register struct rx_packet *p, afs_int32 host, short port, + int first) { struct rx_packet *np; struct rx_jumboHeader *jp; @@ -1544,8 +1539,8 @@ rxi_SplitJumboPacket(register struct rx_packet *p, #ifndef KERNEL /* Send a udp datagram */ int -osi_NetSend(osi_socket socket, void *addr, int addrlen, struct iovec *dvec, - int nvecs, int length, int istack) +osi_NetSend(osi_socket socket, void *addr, struct iovec *dvec, int nvecs, + int length, int istack) { struct msghdr msg; int ret; @@ -1554,7 +1549,7 @@ osi_NetSend(osi_socket socket, void *addr, int addrlen, struct iovec *dvec, msg.msg_iov = dvec; msg.msg_iovlen = nvecs; msg.msg_name = addr; - msg.msg_namelen = addrlen; + msg.msg_namelen = sizeof(struct sockaddr_in); ret = rxi_Sendmsg(socket, &msg, 0); @@ -1712,7 +1707,7 @@ rx_mb_to_packet(amb, free, hdr_len, data_len, phandle) struct rx_packet * rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, - struct sockaddr_storage *saddr, int slen, int istack) + afs_int32 ahost, short aport, int istack) { struct rx_debugIn tin; afs_int32 tl; @@ -1765,7 +1760,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, rx_packetwrite(ap, 0, sizeof(struct rx_debugStats), (char *)&tstat); ap->length = sizeof(struct rx_debugStats); - rxi_SendDebugPacket(ap, asocket, saddr, slen, istack); + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); rx_computelen(ap, ap->length); } break; @@ -1806,18 +1801,8 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, for (tc = rx_connHashTable[i]; tc; tc = tc->next) { if ((all || rxi_IsConnInteresting(tc)) && tin.index-- <= 0) { - switch (rx_ssfamily(&tc->peer->saddr)) { - case AF_INET: - tconn.host = rx_ss2sin(&tc->peer->saddr)->sin_addr.s_addr; - break; - default: -#ifdef AF_INET6 - case AF_INET6: -#endif /* AF_INET6 */ - tconn.host = 0xffffffff; - break; - } - tconn.port = rx_ss2pn(&tc->peer->saddr); + tconn.host = tc->peer->host; + tconn.port = tc->peer->port; tconn.cid = htonl(tc->cid); tconn.epoch = htonl(tc->epoch); tconn.serial = htonl(tc->serial); @@ -1868,7 +1853,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, (char *)&tconn); tl = ap->length; ap->length = sizeof(struct rx_debugConn); - rxi_SendDebugPacket(ap, asocket, saddr, slen, + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; return ap; @@ -1882,7 +1867,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, (char *)&tconn); tl = ap->length; ap->length = sizeof(struct rx_debugConn); - rxi_SendDebugPacket(ap, asocket, saddr, slen, istack); + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; break; } @@ -1924,18 +1909,8 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, MUTEX_ENTER(&rx_peerHashTable_lock); for (tp = rx_peerHashTable[i]; tp; tp = tp->next) { if (tin.index-- <= 0) { - switch (rx_ssfamily(&tp->saddr)) { - case AF_INET: - tpeer.host = rx_ss2sin(&tp->saddr)->sin_addr.s_addr; - break; - default: -#ifdef AF_INET6 - case AF_INET6: -#endif /* AF_INET6 */ - tpeer.host = 0xffffffff; - break; - } - tpeer.port = rx_ss2pn(&tp->saddr); + tpeer.host = tp->host; + tpeer.port = tp->port; tpeer.ifMTU = htons(tp->ifMTU); tpeer.idleWhen = htonl(tp->idleWhen); tpeer.refCount = htons(tp->refCount); @@ -1972,7 +1947,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, (char *)&tpeer); tl = ap->length; ap->length = sizeof(struct rx_debugPeer); - rxi_SendDebugPacket(ap, asocket, saddr, slen, + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; return ap; @@ -1986,7 +1961,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, (char *)&tpeer); tl = ap->length; ap->length = sizeof(struct rx_debugPeer); - rxi_SendDebugPacket(ap, asocket, saddr, slen, istack); + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; break; } @@ -2010,7 +1985,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, tl = ap->length; ap->length = sizeof(rx_stats); MUTEX_EXIT(&rx_stats_mutex); - rxi_SendDebugPacket(ap, asocket, saddr, slen, istack); + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; break; } @@ -2022,7 +1997,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, rx_packetwrite(ap, 0, sizeof(struct rx_debugIn), (char *)&tin); tl = ap->length; ap->length = sizeof(struct rx_debugIn); - rxi_SendDebugPacket(ap, asocket, saddr, slen, istack); + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; break; } @@ -2031,7 +2006,7 @@ rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, struct rx_packet * rxi_ReceiveVersionPacket(register struct rx_packet *ap, osi_socket asocket, - struct sockaddr_storage *saddr, int slen, int istack) + afs_int32 ahost, short aport, int istack) { afs_int32 tl; @@ -2049,7 +2024,7 @@ rxi_ReceiveVersionPacket(register struct rx_packet *ap, osi_socket asocket, rx_packetwrite(ap, 0, 65, buf); tl = ap->length; ap->length = 65; - rxi_SendDebugPacket(ap, asocket, saddr, slen, istack); + rxi_SendDebugPacket(ap, asocket, ahost, aport, istack); ap->length = tl; } @@ -2060,8 +2035,9 @@ rxi_ReceiveVersionPacket(register struct rx_packet *ap, osi_socket asocket, /* send a debug packet back to the sender */ static void rxi_SendDebugPacket(struct rx_packet *apacket, osi_socket asocket, - struct sockaddr_storage *saddr, int slen, afs_int32 istack) + afs_int32 ahost, short aport, afs_int32 istack) { + struct sockaddr_in taddr; int i; int nbytes; int saven = 0; @@ -2070,6 +2046,13 @@ rxi_SendDebugPacket(struct rx_packet *apacket, osi_socket asocket, int waslocked = ISAFS_GLOCK(); #endif + taddr.sin_family = AF_INET; + taddr.sin_port = aport; + taddr.sin_addr.s_addr = ahost; +#ifdef STRUCT_SOCKADDR_HAS_SA_LEN + taddr.sin_len = sizeof(struct sockaddr_in); +#endif + /* We need to trim the niovecs. */ nbytes = apacket->length; for (i = 1; i < apacket->niovecs; i++) { @@ -2096,7 +2079,7 @@ rxi_SendDebugPacket(struct rx_packet *apacket, osi_socket asocket, #endif #endif /* debug packets are not reliably delivered, hence the cast below. */ - (void)osi_NetSend(asocket, saddr, slen, apacket->wirevec, apacket->niovecs, + (void)osi_NetSend(asocket, &taddr, apacket->wirevec, apacket->niovecs, apacket->length + RX_HEADER_SIZE, istack); #ifdef KERNEL #ifdef RX_KERNEL_TRACE @@ -2130,11 +2113,18 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn, int waslocked; #endif int code; + struct sockaddr_in addr; register struct rx_peer *peer = conn->peer; osi_socket socket; #ifdef RXDEBUG char deliveryType = 'S'; #endif + /* The address we're sending the packet to */ + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_port = peer->port; + addr.sin_addr.s_addr = peer->host; + /* This stuff should be revamped, I think, so that most, if not * all, of the header stuff is always added here. We could * probably do away with the encode/decode routines. XXXXX */ @@ -2159,7 +2149,7 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn, /* If an output tracer function is defined, call it with the packet and * network address. Note this function may modify its arguments. */ if (rx_almostSent) { - int drop = (*rx_almostSent) (p, &peer->saddr); + int drop = (*rx_almostSent) (p, &addr); /* drop packet if return value is non-zero? */ if (drop) deliveryType = 'D'; /* Drop the packet */ @@ -2206,9 +2196,8 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn, #endif #endif if ((code = - osi_NetSend(socket, &peer->saddr, peer->saddrlen, p->wirevec, - p->niovecs, p->length + RX_HEADER_SIZE, - istack)) != 0) { + osi_NetSend(socket, &addr, p->wirevec, p->niovecs, + p->length + RX_HEADER_SIZE, istack)) != 0) { /* send failed, so let's hurry up the resend, eh? */ MUTEX_ENTER(&rx_stats_mutex); rx_stats.netSendFailures++; @@ -2252,7 +2241,7 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn, #endif #ifdef RXDEBUG } - dpf(("%c %d %s: %s.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", deliveryType, p->header.serial, rx_packetTypes[p->header.type - 1], rx_AddrStringOf(peer), ntohs(rx_PortOf(peer)), p->header.serial, p->header.epoch, p->header.cid, p->header.callNumber, p->header.seq, p->header.flags, (unsigned long)p, p->retryTime.sec, p->retryTime.usec / 1000, p->length)); + dpf(("%c %d %s: %x.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", deliveryType, p->header.serial, rx_packetTypes[p->header.type - 1], ntohl(peer->host), ntohs(peer->port), p->header.serial, p->header.epoch, p->header.cid, p->header.callNumber, p->header.seq, p->header.flags, (unsigned long)p, p->retryTime.sec, p->retryTime.usec / 1000, p->length)); #endif MUTEX_ENTER(&rx_stats_mutex); rx_stats.packetsSent[p->header.type - 1]++; @@ -2272,6 +2261,7 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn, #if defined(AFS_SUN5_ENV) && defined(KERNEL) int waslocked; #endif + struct sockaddr_in addr; register struct rx_peer *peer = conn->peer; osi_socket socket; struct rx_packet *p = NULL; @@ -2283,6 +2273,10 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn, #ifdef RXDEBUG char deliveryType = 'S'; #endif + /* The address we're sending the packet to */ + addr.sin_family = AF_INET; + addr.sin_port = peer->port; + addr.sin_addr.s_addr = peer->host; if (len + 1 > RX_MAXIOVECS) { osi_Panic("rxi_SendPacketList, len > RX_MAXIOVECS\n"); @@ -2355,7 +2349,7 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn, /* If an output tracer function is defined, call it with the packet and * network address. Note this function may modify its arguments. */ if (rx_almostSent) { - int drop = (*rx_almostSent) (p, &peer->saddr); + int drop = (*rx_almostSent) (p, &addr); /* drop packet if return value is non-zero? */ if (drop) deliveryType = 'D'; /* Drop the packet */ @@ -2393,8 +2387,8 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn, AFS_GUNLOCK(); #endif if ((code = - osi_NetSend(socket, &peer->saddr, peer->saddrlen, &wirevec[0], - len + 1, length, istack)) != 0) { + osi_NetSend(socket, &addr, &wirevec[0], len + 1, length, + istack)) != 0) { /* send failed, so let's hurry up the resend, eh? */ MUTEX_ENTER(&rx_stats_mutex); rx_stats.netSendFailures++; @@ -2433,7 +2427,7 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn, assert(p != NULL); - dpf(("%c %d %s: %s.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", deliveryType, p->header.serial, rx_packetTypes[p->header.type - 1], rx_AddrStringOf(peer), ntohs(rx_PortOf(peer)), p->header.serial, p->header.epoch, p->header.cid, p->header.callNumber, p->header.seq, p->header.flags, (unsigned long)p, p->retryTime.sec, p->retryTime.usec / 1000, p->length)); + dpf(("%c %d %s: %x.%u.%u.%u.%u.%u.%u flags %d, packet %lx resend %d.%0.3d len %d", deliveryType, p->header.serial, rx_packetTypes[p->header.type - 1], ntohl(peer->host), ntohs(peer->port), p->header.serial, p->header.epoch, p->header.cid, p->header.callNumber, p->header.seq, p->header.flags, (unsigned long)p, p->retryTime.sec, p->retryTime.usec / 1000, p->length)); #endif MUTEX_ENTER(&rx_stats_mutex); diff --git a/src/rx/rx_prototypes.h b/src/rx/rx_prototypes.h index 2b7088660..40441f388 100644 --- a/src/rx/rx_prototypes.h +++ b/src/rx/rx_prototypes.h @@ -14,8 +14,6 @@ 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 int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, - int *salens, int nelem); #ifdef AFS_NT40_ENV extern void rx_DebugOnOff(int on); #endif @@ -28,11 +26,6 @@ extern struct rx_connection *rx_NewConnection(register afs_uint32 shost, register struct rx_securityClass *securityObject, int serviceSecurityIndex); -extern struct rx_connection *rx_NewConnectionAddrs(struct sockaddr_storage *, - int *types, int *salens, - int nelem, u_short, - struct rx_securityClass *, - int); extern void rx_SetConnDeadTime(register struct rx_connection *conn, register int seconds); extern void rxi_CleanupConnection(struct rx_connection *conn); @@ -90,27 +83,26 @@ extern void rxi_FreeCall(register struct rx_call *call); extern char *rxi_Alloc(register size_t size); extern void rxi_Free(void *addr, register size_t size); -extern struct rx_peer *rxi_FindPeer(struct sockaddr_storage *saddr, int slen, - int stype, struct rx_peer *origPeer, - int create); +extern struct rx_peer *rxi_FindPeer(register afs_uint32 host, + register u_short port, + struct rx_peer *origPeer, int create); extern struct rx_connection *rxi_FindConnection(osi_socket socket, - struct sockaddr_storage *saddr, - int slen, int socktype, + register afs_int32 host, + register u_short port, u_short serviceId, afs_uint32 cid, afs_uint32 epoch, int type, u_int securityIndex); extern struct rx_packet *rxi_ReceivePacket(register struct rx_packet *np, - osi_socket socket, - struct sockaddr_storage *saddr, - int slen, int *tnop, + osi_socket socket, afs_uint32 host, + u_short port, int *tnop, struct rx_call **newcallp); extern int rxi_IsConnInteresting(struct rx_connection *aconn); extern struct rx_packet *rxi_ReceiveDataPacket(register struct rx_call *call, register struct rx_packet *np, int istack, osi_socket socket, - struct sockaddr_storage *saddr, - int slen, int *tnop, + afs_uint32 host, u_short port, + int *tnop, struct rx_call **newcallp); extern struct rx_packet *rxi_ReceiveAckPacket(register struct rx_call *call, struct rx_packet *np, @@ -344,8 +336,7 @@ extern int rxk_initDone; extern int rxk_DelPort(u_short aport); extern void rxk_shutdownPorts(void); extern osi_socket rxi_GetUDPSocket(u_short port); -extern osi_socket rxi_GetHostUDPSocket(struct sockaddr_storage *saddr, - int salen); +extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port); #if defined(KERNEL) && defined(AFS_LINUX26_ENV) #define osi_Panic(msg...) do { printk(KERN_CRIT "openafs: " msg); BUG(); } while (0) #undef osi_Assert @@ -371,8 +362,8 @@ extern int rxk_FreeSocket(register struct socket *asocket); extern osi_socket *rxk_NewSocket(short aport); #endif #endif -extern int rxk_ReadPacket(osi_socket so, struct rx_packet *p, - struct sockaddr_storage *saddr, int *slen); +extern int rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host, + int *port); #ifdef UKERNEL extern void rx_ServerProc(void); #endif @@ -405,13 +396,12 @@ extern void afs_cv_timedwait(afs_kcondvar_t * cv, afs_kmutex_t * l, /* ARCH/rx_knet.c */ #if defined(KERNEL) && !defined(AFS_SGI_ENV) -extern int osi_NetSend(osi_socket asocket, struct sockaddr_storage *addr, - int addrlen, struct iovec *dvec, int nvecs, - afs_int32 asize, int istack); +extern int osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, + struct iovec *dvec, int nvecs, afs_int32 asize, + int istack); #endif -extern int osi_NetReceive(osi_socket so, struct sockaddr_storage *saddr, - int *slen, struct iovec *dvec, int nvecs, - int *lengthp); +extern int osi_NetReceive(osi_socket so, struct sockaddr_in *addr, + struct iovec *dvec, int nvecs, int *lengthp); extern void osi_StopListener(void); extern int rxi_FindIfMTU(afs_uint32 addr); #ifndef RXK_LISTENER_ENV @@ -495,22 +485,22 @@ 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(osi_socket socket, register struct rx_packet *p, - struct sockaddr_storage *saddr, int *slen); + afs_uint32 * host, u_short * port); extern struct rx_packet *rxi_SplitJumboPacket(register struct rx_packet *p, - struct sockaddr_storage *saddr, - int slen, int first); + afs_int32 host, short port, + int first); #ifndef KERNEL -extern int osi_NetSend(osi_socket socket, void *addr, int addrlen, - struct iovec *dvec, int nvecs, int length, int istack); +extern int osi_NetSend(osi_socket socket, void *addr, struct iovec *dvec, + int nvecs, int length, int istack); #endif extern struct rx_packet *rxi_ReceiveDebugPacket(register struct rx_packet *ap, osi_socket asocket, - struct sockaddr_storage *saddr, - int slen, int istack); + afs_int32 ahost, short aport, + int istack); extern struct rx_packet *rxi_ReceiveVersionPacket(register struct rx_packet *ap, osi_socket asocket, - struct sockaddr_storage *, - int slen, int istack); + afs_int32 ahost, + short aport, int istack); extern void rxi_SendPacket(struct rx_call *call, struct rx_connection *conn, struct rx_packet *p, int istack); extern void rxi_SendPacketList(struct rx_call *call, diff --git a/src/rx/rx_pthread.c b/src/rx/rx_pthread.c index b5cc1daa1..a03a5a0bc 100644 --- a/src/rx/rx_pthread.c +++ b/src/rx/rx_pthread.c @@ -203,8 +203,8 @@ rxi_ReScheduleEvents(void) static void rxi_ListenerProc(int sock, int *tnop, struct rx_call **newcallp) { - struct sockaddr_storage saddr; - int slen; + unsigned int host; + u_short port; register struct rx_packet *p = (struct rx_packet *)0; assert(pthread_mutex_lock(&listener_mutex) == 0); @@ -227,10 +227,9 @@ rxi_ListenerProc(int sock, int *tnop, struct rx_call **newcallp) } } - slen = sizeof(saddr); - if (rxi_ReadPacket(sock, p, &saddr, &slen)) { + if (rxi_ReadPacket(sock, p, &host, &port)) { clock_NewTime(); - p = rxi_ReceivePacket(p, sock, &saddr, slen, tnop, newcallp); + p = rxi_ReceivePacket(p, sock, host, port, tnop, newcallp); if (newcallp && *newcallp) { if (p) rxi_FreePacket(p); diff --git a/src/rx/rx_user.c b/src/rx/rx_user.c index 813169591..bd59a8701 100644 --- a/src/rx/rx_user.c +++ b/src/rx/rx_user.c @@ -94,16 +94,16 @@ pthread_mutex_t rx_if_mutex; * failure. Port must be in network byte order. */ osi_socket -rxi_GetHostUDPSocket(struct sockaddr_storage *saddr, int salen) +rxi_GetHostUDPSocket(u_int ahost, u_short port) { int binds, code = 0; osi_socket socketFd = OSI_NULLSOCKET; + struct sockaddr_in taddr; char *name = "rxi_GetUDPSocket: "; #ifdef AFS_LINUX22_ENV int pmtu=IP_PMTUDISC_DONT; #endif -#if 0 #if !defined(AFS_NT40_ENV) if (ntohs(port) >= IPPORT_RESERVED && ntohs(port) < IPPORT_USERRESERVED) { /* (osi_Msg "%s*WARNING* port number %d is not a reserved port number. Use port numbers above %d\n", name, port, IPPORT_USERRESERVED); @@ -116,19 +116,24 @@ rxi_GetHostUDPSocket(struct sockaddr_storage *saddr, int salen) goto error; } #endif -#endif - socketFd = socket(rx_ssfamily(saddr), SOCK_DGRAM, 0); + socketFd = socket(AF_INET, SOCK_DGRAM, 0); if (socketFd < 0) { perror("socket"); goto error; } + taddr.sin_addr.s_addr = ahost; + taddr.sin_family = AF_INET; + taddr.sin_port = (u_short) port; +#ifdef STRUCT_SOCKADDR_HAS_SA_LEN + taddr.sin_len = sizeof(struct sockaddr_in); +#endif #define MAX_RX_BINDS 10 for (binds = 0; binds < MAX_RX_BINDS; binds++) { if (binds) rxi_Delay(10); - code = bind(socketFd, (struct sockaddr *) saddr, salen); + code = bind(socketFd, (struct sockaddr *)&taddr, sizeof(taddr)); if (!code) break; } @@ -202,16 +207,7 @@ rxi_GetHostUDPSocket(struct sockaddr_storage *saddr, int salen) osi_socket rxi_GetUDPSocket(u_short port) { - struct sockaddr_storage saddr; - struct sockaddr_in *sin = (struct sockaddr_in *) &saddr; - - memset((void *) &saddr, 0, sizeof(saddr)); - - sin->sin_family = AF_INET; - sin->sin_addr.s_addr = htonl(INADDR_ANY); - sin->sin_port = port; - - return rxi_GetHostUDPSocket(&saddr, sizeof(struct sockaddr_in)); + return rxi_GetHostUDPSocket(htonl(INADDR_ANY), port); } void @@ -613,7 +609,7 @@ void rxi_InitPeerParams(struct rx_peer *pp) { afs_uint32 ppaddr; - u_short rxmtu, maxmtu = 0; + u_short rxmtu; int ix; LOCK_IF_INIT; @@ -631,48 +627,33 @@ rxi_InitPeerParams(struct rx_peer *pp) #ifdef ADAPT_MTU /* try to second-guess IP, and identify which link is most likely to * be used for traffic to/from this host. */ - switch (rx_ssfamily(&pp->saddr)) { - case AF_INET: - ppaddr = ntohl(((struct sockaddr_in * ) &pp->saddr)->sin_addr.s_addr); - - pp->ifMTU = 0; - pp->timeout.sec = 2; - pp->rateFlag = 2; /* start timing after two full packets */ - /* I don't initialize these, because I presume they are bzero'd... - * pp->burstSize pp->burst pp->burstWait.sec pp->burstWait.usec - * pp->timeout.usec */ - - LOCK_IF; - for (ix = 0; ix < rxi_numNetAddrs; ++ix) { - if (maxmtu < myNetMTUs[ix]) - maxmtu = myNetMTUs[ix] - RX_IPUDP_SIZE; - if ((rxi_NetAddrs[ix] & myNetMasks[ix]) == - (ppaddr & myNetMasks[ix])) { + ppaddr = ntohl(pp->host); + + pp->ifMTU = 0; + pp->timeout.sec = 2; + pp->rateFlag = 2; /* start timing after two full packets */ + /* I don't initialize these, because I presume they are bzero'd... + * pp->burstSize pp->burst pp->burstWait.sec pp->burstWait.usec + * pp->timeout.usec */ + + LOCK_IF; + for (ix = 0; ix < rxi_numNetAddrs; ++ix) { + if ((rxi_NetAddrs[ix] & myNetMasks[ix]) == (ppaddr & myNetMasks[ix])) { #ifdef IFF_POINTOPOINT - if (myNetFlags[ix] & IFF_POINTOPOINT) - pp->timeout.sec = 4; + if (myNetFlags[ix] & IFF_POINTOPOINT) + pp->timeout.sec = 4; #endif /* IFF_POINTOPOINT */ - rxmtu = myNetMTUs[ix] - RX_IPUDP_SIZE; - if (rxmtu < RX_MIN_PACKET_SIZE) - rxmtu = RX_MIN_PACKET_SIZE; - } - } - UNLOCK_IF; - if (rxmtu) - pp->ifMTU = MIN(rx_MyMaxSendSize, rxmtu); - if (!pp->ifMTU) { /* not local */ - pp->timeout.sec = 3; - pp->ifMTU = MIN(rx_MyMaxSendSize, maxmtu ? maxmtu : RX_REMOTE_PACKET_SIZE); + rxmtu = myNetMTUs[ix] - RX_IPUDP_SIZE; + if (rxmtu < RX_MIN_PACKET_SIZE) + rxmtu = RX_MIN_PACKET_SIZE; + if (pp->ifMTU < rxmtu) + pp->ifMTU = MIN(rx_MyMaxSendSize, rxmtu); } - break; -#ifdef AF_INET6 - case AF_INET6: -#endif - default: - pp->rateFlag = 2; /* start timing after two full packets */ - pp->timeout.sec = 2; - pp->ifMTU = MIN(rx_MyMaxSendSize, OLD_MAX_PACKET_SIZE); - break; + } + UNLOCK_IF; + if (!pp->ifMTU) { /* not local */ + pp->timeout.sec = 3; + pp->ifMTU = MIN(rx_MyMaxSendSize, RX_REMOTE_PACKET_SIZE); } #else /* ADAPT_MTU */ pp->rateFlag = 2; /* start timing after two full packets */ diff --git a/src/viced/afsfileprocs.c b/src/viced/afsfileprocs.c index 098d7e812..333985354 100644 --- a/src/viced/afsfileprocs.c +++ b/src/viced/afsfileprocs.c @@ -379,7 +379,7 @@ CallPreamble(register struct rx_call *acall, int activecall, if (BreakDelayedCallBacks_r(thost)) { ViceLog(0, ("BreakDelayedCallbacks FAILED for host %s:%d which IS UP. Connection from %s:%d. Possible network or routing failure.\n", - afs_inet_ntoa_r(thost->host, hoststr), ntohs(thost->port), rxr_AddrStringOf(*tconn), + afs_inet_ntoa_r(thost->host, hoststr), ntohs(thost->port), afs_inet_ntoa_r(rxr_HostOf(*tconn), hoststr2), ntohs(rxr_PortOf(*tconn)))); if (MultiProbeAlternateAddress_r(thost)) { ViceLog(0, @@ -395,7 +395,7 @@ CallPreamble(register struct rx_call *acall, int activecall, if (BreakDelayedCallBacks_r(thost)) { ViceLog(0, ("BreakDelayedCallbacks FAILED AGAIN for host %s:%d which IS UP. Connection from %s:%d. Possible network or routing failure.\n", - afs_inet_ntoa_r(thost->host, hoststr), ntohs(thost->port), rxr_AddrStringOf(*tconn), + afs_inet_ntoa_r(thost->host, hoststr), ntohs(thost->port), afs_inet_ntoa_r(rxr_HostOf(*tconn), hoststr2), ntohs(rxr_PortOf(*tconn)))); code = -1; } @@ -2028,6 +2028,7 @@ common_FetchData64(struct rx_call *acall, struct AFSFid *Fid, struct host *thost; afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client = NULL; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ #if FS_STATS_DETAILED struct fs_stats_opTimingData *opP; /* Ptr to this op's timing struct */ struct fs_stats_xferData *xferP; /* Ptr to this op's byte size struct */ @@ -2062,9 +2063,10 @@ common_FetchData64(struct rx_call *acall, struct AFSFid *Fid, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(5, ("SRXAFS_FetchData, Fid = %u.%u.%u, Host %s:%d, Id %d\n", - Fid->Volume, Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Volume, Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); /* * Get volume/vnode for the fetched file; caller's access rights to @@ -2290,6 +2292,7 @@ SRXAFS_FetchACL(struct rx_call * acall, struct AFSFid * Fid, struct rx_connection *tcon = rx_ConnectionOf(acall); struct host *thost; struct client *t_client = NULL; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ #if FS_STATS_DETAILED struct fs_stats_opTimingData *opP; /* Ptr to this op's timing struct */ struct timeval opStartTime, opStopTime; /* Start/stop times for RPC op */ @@ -2317,9 +2320,10 @@ SRXAFS_FetchACL(struct rx_call * acall, struct AFSFid * Fid, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(5, ("SAFS_FetchACL, Fid = %u.%u.%u, Host %s:%d, Id %d\n", Fid->Volume, - Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); AccessList->AFSOpaque_len = 0; @@ -2407,13 +2411,15 @@ SAFSS_FetchStatus(struct rx_call *acall, struct AFSFid *Fid, struct client *client = 0; /* pointer to the client data */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client = NULL; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_FetchStatus, Fid = %u.%u.%u, Host %s:%d, Id %d\n", - Fid->Volume, Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Volume, Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.FetchStatus++, AFSCallStats.TotalCalls++; @@ -2859,6 +2865,7 @@ common_StoreData64(struct rx_call *acall, struct AFSFid *Fid, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client = NULL; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon; struct host *thost; #if FS_STATS_DETAILED @@ -2894,9 +2901,10 @@ common_StoreData64(struct rx_call *acall, struct AFSFid *Fid, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(5, ("StoreData: Fid = %u.%u.%u, Host %s:%d, Id %d\n", Fid->Volume, - Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); /* @@ -3125,6 +3133,7 @@ SRXAFS_StoreACL(struct rx_call * acall, struct AFSFid * Fid, struct rx_connection *tcon; struct host *thost; struct client *t_client = NULL; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ #if FS_STATS_DETAILED struct fs_stats_opTimingData *opP; /* Ptr to this op's timing struct */ struct timeval opStartTime, opStopTime; /* Start/stop times for RPC op */ @@ -3145,10 +3154,11 @@ SRXAFS_StoreACL(struct rx_call * acall, struct AFSFid * Fid, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_StoreACL, Fid = %u.%u.%u, ACL=%s, Host %s:%d, Id %d\n", Fid->Volume, Fid->Vnode, Fid->Unique, AccessList->AFSOpaque_val, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.StoreACL++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -3241,13 +3251,15 @@ SAFSS_StoreStatus(struct rx_call *acall, struct AFSFid *Fid, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client = NULL; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_StoreStatus, Fid = %u.%u.%u, Host %s:%d, Id %d\n", - Fid->Volume, Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Volume, Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.StoreStatus++, AFSCallStats.TotalCalls++; @@ -3387,15 +3399,17 @@ SAFSS_RemoveFile(struct rx_call *acall, struct AFSFid *DirFid, char *Name, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); FidZero(&dir); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_RemoveFile %s, Did = %u.%u.%u, Host %s:%d, Id %d\n", Name, DirFid->Volume, DirFid->Vnode, DirFid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.RemoveFile++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -3550,16 +3564,18 @@ SAFSS_CreateFile(struct rx_call *acall, struct AFSFid *DirFid, char *Name, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); FidZero(&dir); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_CreateFile %s, Did = %u.%u.%u, Host %s:%d, Id %d\n", Name, DirFid->Volume, DirFid->Vnode, DirFid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.CreateFile++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -3732,6 +3748,7 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, int doDelete; /* deleted the rename target (ref count now 0) */ int code; struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); FidZero(&olddir); @@ -3741,11 +3758,12 @@ SAFSS_Rename(struct rx_call *acall, struct AFSFid *OldDirFid, char *OldName, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_Rename %s to %s, Fid = %u.%u.%u to %u.%u.%u, Host %s:%d, Id %d\n", OldName, NewName, OldDirFid->Volume, OldDirFid->Vnode, OldDirFid->Unique, NewDirFid->Volume, NewDirFid->Vnode, - NewDirFid->Unique, rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + NewDirFid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.Rename++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -4206,6 +4224,7 @@ SAFSS_Symlink(struct rx_call *acall, struct AFSFid *DirFid, char *Name, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ FdHandle_t *fdP; struct rx_connection *tcon = rx_ConnectionOf(acall); @@ -4213,10 +4232,11 @@ SAFSS_Symlink(struct rx_call *acall, struct AFSFid *DirFid, char *Name, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_Symlink %s to %s, Did = %u.%u.%u, Host %s:%d, Id %d\n", Name, LinkContents, DirFid->Volume, DirFid->Vnode, DirFid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.Symlink++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -4409,17 +4429,19 @@ SAFSS_Link(struct rx_call *acall, struct AFSFid *DirFid, char *Name, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); FidZero(&dir); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_Link %s, Did = %u.%u.%u, Fid = %u.%u.%u, Host %s:%d, Id %d\n", Name, DirFid->Volume, DirFid->Vnode, DirFid->Unique, ExistingFid->Volume, ExistingFid->Vnode, ExistingFid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.Link++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -4613,6 +4635,7 @@ SAFSS_MakeDir(struct rx_call *acall, struct AFSFid *DirFid, char *Name, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); FidZero(&dir); @@ -4620,10 +4643,11 @@ SAFSS_MakeDir(struct rx_call *acall, struct AFSFid *DirFid, char *Name, /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_MakeDir %s, Did = %u.%u.%u, Host %s:%d, Id %d\n", Name, DirFid->Volume, DirFid->Vnode, DirFid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.MakeDir++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -4807,16 +4831,18 @@ SAFSS_RemoveDir(struct rx_call *acall, struct AFSFid *DirFid, char *Name, afs_int32 rights, anyrights; /* rights for this and any user */ Vnode debugvnode1, debugvnode2; struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); FidZero(&dir); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_RemoveDir %s, Did = %u.%u.%u, Host %s:%d, Id %d\n", Name, DirFid->Volume, DirFid->Vnode, DirFid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.RemoveDir++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -4962,6 +4988,7 @@ SAFSS_SetLock(struct rx_call *acall, struct AFSFid *Fid, ViceLockType type, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ static char *locktype[4] = { "LockRead", "LockWrite", "LockExtend", "LockRelease" }; struct rx_connection *tcon = rx_ConnectionOf(acall); @@ -4971,10 +4998,11 @@ SAFSS_SetLock(struct rx_call *acall, struct AFSFid *Fid, ViceLockType type, } /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_SetLock type = %s Fid = %u.%u.%u, Host %s:%d, Id %d\n", locktype[(int)type], Fid->Volume, Fid->Vnode, Fid->Unique, - rxr_AddrStringOf(tcon), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.SetLock++, AFSCallStats.TotalCalls++; FS_UNLOCK; @@ -5091,13 +5119,15 @@ SAFSS_ExtendLock(struct rx_call *acall, struct AFSFid *Fid, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_ExtendLock Fid = %u.%u.%u, Host %s:%d, Id %d\n", Fid->Volume, - Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.ExtendLock++, AFSCallStats.TotalCalls++; @@ -5216,13 +5246,15 @@ SAFSS_ReleaseLock(struct rx_call *acall, struct AFSFid *Fid, struct client *client = 0; /* pointer to client structure */ afs_int32 rights, anyrights; /* rights for this and any user */ struct client *t_client; /* tmp ptr to client data */ + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ struct rx_connection *tcon = rx_ConnectionOf(acall); /* Get ptr to client data for user Id for logging */ t_client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); + logHostAddr.s_addr = rxr_HostOf(tcon); ViceLog(1, ("SAFS_ReleaseLock Fid = %u.%u.%u, Host %s:%d, Id %d\n", Fid->Volume, - Fid->Vnode, Fid->Unique, rxr_AddrStringOf(tcon), + Fid->Vnode, Fid->Unique, inet_ntoa(logHostAddr), ntohs(rxr_PortOf(tcon)), t_client->ViceId)); FS_LOCK; AFSCallStats.ReleaseLock++, AFSCallStats.TotalCalls++; @@ -5922,8 +5954,8 @@ common_GiveUpCallBacks(struct rx_call *acall, struct AFSCBFids *FidArray, if (!FidArray && !CallBackArray) { ViceLog(1, - ("SAFS_GiveUpAllCallBacks: host=%s\n", - (tcon->peer ? rx_AddrStringOf(tcon->peer) : ""))); + ("SAFS_GiveUpAllCallBacks: host=%x\n", + (tcon->peer ? tcon->peer->host : 0))); errorCode = GetClient(tcon, &client); if (!errorCode) { DeleteAllCallBacks_r(client->host, 1); @@ -5932,9 +5964,9 @@ common_GiveUpCallBacks(struct rx_call *acall, struct AFSCBFids *FidArray, } else { if (FidArray->AFSCBFids_len < CallBackArray->AFSCBs_len) { ViceLog(0, - ("GiveUpCallBacks: #Fids %d < #CallBacks %d, host=%s\n", + ("GiveUpCallBacks: #Fids %d < #CallBacks %d, host=%x\n", FidArray->AFSCBFids_len, CallBackArray->AFSCBs_len, - (tcon->peer ? rx_AddrStringOf(tcon->peer) : ""))); + (tcon->peer ? tcon->peer->host : 0))); errorCode = EINVAL; goto Bad_GiveUpCallBacks; } @@ -6964,6 +6996,7 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid, afs_sfsize_t adjustSize; /* bytes to call VAdjust... with */ int linkCount; /* link count on inode */ FdHandle_t *fdP; + struct in_addr logHostAddr; /* host ip holder for inet_ntoa */ #if FS_STATS_DETAILED /* @@ -6981,12 +7014,12 @@ StoreData_RXStyle(Volume * volptr, Vnode * targetptr, struct AFSFid * Fid, if (Pos == -1 || VN_GET_INO(targetptr) == 0) { /* the inode should have been created in Alloc_NewVnode */ + logHostAddr.s_addr = rxr_HostOf(rx_ConnectionOf(Call)); ViceLog(0, ("StoreData_RXStyle : Inode non-existent Fid = %u.%u.%u, inode = %llu, Pos %llu Host %s:%d\n", Fid->Volume, Fid->Vnode, Fid->Unique, (afs_uintmax_t) VN_GET_INO(targetptr), (afs_uintmax_t) Pos, - rxr_AddrStringOf(rx_ConnectionOf(Call)), - ntohs(rxr_PortOf(rx_ConnectionOf(Call))))); + inet_ntoa(logHostAddr), ntohs(rxr_PortOf(rx_ConnectionOf(Call))))); return ENOENT; /* is this proper error code? */ } else { /* diff --git a/src/viced/host.c b/src/viced/host.c index 14fe833b5..80f8e8212 100644 --- a/src/viced/host.c +++ b/src/viced/host.c @@ -2025,7 +2025,7 @@ h_FindClient_r(struct rx_connection *tcon) if (created) { ViceLog(0, ("FindClient: stillborn client %x(%x); conn %x (host %s:%d) had client %x(%x)\n", client, client->sid, tcon, - rxr_AddrStringOf(tcon), + afs_inet_ntoa_r(rxr_HostOf(tcon), hoststr), ntohs(rxr_PortOf(tcon)), oldClient, oldClient->sid)); if ((client->ViceId != ANONYMOUSID) && client->CPS.prlist_val) @@ -2048,7 +2048,7 @@ h_FindClient_r(struct rx_connection *tcon) } else { ViceLog(0, ("FindClient: deleted client %x(%x) already had conn %x (host %s:%d), stolen by client %x(%x)\n", oldClient, oldClient->sid, tcon, - rxr_AddrStringOf(tcon), + afs_inet_ntoa_r(rxr_HostOf(tcon), hoststr), ntohs(rxr_PortOf(tcon)), client, client->sid)); /* rx_SetSpecific will be done immediately below */ @@ -2095,8 +2095,8 @@ GetClient(struct rx_connection *tcon, struct client **cp) client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key); if (client == NULL) { ViceLog(0, - ("GetClient: no client in conn %x (host %s:%d), VBUSYING\n", - tcon, rxr_AddrStringOf(tcon),ntohs(rxr_PortOf(tcon)))); + ("GetClient: no client in conn %x (host %x:%d), VBUSYING\n", + tcon, rxr_HostOf(tcon),ntohs(rxr_PortOf(tcon)))); H_UNLOCK; return VBUSY; } diff --git a/src/viced/host.h b/src/viced/host.h index d1bb96f80..9a797b9de 100644 --- a/src/viced/host.h +++ b/src/viced/host.h @@ -277,9 +277,6 @@ struct host *(hosttableptrs[h_MAXHOSTTABLES]); /* Used by h_itoh */ #define rxr_HostOf(aconn) \ rx_HostOf(rx_PeerOf((struct rx_connection *)(aconn))) -#define rxr_AddrStringOf(aconn) \ - rx_AddrStringOf(rx_PeerOf((struct rx_connection *)(aconn))) - #define HCPS_INPROGRESS 0x01 /*set when CPS is being updated */ #define HCPS_WAITING 0x02 /*waiting for CPS to get updated */ #define ALTADDR 0x04 /*InitCallBack is being done */