mirror of
https://github.com/torvalds/linux.git
synced 2026-10-06 18:46:02 +02:00
Since BIG TCP for UDP tunnels will start using len=0 in the UDP header as an indicator of a GSO packet bigger than 65535 bytes, this commit introduces the following getter and setters to use tree-wide, in order to explicitly mark places where len=0 may be expected, and handle them properly: 1. udp_set_len() sets uh->len to its real value if it's not bigger than 65535, and to 0 otherwise: to be used in GSO context with aggregated packets. 2. udp_set_len_short() is to be used when the length is known to fit 16 bits. It WARNs when the caller tries to assign a bigger value if CONFIG_DEBUG_NET=y. 3. udp_get_len_short() returns len in host byte order: to be used on the RX side to deal with non-aggregated packets, or to access the raw value of the len field. 4. udp_get_len() decodes uh->len set by udp_set_len(). It checks whether the packet is GSO to guard from malformed packets. At the moment udp_set_len() is not used, a following commit will start using it after enabling len>65535 for GSO. Raw uh->len (in network byte order) is still accessed in a few places for checksum calculation purposes, and to decode len=0 in udpv6_rcv for jumbograms. udp_rcv and udpv6_rcv will be addressed by the commit that starts using udp_set_len() to set UDP len=0 for BIG TCP packets in UDP tunnels. Signed-off-by: Alice Mikityanska <alice@isovalent.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Acked-by: Jason A. Donenfeld <Jason@zx2c4.com> Link: https://patch.msgid.link/20260710134242.216538-2-alice.kernel@fastmail.im Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org> Signed-off-by: Paolo Abeni <pabeni@redhat.com> |
||
|---|---|---|
| .. | ||
| generated | ||
| selftest | ||
| allowedips.c | ||
| allowedips.h | ||
| cookie.c | ||
| cookie.h | ||
| device.c | ||
| device.h | ||
| main.c | ||
| Makefile | ||
| messages.h | ||
| netlink.c | ||
| netlink.h | ||
| noise.c | ||
| noise.h | ||
| peer.c | ||
| peer.h | ||
| peerlookup.c | ||
| peerlookup.h | ||
| queueing.c | ||
| queueing.h | ||
| ratelimiter.c | ||
| ratelimiter.h | ||
| receive.c | ||
| send.c | ||
| socket.c | ||
| socket.h | ||
| timers.c | ||
| timers.h | ||
| version.h | ||