fixing domain join and domain login problems
[samba.git] / source / smbd / server.c
index 4151bbe12a71cc00853f90ee58e14035b8f7d87b..acde9eebf351afbbef3b21c45fc82e4e27e414a0 100644 (file)
@@ -25,6 +25,7 @@
 pstring servicesf = CONFIGFILE;
 extern pstring debugf;
 extern fstring global_myworkgroup;
+extern fstring global_sam_name;
 extern pstring global_myname;
 
 int am_parent = 1;
@@ -428,6 +429,13 @@ void exit_server(char *reason)
        locking_end();
 
        DEBUG(3,("Server exit (%s)\n", (reason ? reason : "")));
+#ifdef MEM_MAN
+       {
+               extern FILE *dbf;
+               smb_mem_write_verbose(dbf);
+               dbgflush();
+       }
+#endif
        exit(0);
 }
 
@@ -486,6 +494,7 @@ static void usage(char *pname)
        printf("\t-P                    passive only\n");
        printf("\t-a                    append to log file (default)\n");
        printf("\t-o                    overwrite log file, don't append\n");
+       printf("\t-i scope              NetBIOS scope to use (default none)\n");
        printf("\n");
 }
 
@@ -644,11 +653,23 @@ static void usage(char *pname)
 
        fstrcpy(global_myworkgroup, lp_workgroup());
 
-       if(!pdb_generate_sam_sid()) {
+       get_sam_domain_name();
+
+       generate_wellknown_sids();
+
+       if (!generate_sam_sid())
+       {
                DEBUG(0,("ERROR: Samba cannot create a SAM SID.\n"));
                exit(1);
        }
 
+       if (!get_member_domain_sid())
+       {
+               DEBUG(0,("ERROR: Samba cannot obtain PDC SID from PDC(s) %s.\n",
+                         lp_passwordserver()));
+               exit(1);
+       }
+
        CatchSignal(SIGHUP,SIGNAL_CAST sig_hup);
        
        /* Setup the signals that allow the debug log level
@@ -695,7 +716,16 @@ static void usage(char *pname)
        if (!locking_init(0))
                exit(1);
 
-       if(!initialize_password_db())
+       if(!initialise_passgrp_db())
+               exit(1);
+
+       if(!initialise_password_db())
+               exit(1);
+
+       if(!initialise_group_db())
+               exit(1);
+
+       if(!initialise_alias_db())
                exit(1);
 
        /* possibly reload the services file. */