diff options
Diffstat (limited to 'net/ipv6/sit.c')
-rw-r--r-- | net/ipv6/sit.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c index 3873d3877135..0195598f7bb5 100644 --- a/net/ipv6/sit.c +++ b/net/ipv6/sit.c | |||
@@ -182,7 +182,7 @@ static void ipip6_tunnel_clone_6rd(struct net_device *dev, struct sit_net *sitn) | |||
182 | #ifdef CONFIG_IPV6_SIT_6RD | 182 | #ifdef CONFIG_IPV6_SIT_6RD |
183 | struct ip_tunnel *t = netdev_priv(dev); | 183 | struct ip_tunnel *t = netdev_priv(dev); |
184 | 184 | ||
185 | if (t->dev == sitn->fb_tunnel_dev) { | 185 | if (dev == sitn->fb_tunnel_dev) { |
186 | ipv6_addr_set(&t->ip6rd.prefix, htonl(0x20020000), 0, 0, 0); | 186 | ipv6_addr_set(&t->ip6rd.prefix, htonl(0x20020000), 0, 0, 0); |
187 | t->ip6rd.relay_prefix = 0; | 187 | t->ip6rd.relay_prefix = 0; |
188 | t->ip6rd.prefixlen = 16; | 188 | t->ip6rd.prefixlen = 16; |
@@ -1578,6 +1578,13 @@ static int ipip6_newlink(struct net *src_net, struct net_device *dev, | |||
1578 | if (err < 0) | 1578 | if (err < 0) |
1579 | return err; | 1579 | return err; |
1580 | 1580 | ||
1581 | if (tb[IFLA_MTU]) { | ||
1582 | u32 mtu = nla_get_u32(tb[IFLA_MTU]); | ||
1583 | |||
1584 | if (mtu >= IPV6_MIN_MTU && mtu <= 0xFFF8 - dev->hard_header_len) | ||
1585 | dev->mtu = mtu; | ||
1586 | } | ||
1587 | |||
1581 | #ifdef CONFIG_IPV6_SIT_6RD | 1588 | #ifdef CONFIG_IPV6_SIT_6RD |
1582 | if (ipip6_netlink_6rd_parms(data, &ip6rd)) | 1589 | if (ipip6_netlink_6rd_parms(data, &ip6rd)) |
1583 | err = ipip6_tunnel_update_6rd(nt, &ip6rd); | 1590 | err = ipip6_tunnel_update_6rd(nt, &ip6rd); |