aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/vxlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/vxlan.c')
-rw-r--r--drivers/net/vxlan.c15
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)