• Gerhard Stenzel's avatar
    vxlan: fix incorrect initializer in union vxlan_addr · a45e92a5
    Gerhard Stenzel authored
    The first initializer in the following
    
            union vxlan_addr ipa = {
                .sin.sin_addr.s_addr = tip,
                .sa.sa_family = AF_INET,
            };
    
    is optimised away by the compiler, due to the second initializer,
    therefore initialising .sin.sin_addr.s_addr always to 0.
    This results in netlink messages indicating a L3 miss never contain the
    missed IP address. This was observed with GCC 4.8 and 4.9. I do not know about previous versions.
    The problem affects user space programs relying on an IP address being
    sent as part of a netlink message indicating a L3 miss.
    
    Changing
                .sa.sa_family = AF_INET,
    to
                .sin.sin_family = AF_INET,
    fixes the problem.
    Signed-off-by: default avatarGerhard Stenzel <gerhard.stenzel@de.ibm.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a45e92a5
vxlan.c 72.4 KB