diff options
author | pyr <> | 2009-06-04 21:38:29 +0000 |
---|---|---|
committer | pyr <> | 2009-06-04 21:38:29 +0000 |
commit | 437d0850ff5e9cf554cfb2790235e5c0b30f94b3 (patch) | |
tree | 72c058050e164ab3bf7c48dbe2db1da89c0b3a83 /src/lib/libc/net/getaddrinfo.c | |
parent | 62cd5609d5e30c91109b27b6b996fc9ef5ed01f8 (diff) | |
download | openbsd-437d0850ff5e9cf554cfb2790235e5c0b30f94b3.tar.gz openbsd-437d0850ff5e9cf554cfb2790235e5c0b30f94b3.tar.bz2 openbsd-437d0850ff5e9cf554cfb2790235e5c0b30f94b3.zip |
simplify the 'family' option parser and make it more evident what we're
now doing.
ok deraadt@
Diffstat (limited to 'src/lib/libc/net/getaddrinfo.c')
-rw-r--r-- | src/lib/libc/net/getaddrinfo.c | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/src/lib/libc/net/getaddrinfo.c b/src/lib/libc/net/getaddrinfo.c index 87125c89cc..2b96ea2380 100644 --- a/src/lib/libc/net/getaddrinfo.c +++ b/src/lib/libc/net/getaddrinfo.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: getaddrinfo.c,v 1.68 2009/06/04 18:06:35 pyr Exp $ */ | 1 | /* $OpenBSD: getaddrinfo.c,v 1.69 2009/06/04 21:38:29 pyr Exp $ */ |
2 | /* $KAME: getaddrinfo.c,v 1.31 2000/08/31 17:36:43 itojun Exp $ */ | 2 | /* $KAME: getaddrinfo.c,v 1.31 2000/08/31 17:36:43 itojun Exp $ */ |
3 | 3 | ||
4 | /* | 4 | /* |
@@ -1170,39 +1170,21 @@ _dns_getaddrinfo(const char *name, const struct addrinfo *pai, | |||
1170 | 1170 | ||
1171 | switch (pai->ai_family) { | 1171 | switch (pai->ai_family) { |
1172 | case AF_UNSPEC: | 1172 | case AF_UNSPEC: |
1173 | if (_resp->family[0] == -1) { | ||
1174 | /* prefer IPv4 by default*/ | ||
1175 | q.qclass = C_IN; | ||
1176 | q.qtype = T_A; | ||
1177 | q.answer = buf->buf; | ||
1178 | q.anslen = sizeof(buf->buf); | ||
1179 | q.next = &q2; | ||
1180 | q2.qclass = C_IN; | ||
1181 | q2.qtype = T_AAAA; | ||
1182 | q2.answer = buf2->buf; | ||
1183 | q2.anslen = sizeof(buf2->buf); | ||
1184 | break; | ||
1185 | } | ||
1186 | |||
1187 | /* respect user supplied order */ | 1173 | /* respect user supplied order */ |
1188 | q.qclass = C_IN; | 1174 | q.qclass = C_IN; |
1189 | if (_resp->family[0] == AF_INET6) | 1175 | q.qtype = (_resp->family[0] == AF_INET6) ? T_AAAA : T_A; |
1190 | q.qtype = T_AAAA; | ||
1191 | else | ||
1192 | q.qtype = T_A; | ||
1193 | q.answer = buf->buf; | 1176 | q.answer = buf->buf; |
1194 | q.anslen = sizeof(buf->buf); | 1177 | q.anslen = sizeof(buf->buf); |
1178 | q.next = &q2; | ||
1179 | |||
1195 | if (_resp->family[1] == -1) { | 1180 | if (_resp->family[1] == -1) { |
1181 | /* stop here if only one family was given */ | ||
1196 | q.next = NULL; | 1182 | q.next = NULL; |
1197 | break; | 1183 | break; |
1198 | } | 1184 | } |
1199 | q.next = &q2; | ||
1200 | 1185 | ||
1201 | q2.qclass = C_IN; | 1186 | q2.qclass = C_IN; |
1202 | if (_resp->family[1] == AF_INET6) | 1187 | q2.qtype = (_resp->family[1] == AF_INET6) ? T_AAAA : T_A; |
1203 | q2.qtype = T_AAAA; | ||
1204 | else | ||
1205 | q2.qtype = T_A; | ||
1206 | q2.answer = buf2->buf; | 1188 | q2.answer = buf2->buf; |
1207 | q2.anslen = sizeof(buf2->buf); | 1189 | q2.anslen = sizeof(buf2->buf); |
1208 | break; | 1190 | break; |