diff options
| author | eric <> | 2018-12-15 15:16:12 +0000 |
|---|---|---|
| committer | eric <> | 2018-12-15 15:16:12 +0000 |
| commit | a0045adda702d3bdf41fdaa2e4809700927e0c47 (patch) | |
| tree | 9e8c744de1e51b27c2b37b1b5757fae46e8f7b01 | |
| parent | 723e2311c6f57a0db090a7c72abdd97eaa5f1a1b (diff) | |
| download | openbsd-a0045adda702d3bdf41fdaa2e4809700927e0c47.tar.gz openbsd-a0045adda702d3bdf41fdaa2e4809700927e0c47.tar.bz2 openbsd-a0045adda702d3bdf41fdaa2e4809700927e0c47.zip | |
add a -R option to set/unset resolver flags.libressl-v2.9.0
use strcasecmp for reading args.
| -rw-r--r-- | src/regress/lib/libc/asr/bin/common.c | 68 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/common.h | 4 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/getaddrinfo.c | 7 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/gethostnamadr.c | 7 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/getnameinfo.c | 7 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/getnetnamadr.c | 7 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/getrrsetbyname.c | 7 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/res_mkquery.c | 7 | ||||
| -rw-r--r-- | src/regress/lib/libc/asr/bin/res_query.c | 7 |
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 | ||
| 88 | struct keyval { | 88 | struct keyval { |
| 89 | const char *key; | 89 | const char *key; |
| 90 | uint16_t value; | 90 | int value; |
| 91 | }; | 91 | }; |
| 92 | 92 | ||
| 93 | static struct keyval kv_class[] = { | 93 | static struct keyval kv_class[] = { |
| @@ -135,6 +135,24 @@ static struct keyval kv_rcode[] = { | |||
| 135 | { NULL, 0 }, | 135 | { NULL, 0 }, |
| 136 | }; | 136 | }; |
| 137 | 137 | ||
| 138 | static 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 | ||
| 139 | const char * | 157 | const char * |
| 140 | rcodetostr(uint16_t v) | 158 | rcodetostr(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 | ||
| 226 | int | ||
| 227 | strtoresopt(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 | |||
| 238 | void | ||
| 239 | parseresopt(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 | |||
| 208 | void | 266 | void |
| 209 | print_hostent(struct hostent *e) | 267 | print_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 | ||
| 42 | uint16_t strtotype(const char*); | 42 | uint16_t strtotype(const char*); |
| 43 | uint16_t strtoclass(const char*); | 43 | uint16_t strtoclass(const char*); |
| 44 | int strtoresopt(const char*); | ||
| 45 | void parseresopt(const char*); | ||
| 44 | 46 | ||
| 45 | void print_rrsetinfo(struct rrsetinfo *); | 47 | void print_rrsetinfo(struct rrsetinfo *); |
| 46 | void print_addrinfo(struct addrinfo *); | 48 | void 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; |
