about summary refs log tree commit diff
path: root/include/netinet/in.h
Commit message (Collapse)AuthorAgeFilesLines
* make netinet/in.h suppress clashing definitions from kernel headersRich Felker2016-11-071-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.
* make brace placement in public header struct definitions consistentRich Felker2016-07-031-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.
* add IPV6_HDRINCL socket option from linux v4.5Szabolcs Nagy2016-03-191-0/+1
| | | | | new in linux commit 715f504b118998c41a2079a17e16bf5a8a114885 same as IP_HDRINCL but for SOL_IPV6 sockets.
* add new IP_BIND_ADDRESS_NO_PORT and IPPROTO_MPLS to netinet/in.hSzabolcs Nagy2016-01-241-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
* add IP_CHECKSUM socket option to netinet/in.hSzabolcs Nagy2015-04-171-0/+1
| | | | new in linux v4.0, commit ad6f939ab193750cc94a265f58e007fb598c97b7
* add new IPV6_AUTOFLOWLABEL socket option in netinet/in.hSzabolcs Nagy2014-10-081-0/+1
| | | | | added in linux v3.17 commit 753a2ad54ef45e3417a9d49537c2b42b04a2e1be enables automatic flow label generation on transmit
* update netinet/in.h to match the current kernel uapiSzabolcs Nagy2014-05-301-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)
* in.h: new IP_MTU_DISCOVER mode IP_PMTUDISC_INTERFACESzabolcs Nagy2014-02-251-0/+1
| | | | | introduced in linux v3.13, 482fc6094afad572a4ea1fd722e7b11ca72022a0 to mitigate dns cache poisoning via fragmentation
* add parens when bit and arith ops are mixed in macros in public headersSzabolcs Nagy2014-02-111-1/+1
| | | | | another commit to silence gcc warnings (-Wparentheses) for standard headers. changed macros: LOG_UPTO, IN6_ARE_ADDR_EQUAL
* fix remaining known namespace violations for netinet/in.hRich Felker2014-01-081-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.
* add netinet/igmp.h and multicast groups to netinet/in.hRich Felker2013-12-201-0/+5
| | | | based on patch by Timo Teräs.
* add multicast structures from RFC 3678 to netinet/in.hTimo Teräs2013-11-231-1/+42
| | | | | and use _GNU_SOURCE || _BSD_SOURCE guards for all of the RFC 3678 namespace polluting things like glibc/uclibc does.
* netinet/in.h: add missing IP protocol numbers from the linux uapi headersSzabolcs Nagy2013-09-151-0/+2
|
* refactor headers, especially alltypes.h, and improve C++ ABI compatRich Felker2013-07-221-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
* add missing multicast socket options to netinet/in.hSzabolcs Nagy2013-01-121-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)
* add some new-ish IPPROTO constants that were missingRich Felker2013-01-011-0/+3
|
* add IPPROTO_HOPOPTS to in.hRich Felker2012-09-081-0/+1
|
* add IPPROTO_MAX to in.hRich Felker2012-09-081-0/+1
|
* add missing IN6_ARE_ADDR_EQUALRich Felker2012-05-111-0/+5
| | | | | written to avoid multiple conditional jumps and avoid ugly repetitive lines in the header file.
* add additional compatibility union member for ipv6 addressesRich Felker2012-05-031-0/+2
| | | | in6_* is in the reserved namespace, so this is valid
* fix all missing instances of __cplusplus checks/extern "C" in headersRich Felker2011-11-101-0/+8
| | | | patch by Arvid Picciani (aep)
* fix some header typosRich Felker2011-09-201-1/+1
|
* move invariant netinet/in.h stuff out of bits/in.hRich Felker2011-09-181-2/+147
|
* add IN_LOOPBACKNET constant (nonstandard but in reserved namespace)Rich Felker2011-04-061-0/+2
|
* resolve some header namespace non-issuesRich Felker2011-02-201-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.
* initial check-in, version 0.5.0 v0.5.0Rich Felker2011-02-121-0/+158