[PATCH net-next 1/3] vxlan: don't allow link-local IPv6 local/remote addresses without interface

From: Matthias Schiffer
Date: Fri Mar 10 2017 - 17:50:08 EST


Signed-off-by: Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
---
drivers/net/vxlan.c | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index e375560cc74e..cc0ace73d02e 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -2922,6 +2922,18 @@ static int vxlan_dev_configure(struct net *src_net, struct net_device *dev,
pr_info("multicast destination requires interface to be specified\n");
return -EINVAL;
}
+#if IS_ENABLED(CONFIG_IPV6)
+ else if (!conf->remote_ifindex &&
+ ((conf->saddr.sa.sa_family == AF_INET6 &&
+ (ipv6_addr_type(&conf->saddr.sin6.sin6_addr) &
+ IPV6_ADDR_LINKLOCAL)) ||
+ (dst->remote_ip.sa.sa_family == AF_INET6 &&
+ (ipv6_addr_type(&dst->remote_ip.sin6.sin6_addr) &
+ IPV6_ADDR_LINKLOCAL)))) {
+ pr_info("link-local local/remote addresses require interface to be specified\n");
+ return -EINVAL;
+ }
+#endif

if (conf->mtu) {
int max_mtu = ETH_MAX_MTU;
--
2.12.0