summaryrefslogtreecommitdiff
path: root/include/netinet/in.h
AgeCommit message (Collapse)AuthorFilesLines
2017-08-29move IPPORT_RESERVED from netdb.h to netinet/in.hRich Felker1-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 Felker1-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 Felker1-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 Nagy1-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 Nagy1-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 Nagy1-0/+1
new in linux v4.0, commit ad6f939ab193750cc94a265f58e007fb598c97b7
2014-10-08add new IPV6_AUTOFLOWLABEL socket option in netinet/in.hSzabolcs Nagy1-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 Nagy1-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 Nagy1-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 Nagy1-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 Felker1-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 Felker1-0/+5
based on patch by Timo Teräs.
2013-11-23add multicast structures from RFC 3678 to netinet/in.hTimo Teräs1-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 Nagy1-0/+2
2013-07-22refactor headers, especially alltypes.h, and improve C++ ABI compatRich Felker1-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 Nagy1-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 Felker1-0/+3
2012-09-08add IPPROTO_HOPOPTS to in.hRich Felker1-0/+1
2012-09-08add IPPROTO_MAX to in.hRich Felker1-0/+1
2012-05-11add missing IN6_ARE_ADDR_EQUALRich Felker1-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 Felker1-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 Felker1-0/+8
patch by Arvid Picciani (aep)
2011-09-20fix some header typosRich Felker1-1/+1
2011-09-18move invariant netinet/in.h stuff out of bits/in.hRich Felker1-2/+147
2011-04-06add IN_LOOPBACKNET constant (nonstandard but in reserved namespace)Rich Felker1-0/+2
2011-02-20resolve some header namespace non-issuesRich Felker1-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 Felker1-0/+158