c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews/*
9eb24f1f84885d5c2e51a7f675264db398c31af7Tinderbox User * Copyright (C) 2000, 2001, 2004, 2005, 2007, 2015, 2016 Internet Systems Consortium, Inc. ("ISC")
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews *
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * This Source Code Form is subject to the terms of the Mozilla Public
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * License, v. 2.0. If a copy of the MPL was not distributed with this
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews * file, You can obtain one at http://mozilla.org/MPL/2.0/.
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews */
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
28a8f5b0de57d269cf2845c69cb6abe18cbd3b3aMark Andrews/* $Id: gxbn_test.c,v 1.16 2007/06/19 23:46:59 tbox Exp $ */
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews/*! \file */
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews#include <config.h>
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews#include <stdio.h>
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews#include <isc/net.h>
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews#include <isc/print.h>
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews#include <lwres/netdb.h>
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrewsstatic void
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrewsprint_he(struct hostent *he, int error, const char *fun, const char *name) {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews char **c;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews int i;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews if (he != NULL) {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews printf("%s(%s):\n", fun, name);
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews printf("\tname = %s\n", he->h_name);
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews printf("\taddrtype = %d\n", he->h_addrtype);
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews printf("\tlength = %d\n", he->h_length);
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews c = he->h_aliases;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews i = 1;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews while (*c != NULL) {
9a14f870ddc0108402d2daa7a7ff84b6e20f08b4Automatic Updater printf("\talias[%d] = %s\n", i, *c);
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews i++;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews c++;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews }
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews c = he->h_addr_list;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews i = 1;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews while (*c != NULL) {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews char buf[128];
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews inet_ntop(he->h_addrtype, *c, buf, sizeof(buf));
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews printf("\taddress[%d] = %s\n", i, buf);
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews c++;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews i++;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews }
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews } else {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews printf("%s(%s): error = %d (%s)\n", fun, name, error,
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews hstrerror(error));
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews }
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews}
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupontint
b5252fcde512405a68dd4becfe683d9763bd0feaMukund Sivaramanmain(int argc, char **argv) {
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews struct hostent *he;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews int error;
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews
c6d4f781529d2f28693546b25b2967d44ec89e60Mark Andrews (void)argc;
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt while (argv[1] != NULL) {
dbb012765c735ee0d82dedb116cdc7cf18957814Evan Hunt he = gethostbyname(argv[1]);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt print_he(he, h_errno, "gethostbyname", argv[1]);
ba751492fcc4f161a18b983d4f018a1a52938cb9Evan Hunt
22bed621ef87bc8b6c1fea599b02c4b38dd6bf48Mark Andrews he = getipnodebyname(argv[1], AF_INET6, AI_DEFAULT|AI_ALL,
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews &error);
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews print_he(he, error, "getipnodebyname", argv[1]);
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews if (he != NULL)
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews freehostent(he);
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupont he = getipnodebyname(argv[1], AF_INET6, AI_DEFAULT,
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupont &error);
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupont print_he(he, error, "getipnodebyname", argv[1]);
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupont if (he != NULL)
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupont freehostent(he);
c1d7e0562f6a72ecc07ab5140cf2b88183adbd08Francis Dupont argv++;
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews }
76af83c9adb772f7b045c62cf8b411165bfaa5efMark Andrews return (0);
f9c410d93711fbf312a0162f1e2d3f2a5ede69afFrancis Dupont}
f9c410d93711fbf312a0162f1e2d3f2a5ede69afFrancis Dupont