Replace the "ipv4" specific strings in libcli/cldap/cldap.c with "ip". CLDAP can
authorJeremy Allison <jra@samba.org>
Mon, 8 Jun 2009 22:21:48 +0000 (15:21 -0700)
committerJeremy Allison <jra@samba.org>
Mon, 8 Jun 2009 22:21:48 +0000 (15:21 -0700)
run over IPv4/IPv6, even though some of the netlogon messages are IPv4 specific.
Fix the new ads_cldap_netlogon() to be IPv6/IPv4 agnostic. This compiles but
I don't have a good test env. for this (although as the previous code was
*completely* broken over IPv6 this will expose previously hidden bugs if it's broken :-).
Jeremy.

libcli/cldap/cldap.c
source3/libads/cldap.c

index 8a0c2eec5e88c7ed175f665a505061d4daae9383..191d0eeee49c1d6e4873dcb1ca20cbcecc3d1228 100644 (file)
@@ -320,7 +320,7 @@ NTSTATUS cldap_socket_init(TALLOC_CTX *mem_ctx,
        c->event.ctx = ev;
 
        if (!local_addr) {
-               ret = tsocket_address_inet_from_strings(c, "ipv4",
+               ret = tsocket_address_inet_from_strings(c, "ip",
                                                        NULL, 0,
                                                        &any);
                if (ret != 0) {
@@ -550,7 +550,7 @@ struct tevent_req *cldap_search_send(TALLOC_CTX *mem_ctx,
                        goto post;
                }
                ret = tsocket_address_inet_from_strings(state,
-                                                       "ipv4",
+                                                       "ip",
                                                        io->in.dest_address,
                                                        io->in.dest_port,
                                                        &state->request.dest);
index 4c3716a470f724bf11a8b79e0b9d1d484eb3f4bc..523020797b097d6187a76b6016c2bb521dc50c5c 100644 (file)
@@ -38,29 +38,20 @@ bool ads_cldap_netlogon(TALLOC_CTX *mem_ctx,
        struct cldap_netlogon io;
        struct netlogon_samlogon_response *reply;
        NTSTATUS status;
-       struct in_addr addr;
-       char addrstr[INET_ADDRSTRLEN];
+       struct sockaddr_storage ss;
+       char addrstr[INET6_ADDRSTRLEN];
        const char *dest_str;
        int ret;
        struct tsocket_address *dest_addr;
 
-       /* TODO: support ipv6 */
-
-       addr = interpret_addr2(server);
-       if (is_zero_ip_v4(addr)) {
-               DEBUG(2,("Failed to resolve[%s] into an address for cldap\n",
-                        server));
-               return false;
-       }
-       dest_str = inet_ntop(AF_INET, &addr,
-                            addrstr, sizeof(addrstr));
-       if (!dest_str) {
+       if (!interpret_string_addr(&ss, server, 0)) {
                DEBUG(2,("Failed to resolve[%s] into an address for cldap\n",
-                        server));
+                       server));
                return false;
        }
+       dest_str = print_sockaddr(addrstr, sizeof(addrstr), &ss);
 
-       ret = tsocket_address_inet_from_strings(mem_ctx, "ipv4",
+       ret = tsocket_address_inet_from_strings(mem_ctx, "ip",
                                                dest_str, LDAP_PORT,
                                                &dest_addr);
        if (ret != 0) {