From 40916b821aa19fb2aa810e8828e563d80d89cc82 Mon Sep 17 00:00:00 2001 From: Jim Rees Date: Tue, 9 May 2006 19:41:47 +0000 Subject: [PATCH] fbsd-saddr-20060509 Small fixes to get sockaddr_storage changes working on FreeBSD --- src/afs/afs_util.c | 23 ++++++++++------------- src/rx/FBSD/rx_knet.c | 19 +++++++++++-------- src/rx/rx.c | 4 ++-- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/afs/afs_util.c b/src/afs/afs_util.c index 6ee6a9e36..54e8ce366 100644 --- a/src/afs/afs_util.c +++ b/src/afs/afs_util.c @@ -51,10 +51,6 @@ RCSID #include #endif -#if defined(AFS_XBSD_ENV) -#include -#endif - afs_int32 afs_new_inum = 0; #ifndef afs_cv2string @@ -409,14 +405,7 @@ afs_data_pointer_to_int32(const void *p) return ip.i32[i32_sub]; } -#if defined(AFS_XBSD_ENV) - -#define afs_md5 MD5Context -#define AFS_MD5_Init(m) MD5Init((m)) -#define AFS_MD5_Update(m, p, l) MD5Update((m), (void *)(p), (l)) -#define AFS_MD5_Final(r, m) MD5Final((r), (m)) - -#else +#ifdef AFS_LINUX20_ENV struct afs_md5 { unsigned int sz[2]; @@ -657,7 +646,6 @@ AFS_MD5_Final (void *res, struct afs_md5 *m) } } } -#endif afs_int32 afs_calc_inum (afs_int32 volume, afs_int32 vnode) { @@ -677,3 +665,12 @@ afs_int32 afs_calc_inum (afs_int32 volume, afs_int32 vnode) } return ino; } + +#else + +afs_int32 afs_calc_inum (afs_int32 volume, afs_int32 vnode) +{ + return (volume << 16) + vnode; +} + +#endif diff --git a/src/rx/FBSD/rx_knet.c b/src/rx/FBSD/rx_knet.c index e70dcb410..c24176f9b 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_in *addr, +osi_NetReceive(osi_socket asocket, struct sockaddr_storage *saddr, int *slen, struct iovec *dvec, int nvecs, int *alength) { struct uio u; @@ -68,8 +68,10 @@ osi_NetReceive(osi_socket asocket, struct sockaddr_in *addr, *alength -= u.uio_resid; if (sa) { if (sa->sa_family == AF_INET) { - if (addr) - *addr = *(struct sockaddr_in *)sa; + if (saddr) { + memcpy(saddr, sa, sa->sa_len); + *slen = sa->sa_len; + } } else printf("Unknown socket family %d in NetReceive\n", sa->sa_family); FREE(sa, M_SONAME); @@ -100,8 +102,8 @@ osi_StopListener(void) } int -osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, - int nvecs, afs_int32 alength, int istack) +osi_NetSend(osi_socket asocket, struct sockaddr_storage *saddr, int salen, + struct iovec *dvec, int nvecs, afs_int32 alength, int istack) { register afs_int32 code; int i; @@ -128,7 +130,8 @@ osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, u.uio_procp = NULL; #endif - addr->sin_len = sizeof(struct sockaddr_in); + saddr->ss_len = saddr->ss_family == AF_INET6 ? + sizeof(struct sockaddr_in6) : sizeof(struct sockaddr_in); if (haveGlock) AFS_GUNLOCK(); @@ -137,11 +140,11 @@ osi_NetSend(osi_socket asocket, struct sockaddr_in *addr, struct iovec *dvec, #endif #ifdef AFS_FBSD50_ENV code = - sosend(asocket, (struct sockaddr *)addr, &u, NULL, NULL, 0, + sosend(asocket, (struct sockaddr *)saddr, &u, NULL, NULL, 0, curthread); #else code = - sosend(asocket, (struct sockaddr *)addr, &u, NULL, NULL, 0, curproc); + sosend(asocket, (struct sockaddr *)saddr, &u, NULL, NULL, 0, curproc); #endif #if KNET_DEBUG if (code) { diff --git a/src/rx/rx.c b/src/rx/rx.c index a20b6f1d7..f091b283a 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -455,7 +455,7 @@ int rx_InitAddrs(struct sockaddr_storage *saddrs, int *types, int *salens, /* Allocate and initialize a socket for client and perhaps server * connections. */ - rx_socket = -1; + rx_socket = OSI_NULLSOCKET; rx_port = 0; for (i = 0; i < nelem; i++) { @@ -7101,7 +7101,7 @@ rxi_AddRpcStat(struct rx_queue *stats, afs_uint32 rxInterface, case AF_INET6: rpc_stat->stats[i].remote_peer = 0xffffffff; break; -#endif AF_INET6 +#endif /* AF_INET6 */ } rpc_stat->stats[i].remote_port = rx_ss2pn(saddr); rpc_stat->stats[i].remote_is_server = isServer; -- 2.39.5