summaryrefslogtreecommitdiff
path: root/include/netinet/in.h
AgeCommit message (Collapse)AuthorLines
2022-03-08netinet/in.h: add INADDR_DUMMY from linux v5.13Szabolcs Nagy-0/+1
see linux commit 321827477360934dc040e9d3c626bf1de6c3ab3c icmp: don't send out ICMP messages with a source address of 0.0.0.0 "RFC7600 reserves a dummy address to be used as a source for ICMP messages (192.0.0.8/32), so let's teach the kernel to substitute that address as a last resort if the regular source address selection procedure fails."
2020-11-29netinet/in.h: add IP_RECVERR_4884 from linux v5.9Szabolcs Nagy-0/+1
see linux commit eba75c587e811d3249c8bd50d22bb2266ccd3c0f icmp: support rfc 4884
2020-09-09netinet/in.h: add IPPROTO_ macros from linux v5.6Szabolcs Nagy-1/+3
add IPPROTO_ETHERNET and IPPROTO_MPTCP, see linux commit 2677625387056136e256c743e3285b4fe3da87bb seg6: fix SRv6 L2 tunnels to use IANA-assigned protocol number linux commit faf391c3826cd29feae02078ca2022d2f912f7cc tcp: Define IPPROTO_MPTCP
2020-03-04remove duplicate definitions of INET[6]_ADDRSTRLENRich Felker-2/+0
these were leftover from early beginnings when arpa/inet.h was not including netinet/in.h.
2019-07-01netinet/in.h: add INADDR_ALLSNOOPERS_GROUP from linux v5.1Szabolcs Nagy-0/+1
RFC 4286: "The IPv4 multicast address for All-Snoopers is 224.0.0.106." from linux commit 4effd28c1245303dce7fd290c501ac2c11052114 bridge: join all-snoopers multicast address
2019-07-01netinet/in.h: add IPV6_ROUTER_ALERT_ISOLATE from linux v5.1Szabolcs Nagy-0/+1
restricts router alert packets received by the socket to the socket's namespace only. see linux commit 9036b2fe092a107856edd1a3bad48b83f2b45000 net: ipv6: add socket option IPV6_ROUTER_ALERT_ISOLATE
2019-03-13netinet/in.h add IPV6_MULTICAST_ALL from linux v4.20Szabolcs Nagy-0/+1
ipv6 analogue of IP_MULTICAST_ALL sockopt. added in linux commit 15033f0457dca569b284bef0c8d3ad55fb37eacb
2018-02-22netinet/in.h: add new IPV6_FREEBIND from linux v4.15Szabolcs Nagy-0/+1
new socekt option for AF_INET6 SOL_RAW sockets, added in linux commit 84e14fe353de7624872e582887712079ba0b2d56
2017-11-05add IP_RECVFRAGSIZE and IPV6_RECVFRAGSIZE from linux v4.10Szabolcs Nagy-0/+2
added in linux commit 70ecc24841326396a827deb55c3fefac582a729d
2017-08-29move IPPORT_RESERVED from netdb.h to netinet/in.hRich Felker-0/+2
it's in the reserved namespace for the latter, where it seems it was historically defined, and some programs expect to find it there.
2016-11-07make netinet/in.h suppress clashing definitions from kernel headersRich Felker-0/+15
the linux kernel uapi headers provide their own definitions of the structures from netinet/in.h, resulting in errors when a program includes both the standard libc header and one or more of the networking-related kernel headers that pull in the kernel definitions. as before, we do not attempt to support the case where kernel headers are included before the libc ones, since the kernel definitions may have subtly incorrect types, namespace violations, etc. however, we can easily support the inclusion of the kernel headers after the libc ones, since the kernel headers provide a public interface for suppressing their definitions. this patch adds the necessary macro definitions for such suppression.
2016-07-03make brace placement in public header struct definitions consistentRich Felker-20/+10
placing the opening brace on the same line as the struct keyword/tag is the style I prefer and seems to be the prevailing practice in more recent additions. these changes were generated by the command: find include/ arch/*/bits -name '*.h' \ -exec sed -i '/^struct [^;{]*$/{N;s/\n/ /;}' {} + and subsequently checked by hand to ensure that the regex did not pick up any false positives.
2016-03-19add IPV6_HDRINCL socket option from linux v4.5Szabolcs Nagy-0/+1
new in linux commit 715f504b118998c41a2079a17e16bf5a8a114885 same as IP_HDRINCL but for SOL_IPV6 sockets.
2016-01-24add new IP_BIND_ADDRESS_NO_PORT and IPPROTO_MPLS to netinet/in.hSzabolcs Nagy-0/+2
IP_BIND_ADDRESS_NO_PORT is a SOL_IP socket option to delay src port allocation until connect in case src ip is set with bind(port=0). new in linux v4.2, commit 90c337da1524863838658078ec34241f45d8394d IPPROTO_MPLS protocol number for mpls over ip. new in linux v4.2, commit 730fc4371333636a00fed32c587fc1e85c5367e2
2015-04-17add IP_CHECKSUM socket option to netinet/in.hSzabolcs Nagy-0/+1
new in linux v4.0, commit ad6f939ab193750cc94a265f58e007fb598c97b7
2014-10-08add new IPV6_AUTOFLOWLABEL socket option in netinet/in.hSzabolcs Nagy-0/+1
added in linux v3.17 commit 753a2ad54ef45e3417a9d49537c2b42b04a2e1be enables automatic flow label generation on transmit
2014-05-30update netinet/in.h to match the current kernel uapiSzabolcs Nagy-1/+21
from linux/in.h and linux/in6.h uapi headers the following missing socket options were added: IP_NODEFRAG - used with customized ipv4 headers IPV6_RECVPATHMTU - for ipv6 path mtu IPV6_PATHMTU - for ipv6 path mtu IPV6_DONTFRAG - for ipv6 path mtu IPV6_ADDR_PREFERENCES - RFC5014 Source Address Selection IPV6_MINHOPCOUNT - RFC5082 Generalized TTL Security Mechanism IPV6_ORIGDSTADDR - used by tproxy IPV6_RECVORIGDSTADDR - used by tproxy IPV6_TRANSPARENT - used by tproxy IPV6_UNICAST_IF - ipv6 version of IP_UNICAST_IF and socket option values: IP_PMTUDISC_OMIT - value for IP_MTU_DISCOVER option, new in linux 3.14 IPV6_PMTUDISC_OMIT - same for IPV6_MTU_DISCOVER IPV6_PMTUDISC_INTERFACE - ipv6 version of IP_PMTUDISC_INTERFACE IPV6_PREFER_* - flags for IPV6_ADDR_PREFERENCES not added: ipv6 flow info and flow label related definitions. (it's unclear if libc should define these and namespace polluting type name is involved so they are not provided for now)
2014-02-25in.h: new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACESzabolcs Nagy-0/+1
introduced in linux v3.13, 482fc6094afad572a4ea1fd722e7b11ca72022a0 to mitigate dns cache poisoning via fragmentation
2014-02-11add parens when bit and arith ops are mixed in macros in public headersSzabolcs Nagy-1/+1
another commit to silence gcc warnings (-Wparentheses) for standard headers. changed macros: LOG_UPTO, IN6_ARE_ADDR_EQUAL
2014-01-08fix remaining known namespace violations for netinet/in.hRich Felker-22/+14
the imr_, imsf_, ip6_, ip6m_, ipi_, ipi6_, SCM_, and SOL_ prefixes are not in the reserved namespace for this header. thus the constants and structures using them need to be protected under appropriate feature test macros. this also affects some headers which are permitted to include netinet/in.h, particularly netdb.h and arpa/inet.h. the SOL_ macros are moved to sys/socket.h where they are in the reserved namespace (SO*). they are still accessible via netinet/in.h since it includes sys/socket.h implicitly (which is permitted). the SCM_SRCRT macro is simply removed, since the definition used for it, IPV6_RXSRCRT is not defined anywhere. it could be re-added, this time in sys/socket.h, if the appropriate value can be determined; however, given that the erroneous definition was not caught, it is unlikely that any software actually attempts to use SCM_SRCRT.
2013-12-20add netinet/igmp.h and multicast groups to netinet/in.hRich Felker-0/+5
based on patch by Timo Teräs.
2013-11-23add multicast structures from RFC 3678 to netinet/in.hTimo Teräs-1/+42
and use _GNU_SOURCE || _BSD_SOURCE guards for all of the RFC 3678 namespace polluting things like glibc/uclibc does.
2013-09-15netinet/in.h: add missing IP protocol numbers from the linux uapi headersSzabolcs Nagy-0/+2
2013-07-22refactor headers, especially alltypes.h, and improve C++ ABI compatRich Felker-9/+5
the arch-specific bits/alltypes.h.sh has been replaced with a generic alltypes.h.in and minimal arch-specific bits/alltypes.h.in. this commit is intended to have no functional changes except: - exposing additional symbols that POSIX allows but does not require - changing the C++ name mangling for some types - fixing the signedness of blksize_t on powerpc (POSIX requires signed) - fixing the limit macros for sig_atomic_t on x86_64 - making dev_t an unsigned type (ABI matching goal, and more logical) in addition, some types that were wrongly defined with long on 32-bit archs were changed to int, and vice versa; this change is non-functional except for the possibility of making pointer types mismatch, and only affects programs that were using them incorrectly, and only at build-time, not runtime. the following changes were made in the interest of moving non-arch-specific types out of the alltypes system and into the headers they're associated with, and also will tend to improve application compatibility: - netdb.h now includes netinet/in.h (for socklen_t and uint32_t) - netinet/in.h now includes sys/socket.h and inttypes.h - sys/resource.h now includes sys/time.h (for struct timeval) - sys/wait.h now includes signal.h (for siginfo_t) - langinfo.h now includes nl_types.h (for nl_item) for the types in stdint.h: - types which are of no interest to other headers were moved out of the alltypes system. - fast types for 8- and 64-bit are hard-coded (at least for now); only the 16- and 32-bit ones have reason to vary by arch. and the following types have been changed for C++ ABI purposes; - mbstate_t now has a struct tag, __mbstate_t - FILE's struct tag has been changed to _IO_FILE - DIR's struct tag has been changed to __dirstream - locale_t's struct tag has been changed to __locale_struct - pthread_t is defined as unsigned long in C++ mode only - fpos_t now has a struct tag, _G_fpos64_t - fsid_t's struct tag has been changed to __fsid_t - idtype_t has been made an enum type (also required by POSIX) - nl_catd has been changed from long to void * - siginfo_t's struct tag has been removed - sigset_t's has been given a struct tag, __sigset_t - stack_t has been given a struct tag, sigaltstack - suseconds_t has been changed to long on 32-bit archs - [u]intptr_t have been changed from long to int rank on 32-bit archs - dev_t has been made unsigned summary of tests that have been performed against these changes: - nsz's libc-test (diff -u before and after) - C++ ABI check symbol dump (diff -u before, after, glibc) - grepped for __NEED, made sure types needed are still in alltypes - built gcc 3.4.6
2013-01-12add missing multicast socket options to netinet/in.hSzabolcs Nagy-0/+17
based on linux headers add the missing MCAST_* options under _GNU_SOURCE as they are not in the reserved namespace (this api was originally specified by RFC 3678)
2013-01-01add some new-ish IPPROTO constants that were missingRich Felker-0/+3
2012-09-08add IPPROTO_HOPOPTS to in.hRich Felker-0/+1
2012-09-08add IPPROTO_MAX to in.hRich Felker-0/+1
2012-05-11add missing IN6_ARE_ADDR_EQUALRich Felker-0/+5
written to avoid multiple conditional jumps and avoid ugly repetitive lines in the header file.
2012-05-03add additional compatibility union member for ipv6 addressesRich Felker-0/+2
in6_* is in the reserved namespace, so this is valid
2011-11-10fix all missing instances of __cplusplus checks/extern "C" in headersRich Felker-0/+8
patch by Arvid Picciani (aep)
2011-09-20fix some header typosRich Felker-1/+1
2011-09-18move invariant netinet/in.h stuff out of bits/in.hRich Felker-2/+147
2011-04-06add IN_LOOPBACKNET constant (nonstandard but in reserved namespace)Rich Felker-0/+2
2011-02-20resolve some header namespace non-issuesRich Felker-2/+0
after re-reading 2.2.2 of POSIX 2008, all of these are in the correct reserved namespaces and do not need protection.
2011-02-12initial check-in, version 0.5.0v0.5.0Rich Felker-0/+158