[systemd-devel] [PATCH] networkd vxlan: Add support for enabling UDP checksums

Tom Gundersen teg at jklm.no
Mon Apr 20 11:10:26 PDT 2015


Sorry for the delay. Applied. Thanks!

Tom

On Thu, Mar 5, 2015 at 5:32 PM, Susant Sahani <susant at redhat.com> wrote:
> Add UDPCheckSum option to enable transmitting UDP checksums when doing
> VXLAN/IPv4. Add UDP6ZeroChecksumRx, and UDP6ZeroChecksumTx
> options to enable sending zero checksums and receiving zero
> checksums in VXLAN/IPv6
>
> V2: rename Udp to UDP
> ---
>  man/systemd.netdev.xml                  | 20 +++++++++++++++++++-
>  src/network/networkd-netdev-gperf.gperf |  3 +++
>  src/network/networkd-netdev-vxlan.c     | 27 +++++++++++++++++++++++++++
>  src/network/networkd-netdev-vxlan.h     |  3 +++
>  4 files changed, 52 insertions(+), 1 deletion(-)
>
> diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml
> index e278aa1..7800dc4 100644
> --- a/man/systemd.netdev.xml
> +++ b/man/systemd.netdev.xml
> @@ -391,7 +391,25 @@
>                                                  <para>A boolean. When true route short circuit is turned on.</para>
>                                          </listitem>
>                                  </varlistentry>
> -                        </variablelist>
> +                                <varlistentry>
> +                                        <term><varname>UDPCheckSum=</varname></term>
> +                                        <listitem>
> +                                                <para>A boolean. When true transmitting UDP checksums when doing VXLAN/IPv4 is turned on.</para>
> +                                        </listitem>
> +                                </varlistentry>
> +                                <varlistentry>
> +                                        <term><varname>UDP6ZeroChecksumTx=</varname></term>
> +                                        <listitem>
> +                                                 <para>A boolean. When true sending zero checksums in VXLAN/IPv6 is turned on.</para>
> +                                        </listitem>
> +                                </varlistentry>
> +                                <varlistentry>
> +                                        <term><varname>UDP6ZeroCheckSumRx=</varname></term>
> +                                        <listitem>
> +                                                 <para>A boolean. When true receiving zero checksums in VXLAN/IPv6 is turned on.</para>
> +                                        </listitem>
> +                                </varlistentry>
> +                              </variablelist>
>          </refsect1>
>          <refsect1>
>                  <title>[Tunnel] Section Options</title>
> diff --git a/src/network/networkd-netdev-gperf.gperf b/src/network/networkd-netdev-gperf.gperf
> index 963c47c..c06344c 100644
> --- a/src/network/networkd-netdev-gperf.gperf
> +++ b/src/network/networkd-netdev-gperf.gperf
> @@ -47,6 +47,9 @@ VXLAN.ARPProxy,           config_parse_bool,                  0,
>  VXLAN.L2MissNotification, config_parse_bool,                  0,                             offsetof(VxLan, l2miss)
>  VXLAN.L3MissNotification, config_parse_bool,                  0,                             offsetof(VxLan, l3miss)
>  VXLAN.RouteShortCircuit,  config_parse_bool,                  0,                             offsetof(VxLan, route_short_circuit)
> +VXLAN.UDPCheckSum,        config_parse_bool,                  0,                             offsetof(VxLan, udpcsum)
> +VXLAN.UDP6ZeroCheckSumRx, config_parse_bool,                  0,                             offsetof(VxLan, udp6zerocsumrx)
> +VXLAN.UDP6ZeroCheckSumTx, config_parse_bool,                  0,                             offsetof(VxLan, udp6zerocsumtx)
>  VXLAN.FDBAgeingSec,       config_parse_sec,                   0,                             offsetof(VxLan, fdb_ageing)
>  Tun.OneQueue,             config_parse_bool,                  0,                             offsetof(TunTap, one_queue)
>  Tun.MultiQueue,           config_parse_bool,                  0,                             offsetof(TunTap, multi_queue)
> diff --git a/src/network/networkd-netdev-vxlan.c b/src/network/networkd-netdev-vxlan.c
> index d5128cb..d9b13e3 100644
> --- a/src/network/networkd-netdev-vxlan.c
> +++ b/src/network/networkd-netdev-vxlan.c
> @@ -135,6 +135,30 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_rtnl_
>                  }
>          }
>
> +        r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_UDP_CSUM, v->udpcsum);
> +        if (r < 0) {
> +                log_netdev_error(netdev,
> +                                 "Could not append IFLA_VXLAN_UDP_CSUM attribute: %s",
> +                                 strerror(-r));
> +                return r;
> +        }
> +
> +        r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_UDP_ZERO_CSUM6_TX, v->udp6zerocsumtx);
> +        if (r < 0) {
> +                log_netdev_error(netdev,
> +                                 "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_TX attribute: %s",
> +                                 strerror(-r));
> +                return r;
> +        }
> +
> +        r = sd_rtnl_message_append_u8(m, IFLA_VXLAN_UDP_ZERO_CSUM6_RX, v->udp6zerocsumrx);
> +        if (r < 0) {
> +                log_netdev_error(netdev,
> +                                 "Could not append IFLA_VXLAN_UDP_ZERO_CSUM6_RX attribute: %s",
> +                                 strerror(-r));
> +                return r;
> +        }
> +
>          return r;
>  }
>
> @@ -199,6 +223,9 @@ static void vxlan_init(NetDev *netdev) {
>
>          v->id = VXLAN_VID_MAX + 1;
>          v->learning = true;
> +        v->udpcsum = false;
> +        v->udp6zerocsumtx = false;
> +        v->udp6zerocsumrx = false;
>  }
>
>  const NetDevVTable vxlan_vtable = {
> diff --git a/src/network/networkd-netdev-vxlan.h b/src/network/networkd-netdev-vxlan.h
> index 6339af9..fe5254e 100644
> --- a/src/network/networkd-netdev-vxlan.h
> +++ b/src/network/networkd-netdev-vxlan.h
> @@ -47,6 +47,9 @@ struct VxLan {
>          bool route_short_circuit;
>          bool l2miss;
>          bool l3miss;
> +        bool udpcsum;
> +        bool udp6zerocsumtx;
> +        bool udp6zerocsumrx;
>  };
>
>  extern const NetDevVTable vxlan_vtable;
> --
> 2.1.0
>
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


More information about the systemd-devel mailing list