Set DF flag for packets from the server, too
authorAlan T. DeKok <aland@freeradius.org>
Tue, 1 Sep 2009 12:49:39 +0000 (14:49 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Tue, 1 Sep 2009 12:49:39 +0000 (14:49 +0200)
src/main/listen.c

index 140506d..372bd76 100644 (file)
@@ -1506,6 +1506,31 @@ static int listen_bind(rad_listen_t *this)
        }
 #endif /* HAVE_STRUCT_SOCKADDR_IN6 */
 
+
+       if (sock->ipaddr.af == AF_INET) {
+               UNUSED int flag;
+               
+#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
+               /*
+                *      Disable PMTU discovery.  On Linux, this
+                *      also makes sure that the "don't fragment"
+                *      flag is zero.
+                */
+               flag = IP_PMTUDISC_DONT;
+               setsockopt(this->fd, IPPROTO_IP, IP_MTU_DISCOVER,
+                          &flag, sizeof(flag));
+#endif
+
+#if defined(IP_DONTFRAG)
+               /*
+                *      Ensure that the "don't fragment" flag is zero.
+                */
+               flag = 0;
+               setsockopt(this->fd, IPPROTO_IP, IP_DONTFRAG,
+                          &flag, sizeof(flag));
+#endif
+       }
+
        /*
         *      May be binding to priviledged ports.
         */