From 3db5cd24b777c07c3a4dfa193641d96ef0098868 Mon Sep 17 00:00:00 2001 From: Erik Ekman Date: Sat, 7 Mar 2009 00:21:06 +0000 Subject: [PATCH] Fix (ignore) Dont-Fragment for OpenBSD and OS X --- src/common.c | 2 ++ src/common.h | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/common.c b/src/common.c index a2d23f8..8511498 100644 --- a/src/common.c +++ b/src/common.c @@ -130,9 +130,11 @@ open_dns(int localport, in_addr_t listen_ip) setsockopt(fd, IPPROTO_IP, DSTADDR_SOCKOPT, (const void*) &flag, sizeof(flag)); #endif +#ifdef IP_OPT_DONT_FRAG /* Set dont-fragment ip header flag */ flag = DONT_FRAG_VALUE; setsockopt(fd, IPPROTO_IP, IP_OPT_DONT_FRAG, (const void*) &flag, sizeof(flag)); +#endif if(bind(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) err(1, "bind"); diff --git a/src/common.h b/src/common.h index a6d1137..f39461a 100644 --- a/src/common.h +++ b/src/common.h @@ -44,16 +44,16 @@ # define dstaddr(x) (&(((struct in_pktinfo *)(CMSG_DATA(x)))->ipi_addr)) #endif -#if defined IP_MTUDISC -# define IP_OPT_DONT_FRAG IP_MTUDISC -# define DONT_FRAG_VALUE 1 -#elif defined IP_MTU_DISCOVER +#if defined IP_MTU_DISCOVER + /* Linux */ # define IP_OPT_DONT_FRAG IP_MTU_DISCOVER # define DONT_FRAG_VALUE IP_PMTUDISC_DO #elif defined IP_DONTFRAG + /* FreeBSD */ # define IP_OPT_DONT_FRAG IP_DONTFRAG # define DONT_FRAG_VALUE 1 #elif defined IP_DONTFRAGMENT + /* Winsock2 */ # define IP_OPT_DONT_FRAG IP_DONTFRAGMENT # define DONT_FRAG_VALUE 1 #endif