On 26.03.2013 22:57, Alexander V. Chernikov wrote: > Author: melifaro > Date: Tue Mar 26 18:57:25 2013 > New Revision: 248743 > URL: http://svnweb.freebsd.org/changeset/base/248743 > > Log: Merge r238492.
> Permit changing MTU in 6to4 relay. > > This behavior is recommended by RFC 4213 clause 3.2. > > Sometimes fragmentation is the least evil. > For example, some Linux IPVS kernels forwards > ICMPv6 checksums to real servers incorrectly. > > Modified: > stable/9/sys/net/if_stf.c > Directory Properties: > stable/9/sys/ (props changed) > stable/9/sys/net/ (props changed) > > Modified: stable/9/sys/net/if_stf.c > ============================================================================== > --- stable/9/sys/net/if_stf.c Tue Mar 26 18:46:40 2013 (r248742) > +++ stable/9/sys/net/if_stf.c Tue Mar 26 18:57:25 2013 (r248743) > @@ -799,7 +799,7 @@ stf_rtrequest(cmd, rt, info) > struct rt_addrinfo *info; > { > RT_LOCK_ASSERT(rt); > - rt->rt_rmx.rmx_mtu = IPV6_MMTU; > + rt->rt_rmx.rmx_mtu = rt->rt_ifp->if_mtu; > } > > static int > @@ -812,7 +812,7 @@ stf_ioctl(ifp, cmd, data) > struct ifreq *ifr; > struct sockaddr_in6 *sin6; > struct in_addr addr; > - int error; > + int error, mtu; > > error = 0; > switch (cmd) { > @@ -846,6 +846,18 @@ stf_ioctl(ifp, cmd, data) > error = EAFNOSUPPORT; > break; > > + case SIOCGIFMTU: > + break; > + > + case SIOCSIFMTU: > + ifr = (struct ifreq *)data; > + mtu = ifr->ifr_mtu; > + /* RFC 4213 3.2 ideal world MTU */ > + if (mtu < IPV6_MINMTU || mtu > IF_MAXMTU - 20) > + return (EINVAL); > + ifp->if_mtu = mtu; > + break; > + > default: > error = EINVAL; > break; > -- WBR, Alexander _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"