From: Mark Andrews Date: Thu, 11 Mar 2010 04:43:57 +0000 (+0000) Subject: 2863. [port] linux: disable IPv6 PMTUD and use network minimum MTU. X-Git-Tag: v9.4-ESV-R2~26^2~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08fb52ec8c3923e501c7f8d74c524cced52551f9;p=thirdparty%2Fbind9.git 2863. [port] linux: disable IPv6 PMTUD and use network minimum MTU. [RT #21056] --- diff --git a/CHANGES b/CHANGES index e5ff99eab8c..02c30926576 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +2863. [port] linux: disable IPv6 PMTUD and use network minimum MTU. + [RT #21056] + 2862. [bug] nsupdate didn't default to the parent zone when updating DS records. [RT #20896] diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index d3b2e96591a..91bb5b3766c 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.328 2010/01/31 23:49:09 tbox Exp $ */ +/* $Id: socket.c,v 1.329 2010/03/11 04:43:57 marka Exp $ */ /*! \file */ @@ -2396,6 +2396,26 @@ opensocket(isc__socketmgr_t *manager, isc__socket_t *sock) { (void *)&on, sizeof(on)); } #endif +#if defined(IPV6_MTU) + /* + * Use minimum MTU on IPv6 sockets. + */ + if (sock->pf == AF_INET6) { + int mtu = 1280; + (void)setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MTU, + &mtu, sizeof(mtu)); + } +#endif +#if defined(IPV6_MTU_DISCOVER) && defined(IPV6_PMTUDISC_DONT) + /* + * Turn off Path MTU discovery on IPv6/UDP sockets. + */ + if (sock->pf == AF_INET6) { + int action = IPV6_PMTUDISC_DONT; + (void)setsockopt(sock->fd, IPPROTO_IPV6, IPV6_MTU_DISCOVER, + &action, sizeof(action)); + } +#endif #endif /* ISC_PLATFORM_HAVEIPV6 */ #endif /* defined(USE_CMSG) */