#include <linux/version.h>
#include "rx/rx_kcommon.h"
+#include "rx.h"
+#include "rx_atomic.h"
+#include "rx_globals.h"
+#include "rx_stats.h"
+#include "rx_peer.h"
+#include "rx_packet.h"
+#include "rx_internal.h"
#include <asm/uaccess.h>
-#ifdef ADAPT_PMTU
+#ifdef AFS_RXERRQ_ENV
#include <linux/errqueue.h>
#include <linux/icmp.h>
#endif
struct socket *sockp;
struct sockaddr_in myaddr;
int code;
-#ifdef ADAPT_PMTU
+#ifdef AFS_ADAPT_PMTU
int pmtu = IP_PMTUDISC_WANT;
- int do_recverr = 1;
#else
int pmtu = IP_PMTUDISC_DONT;
#endif
kernel_setsockopt(sockp, SOL_IP, IP_MTU_DISCOVER, (char *)&pmtu,
sizeof(pmtu));
-#ifdef ADAPT_PMTU
- kernel_setsockopt(sockp, SOL_IP, IP_RECVERR, (char *)&do_recverr,
- sizeof(do_recverr));
+#ifdef AFS_RXERRQ_ENV
+ {
+ int recverr = 1;
+ kernel_setsockopt(sockp, SOL_IP, IP_RECVERR, (char *)&recverr,
+ sizeof(recverr));
+ }
#endif
return (osi_socket *)sockp;
}
return 0;
}
-#ifdef ADAPT_PMTU
+#ifdef AFS_RXERRQ_ENV
void
handle_socket_error(osi_socket so)
{
memcpy(&addr, offender, sizeof(addr));
+# ifdef AFS_ADAPT_PMTU
if (err->ee_origin == SO_EE_ORIGIN_ICMP &&
err->ee_type == ICMP_DEST_UNREACH &&
err->ee_code == ICMP_FRAG_NEEDED) {
rxi_SetPeerMtu(NULL, ntohl(addr.sin_addr.s_addr), ntohs(addr.sin_port),
err->ee_info);
}
+# endif
/* other DEST_UNREACH's and TIME_EXCEEDED should be dealt with too */
out:
{
struct msghdr msg;
int code;
-#ifdef ADAPT_PMTU
+#ifdef AFS_RXERRQ_ENV
int sockerr;
int esize;
{
struct msghdr msg;
int code;
-#ifdef ADAPT_PMTU
+#ifdef AFS_RXERRQ_ENV
int sockerr;
int esize;
#endif
if (iovcnt > RX_MAXWVECS + 2) {
osi_Panic("Too many (%d) iovecs passed to osi_NetReceive\n", iovcnt);
}
-#ifdef ADAPT_PMTU
+#ifdef AFS_RXERRQ_ENV
while (1) {
sockerr=0;
esize = sizeof(sockerr);