| From foo@baz Sun May 27 17:33:38 CEST 2018 |
| From: Xin Long <lucien.xin@gmail.com> |
| Date: Tue, 27 Feb 2018 19:19:41 +0800 |
| Subject: sit: fix IFLA_MTU ignored on NEWLINK |
| |
| From: Xin Long <lucien.xin@gmail.com> |
| |
| [ Upstream commit 2b3957c34b6d7f03544b12ebbf875eee430745db ] |
| |
| Commit 128bb975dc3c ("ip6_gre: init dev->mtu and dev->hard_header_len |
| correctly") fixed IFLA_MTU ignored on NEWLINK for ip6_gre. The same |
| mtu fix is also needed for sit. |
| |
| Note that dev->hard_header_len setting for sit works fine, no need to |
| fix it. sit is actually ipv4 tunnel, it can't call ip6_tnl_change_mtu |
| to set mtu. |
| |
| Reported-by: Jianlin Shi <jishi@redhat.com> |
| Signed-off-by: Xin Long <lucien.xin@gmail.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| net/ipv6/sit.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/net/ipv6/sit.c |
| +++ b/net/ipv6/sit.c |
| @@ -1572,6 +1572,13 @@ static int ipip6_newlink(struct net *src |
| if (err < 0) |
| return err; |
| |
| + if (tb[IFLA_MTU]) { |
| + u32 mtu = nla_get_u32(tb[IFLA_MTU]); |
| + |
| + if (mtu >= IPV6_MIN_MTU && mtu <= 0xFFF8 - dev->hard_header_len) |
| + dev->mtu = mtu; |
| + } |
| + |
| #ifdef CONFIG_IPV6_SIT_6RD |
| if (ipip6_netlink_6rd_parms(data, &ip6rd)) |
| err = ipip6_tunnel_update_6rd(nt, &ip6rd); |