[IPV6]: Update MSS even if MTU is unchanged.
This is needed because in ndisc.c, we have: static void ndisc_router_discovery(struct sk_buff *skb) { // ... if (ndopts.nd_opts_mtu) { // ... if (rt) rt->u.dst.metrics[RTAX_MTU-1] = mtu; rt6_mtu_change(skb->dev, mtu); // ... } Since the mtu is set directly here, rt6_mtu_change_route thinks that it is unchanged, and so it fails to update the MSS accordingly. This patch lets rt6_mtu_change_route still update MSS if old_mtu == new_mtu. Signed-off-by: Jim Paris <jim@jtan.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
fa4d3c6210
commit
23717795be
|
@ -1909,7 +1909,7 @@ static int rt6_mtu_change_route(struct rt6_info *rt, void *p_arg)
|
||||||
*/
|
*/
|
||||||
if (rt->rt6i_dev == arg->dev &&
|
if (rt->rt6i_dev == arg->dev &&
|
||||||
!dst_metric_locked(&rt->u.dst, RTAX_MTU) &&
|
!dst_metric_locked(&rt->u.dst, RTAX_MTU) &&
|
||||||
(dst_mtu(&rt->u.dst) > arg->mtu ||
|
(dst_mtu(&rt->u.dst) >= arg->mtu ||
|
||||||
(dst_mtu(&rt->u.dst) < arg->mtu &&
|
(dst_mtu(&rt->u.dst) < arg->mtu &&
|
||||||
dst_mtu(&rt->u.dst) == idev->cnf.mtu6))) {
|
dst_mtu(&rt->u.dst) == idev->cnf.mtu6))) {
|
||||||
rt->u.dst.metrics[RTAX_MTU-1] = arg->mtu;
|
rt->u.dst.metrics[RTAX_MTU-1] = arg->mtu;
|
||||||
|
|
Loading…
Reference in New Issue