summaryrefslogtreecommitdiff
path: root/src/regress/lib/libc/asr
diff options
context:
space:
mode:
authoreric <>2018-12-15 15:16:12 +0000
committereric <>2018-12-15 15:16:12 +0000
commit987422333c6bf4871e97fd14e80c6fe6b937af6c (patch)
tree9e8c744de1e51b27c2b37b1b5757fae46e8f7b01 /src/regress/lib/libc/asr
parentd44c7e0fd6df3e642957216aea5f5fb9814b4056 (diff)
downloadopenbsd-987422333c6bf4871e97fd14e80c6fe6b937af6c.tar.gz
openbsd-987422333c6bf4871e97fd14e80c6fe6b937af6c.tar.bz2
openbsd-987422333c6bf4871e97fd14e80c6fe6b937af6c.zip
add a -R option to set/unset resolver flags.libressl-v2.9.0
use strcasecmp for reading args.
Diffstat (limited to 'src/regress/lib/libc/asr')
-rw-r--r--src/regress/lib/libc/asr/bin/common.c68
-rw-r--r--src/regress/lib/libc/asr/bin/common.h4
-rw-r--r--src/regress/lib/libc/asr/bin/getaddrinfo.c7
-rw-r--r--src/regress/lib/libc/asr/bin/gethostnamadr.c7
-rw-r--r--src/regress/lib/libc/asr/bin/getnameinfo.c7
-rw-r--r--src/regress/lib/libc/asr/bin/getnetnamadr.c7
-rw-r--r--src/regress/lib/libc/asr/bin/getrrsetbyname.c7
-rw-r--r--src/regress/lib/libc/asr/bin/res_mkquery.c7
-rw-r--r--src/regress/lib/libc/asr/bin/res_query.c7
9 files changed, 101 insertions, 20 deletions
diff --git a/src/regress/lib/libc/asr/bin/common.c b/src/regress/lib/libc/asr/bin/common.c
index c808c86d61..08a7bccbb7 100644
--- a/src/regress/lib/libc/asr/bin/common.c
+++ b/src/regress/lib/libc/asr/bin/common.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: common.c,v 1.3 2014/08/10 07:31:58 guenther Exp $ */ 1/* $OpenBSD: common.c,v 1.4 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -86,8 +86,8 @@ kv_lookup_name(struct kv *kv, int code, char *buf, size_t sz)
86} 86}
87 87
88struct keyval { 88struct keyval {
89 const char *key; 89 const char *key;
90 uint16_t value; 90 int value;
91}; 91};
92 92
93static struct keyval kv_class[] = { 93static struct keyval kv_class[] = {
@@ -135,6 +135,24 @@ static struct keyval kv_rcode[] = {
135 { NULL, 0 }, 135 { NULL, 0 },
136}; 136};
137 137
138static struct keyval kv_resopt[] = {
139 { "DEBUG", RES_DEBUG },
140 { "AAONLY", RES_AAONLY },
141 { "USEVC", RES_USEVC },
142 { "PRIMARY", RES_PRIMARY },
143 { "IGNTC", RES_IGNTC },
144 { "RECURSE", RES_RECURSE },
145 { "DEFNAMES", RES_DEFNAMES },
146 { "STAYOPEN", RES_STAYOPEN },
147 { "DNSRCH", RES_DNSRCH },
148 { "INSECURE1", RES_INSECURE1 },
149 { "INSECURE2", RES_INSECURE2 },
150 { "NOALIASES", RES_NOALIASES },
151 { "USE_INET6", RES_USE_INET6 },
152 { "USE_EDNS0", RES_USE_EDNS0 },
153 { "USE_DNSSEC", RES_USE_DNSSEC },
154 { NULL, 0 },
155};
138 156
139const char * 157const char *
140rcodetostr(uint16_t v) 158rcodetostr(uint16_t v)
@@ -187,7 +205,7 @@ strtotype(const char *name)
187 size_t i; 205 size_t i;
188 206
189 for(i = 0; kv_type[i].key; i++) 207 for(i = 0; kv_type[i].key; i++)
190 if (!strcmp(kv_type[i].key, name)) 208 if (!strcasecmp(kv_type[i].key, name))
191 return (kv_type[i].value); 209 return (kv_type[i].value);
192 210
193 return (0); 211 return (0);
@@ -199,12 +217,52 @@ strtoclass(const char *name)
199 size_t i; 217 size_t i;
200 218
201 for(i = 0; kv_class[i].key; i++) 219 for(i = 0; kv_class[i].key; i++)
202 if (!strcmp(kv_class[i].key, name)) 220 if (!strcasecmp(kv_class[i].key, name))
203 return (kv_class[i].value); 221 return (kv_class[i].value);
204 222
205 return (0); 223 return (0);
206} 224}
207 225
226int
227strtoresopt(const char *name)
228{
229 size_t i;
230
231 for(i = 0; kv_resopt[i].key; i++)
232 if (!strcasecmp(kv_resopt[i].key, name))
233 return (kv_resopt[i].value);
234
235 return (0);
236}
237
238void
239parseresopt(const char *name)
240{
241 static int init = 0;
242 int flag, neg = 0;
243
244 if (init == 0) {
245 res_init();
246 init = 1;
247 }
248
249 if (name[0] == '-') {
250 neg = 1;
251 name++;
252 }
253 else if (name[0] == '+')
254 name++;
255
256 flag = strtoresopt(name);
257 if (flag == 0)
258 errx(1, "unknown reslover option %s", name);
259
260 if (neg)
261 _res.options &= ~flag;
262 else
263 _res.options |= flag;
264}
265
208void 266void
209print_hostent(struct hostent *e) 267print_hostent(struct hostent *e)
210{ 268{
diff --git a/src/regress/lib/libc/asr/bin/common.h b/src/regress/lib/libc/asr/bin/common.h
index 87df4ae4a2..6a6b90a34f 100644
--- a/src/regress/lib/libc/asr/bin/common.h
+++ b/src/regress/lib/libc/asr/bin/common.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: common.h,v 1.1.1.1 2012/07/13 17:49:53 eric Exp $ */ 1/* $OpenBSD: common.h,v 1.2 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -41,6 +41,8 @@ const char *rcodetostr(uint16_t);
41 41
42uint16_t strtotype(const char*); 42uint16_t strtotype(const char*);
43uint16_t strtoclass(const char*); 43uint16_t strtoclass(const char*);
44int strtoresopt(const char*);
45void parseresopt(const char*);
44 46
45void print_rrsetinfo(struct rrsetinfo *); 47void print_rrsetinfo(struct rrsetinfo *);
46void print_addrinfo(struct addrinfo *); 48void print_addrinfo(struct addrinfo *);
diff --git a/src/regress/lib/libc/asr/bin/getaddrinfo.c b/src/regress/lib/libc/asr/bin/getaddrinfo.c
index 7b8674aea9..6605a00c1b 100644
--- a/src/regress/lib/libc/asr/bin/getaddrinfo.c
+++ b/src/regress/lib/libc/asr/bin/getaddrinfo.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getaddrinfo.c,v 1.2 2013/03/28 09:36:03 eric Exp $ */ 1/* $OpenBSD: getaddrinfo.c,v 1.3 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -48,7 +48,7 @@ main(int argc, char *argv[])
48 48
49 memset(&hints, 0, sizeof hints); 49 memset(&hints, 0, sizeof hints);
50 50
51 while((ch = getopt(argc, argv, "CFHPSef:p:s:t:")) != -1) { 51 while((ch = getopt(argc, argv, "CFHPR:Sef:p:s:t:")) != -1) {
52 switch(ch) { 52 switch(ch) {
53 case 'C': 53 case 'C':
54 hints.ai_flags |= AI_CANONNAME; 54 hints.ai_flags |= AI_CANONNAME;
@@ -62,6 +62,9 @@ main(int argc, char *argv[])
62 case 'P': 62 case 'P':
63 hints.ai_flags |= AI_PASSIVE; 63 hints.ai_flags |= AI_PASSIVE;
64 break; 64 break;
65 case 'R':
66 parseresopt(optarg);
67 break;
65 case 'S': 68 case 'S':
66 hints.ai_flags |= AI_NUMERICSERV; 69 hints.ai_flags |= AI_NUMERICSERV;
67 break; 70 break;
diff --git a/src/regress/lib/libc/asr/bin/gethostnamadr.c b/src/regress/lib/libc/asr/bin/gethostnamadr.c
index b1b3e331a7..9cdf7ed448 100644
--- a/src/regress/lib/libc/asr/bin/gethostnamadr.c
+++ b/src/regress/lib/libc/asr/bin/gethostnamadr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: gethostnamadr.c,v 1.2 2012/07/29 19:51:36 eric Exp $ */ 1/* $OpenBSD: gethostnamadr.c,v 1.3 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -47,7 +47,7 @@ main(int argc, char *argv[])
47 int addrlen; 47 int addrlen;
48 48
49 aflag = 0; 49 aflag = 0;
50 while((ch = getopt(argc, argv, "46ae")) != -1) { 50 while((ch = getopt(argc, argv, "46R:ae")) != -1) {
51 switch(ch) { 51 switch(ch) {
52 case '4': 52 case '4':
53 family = AF_INET; 53 family = AF_INET;
@@ -55,6 +55,9 @@ main(int argc, char *argv[])
55 case '6': 55 case '6':
56 family = AF_INET6; 56 family = AF_INET6;
57 break; 57 break;
58 case 'R':
59 parseresopt(optarg);
60 break;
58 case 'a': 61 case 'a':
59 aflag = 1; 62 aflag = 1;
60 break; 63 break;
diff --git a/src/regress/lib/libc/asr/bin/getnameinfo.c b/src/regress/lib/libc/asr/bin/getnameinfo.c
index 8702937a47..bd0fbe224f 100644
--- a/src/regress/lib/libc/asr/bin/getnameinfo.c
+++ b/src/regress/lib/libc/asr/bin/getnameinfo.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getnameinfo.c,v 1.1.1.1 2012/07/13 17:49:54 eric Exp $ */ 1/* $OpenBSD: getnameinfo.c,v 1.2 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -45,7 +45,7 @@ main(int argc, char *argv[])
45 45
46 sa = (struct sockaddr*)&ss; 46 sa = (struct sockaddr*)&ss;
47 47
48 while((ch = getopt(argc, argv, "DFHNSaep:")) != -1) { 48 while((ch = getopt(argc, argv, "DFHNR:Saep:")) != -1) {
49 switch(ch) { 49 switch(ch) {
50 case 'D': 50 case 'D':
51 flags |= NI_DGRAM; 51 flags |= NI_DGRAM;
@@ -59,6 +59,9 @@ main(int argc, char *argv[])
59 case 'N': 59 case 'N':
60 flags |= NI_NAMEREQD; 60 flags |= NI_NAMEREQD;
61 break; 61 break;
62 case 'R':
63 parseresopt(optarg);
64 break;
62 case 'S': 65 case 'S':
63 flags |= NI_NUMERICSERV; 66 flags |= NI_NUMERICSERV;
64 break; 67 break;
diff --git a/src/regress/lib/libc/asr/bin/getnetnamadr.c b/src/regress/lib/libc/asr/bin/getnetnamadr.c
index 4b7414264b..e615e8663f 100644
--- a/src/regress/lib/libc/asr/bin/getnetnamadr.c
+++ b/src/regress/lib/libc/asr/bin/getnetnamadr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getnetnamadr.c,v 1.1.1.1 2012/07/13 17:49:54 eric Exp $ */ 1/* $OpenBSD: getnetnamadr.c,v 1.2 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -44,8 +44,11 @@ main(int argc, char *argv[])
44 struct netent *n; 44 struct netent *n;
45 char *host; 45 char *host;
46 46
47 while((ch = getopt(argc, argv, "en")) != -1) { 47 while((ch = getopt(argc, argv, "R:en")) != -1) {
48 switch(ch) { 48 switch(ch) {
49 case 'R':
50 parseresopt(optarg);
51 break;
49 case 'e': 52 case 'e':
50 long_err += 1; 53 long_err += 1;
51 break; 54 break;
diff --git a/src/regress/lib/libc/asr/bin/getrrsetbyname.c b/src/regress/lib/libc/asr/bin/getrrsetbyname.c
index 4a5aa57209..8f48501a3f 100644
--- a/src/regress/lib/libc/asr/bin/getrrsetbyname.c
+++ b/src/regress/lib/libc/asr/bin/getrrsetbyname.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: getrrsetbyname.c,v 1.1.1.1 2012/07/13 17:49:54 eric Exp $ */ 1/* $OpenBSD: getrrsetbyname.c,v 1.2 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -48,8 +48,11 @@ main(int argc, char *argv[])
48 char *host; 48 char *host;
49 struct rrsetinfo *rrset; 49 struct rrsetinfo *rrset;
50 50
51 while((ch = getopt(argc, argv, "et:")) != -1) { 51 while((ch = getopt(argc, argv, "R:et:")) != -1) {
52 switch(ch) { 52 switch(ch) {
53 case 'R':
54 parseresopt(optarg);
55 break;
53 case 'e': 56 case 'e':
54 long_err += 1; 57 long_err += 1;
55 break; 58 break;
diff --git a/src/regress/lib/libc/asr/bin/res_mkquery.c b/src/regress/lib/libc/asr/bin/res_mkquery.c
index a52023c5c0..b32f471cdf 100644
--- a/src/regress/lib/libc/asr/bin/res_mkquery.c
+++ b/src/regress/lib/libc/asr/bin/res_mkquery.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: res_mkquery.c,v 1.1.1.1 2012/07/13 17:49:53 eric Exp $ */ 1/* $OpenBSD: res_mkquery.c,v 1.2 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -59,8 +59,11 @@ main(int argc, char *argv[])
59 uint16_t type = T_A; 59 uint16_t type = T_A;
60 char buf[1024], *host; 60 char buf[1024], *host;
61 61
62 while((ch = getopt(argc, argv, "et:")) != -1) { 62 while((ch = getopt(argc, argv, "R:et:")) != -1) {
63 switch(ch) { 63 switch(ch) {
64 case 'R':
65 parseresopt(optarg);
66 break;
64 case 'e': 67 case 'e':
65 long_err += 1; 68 long_err += 1;
66 break; 69 break;
diff --git a/src/regress/lib/libc/asr/bin/res_query.c b/src/regress/lib/libc/asr/bin/res_query.c
index 3565eeebed..ca95a89a7c 100644
--- a/src/regress/lib/libc/asr/bin/res_query.c
+++ b/src/regress/lib/libc/asr/bin/res_query.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: res_query.c,v 1.2 2017/03/09 07:56:38 eric Exp $ */ 1/* $OpenBSD: res_query.c,v 1.3 2018/12/15 15:16:12 eric Exp $ */
2/* 2/*
3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> 3 * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
4 * 4 *
@@ -72,8 +72,11 @@ main(int argc, char *argv[])
72 dflag = 0; 72 dflag = 0;
73 qflag = 0; 73 qflag = 0;
74 74
75 while((ch = getopt(argc, argv, "deqt:")) != -1) { 75 while((ch = getopt(argc, argv, "R:deqt:")) != -1) {
76 switch(ch) { 76 switch(ch) {
77 case 'R':
78 parseresopt(optarg);
79 break;
77 case 'd': 80 case 'd':
78 dflag = 1; 81 dflag = 1;
79 break; 82 break;