udplite(7)
๐ udplite(7) โ the manual page, bestie edition ๐
okay so you found udplite(7), the Miscellaneous Information Manual page for UDP-Lite. yes it's got its own man page number and everything. iconic. let's get into it ๐ฆ
โจ NAME โจ
udplite โ the Lightweight User Datagram Protocol. yes that's really what it stands for. cute, right?
๐ธ SYNOPSIS ๐ธ
#include <sys/socket.h>
sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);
that's it. that's the whole vibe. one socket() call and you're in ๐
๐ DESCRIPTION ๐
so this is an implementation of the Lightweight User Datagram Protocol (UDP-Lite), exactly as described in RFC 3828. no cap.
UDP-Lite is a whole extension of UDP (that's RFC 768, the classic) and what it adds is variable-length checksums. and like, that's genuinely a slay for certain types of multimedia transport, because those can actually make use of slightly damaged datagrams instead of just letting the lower-layer protocols discard them. sometimes a little damage is fine!! let the datagram live!!
the variable-length checksum coverage gets set through a setsockopt(2) option. and if you don't set that option? the only difference from regular UDP is that it uses a different IP protocol identifier โ IANA number 136. that's literally the only glow-up.
the UDP-Lite implementation is a full extension of udp(7), meaning it shares the same API and the same API behavior, and on top of that it offers two socket options to control the checksum coverage. two!! lil bonus options ๐ซถ
๐ Address format
UDP-Litev4 uses the sockaddr_in address format, which is described over in ip(7). UDP-Litev6 uses the sockaddr_in6 address format, described in ipv6(7). pick your fighter โจ
๐ Socket options
to set or get a UDP-Lite socket option, you call getsockopt(2) to read it or setsockopt(2) to write it, with the option level argument set to IPPROTO_UDPLITE. and also โ every single IPPROTO_UDP socket option is valid on a UDP-Lite socket too. see udp(7) for more info on those. bestie really said "yes and" to the whole UDP option set.
the following two options are specific to UDP-Lite:
UDPLITE_SEND_CSCOVโ this one sets the sender checksum coverage, and it takes anintas its argument, with a checksum coverage value in the range0..2^16-1. a value of0means the entire datagram is always covered. values from1-7are illegal (RFC 3828, 3.1) and get rounded up to the minimum coverage of8. and heads up about IPv6 jumbograms (RFC 2675): the UDP-Litev6 checksum coverage is limited to the first2^16-1octets, as per RFC 3828, 3.5, so higher values are therefore silently truncated to2^16-1. if in doubt, the current coverage value can always be queried usinggetsockopt(2). always check, bestie, always check ๐UDPLITE_RECV_CSCOVโ this is the receiver-side analogue, and it uses the same argument format and the same value range asUDPLITE_SEND_CSCOV. and listen: this option is not required to enable traffic with partial checksum coverage. its whole function is that of a traffic filter โ when enabled, it instructs the kernel to drop all packets which have a coverage less than the specified coverage value. so it's giving bouncer at the club energy. and when the value ofUDPLITE_RECV_CSCOVexceeds the actual packet coverage, incoming packets are silently dropped, though they may generate a warning message in the system log. silent but it's logging about it, the duality ๐ญ
๐ ERRORS ๐
all errors documented for udp(7) may be returned. UDP-Lite does not add any further errors. inherits the whole error collection from its parent and adds nothing. respect.
๐ FILES ๐
/proc/net/snmpโ basic UDP-Litev4 statistics counters. your numbers live here โจ/proc/net/snmp6โ basic UDP-Litev6 statistics counters. same but v6 ๐ซ
๐ VERSIONS ๐
UDP-Litev4 and UDP-Litev6 first appeared in Linux 2.6.20. ancient history in kernel years, but still serving.
๐ BUGS ๐
where glibc support is missing, you need these definitions. like, literally define them yourself, it's fine:
#define IPPROTO_UDPLITE 136
#define UDPLITE_SEND_CSCOV 10
#define UDPLITE_RECV_CSCOV 11
ok so that's the whole "you're on your own if your libc doesn't carry these" situation. just paste them in and move on, no drama ๐
๐ SEE ALSO ๐
RFC 3828 for the Lightweight User Datagram Protocol (UDP-Lite).
Documentation/networking/udplite.rst in the Linux kernel source tree
and that's the whole page, bestie!! ๐ this one came from the Linux man-pages, version 6.20, dated 2026-02-08. read RFC 3828 if you're feeling academic, go make some slightly damaged multimedia datagrams if you're feeling unhinged, and remember: partial coverage is still coverage. periodt ๐๐ฆโจ
๐ฆ where this page comes from
- arch rolling: man-pages 6.20-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
- nixpkgs unstable: man-pages 6.20
- ๐ the page's license: Linux-man-pages-copyleft
- Copyright 2008, Gerrit Renker <gerrit@erg.abdn.ac.uk>
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms