summaryrefslogtreecommitdiffstats
path: root/lib/libc/net/getaddrinfo.c
Commit message (Collapse)AuthorAgeFilesLines
* MFC r310984,r311102:ngie2017-01-091-8/+4
| | | | | | | | | | r310984: Use calloc instead of malloc + memset(.., 0, ..) r311102 (by pfg): Cleanup inelegant calloc(3) introduced in r310984.
* MFC r305144ache2016-09-051-1/+1
| | | | | | | | 'addrlen' does not matter when we need to find the first non-zero bit in the byte from the left and 'addrlen' already counted in 'lim'. PR: 212121 Submitted by: Herbie.Robinson@stratus.com
* MFC r304911ache2016-08-301-0/+19
| | | | | | | | | | | | | The formal behavior of qsort is unstable with regard to objects that are equal. Unfortunately, RFC 3484 requires that otherwise equal objects remain in the order supplied by the DNS server. The present code attempts to deal with this by returning -1 for objects that are equal (i.e., returns that the first parameter is less then the second parameter). Unfortunately, the qsort API does not state that the first parameter passed in is in any particular position in the list. PR: 212122 Submitted by: Herbie.Robinson@stratus.com
* MFstable/11 r304945:ngie2016-08-291-3/+5
| | | | | | | | | | | | | MFC r304034: Initialize `ai` to NULL and test for `ai` with type-appropriate values Depending on the address family and ai_flags containing AI_V4MAPPED, it might not do a proper DNS lookup on the provided DNS address Convert some `ai` boolean true/false checks to NULL/non-NULL while here. PR: 211790
* MFC r292445, r292554:ume2015-12-281-4/+3
| | | | Use _map_v4v6_address().
* MFC r292539:ume2015-12-281-1/+6
| | | | | | | If we end up following a CNAME chain that does not find any data return that instead of internal error. PR: 156684
* Add AI_V4MAPPED and AI_ALL support for getaddrinfo(3).ume2015-12-251-25/+133
| | | | PR: 198092
* MFC r292129:ume2015-12-191-1/+1
| | | | | | | | | RFC 3493 requires ignoring the loopback address for AI_ADDRCONFIG. Since it breaks certain jail setup, we ignore just 127.0.0.1 instead of whole loopback address range. PR: 192014 Reviewed by: hrs
* MFC r292059:ume2015-12-171-1/+2
| | | | | | | | The calls to RES_SET_H_ERRNO() macro on error paths wind up dereferencing an uninitialized res. PR: 202142 Submitted by: Sean Boudreau
* MFC r267912, r267915:ume2014-07-031-13/+29
| | | | | | | - Exclude loopback address rather than loopback interface. - style(9) Spotted by: melifaro
* MFC r267800:ume2014-06-301-1/+2
| | | | | Exclude IPv4 address from doing longest match. It prevented DNS based load balancing.
* MFC r267616, 267640:ume2014-06-251-29/+62
| | | | | | | | | | | | | | | Retooling addrconfig() to exclude addresses on loopback interfaces when looking for configured addresses. This change is based upon the code from the submitter, and made following changes: - Exclude addresses assigned on interfaces which are down, like NetBSD does. - Exclude addresses assigned on interfaces which are ifdisabled. Use SOCK_CLOEXEC. PR: 190824 Submitted by: Justin McOmie
* MFC r264212,r264213,r264248,r265776,r265811,r265909:kevlo2014-05-131-0/+5
| | | | | | | | | | | | | | - Add support for UDP-Lite protocol (RFC 3828) to IPv4 and IPv6 stacks. Tested with vlc and a test suite [1]. [1] http://www.erg.abdn.ac.uk/~gerrit/udp-lite/files/udplite_linux.tar.gz Reviewed by: jhb, glebius, adrian - Fix a logic bug which prevented the sending of UDP packet with 0 checksum. - Disable TX checksum offload for UDP-Lite completely. It wasn't used for partial checksum coverage, but even for full checksum coverage it doesn't work.
* libc: Use SOCK_CLOEXEC for various internal file descriptors.jilles2013-09-061-5/+7
| | | | | | | This change avoids undesirably passing some internal file descriptors to a process created (fork+exec) by another thread. Kernel support for SOCK_CLOEXEC was added in r248534, March 19, 2013.
* libc: Make various internal file descriptors from fopen() close-on-exec.jilles2013-08-231-2/+2
|
* Return zero from get_addrselectpolicy() when no source-address-selectionemax2012-07-181-0/+2
| | | | | | policy is installed. MFC after: 1 week
* libc: Remove some unused strings from getaddrinfo().jilles2012-07-151-13/+12
|
* Fix two warnings about self-assignment in libc. These normally onlydim2012-06-061-1/+1
| | | | | | | trigger with clang, when you either use -save-temps, or ccache. Reported by: Sevan / Venture37 <venture37@gmail.com> MFC after: 3 days
* Eliminate two cases of unwanted strncpy(). The name is not requireddelphij2012-04-021-2/+0
| | | | | | | | by the current code, and the results would get overwritten anyway by subsequent memset(). Reviewed by: ume MFC after: 1 month
* Handle the internal scope address representation of the KAME IPv6ume2012-01-071-1/+2
| | | | | | | stack for the node-local multicast address. Spotted by: Rainer Bredehorn <Bredehorn__at__gmx.de> MFC after: 1 week
* Query DNS only once per an address family.ume2009-03-291-86/+170
| | | | | Obtained from: KAME MFC after: 2 weeks
* Add support for SCTP to getaddrinfo(3).ume2009-03-251-7/+20
| | | | | | | | | | | | | Now, getaddrinfo(3) returns two SOCK_STREAMs, IPPROTO_TCP and IPPROTO_SCTP. It confuses some programs. If getaddrinfo(3) returns IPPROTO_SCTP when SOCK_STREAM is specified by hints.ai_socktype, at least Apache doesn't work. So, I made getaddrinfo(3) to return IPPROTO_SCTP with SOCK_STREAM only when IPPROTO_SCTP is specified explicitly by hints.ai_protocol. PR: bin/128167 Submitted by: Bruce Cran <bruce__at__cran.org.uk> (partly) MFC after: 2 week
* getaddrinfo(3) should accept numeric when ai_socktype is notume2009-03-241-1/+11
| | | | | | | | specified in hint or hints is NULL. PR: bin/51827 Submitted by: Mark Andrews <marka__at__isc.org> MFC after: 1 week
* Shutup warning for DNAME RR.ume2009-02-081-1/+2
| | | | | | PR: bin/127591 Submitted by: "Eugene M. Kim" <20080111.freebsd.org__at__ab.ote.we.lv> MFC after: 1 week
* Remove incomplete support of AI_ALL and AI_V4MAPPED.ume2008-02-031-21/+0
| | | | Reported by: "Heiko Wundram (Beenic)" <wundram__at__beenic.net>
* ensure the head entry of addrinfo chain has non-NULL ai_canonname to bejinmei2007-09-051-2/+19
| | | | | | | | | compliant with RFC3493. PR: standards/114910 Approved by: ume (mentor) Approved by: re MFC after: 1 week
* do not overload the port number on to the return value ofume2006-07-231-8/+9
| | | | | | | str2number(). this could result in an unexpected code path. Obtained from: KAME MFC after: 1 week
* remove obsolete comments.ume2006-07-221-8/+0
| | | | MFC after: 3 days
* simplification in explore_numeric: unified the post-process withume2006-07-211-32/+22
| | | | | | | GET_AI and GET_PORT. Commented on an impossible case. Obtained from: KAME MFC after: 1 week
* RFC3493 requires use of inet_aton for AF_INET.ume2006-07-211-3/+7
| | | | | Obtained from: KAME MFC after: 1 week
* clean-up: rewrote explore_null and explore_numeric without using sentinel.ume2006-07-211-35/+20
| | | | | | | | we do not need it since we make (at most) a single addrinfo entry in these cases. Obtained from: KAME MFC after: 1 week
* - Extend the nsswitch to support Services, Protocols and Rpcume2006-04-281-0/+197
| | | | | | | | databases. - Make nsswitch support caching. Submitted by: Michael Bushkov <bushman__at__rsu.ru> Sponsored by: Google Summer of Code 2005
* fix indent.ume2006-04-011-9/+9
|
* If the query choked with EDNS0, retry without EDNS0.ume2006-03-281-8/+24
| | | | Obtained from: res_nquery() of BIND9.
* - Use ANSI C prototype.ume2006-03-251-104/+38
| | | | - Remove trailing space.
* When res_nquerydomain() returns SERVFAIL, we should try next domain.ume2006-03-241-1/+9
|
* When res_send() fails, we should reserve an error code.ume2006-03-241-2/+2
|
* Update the resolver in libc to BIND9's one.ume2006-03-211-75/+83
| | | | | | | | | | | | | | | | | | | | | | Since, res_sendsigned(3) and the friends use MD5 functions, it is hard to include them without having MD5 functions in libc. So, res_sendsigned(3) is not merged into libc. Since, res_update(3) in BIND9 is not binary compatible with our res_update(3), res_update(3) is leaved as is, except some necessary modifications. The res_update(3) and the friends are not essential part of the resolver. They are not defined in resolv.h but defined in res_update.h separately in BIND9. Further, they are not called from our tree. So, I hide them from our resolv.h, but leave them only for binary backward compatibility (perhaps, no one calls them). Since, struct __res_state_ext is not exposed in BIND9, I hide it from our resolv.h. And, global variable _res_ext is removed. It breaks binary backward compatibility. But, since it is not used from outside of our libc, I think it is safe. Reviewed by: arch@ (no objection)
* When we are doing initialization against q, use its own size, notdelphij2006-03-211-1/+1
| | | | | | | the size of q2. This should be a no-op because q and q2 are of the same type. Submitted by: Alexey Dobriyan <adobriyan gmail com>
* Handle the errors returned by res_querydomain() in same manner.ume2006-03-011-0/+20
| | | | | | Reported by: yar Tested by: yar, Rostislav Krasny <rosti.bsd__at__gmail.com> MFC after: 1 week
* - Just query 'as is', if there is a trailing dot in the name.ume2006-02-241-9/+20
| | | | | | | | | | - Don't query 'as is' twice. PR: bin/62139 Reported by: Rostislav Krasny <rosti.bsd__at__gmail.com> Tested by: Rostislav Krasny <rosti.bsd__at__gmail.com> Obtained from: BIND9 (with some modification) MFC after: 1 week
* Remove padding for ABI compatibility of ai_addrlen memberume2005-07-221-3/+0
| | | | | from struct addrinfo. This change break ABI compatibility on 64 bit arch.
* - The ai_addrlen of a struct addrinfo used to be a size_t, perume2005-05-151-1/+4
| | | | | | | | | | | | | | | | RFC 2553. In XNS5.2, and subsequently in POSIX-2001 and RFC 3493, it was changed to a socklen_t. And, the n_net of a struct netent used to be an unsigned long integer. In XNS5, and subsequently in POSIX-2001, it was changed to an uint32_t. To accomodate for this while preserving ABI compatibility with the old interface, we need to prepend or append 32 bits of padding, depending on the (LP64) architecture's endianness. - Correct 1st argument of getnetbyaddr() to uint32_t on 32 bit arch. Stay as is on 64 bit arch for ABI backward compatibility for now. Reviewed by: das, peter MFC after: 2 weeks
* Submitted by: Jinmei Tatuya, Hajimu Umemotognn2005-05-141-2/+2
| | | | | | | | | | Reviewed by: rwatson at freebsd dot org Approved by: rwatson at freebsd dot org MFC after: 1 week Fix the matchlen() function so that it handles the IPv4 (AF_INET) case correctly. Until now it has been treating IPv4 addresses as if they were IPv6 which could lead to corruption errors.
* free ypbuf only when yp_match() succeed.ume2005-05-131-1/+1
|
* the 3rd argument of getsockname() should be socklen_t*.ume2005-05-021-1/+2
| | | | Submitted by: stefanf
* Now, our getservbyname(3) is thread-safe. So, we don't needume2005-04-151-14/+1
| | | | to protect it with mutex lock.
* hostalias() is not thread-safe. So, introduce _res_hostalias()ume2005-04-151-2/+3
| | | | | | and use it. Obtained from: BIND9
* remove needless res_init() call.ume2005-04-141-9/+0
| | | | Inspired by: NetBSD
* - we are no longer shareing any resources to be locked betweenume2005-04-061-10/+6
| | | | | | getaddrinfo(3) and getipnodeby*(3). - use definitions in reentrant.h. - remove obsolete comment.
OpenPOWER on IntegriCloud