#include <afsconfig.h>
#include "afs/param.h"
-RCSID
- ("$Header$");
#include "rx/rx_kcommon.h"
#if !defined(AFS_LINUX26_ENV)
void
-#ifdef AFS_AIX_ENV
+#if defined(AFS_AIX_ENV) || defined(AFS_SGI_ENV)
osi_Panic(char *msg, void *a1, void *a2, void *a3)
#else
osi_Panic(char *msg, ...)
#endif
{
-#ifdef AFS_AIX_ENV
+#if defined(AFS_AIX_ENV) || defined(AFS_SGI_ENV)
if (!msg)
msg = "Unknown AFS panic";
printf(msg, a1, a2, a3);
#undef ADDBUF
- osi_Panic(buf);
+ osi_Panic("%s", buf);
}
#else
void
rxi_InitPeerParams(struct rx_peer *pp)
{
u_short rxmtu;
- afs_int32 i, mtu;
#ifdef ADAPT_MTU
-#ifndef AFS_SUN5_ENV
-#ifdef AFS_USERSPACE_IP_ADDR
+# ifndef AFS_SUN5_ENV
+# ifdef AFS_USERSPACE_IP_ADDR
+ afs_int32 i;
+ afs_int32 mtu;
+
i = rxi_Findcbi(pp->host);
if (i == -1) {
pp->timeout.sec = 3;
} else { /* couldn't find the interface, so assume the worst */
pp->ifMTU = MIN(RX_REMOTE_PACKET_SIZE, rx_MyMaxSendSize);
}
-#else /* AFS_USERSPACE_IP_ADDR */
- AFS_IFNET_T ifn;
+# else /* AFS_USERSPACE_IP_ADDR */
+ rx_ifnet_t ifn;
-#if !defined(AFS_SGI62_ENV)
+# if !defined(AFS_SGI62_ENV)
if (numMyNetAddrs == 0)
(void)rxi_GetIFInfo();
-#endif
+# endif
ifn = rxi_FindIfnet(pp->host, NULL);
if (ifn) {
pp->timeout.sec = 2;
/* pp->timeout.usec = 0; */
pp->ifMTU = MIN(RX_MAX_PACKET_SIZE, rx_MyMaxSendSize);
-#ifdef IFF_POINTOPOINT
- if (ifnet_flags(ifn) & IFF_POINTOPOINT) {
+# ifdef IFF_POINTOPOINT
+ if (rx_ifnet_flags(ifn) & IFF_POINTOPOINT) {
/* wish we knew the bit rate and the chunk size, sigh. */
pp->timeout.sec = 4;
pp->ifMTU = RX_PP_PACKET_SIZE;
}
-#endif /* IFF_POINTOPOINT */
+# endif /* IFF_POINTOPOINT */
/* Diminish the packet size to one based on the MTU given by
* the interface. */
- if (ifnet_mtu(ifn) > (RX_IPUDP_SIZE + RX_HEADER_SIZE)) {
- rxmtu = ifnet_mtu(ifn) - RX_IPUDP_SIZE;
+ if (rx_ifnet_mtu(ifn) > (RX_IPUDP_SIZE + RX_HEADER_SIZE)) {
+ rxmtu = rx_ifnet_mtu(ifn) - RX_IPUDP_SIZE;
if (rxmtu < pp->ifMTU)
pp->ifMTU = rxmtu;
}
/* pp->timeout.usec = 0; */
pp->ifMTU = MIN(RX_REMOTE_PACKET_SIZE, rx_MyMaxSendSize);
}
-#endif /* else AFS_USERSPACE_IP_ADDR */
-#else /* AFS_SUN5_ENV */
+# endif /* else AFS_USERSPACE_IP_ADDR */
+# else /* AFS_SUN5_ENV */
+ afs_int32 mtu;
+
mtu = rxi_FindIfMTU(pp->host);
if (mtu <= 0) {
} else { /* couldn't find the interface, so assume the worst */
pp->ifMTU = MIN(RX_REMOTE_PACKET_SIZE,rx_MyMaxSendSize);
}
-#endif /* AFS_SUN5_ENV */
+# endif /* AFS_SUN5_ENV */
#else /* ADAPT_MTU */
pp->rateFlag = 2; /* start timing after two full packets */
pp->timeout.sec = 2;
errno_t t;
unsigned int count;
int cnt=0, m, j;
- ifaddr_t *ifads;
- ifnet_t *ifn;
+ rx_ifaddr_t *ifads;
+ rx_ifnet_t *ifns;
struct sockaddr sout;
struct sockaddr_in *sin;
struct in_addr pin;
#else
- struct ifaddr *ifad; /* ifnet points to a if_addrlist of ifaddrs */
- struct ifnet *ifn;
+ rx_ifaddr_t ifad; /* ifnet points to a if_addrlist of ifaddrs */
+ rx_ifnet_t ifn;
#endif
memset(addrs, 0, sizeof(addrs));
memset(mtus, 0, sizeof(mtus));
#if defined(AFS_DARWIN80_ENV)
- if (!ifnet_list_get(AF_INET, &ifn, &count)) {
+ if (!ifnet_list_get(AF_INET, &ifns, &count)) {
for (m = 0; m < count; m++) {
- if (!ifnet_get_address_list(ifn[m], &ifads)) {
+ if (!ifnet_get_address_list(ifns[m], &ifads)) {
for (j = 0; ifads[j] != NULL && cnt < ADDRSPERSITE; j++) {
if ((t = ifaddr_address(ifads[j], &sout, sizeof(struct sockaddr))) == 0) {
sin = (struct sockaddr_in *)&sout;
- rxmtu = ifnet_mtu(ifaddr_ifnet(ifads[j])) - RX_IPUDP_SIZE;
+ rxmtu = rx_ifnet_mtu(rx_ifaddr_ifnet(ifads[j])) - RX_IPUDP_SIZE;
ifinaddr = ntohl(sin->sin_addr.s_addr);
if (myNetAddrs[i] != ifinaddr) {
different++;
ifnet_free_address_list(ifads);
}
}
- ifnet_list_free(ifn);
+ ifnet_list_free(ifns);
}
#else
#if defined(AFS_DARWIN_ENV) || defined(AFS_FBSD_ENV)
#if defined(AFS_DARWIN60_ENV) || defined(AFS_XBSD_ENV)
/* Returns ifnet which best matches address */
-#ifdef AFS_DARWIN80_ENV
-ifnet_t
-#else
-struct ifnet *
-#endif
+rx_ifnet_t
rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp)
{
struct sockaddr_in s, sr;
-#ifdef AFS_DARWIN80_ENV
- ifaddr_t ifad;
-#else
- struct ifaddr *ifad;
-#endif
+ rx_ifaddr_t ifad;
s.sin_family = AF_INET;
s.sin_addr.s_addr = addr;
-#ifdef AFS_DARWIN80_ENV
- ifad = ifaddr_withnet((struct sockaddr *)&s);
-#else
- ifad = ifa_ifwithnet((struct sockaddr *)&s);
-#endif
+ ifad = rx_ifaddr_withnet((struct sockaddr *)&s);
-#ifdef AFS_DARWIN80_ENV
if (ifad && maskp) {
- ifaddr_netmask(ifad, (struct sockaddr *)&sr, sizeof(sr));
+ rx_ifaddr_netmask(ifad, (struct sockaddr *)&sr, sizeof(sr));
*maskp = sr.sin_addr.s_addr;
}
- return (ifad ? ifaddr_ifnet(ifad) : NULL);
-#else
- if (ifad && maskp)
- *maskp = ((struct sockaddr_in *)ifad->ifa_netmask)->sin_addr.s_addr;
- return (ifad ? ifad->ifa_ifp : NULL);
-#endif
+ return (ifad ? rx_ifaddr_ifnet(ifad) : NULL);
}
#else /* DARWIN60 || XBSD */
/* Returns ifnet which best matches address */
-struct ifnet *
+rx_ifnet_t
rxi_FindIfnet(afs_uint32 addr, afs_uint32 * maskp)
{
int match_value = 0;
if (nbytes <= 0) {
if (rx_stats_active) {
MUTEX_ENTER(&rx_stats_mutex);
- rx_AtomicIncrement_NL(rx_stats.bogusPacketOnRead);
- rx_AtomicSwap_NL(&rx_stats.bogusHost, from.sin_addr.s_addr);
+ rx_stats.bogusPacketOnRead++;
+ rx_stats.bogusHost = from.sin_addr.s_addr;
MUTEX_EXIT(&rx_stats_mutex);
}
dpf(("B: bogus packet from [%x,%d] nb=%d",
*host = from.sin_addr.s_addr;
*port = from.sin_port;
if (p->header.type > 0 && p->header.type < RX_N_PACKET_TYPES) {
- if (rx_stats_active)
- rx_AtomicIncrement(rx_stats.packetsRead[p->header.type - 1], rx_stats_mutex);
+ if (rx_stats_active) {
+ MUTEX_ENTER(&rx_stats_mutex);
+ rx_stats.packetsRead[p->header.type - 1]++;
+ MUTEX_EXIT(&rx_stats_mutex);
+ }
}
#ifdef RX_TRIMDATABUFS