From cd5f6f842905b83d8c49f3eacb17273997036552 Mon Sep 17 00:00:00 2001 From: Tuetuopay Date: Tue, 15 May 2018 14:11:20 +0200 Subject: [PATCH 53/76] route/link/vxlan: Fix IPv4 set_local resetting ce_mask rtnl_link_vxlan_set_local() removes the bit for the other IP version in ce_mask. A missing flag inversion in the v4 part made this removal reset all bits to 0 except the v6 one, screwing all link configuration. Fixes: 2e68fb5b02304fa6a3e6429c4fdabb084e61b501 https://github.com/thom311/libnl/pull/192 --- lib/route/link/vxlan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/route/link/vxlan.c b/lib/route/link/vxlan.c index 9e578ec..686ac31 100644 --- a/lib/route/link/vxlan.c +++ b/lib/route/link/vxlan.c @@ -889,7 +889,7 @@ int rtnl_link_vxlan_set_local(struct rtnl_link *link, struct nl_addr *addr) memcpy(&vxi->vxi_local, nl_addr_get_binary_addr(addr), sizeof(vxi->vxi_local)); vxi->ce_mask |= VXLAN_ATTR_LOCAL; - vxi->ce_mask &= VXLAN_ATTR_LOCAL6; + vxi->ce_mask &= ~VXLAN_ATTR_LOCAL6; } else if ((nl_addr_get_family(addr) == AF_INET6) && (nl_addr_get_len(addr) == sizeof(vxi->vxi_local6))) { memcpy(&vxi->vxi_local6, nl_addr_get_binary_addr(addr), -- 1.8.3.1