From: Zbigniew Jędrzejewski-Szmek Date: Fri, 2 Dec 2016 18:34:35 +0000 (-0500) Subject: networkd: check that VTI/VTI6 tunnels have a local address X-Git-Tag: v233~334^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6f3d4decf296f0f0fb2b15dd80216f130f10727d;p=thirdparty%2Fsystemd.git networkd: check that VTI/VTI6 tunnels have a local address Otherwise we'd fail with an assertion: Assertion 't->family == AF_INET' failed at ../src/network/netdev/tunnel.c:244, function netdev_vti_fill_message_create(). Aborting. --- diff --git a/src/network/netdev/tunnel.c b/src/network/netdev/tunnel.c index 2ce55a84b68..c11ac0c539a 100644 --- a/src/network/netdev/tunnel.c +++ b/src/network/netdev/tunnel.c @@ -403,6 +403,20 @@ static int netdev_tunnel_verify(NetDev *netdev, const char *filename) { return -EINVAL; } + if (netdev->kind == NETDEV_KIND_VTI && + (t->family != AF_INET || in_addr_is_null(t->family, &t->local))) { + log_netdev_error(netdev, + "vti tunnel without a local IPv4 address configured in %s. Ignoring", filename); + return -EINVAL; + } + + if (netdev->kind == NETDEV_KIND_VTI6 && + (t->family != AF_INET6 || in_addr_is_null(t->family, &t->local))) { + log_netdev_error(netdev, + "vti6 tunnel without a local IPv4 address configured in %s. Ignoring", filename); + return -EINVAL; + } + if (netdev->kind == NETDEV_KIND_IP6TNL && t->ip6tnl_mode == _NETDEV_IP6_TNL_MODE_INVALID) { log_netdev_error(netdev,