diff options
Diffstat (limited to 'drivers/net/vxlan.c')
-rw-r--r-- | drivers/net/vxlan.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index cf8b7f0473b3..bbac1d35ed4e 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c | |||
@@ -2392,10 +2392,6 @@ static void vxlan_setup(struct net_device *dev) | |||
2392 | 2392 | ||
2393 | eth_hw_addr_random(dev); | 2393 | eth_hw_addr_random(dev); |
2394 | ether_setup(dev); | 2394 | ether_setup(dev); |
2395 | if (vxlan->default_dst.remote_ip.sa.sa_family == AF_INET6) | ||
2396 | dev->needed_headroom = ETH_HLEN + VXLAN6_HEADROOM; | ||
2397 | else | ||
2398 | dev->needed_headroom = ETH_HLEN + VXLAN_HEADROOM; | ||
2399 | 2395 | ||
2400 | dev->netdev_ops = &vxlan_netdev_ops; | 2396 | dev->netdev_ops = &vxlan_netdev_ops; |
2401 | dev->destructor = free_netdev; | 2397 | dev->destructor = free_netdev; |
@@ -2640,8 +2636,11 @@ static int vxlan_dev_configure(struct net *src_net, struct net_device *dev, | |||
2640 | dst->remote_ip.sa.sa_family = AF_INET; | 2636 | dst->remote_ip.sa.sa_family = AF_INET; |
2641 | 2637 | ||
2642 | if (dst->remote_ip.sa.sa_family == AF_INET6 || | 2638 | if (dst->remote_ip.sa.sa_family == AF_INET6 || |
2643 | vxlan->cfg.saddr.sa.sa_family == AF_INET6) | 2639 | vxlan->cfg.saddr.sa.sa_family == AF_INET6) { |
2640 | if (!IS_ENABLED(CONFIG_IPV6)) | ||
2641 | return -EPFNOSUPPORT; | ||
2644 | use_ipv6 = true; | 2642 | use_ipv6 = true; |
2643 | } | ||
2645 | 2644 | ||
2646 | if (conf->remote_ifindex) { | 2645 | if (conf->remote_ifindex) { |
2647 | struct net_device *lowerdev | 2646 | struct net_device *lowerdev |
@@ -2670,8 +2669,12 @@ static int vxlan_dev_configure(struct net *src_net, struct net_device *dev, | |||
2670 | 2669 | ||
2671 | dev->needed_headroom = lowerdev->hard_header_len + | 2670 | dev->needed_headroom = lowerdev->hard_header_len + |
2672 | (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); | 2671 | (use_ipv6 ? VXLAN6_HEADROOM : VXLAN_HEADROOM); |
2673 | } else if (use_ipv6) | 2672 | } else if (use_ipv6) { |
2674 | vxlan->flags |= VXLAN_F_IPV6; | 2673 | vxlan->flags |= VXLAN_F_IPV6; |
2674 | dev->needed_headroom = ETH_HLEN + VXLAN6_HEADROOM; | ||
2675 | } else { | ||
2676 | dev->needed_headroom = ETH_HLEN + VXLAN_HEADROOM; | ||
2677 | } | ||
2675 | 2678 | ||
2676 | memcpy(&vxlan->cfg, conf, sizeof(*conf)); | 2679 | memcpy(&vxlan->cfg, conf, sizeof(*conf)); |
2677 | if (!vxlan->cfg.dst_port) | 2680 | if (!vxlan->cfg.dst_port) |