Merge from 3.0 - try harder to get our real DNS domain name, and send this
authorAndrew Bartlett <abartlet@samba.org>
Tue, 22 Apr 2003 07:45:16 +0000 (07:45 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 22 Apr 2003 07:45:16 +0000 (07:45 +0000)
to the client when it asks for our DNS name and forest name.

(needed for win2k to trust us as a trusted domain).

Andrew Bartlett
(This used to be commit 2a1015eb57da7b69caafd1221b871b6bff1af2fb)

source3/lib/util.c
source3/rpc_server/srv_lsa_nt.c

index 1adda853541f85c1225399feaf6cd6d34c90f7f7..e58f5274df5069a93b8621e916c14c94868e1d1f 100644 (file)
@@ -1012,6 +1012,7 @@ BOOL get_mydomname(fstring my_domname)
 {
        pstring hostname;
        char *p;
+       struct hostent *hp;
 
        *hostname = 0;
        /* get my host name */
@@ -1023,17 +1024,31 @@ BOOL get_mydomname(fstring my_domname)
        /* Ensure null termination. */
        hostname[sizeof(hostname)-1] = '\0';
 
+               
        p = strchr_m(hostname, '.');
 
-       if (!p)
-               return False;
+       if (p) {
+               p++;
+               
+               if (my_domname)
+                       fstrcpy(my_domname, p);
+       }
 
-       p++;
+       if (!(hp = sys_gethostbyname(hostname))) {
+               return False;
+       }
        
-       if (my_domname)
-               fstrcpy(my_domname, p);
+       p = strchr_m(hp->h_name, '.');
 
-       return True;
+       if (p) {
+               p++;
+               
+               if (my_domname)
+                       fstrcpy(my_domname, p);
+               return True;
+       }
+
+       return False;
 }
 
 /****************************************************************************
index fb6538db39f9d8b14fa8ab8bc5945f906b5294f2..3581be0181966fe7426bb28dfce242d70cabeb0f 100644 (file)
@@ -1222,6 +1222,7 @@ NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_I
        char *forest_name = NULL;
        DOM_SID *sid = NULL;
        GUID guid;
+       fstring dnsdomname;
 
        ZERO_STRUCT(guid);
        r_u->status = NT_STATUS_OK;
@@ -1241,8 +1242,15 @@ NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_I
                        case ROLE_DOMAIN_BDC:
                                nb_name = lp_workgroup();
                                /* ugly temp hack for these next two */
-                               dns_name = lp_realm();
-                               forest_name = lp_realm();
+
+                               /* This should be a 'netbios domain -> DNS domain' mapping */
+                               dnsdomname[0] = '\0';
+                               get_mydomname(dnsdomname);
+                               strlower(dnsdomname);
+                               
+                               dns_name = dnsdomname;
+                               forest_name = dnsdomname;
+
                                sid = get_global_sam_sid();
                                secrets_fetch_domain_guid(lp_workgroup(), &guid);
                                break;