From 9379a869439585410c4c3f74db2a39eaa36cb523 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Sat, 18 Jun 2016 13:29:36 -0700 Subject: [PATCH] s3/net: print returned addresses in dns gethostbyname MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Make net ads dns gethostbyname actually print out the returned addresses so we can use it in self tests. Signed-off-by: Richard Sharpe Reviewed-by: Ralph Boehme Autobuild-User(master): Ralph Böhme Autobuild-Date(master): Sun Jun 19 10:34:37 CEST 2016 on sn-devel-144 --- source3/utils/net_ads.c | 7 ++++--- source3/utils/net_dns.c | 29 +++++++++++++++++++++++++++-- 2 files changed, 31 insertions(+), 5 deletions(-) diff --git a/source3/utils/net_ads.c b/source3/utils/net_ads.c index f4c25e1bf17..5feecc911f0 100644 --- a/source3/utils/net_ads.c +++ b/source3/utils/net_ads.c @@ -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; } diff --git a/source3/utils/net_dns.c b/source3/utils/net_dns.c index 3b9730a5313..207dfa51b20 100644 --- a/source3/utils/net_dns.c +++ b/source3/utils/net_dns.c @@ -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); -- 2.47.3