summaryrefslogtreecommitdiffstats
path: root/src/providers/ldap
diff options
context:
space:
mode:
authorPavel Reichl <preichl@redhat.com>2015-07-14 09:56:59 -0400
committerJakub Hrozek <jhrozek@redhat.com>2015-07-24 09:30:41 +0200
commitb0a8ed519554f8896e35812e0759862c33f157fe (patch)
treee608043a83649d19ce1e26502a874be1f68e0f89 /src/providers/ldap
parent1112e84494bcfd0f658e073d25f15ed877d047aa (diff)
downloadsssd-b0a8ed519554f8896e35812e0759862c33f157fe.tar.gz
sssd-b0a8ed519554f8896e35812e0759862c33f157fe.tar.xz
sssd-b0a8ed519554f8896e35812e0759862c33f157fe.zip
DYNDNS: support for dualstack
When dyndns_iface option was not used, address of connection to LDAP was used. This patch proposes following change: * Interface containing address of connection is found. * All A and AAAA addresses of this interface are collected. * Collected addresses are sent during DDNS update. * Function sss_iface_addr_add() is removed. Resolves: https://fedorahosted.org/sssd/ticket/2558
Diffstat (limited to 'src/providers/ldap')
-rw-r--r--src/providers/ldap/sdap_dyndns.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/providers/ldap/sdap_dyndns.c b/src/providers/ldap/sdap_dyndns.c
index f5929cff3..a463a2fce 100644
--- a/src/providers/ldap/sdap_dyndns.c
+++ b/src/providers/ldap/sdap_dyndns.c
@@ -644,7 +644,6 @@ sdap_dyndns_add_ldap_conn(struct sdap_dyndns_get_addrs_state *state,
{
int ret;
int fd;
- struct sss_iface_addr *address;
struct sockaddr_storage ss;
socklen_t ss_len = sizeof(ss);
@@ -666,20 +665,21 @@ sdap_dyndns_add_ldap_conn(struct sdap_dyndns_get_addrs_state *state,
return ret;
}
- switch(ss.ss_family) {
- case AF_INET:
- case AF_INET6:
- address = sss_iface_addr_add(state, &state->addresses, &ss);
- if (address == NULL) {
- return ENOMEM;
- }
- break;
- default:
+ if (ss.ss_family != AF_INET && ss.ss_family != AF_INET6) {
DEBUG(SSSDBG_CRIT_FAILURE,
"Connection to LDAP is neither IPv4 nor IPv6\n");
return EIO;
}
+ ret = sss_get_dualstack_addresses(state, (struct sockaddr *) &ss,
+ &state->addresses);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_MINOR_FAILURE,
+ "sss_get_dualstack_addresses failed: %d:[%s]\n",
+ ret, sss_strerror(ret));
+ return ret;
+ }
+
return EOK;
}