]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE12-winnt-enable-global-drive-mappings-20030701
authorDouglas Engert <deengert@anl.gov>
Tue, 1 Jul 2003 20:44:12 +0000 (20:44 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 1 Jul 2003 20:44:12 +0000 (20:44 +0000)
FIXES 1614

This will allow access to AFS from system processes and scheduled tasks.
It also means that each user does not have to map AFS to his own
drive.

(cherry picked from commit 4bda27a286acb45ce87131eb43d80dbcbe5e5b39)

src/WINNT/afsd/afsd_service.c

index ed4cedeeb2f06c5fe28491d4191ffa52bb2f0314..69419ca41ec0d0d918f7dfb5100325cf83d48628 100644 (file)
 #include <winsock2.h>
 
 #include <osi.h>
-\r
-#ifdef DEBUG\r
-//#define NOTSERVICE\r
-#endif\r
+
+#ifdef DEBUG
+//#define NOTSERVICE
+#endif
 
 extern void afsi_log(char *pattern, ...);
 
@@ -137,9 +137,10 @@ doneTrace:
        }
 }
 
-#if 0
+#if 1
 /* This code was moved to Drivemap.cpp*/
 /* Mount a drive into AFS if the user wants us to */
+/* DEE Could check first if we are run as SYSTEM */
 void CheckMountDrive()
 {
         char szAfsPath[_MAX_PATH];
@@ -171,9 +172,27 @@ void CheckMountDrive()
                         }
                 }
                 
+#if 0
                 sprintf(szAfsPath, "\\Device\\LanmanRedirector\\%s\\%s-AFS\\%s", szDriveToMapTo, cm_HostName, szSubMount);
         
                 dwResult = DefineDosDevice(DDD_RAW_TARGET_PATH, szDriveToMapTo, szAfsPath);
+#else
+               {
+                   NETRESOURCE nr;
+                   memset (&nr, 0x00, sizeof(NETRESOURCE));
+                   sprintf(szAfsPath,"\\\\%s-AFS\\%s",cm_HostName,szSubMount);
+                   
+                   nr.dwScope = RESOURCE_GLOBALNET;
+                   nr.dwType=RESOURCETYPE_DISK;
+                   nr.lpLocalName=szDriveToMapTo;
+                   nr.lpRemoteName=szAfsPath;
+                   nr.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
+                   nr.dwUsage = RESOURCEUSAGE_CONNECTABLE;
+
+                   dwResult = WNetAddConnection2(&nr,NULL,NULL,FALSE);
+               }
+#endif
                 afsi_log("GlobalAutoMap of %s to %s %s", szDriveToMapTo, szSubMount, dwResult ? "succeeded" : "failed");
         }        
 
@@ -194,7 +213,7 @@ void afsd_Main()
 
        WaitToTerminate = CreateEvent(NULL, TRUE, FALSE, NULL);
 
-#ifndef NOTSERVICE\r
+#ifndef NOTSERVICE
        StatusHandle = RegisterServiceCtrlHandler(AFS_DAEMON_SERVICE_NAME,
                        (LPHANDLER_FUNCTION) afsd_ServiceControlHandler);
 
@@ -251,7 +270,7 @@ void afsd_Main()
        }
 
         /* Check if we should mount a drive into AFS */
-/*        CheckMountDrive();*/
+        CheckMountDrive();
 
        WaitForSingleObject(WaitToTerminate, INFINITE);