|
@@ -1982,14 +1982,14 @@ static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
|
|
|
{
|
|
|
struct net *net = dev_net(dev);
|
|
|
struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
|
|
|
- struct ip6_tnl *nt, *t;
|
|
|
struct ip_tunnel_encap ipencap;
|
|
|
+ struct ip6_tnl *nt, *t;
|
|
|
+ int err;
|
|
|
|
|
|
nt = netdev_priv(dev);
|
|
|
|
|
|
if (ip6_tnl_netlink_encap_parms(data, &ipencap)) {
|
|
|
- int err = ip6_tnl_encap_setup(nt, &ipencap);
|
|
|
-
|
|
|
+ err = ip6_tnl_encap_setup(nt, &ipencap);
|
|
|
if (err < 0)
|
|
|
return err;
|
|
|
}
|
|
@@ -2005,7 +2005,11 @@ static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
|
|
|
return -EEXIST;
|
|
|
}
|
|
|
|
|
|
- return ip6_tnl_create2(dev);
|
|
|
+ err = ip6_tnl_create2(dev);
|
|
|
+ if (!err && tb[IFLA_MTU])
|
|
|
+ ip6_tnl_change_mtu(dev, nla_get_u32(tb[IFLA_MTU]));
|
|
|
+
|
|
|
+ return err;
|
|
|
}
|
|
|
|
|
|
static int ip6_tnl_changelink(struct net_device *dev, struct nlattr *tb[],
|