]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
on IPv4 UDP turn off DF flag.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 Dec 2009 16:02:49 +0000 (16:02 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 11 Dec 2009 16:02:49 +0000 (16:02 +0000)
git-svn-id: file:///svn/unbound/trunk@1937 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
services/listen_dnsport.c

index a0e5712ff84198ba094c4b663da317b745eaee68..315502d8d732f1219232eb1fbb3b0c9b2284141b 100644 (file)
@@ -1,3 +1,6 @@
+11 December 2009: Wouter
+       - on IPv4 UDP turn off DF flag.
+
 10 December 2009: Wouter
        - requirements.txt updated with design choice explanations.
        - Reading fixes: fix to set unlame when child confirms parent glue,
index 5ec2462b0771a00274a205b6ba7ed96b41f186cc..54be19d7433d881c7089c1ad3205ad832aeb9fcb 100644 (file)
@@ -251,6 +251,25 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
                        return -1;
                }
 # endif /* IPv6 MTU */
+       } else if(family == AF_INET) {
+#  if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
+               int action = IP_PMTUDISC_DONT;
+               if (setsockopt(s, IPPROTO_IP, IP_MTU_DISCOVER, 
+                       &action, (socklen_t)sizeof(action)) < 0) {
+                       log_err("setsockopt(..., IP_MTU_DISCOVER, "
+                               "IP_PMTUDISC_DONT...) failed: %s",
+                               strerror(errno));
+                       return -1;
+               }
+#  elif defined(IP_DONTFRAG)
+               int off = 0;
+               if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG, 
+                       &off, (socklen_t)sizeof(off)) < 0) {
+                       log_err("setsockopt(..., IP_DONTFRAG, ...) failed: %s",
+                               strerror(errno));
+                       return -1;
+               }
+#  endif /* IPv4 MTU */
        }
        if(bind(s, (struct sockaddr*)addr, addrlen) != 0) {
                *noproto = 0;