Commit 018f8258 authored by Wang Shanker's avatar Wang Shanker Committed by David S. Miller

net: l2tp: fix reversed udp6 checksum flags

This patch fixes a bug which causes the behavior of whether to ignore
udp6 checksum of udp6 encapsulated l2tp tunnel contrary to what
userspace program requests.

When the flag `L2TP_ATTR_UDP_ZERO_CSUM6_RX` is set by userspace, it is
expected that udp6 checksums of received packets of the l2tp tunnel
to create should be ignored. In `l2tp_netlink.c`:
`l2tp_nl_cmd_tunnel_create()`, `cfg.udp6_zero_rx_checksums` is set
according to the flag, and then passed to `l2tp_core.c`:
`l2tp_tunnel_create()` and then `l2tp_tunnel_sock_create()`. In
`l2tp_tunnel_sock_create()`, `udp_conf.use_udp6_rx_checksums` is set
the same to `cfg.udp6_zero_rx_checksums`. However, if we want the
checksum to be ignored, `udp_conf.use_udp6_rx_checksums` should be set
to `false`, i.e. be set to the contrary. Similarly, the same should be
done to `udp_conf.use_udp6_tx_checksums`.
Signed-off-by: default avatarMiao Wang <shankerwangmiao@gmail.com>
Acked-by: default avatarJames Chapman <jchapman@katalix.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent f27337e1
...@@ -1376,9 +1376,9 @@ static int l2tp_tunnel_sock_create(struct net *net, ...@@ -1376,9 +1376,9 @@ static int l2tp_tunnel_sock_create(struct net *net,
memcpy(&udp_conf.peer_ip6, cfg->peer_ip6, memcpy(&udp_conf.peer_ip6, cfg->peer_ip6,
sizeof(udp_conf.peer_ip6)); sizeof(udp_conf.peer_ip6));
udp_conf.use_udp6_tx_checksums = udp_conf.use_udp6_tx_checksums =
cfg->udp6_zero_tx_checksums; ! cfg->udp6_zero_tx_checksums;
udp_conf.use_udp6_rx_checksums = udp_conf.use_udp6_rx_checksums =
cfg->udp6_zero_rx_checksums; ! cfg->udp6_zero_rx_checksums;
} else } else
#endif #endif
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment