summaryrefslogtreecommitdiff
path: root/src/lib/libc/net/getaddrinfo.c
diff options
context:
space:
mode:
authorpyr <>2009-06-04 21:38:29 +0000
committerpyr <>2009-06-04 21:38:29 +0000
commit437d0850ff5e9cf554cfb2790235e5c0b30f94b3 (patch)
tree72c058050e164ab3bf7c48dbe2db1da89c0b3a83 /src/lib/libc/net/getaddrinfo.c
parent62cd5609d5e30c91109b27b6b996fc9ef5ed01f8 (diff)
downloadopenbsd-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.c30
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;