Go to the documentation of this file.
41 #if defined(WIN32) && !defined(WATT32)
44 #include <arpa/inet.h>
45 #include <netinet/in.h>
55 # define strdup(ptr) ares_strdup(ptr)
58 #ifndef HAVE_STRCASECMP
60 # define strcasecmp(p1,p2) ares_strcasecmp(p1,p2)
63 #ifndef HAVE_STRNCASECMP
65 # define strncasecmp(p1,p2,n) ares_strncasecmp(p1,p2,n)
69 #define INADDR_NONE 0xffffffff
75 #define CARES_INADDR_CAST(type, var) ((type)((void *)var))
77 static const char *
usage =
"acountry [-?hdv] {host|addr} ...\n";
78 static const char nerd_fmt[] =
"%u.%u.%u.%u.zz.countries.nerd.dk";
83 #define TRACE(fmt) do { \
103 int main(
int argc,
char **argv)
108 #if defined(WIN32) && !defined(WATT32)
109 WORD wVersionRequested = MAKEWORD(USE_WINSOCK,USE_WINSOCK);
111 WSAStartup(wVersionRequested, &wsaData);
155 for ( ; *argv; argv++)
169 printf(
"Failed to lookup %s\n", *argv);
175 (
unsigned int)(
addr.s_addr >> 24),
176 (
unsigned int)((
addr.s_addr >> 16) & 255),
177 (
unsigned int)((
addr.s_addr >> 8) & 255),
178 (
unsigned int)(
addr.s_addr & 255));
189 #if defined(WIN32) && !defined(WATT32)
204 fd_set read_fds, write_fds;
213 nfds = select(nfds, &read_fds, &write_fds, NULL, tvp);
226 const char *
name = (
const char*)
arg;
238 TRACE((
"\nFound address %s, name %s\n",
242 cname = host->h_name;
254 struct in_addr *
addr = (
struct in_addr*)
arg;
285 { 4,
"af",
"Afghanistan" },
286 { 248,
"ax",
"Åland Island" },
287 { 8,
"al",
"Albania" },
288 { 12,
"dz",
"Algeria" },
289 { 16,
"as",
"American Samoa" },
290 { 20,
"ad",
"Andorra" },
291 { 24,
"ao",
"Angola" },
292 { 660,
"ai",
"Anguilla" },
293 { 10,
"aq",
"Antarctica" },
294 { 28,
"ag",
"Antigua & Barbuda" },
295 { 32,
"ar",
"Argentina" },
296 { 51,
"am",
"Armenia" },
297 { 533,
"aw",
"Aruba" },
298 { 36,
"au",
"Australia" },
299 { 40,
"at",
"Austria" },
300 { 31,
"az",
"Azerbaijan" },
301 { 44,
"bs",
"Bahamas" },
302 { 48,
"bh",
"Bahrain" },
303 { 50,
"bd",
"Bangladesh" },
304 { 52,
"bb",
"Barbados" },
305 { 112,
"by",
"Belarus" },
306 { 56,
"be",
"Belgium" },
307 { 84,
"bz",
"Belize" },
308 { 204,
"bj",
"Benin" },
309 { 60,
"bm",
"Bermuda" },
310 { 64,
"bt",
"Bhutan" },
311 { 68,
"bo",
"Bolivia" },
312 { 535,
"bq",
"Bonaire, Sint Eustatius and Saba" },
313 { 70,
"ba",
"Bosnia & Herzegovina" },
314 { 72,
"bw",
"Botswana" },
315 { 74,
"bv",
"Bouvet Island" },
316 { 76,
"br",
"Brazil" },
317 { 86,
"io",
"British Indian Ocean Territory" },
318 { 96,
"bn",
"Brunei Darussalam" },
319 { 100,
"bg",
"Bulgaria" },
320 { 854,
"bf",
"Burkina Faso" },
321 { 108,
"bi",
"Burundi" },
322 { 116,
"kh",
"Cambodia" },
323 { 120,
"cm",
"Cameroon" },
324 { 124,
"ca",
"Canada" },
325 { 132,
"cv",
"Cape Verde" },
326 { 136,
"ky",
"Cayman Islands" },
327 { 140,
"cf",
"Central African Republic" },
328 { 148,
"td",
"Chad" },
329 { 152,
"cl",
"Chile" },
330 { 156,
"cn",
"China" },
331 { 162,
"cx",
"Christmas Island" },
332 { 166,
"cc",
"Cocos Islands" },
333 { 170,
"co",
"Colombia" },
334 { 174,
"km",
"Comoros" },
335 { 178,
"cg",
"Congo" },
336 { 180,
"cd",
"Congo" },
337 { 184,
"ck",
"Cook Islands" },
338 { 188,
"cr",
"Costa Rica" },
339 { 384,
"ci",
"Cote d'Ivoire" },
340 { 191,
"hr",
"Croatia" },
341 { 192,
"cu",
"Cuba" },
342 { 531,
"cw",
"Curaçao" },
343 { 196,
"cy",
"Cyprus" },
344 { 203,
"cz",
"Czech Republic" },
345 { 208,
"dk",
"Denmark" },
346 { 262,
"dj",
"Djibouti" },
347 { 212,
"dm",
"Dominica" },
348 { 214,
"do",
"Dominican Republic" },
349 { 218,
"ec",
"Ecuador" },
350 { 818,
"eg",
"Egypt" },
351 { 222,
"sv",
"El Salvador" },
352 { 226,
"gq",
"Equatorial Guinea" },
353 { 232,
"er",
"Eritrea" },
354 { 233,
"ee",
"Estonia" },
355 { 748,
"sz",
"Eswatini" },
356 { 231,
"et",
"Ethiopia" },
357 { 65281,
"eu",
"European Union" },
358 { 238,
"fk",
"Falkland Islands" },
359 { 234,
"fo",
"Faroe Islands" },
360 { 242,
"fj",
"Fiji" },
361 { 246,
"fi",
"Finland" },
362 { 250,
"fr",
"France" },
363 { 249,
"fx",
"France, Metropolitan" },
364 { 254,
"gf",
"French Guiana" },
365 { 258,
"pf",
"French Polynesia" },
366 { 260,
"tf",
"French Southern Territories" },
367 { 266,
"ga",
"Gabon" },
368 { 270,
"gm",
"Gambia" },
369 { 268,
"ge",
"Georgia" },
370 { 276,
"de",
"Germany" },
371 { 288,
"gh",
"Ghana" },
372 { 292,
"gi",
"Gibraltar" },
373 { 300,
"gr",
"Greece" },
374 { 304,
"gl",
"Greenland" },
375 { 308,
"gd",
"Grenada" },
376 { 312,
"gp",
"Guadeloupe" },
377 { 316,
"gu",
"Guam" },
378 { 320,
"gt",
"Guatemala" },
379 { 831,
"gg",
"Guernsey" },
380 { 324,
"gn",
"Guinea" },
381 { 624,
"gw",
"Guinea-Bissau" },
382 { 328,
"gy",
"Guyana" },
383 { 332,
"ht",
"Haiti" },
384 { 334,
"hm",
"Heard & Mc Donald Islands" },
385 { 336,
"va",
"Holy See" },
386 { 340,
"hn",
"Honduras" },
387 { 344,
"hk",
"Hong kong" },
388 { 348,
"hu",
"Hungary" },
389 { 352,
"is",
"Iceland" },
390 { 356,
"in",
"India" },
391 { 360,
"id",
"Indonesia" },
392 { 364,
"ir",
"Iran" },
393 { 368,
"iq",
"Iraq" },
394 { 372,
"ie",
"Ireland" },
395 { 833,
"im",
"Isle of Man" },
396 { 376,
"il",
"Israel" },
397 { 380,
"it",
"Italy" },
398 { 388,
"jm",
"Jamaica" },
399 { 392,
"jp",
"Japan" },
400 { 832,
"je",
"Jersey" },
401 { 400,
"jo",
"Jordan" },
402 { 398,
"kz",
"Kazakhstan" },
403 { 404,
"ke",
"Kenya" },
404 { 296,
"ki",
"Kiribati" },
405 { 408,
"kp",
"Korea (north)" },
406 { 410,
"kr",
"Korea (south)" },
407 { 0,
"xk",
"Kosovo" },
408 { 414,
"kw",
"Kuwait" },
409 { 417,
"kg",
"Kyrgyzstan" },
410 { 418,
"la",
"Laos" },
411 { 428,
"lv",
"Latvia" },
412 { 422,
"lb",
"Lebanon" },
413 { 426,
"ls",
"Lesotho" },
414 { 430,
"lr",
"Liberia" },
415 { 434,
"ly",
"Libya" },
416 { 438,
"li",
"Liechtenstein" },
417 { 440,
"lt",
"Lithuania" },
418 { 442,
"lu",
"Luxembourg" },
419 { 446,
"mo",
"Macao" },
420 { 450,
"mg",
"Madagascar" },
421 { 454,
"mw",
"Malawi" },
422 { 458,
"my",
"Malaysia" },
423 { 462,
"mv",
"Maldives" },
424 { 466,
"ml",
"Mali" },
425 { 470,
"mt",
"Malta" },
426 { 584,
"mh",
"Marshall Islands" },
427 { 474,
"mq",
"Martinique" },
428 { 478,
"mr",
"Mauritania" },
429 { 480,
"mu",
"Mauritius" },
430 { 175,
"yt",
"Mayotte" },
431 { 484,
"mx",
"Mexico" },
432 { 583,
"fm",
"Micronesia" },
433 { 498,
"md",
"Moldova" },
434 { 492,
"mc",
"Monaco" },
435 { 496,
"mn",
"Mongolia" },
436 { 499,
"me",
"Montenegro" },
437 { 500,
"ms",
"Montserrat" },
438 { 504,
"ma",
"Morocco" },
439 { 508,
"mz",
"Mozambique" },
440 { 104,
"mm",
"Myanmar" },
441 { 516,
"na",
"Namibia" },
442 { 520,
"nr",
"Nauru" },
443 { 524,
"np",
"Nepal" },
444 { 528,
"nl",
"Netherlands" },
445 { 540,
"nc",
"New Caledonia" },
446 { 554,
"nz",
"New Zealand" },
447 { 558,
"ni",
"Nicaragua" },
448 { 562,
"ne",
"Niger" },
449 { 566,
"ng",
"Nigeria" },
450 { 570,
"nu",
"Niue" },
451 { 574,
"nf",
"Norfolk Island" },
452 { 807,
"mk",
"North Macedonia" },
453 { 580,
"mp",
"Northern Mariana Islands" },
454 { 578,
"no",
"Norway" },
455 { 512,
"om",
"Oman" },
456 { 586,
"pk",
"Pakistan" },
457 { 585,
"pw",
"Palau" },
458 { 275,
"ps",
"Palestinian Territory" },
459 { 591,
"pa",
"Panama" },
460 { 598,
"pg",
"Papua New Guinea" },
461 { 600,
"py",
"Paraguay" },
462 { 604,
"pe",
"Peru" },
463 { 608,
"ph",
"Philippines" },
464 { 612,
"pn",
"Pitcairn" },
465 { 616,
"pl",
"Poland" },
466 { 620,
"pt",
"Portugal" },
467 { 630,
"pr",
"Puerto Rico" },
468 { 634,
"qa",
"Qatar" },
469 { 638,
"re",
"Reunion" },
470 { 642,
"ro",
"Romania" },
471 { 643,
"ru",
"Russian Federation" },
472 { 646,
"rw",
"Rwanda" },
473 { 0,
"bl",
"Saint Barthélemy" },
474 { 659,
"kn",
"Saint Kitts & Nevis" },
475 { 662,
"lc",
"Saint Lucia" },
476 { 663,
"mf",
"Saint Martin" },
477 { 670,
"vc",
"Saint Vincent" },
478 { 882,
"ws",
"Samoa" },
479 { 674,
"sm",
"San Marino" },
480 { 678,
"st",
"Sao Tome & Principe" },
481 { 682,
"sa",
"Saudi Arabia" },
482 { 686,
"sn",
"Senegal" },
483 { 688,
"rs",
"Serbia" },
484 { 690,
"sc",
"Seychelles" },
485 { 694,
"sl",
"Sierra Leone" },
486 { 702,
"sg",
"Singapore" },
487 { 534,
"sx",
"Sint Maarten" },
488 { 703,
"sk",
"Slovakia" },
489 { 705,
"si",
"Slovenia" },
490 { 90,
"sb",
"Solomon Islands" },
491 { 706,
"so",
"Somalia" },
492 { 710,
"za",
"South Africa" },
493 { 239,
"gs",
"South Georgia & South Sandwich Is." },
494 { 728,
"ss",
"South Sudan" },
495 { 724,
"es",
"Spain" },
496 { 144,
"lk",
"Sri Lanka" },
497 { 654,
"sh",
"St. Helena" },
498 { 666,
"pm",
"St. Pierre & Miquelon" },
499 { 736,
"sd",
"Sudan" },
500 { 740,
"sr",
"Suriname" },
501 { 744,
"sj",
"Svalbard & Jan Mayen Islands" },
502 { 752,
"se",
"Sweden" },
503 { 756,
"ch",
"Switzerland" },
504 { 760,
"sy",
"Syrian Arab Republic" },
505 { 158,
"tw",
"Taiwan" },
506 { 762,
"tj",
"Tajikistan" },
507 { 834,
"tz",
"Tanzania" },
508 { 764,
"th",
"Thailand" },
509 { 626,
"tl",
"Timor-Leste" },
510 { 768,
"tg",
"Togo" },
511 { 772,
"tk",
"Tokelau" },
512 { 776,
"to",
"Tonga" },
513 { 780,
"tt",
"Trinidad & Tobago" },
514 { 788,
"tn",
"Tunisia" },
515 { 792,
"tr",
"Turkey" },
516 { 795,
"tm",
"Turkmenistan" },
517 { 796,
"tc",
"Turks & Caicos Islands" },
518 { 798,
"tv",
"Tuvalu" },
519 { 800,
"ug",
"Uganda" },
520 { 804,
"ua",
"Ukraine" },
521 { 784,
"ae",
"United Arab Emirates" },
522 { 826,
"gb",
"United Kingdom" },
523 { 840,
"us",
"United States" },
524 { 581,
"um",
"United States Minor Outlying Islands" },
525 { 858,
"uy",
"Uruguay" },
526 { 860,
"uz",
"Uzbekistan" },
527 { 548,
"vu",
"Vanuatu" },
528 { 862,
"ve",
"Venezuela" },
529 { 704,
"vn",
"Vietnam" },
530 { 92,
"vg",
"Virgin Islands (British)" },
531 { 850,
"vi",
"Virgin Islands (US)" },
532 { 876,
"wf",
"Wallis & Futuna Islands" },
533 { 732,
"eh",
"Western Sahara" },
534 { 887,
"ye",
"Yemen" },
535 { 894,
"zm",
"Zambia" },
536 { 716,
"zw",
"Zimbabwe" }
542 #define BYTE_OK(x) ((x) >= 0 && (x) <= 255)
569 char ccode_A2[3], *ccopy, *dot_4;
570 int cnumber, z0, z1, ver_1, ver_2;
573 ip = ntohl(
addr.s_addr);
584 const char *dot = strchr(cname,
'.');
587 printf(
"Unexpected CNAME %s (ver_1)\n", cname);
596 if (z0 !=
'z' && z1 !=
'z')
598 printf(
"Unexpected CNAME %s (ver_2)\n", cname);
605 printf(
"Unexpected CNAME %s (ver?)\n", cname);
612 ccode_A2[0] = (char)
TOLOWER(cname[2]);
613 ccode_A2[1] = (char)
TOLOWER(cname[3]);
619 cnumber = ip & 0xFFFF;
621 TRACE((
"Found country-code `%s', number %d\n",
622 ver_1 ? ccode_A2 :
"<n/a>", cnumber));
627 printf(
"Name for country-number %d not found.\n", cnumber);
632 if ((country->
short_name[0] != ccode_A2[0]) ||
635 printf(
"short-name mismatch; %s vs %s\n",
638 printf(
"%s (%s), number %d.\n",
647 printf(
"usage: acountry [-hdv] {host|addr} ...\n\n"
648 " d : Print some extra debugging output.\n"
649 " h : Display this help and exit.\n"
650 " v : Be more verbose. Print extra information.\n\n");
const CARES_EXTERN char * ares_inet_ntop(int af, const void *src, char *dst, ares_socklen_t size)
CARES_EXTERN int ares_inet_pton(int af, const char *src, void *dst)
CARES_EXTERN void ares_process(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
CARES_EXTERN int ares_library_init(int flags)
return memset(p, 0, total)
static const char nerd_fmt[]
_Use_decl_annotations_ int __cdecl printf(const char *_Format,...)
CARES_EXTERN int ares_init(ares_channel *channelptr)
CARES_EXTERN int ares_fds(ares_channel channel, fd_set *read_fds, fd_set *write_fds)
#define ARES_LIB_INIT_ALL
static void Abort(const char *fmt,...)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
wrapped_grpc_channel * channel
int main(int argc, char **argv)
static void callback(void *arg, int status, int timeouts, struct hostent *host)
const CARES_EXTERN char * ares_strerror(int code)
GTEST_API_ const char * fmt
static void wait_ares(ares_channel channel)
static const char * usage
int ares_getopt(int nargc, char *const nargv[], const char *ostr)
CARES_EXTERN void ares_library_cleanup(void)
CARES_EXTERN void ares_destroy(ares_channel channel)
CARES_EXTERN struct timeval * ares_timeout(ares_channel channel, struct timeval *maxtv, struct timeval *tv)
#define strcasecmp(p1, p2)
static const char * nerd_ver2
static void find_country_from_cname(const char *cname, struct in_addr addr)
#define CARES_INADDR_CAST(type, var)
static const char * nerd_ver1
static void callback2(void *arg, int status, int timeouts, struct hostent *host)
static void print_help_info_acountry(void)
static int is_addr(char *str, char **end)
static const struct search_list * list_lookup(int number, const struct search_list *list, int num)
CARES_EXTERN void ares_gethostbyname(ares_channel channel, const char *name, int family, ares_host_callback callback, void *arg)
static const struct search_list country_list[]
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:40