diff options
author | Pavel Reichl <preichl@redhat.com> | 2015-07-14 09:56:59 -0400 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-07-24 09:30:41 +0200 |
commit | b0a8ed519554f8896e35812e0759862c33f157fe (patch) | |
tree | e608043a83649d19ce1e26502a874be1f68e0f89 /src/providers/ldap | |
parent | 1112e84494bcfd0f658e073d25f15ed877d047aa (diff) | |
download | sssd-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.c | 20 |
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; } |