]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3/net: print returned addresses in dns gethostbyname
authorRichard Sharpe <rsharpe@samba.org>
Sat, 18 Jun 2016 20:29:36 +0000 (13:29 -0700)
committerRalph Boehme <slow@samba.org>
Sun, 19 Jun 2016 08:34:37 +0000 (10:34 +0200)
Make net ads dns gethostbyname actually print out the returned addresses
so we can use it in self tests.

Signed-off-by: Richard Sharpe <rsharpe@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Sun Jun 19 10:34:37 CEST 2016 on sn-devel-144

source3/utils/net_ads.c
source3/utils/net_dns.c

index f4c25e1bf17e133e0aa924e2f3d735306e410068..5feecc911f025b584e5d564c55c2838fdd5e6c49 100644 (file)
@@ -1751,9 +1751,10 @@ static int net_ads_dns_gethostbyname(struct net_context *c, int argc, const char
        }
 
        err = do_gethostbyname(argv[0], argv[1]);
-
-       d_printf(_("do_gethostbyname returned %s (%d)\n"),
-               dns_errstr(err), ERROR_DNS_V(err));
+       if (!ERR_DNS_IS_OK(err)) {
+               d_printf(_("do_gethostbyname returned %s (%d)\n"),
+                       dns_errstr(err), ERROR_DNS_V(err));
+       }
 #endif
        return 0;
 }
index 3b9730a53131ca40064b2f6cc7a4e661c3e0c3fc..207dfa51b2084251bd563aae3e7e8f786bf09a49 100644 (file)
@@ -212,14 +212,39 @@ DNS_ERROR do_gethostbyname(const char *server, const char *host)
        struct dns_connection *conn = NULL;
        struct dns_request *req, *resp;
        DNS_ERROR err;
+       int ans = 0;
 
        err = dns_open_connection(server, DNS_UDP, NULL, &conn);
-       if (!ERR_DNS_IS_OK(err)) goto error;
+       if (!ERR_DNS_IS_OK(err)) {
+               goto error;
+       }
 
        err = dns_create_query(conn, host, QTYPE_A, DNS_CLASS_IN, &req);
-       if (!ERR_DNS_IS_OK(err)) goto error;
+       if (!ERR_DNS_IS_OK(err)) {
+               goto error;
+       }
 
        err = dns_transaction(conn, conn, req, &resp);
+       if (!ERR_DNS_IS_OK(err)) {
+               goto error;
+       }
+
+       if (resp->num_answers == 0) {
+               printf("%s", "No answers!\n");
+               goto error;
+       }
+
+       for (ans = 0; ans < resp->num_answers; ans++) {
+               struct in_addr resp_ip;
+
+               if (ans > 0)
+                       printf("%s", " ");
+
+               resp_ip.s_addr = *((uint32_t *)resp->answers[ans]->data);
+               printf("%s", inet_ntoa(resp_ip));
+       }
+
+       printf("%s", "\n");
 
  error:
        TALLOC_FREE(conn);