s3: Make&use set_socket_addr_v4
authorVolker Lendecke <vl@samba.org>
Sat, 14 May 2011 16:04:49 +0000 (18:04 +0200)
committerVolker Lendecke <vlendec@samba.org>
Sat, 14 May 2011 16:57:57 +0000 (18:57 +0200)
Autobuild-User: Volker Lendecke <vlendec@samba.org>
Autobuild-Date: Sat May 14 18:57:57 CEST 2011 on sn-devel-104

source3/libsmb/namequery.c

index 417d4ffc954be9bcafb2a0392965e2e78c488f94..1cd5eb79bbcd1cb222a566cdbba0c0911ba4bcc1 100644 (file)
@@ -197,6 +197,17 @@ char *saf_fetch( const char *domain )
        return server;
 }
 
+static void set_socket_addr_v4(struct sockaddr_storage *addr)
+{
+       if (!interpret_string_addr(addr, lp_socket_address(),
+                                  AI_NUMERICHOST|AI_PASSIVE)) {
+               zero_sockaddr(addr);
+       }
+       if (addr->ss_family != AF_INET) {
+               zero_sockaddr(addr);
+       }
+}
+
 /****************************************************************************
  Generate a random trn_id.
 ****************************************************************************/
@@ -705,10 +716,7 @@ struct tevent_req *node_status_query_send(TALLOC_CTX *mem_ctx,
        in_addr = (struct sockaddr_in *)(void *)&state->addr;
        in_addr->sin_port = htons(NMB_PORT);
 
-       if (!interpret_string_addr(&state->my_addr, lp_socket_address(),
-                                  AI_NUMERICHOST|AI_PASSIVE)) {
-               zero_sockaddr(&state->my_addr);
-       }
+       set_socket_addr_v4(&state->my_addr);
 
        ZERO_STRUCT(p);
        nmb->header.name_trn_id = generate_trn_id();
@@ -892,10 +900,7 @@ bool name_status_find(const char *q_name,
                return false;
        }
 
-       if (!interpret_string_addr(&ss, lp_socket_address(),
-                               AI_NUMERICHOST|AI_PASSIVE)) {
-               zero_sockaddr(&ss);
-       }
+       set_socket_addr_v4(&ss);
 
        /* W2K PDC's seem not to respond to '*'#0. JRA */
        make_nmb_name(&nname, q_name, q_type);
@@ -1202,10 +1207,7 @@ struct tevent_req *name_query_send(TALLOC_CTX *mem_ctx,
        in_addr = (struct sockaddr_in *)(void *)&state->addr;
        in_addr->sin_port = htons(NMB_PORT);
 
-       if (!interpret_string_addr(&state->my_addr, lp_socket_address(),
-                                  AI_NUMERICHOST|AI_PASSIVE)) {
-               zero_sockaddr(&state->my_addr);
-       }
+       set_socket_addr_v4(&state->my_addr);
 
        ZERO_STRUCT(p);
        nmb->header.name_trn_id = generate_trn_id();