summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2011-05-27 11:44:16 +0200
committerStephen Gallagher <sgallagh@redhat.com>2011-06-02 14:12:42 -0400
commit38e989bc5d5ff556505dbd149a0757276774983d (patch)
tree15aaa40e7bcb05b019bb5b3344f5772770505c5d /src
parent1b07993867e74129d2fedde93d16d73ff466a483 (diff)
downloadsssd-38e989bc5d5ff556505dbd149a0757276774983d.tar.gz
sssd-38e989bc5d5ff556505dbd149a0757276774983d.tar.xz
sssd-38e989bc5d5ff556505dbd149a0757276774983d.zip
Add utility function to return IP address as string
Diffstat (limited to 'src')
-rw-r--r--src/providers/ipa/ipa_common.c10
-rw-r--r--src/providers/krb5/krb5_common.c11
-rw-r--r--src/resolv/async_resolv.c24
-rw-r--r--src/resolv/async_resolv.h3
4 files changed, 31 insertions, 17 deletions
diff --git a/src/providers/ipa/ipa_common.c b/src/providers/ipa/ipa_common.c
index 7d7f04665..2e54aa9e4 100644
--- a/src/providers/ipa/ipa_common.c
+++ b/src/providers/ipa/ipa_common.c
@@ -574,15 +574,9 @@ static void ipa_resolve_callback(void *private_data, struct fo_server *server)
return;
}
- address = talloc_zero_size(service, 128);
+ address = resolv_get_string_address(service, srvaddr);
if (address == NULL) {
- DEBUG(1, ("talloc_zero failed.\n"));
- return;
- }
-
- if (inet_ntop(srvaddr->h_addrtype, srvaddr->h_addr_list[0],
- address, 128) == NULL) {
- DEBUG(1, ("inet_ntop failed [%d][%s].\n", errno, strerror(errno)));
+ DEBUG(1, ("resolv_get_string_address failed.\n"));
return;
}
diff --git a/src/providers/krb5/krb5_common.c b/src/providers/krb5/krb5_common.c
index 434fc7fbc..06c3cbac6 100644
--- a/src/providers/krb5/krb5_common.c
+++ b/src/providers/krb5/krb5_common.c
@@ -384,16 +384,9 @@ static void krb5_resolve_callback(void *private_data, struct fo_server *server)
return;
}
- address = talloc_zero_size(krb5_service, 128);
+ address = resolv_get_string_address(krb5_service, srvaddr);
if (address == NULL) {
- DEBUG(1, ("talloc_zero failed.\n"));
- return;
- }
-
- if (inet_ntop(srvaddr->h_addrtype, srvaddr->h_addr_list[0],
- address, 128) == NULL) {
- ret = errno;
- DEBUG(1, ("inet_ntop failed [%d][%s].\n", ret, strerror(ret)));
+ DEBUG(1, ("resolv_get_string_address failed.\n"));
return;
}
diff --git a/src/resolv/async_resolv.c b/src/resolv/async_resolv.c
index ff53aa441..13232097f 100644
--- a/src/resolv/async_resolv.c
+++ b/src/resolv/async_resolv.c
@@ -648,6 +648,30 @@ resolv_gethostbyname_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
return EOK;
}
+char *
+resolv_get_string_address(TALLOC_CTX *mem_ctx, struct hostent *hostent)
+{
+ char *address;
+
+ if (!hostent) return NULL;
+
+ address = talloc_zero_size(mem_ctx, 128);
+ if (address == NULL) {
+ DEBUG(1, ("talloc_zero failed.\n"));
+ return NULL;
+ }
+
+ errno = 0;
+ if (inet_ntop(hostent->h_addrtype, hostent->h_addr_list[0],
+ address, 128) == NULL) {
+ DEBUG(1, ("inet_ntop failed [%d][%s].\n", errno, strerror(errno)));
+ talloc_free(address);
+ return NULL;
+ }
+
+ return address;
+}
+
static void
ares_gethostbyname_wakeup(struct tevent_req *subreq)
{
diff --git a/src/resolv/async_resolv.h b/src/resolv/async_resolv.h
index b6a13d7fa..d6cbe1494 100644
--- a/src/resolv/async_resolv.h
+++ b/src/resolv/async_resolv.h
@@ -76,6 +76,9 @@ int resolv_gethostbyname_recv(struct tevent_req *req,
int *timeouts,
struct hostent **hostent);
+char *
+resolv_get_string_address(TALLOC_CTX *mem_ctx, struct hostent *hostent);
+
/** Get SRV record **/
struct tevent_req *resolv_getsrv_send(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,