• Matthias Schiffer's avatar
    vxlan: refactor verification and application of configuration · a985343b
    Matthias Schiffer authored
    The vxlan_dev_configure function was mixing validation and application of
    the vxlan configuration; this could easily lead to bugs with the changelink
    operation, as it was hard to see if the function wcould return an error
    after parts of the configuration had already been applied.
    
    This commit splits validation and application out of vxlan_dev_configure as
    separate functions to make it clearer where error returns are allowed and
    where the vxlan_dev or net_device may be configured. Log messages in these
    functions are removed, as it is generally unexpected to find error output
    for netlink requests in the kernel log. Userspace should be able to handle
    errors based on the error codes returned via netlink just fine.
    
    In addition, some validation and initialization is moved to vxlan_validate
    and vxlan_setup respectively to improve grouping of similar settings.
    
    Finally, this also fixes two actual bugs:
    
    * if set, conf->mtu would overwrite dev->mtu in each changelink operation,
      reverting other changes of dev->mtu
    * the "if (!conf->dst_port)" branch would never be run, as conf->dst_port
      was set in vxlan_setup before. This caused VXLAN-GPE to use the same
      default port as other VXLAN sockets instead of the intended IANA-assigned
      4790.
    Signed-off-by: default avatarMatthias Schiffer <mschiffer@universe-factory.net>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a985343b
vxlan.c 90.9 KB