summaryrefslogtreecommitdiff
path: root/include/netinet
AgeCommit message (Collapse)AuthorFilesLines
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-25if_ether.h: new ethernet protocol typeSzabolcs Nagy1-0/+1
for High-availability Seamless Redundancy (HSR) specified in IEC 62439-3 new in linux v3.13, f421436a591d34fa5279b54a96ac07d70250cc8d
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-02-05reduce namespace pollution in netinet/udp.hRich Felker1-7/+10
the affected part of the header is responsible for providing both GNU and BSD versions of the udphdr structure. previously, the namespace-polluting GNU names were always used for the actual struct members, and the BSD names, which are named in a manner resembling a sane namespace, were always macros defined to expand to the GNU names. now, unless _GNU_SOURCE is defined, the BSD names are used as the actual structure members, and the macros and GNU names only come into play when the application requests them.
2014-02-05fix use of legacy u_intN_t types in netinet/tcp.hRich Felker1-73/+74
policy is to avoid using these types except where they are needed for namespace conformance. C99-style stdint.h types should be used instead.
2014-02-05add support for BSD struct tcphdr in netinet/tcp.hRich Felker1-4/+41
there are two versions of this structure: the BSD version and the GNU version. previously only the GNU version was supported. the only way to support both simultaneously is with an anonymous union, which was a nonstandard extension prior to C11, so some effort is made to avoid breakage with compilers which do not support anonymous unions. this commit is based on a patch by Timo Teräs, but with some changes. in particular, the GNU version of the structure is not exposed unless _GNU_SOURCE is defined; this both avoids namespace pollution and dependency on anonymous unions in the default feature profile.
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 Felker2-0/+50
based on patch by Timo Teräs.
2013-12-20add TCP_INFO and TCP_MD5SIG socket option related structuresTimo Teräs1-0/+58
2013-11-23add TCP_NOTSENT_LOWAT tcp socket option, new in linux v3.12Szabolcs Nagy1-0/+1
2013-11-23add linux tcp state enumsTimo Teräs1-0/+12
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-08-30only expose struct tcphdr under _GNU_SOURCERich Felker1-1/+3
the BSD and GNU versions of this structure differ, so exposing it in the default _BSD_SOURCE profile is possibly problematic. both versions could be simultaneously supported with anonymous unions if needed in the future, but for now, just omitting it except under _GNU_SOURCE should be safe.
2013-08-30add struct tcphdr in netinet/tcp.hRich Felker1-0/+33
2013-07-24add if_ether.h constants ETH_P_802_3_MIN and ETH_P_BATMANSzabolcs Nagy1-0/+3
see linux commits 4f99ad51292078cc47343c17d3870764588cff73 and e5c5d22e8dcf7c2d430336cbf8e180bd38e8daf1
2013-07-24remove TCP_COOKIE_TRANSACTIONS from tcp.hSzabolcs Nagy1-1/+0
removed in linux-v3.10 in commit 1a2c6181c4a1922021b4d7df373bba612c3e5f04
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-07-01add stubs for additional legacy ether.h functionsRich Felker1-3/+3
these would not be expensive to actually implement, but reading /etc/ethers does not sound like a particularly useful feature, so for now I'm leaving them as stubs.
2013-06-25add ether_aton[_r] and ether_ntoa[_r] functionsRich Felker1-0/+14
based on patch by Strake with minor stylistic changes, and combined into a single file. this patch remained open for a long time due to some question as to whether ether_aton would be better implemented in terms of sscanf, and it's time something was committed, so here it is.
2013-04-01adding ethernet protocol ids to if_ether.h following linuxSzabolcs Nagy1-0/+15
2013-04-01add new linux tcp socket option flags to netinet/tcp.hSzabolcs Nagy1-0/+10
2013-01-31SOL_TCP is nonstandard and not in the reserved namespaceRich Felker1-2/+1
alternatively, we could define it in sys/socket.h since SO* is reserved there, and tcp.h includes sys/socket.h in extensions mode. note that SOL_TCP is simply wrong and it's only here for compatibility with broken applications. the correct argument to pass for setting TCP socket options is IPPROTO_TCP, which of course has the same value as SOL_TCP but works everywhere.
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-12-06tcp.h: add SOL_TCP, analoguous to udp.hrofl0r1-0/+2
2012-09-08add IPPROTO_HOPOPTS to in.hRich Felker1-0/+1
2012-09-08add IPPROTO_MAX to in.hRich Felker1-0/+1
2012-09-07TCP_* is in the reserved namespace for tcp.h; make use of thatRich Felker1-3/+4
2012-09-07default features: make musl usable without feature test macrosRich Felker1-0/+2
the old behavior of exposing nothing except plain ISO C can be obtained by defining __STRICT_ANSI__ or using a compiler option (such as -std=c99) that predefines it. the new default featureset is POSIX with XSI plus _BSD_SOURCE. any explicit feature test macros will inhibit the default. installation docs have also been updated to reflect this change.
2012-05-22support _BSD_SOURCE feature test macroRich Felker1-0/+17
patch by Isaac Dunham. matched closely (maybe not exact) to glibc's idea of what _BSD_SOURCE should make visible.
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-10add one more bogus legacy headerRich Felker1-0/+9
this one is for program(s|ers) who haven't heard of uint16_t and uint32_t (which are obviously the correct types for use in such situations, as they're the argument/return types for ntohs/htons and ntohl/htonl).
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-18more bits junk (tcp.h)Rich 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 Felker8-0/+1132