windows-force-anon-vldb-20080225
authorJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 25 Feb 2008 22:19:49 +0000 (22:19 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Mon, 25 Feb 2008 22:19:49 +0000 (22:19 +0000)
LICENSE MIT

For organizations with krb5 aware file servers but transarc or old openafs
vldb servers, add force anonymous vldb lookup option

  HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
DWORD "ForceAnonVLDB"  (default is 0)

src/WINNT/afsd/afsd_init.c
src/WINNT/afsd/cm_conn.c

index e5f5431..def1eb3 100644 (file)
@@ -40,7 +40,8 @@
 extern int RXAFSCB_ExecuteRequest(struct rx_call *z_call);
 extern int RXSTATS_ExecuteRequest(struct rx_call *z_call);
 
-extern afs_int32 cryptall;
+extern afs_uint32 cryptall;
+extern afs_uint32 cm_anonvldb;
 extern int cm_enableServerLocks;
 extern int cm_followBackupPath;
 extern int cm_deleteReadOnly;
@@ -941,6 +942,11 @@ int afsd_InitCM(char **reasonP)
     else
        LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_CRYPT_OFF);
 
+    dummyLen = sizeof(cryptall);
+    code = RegQueryValueEx(parmKey, "ForceAnonVLDB", NULL, NULL,
+                            (BYTE *) &cm_anonvldb, &dummyLen);
+    afsi_log("CM ForceAnonVLDB is %s", cm_anonvldb ? "on" : "off");
+
 #ifdef AFS_AFSDB_ENV
     dummyLen = sizeof(cm_dnsEnabled);
     code = RegQueryValueEx(parmKey, "UseDNS", NULL, NULL,
index 87e3db4..7ff818d 100644 (file)
@@ -29,7 +29,8 @@ unsigned short HardDeadtimeout = CM_CONN_HARDDEADTIME;
 #define LANMAN_WKS_PARAM_KEY "SYSTEM\\CurrentControlSet\\Services\\lanmanworkstation\\parameters"
 #define LANMAN_WKS_SESSION_TIMEOUT "SessTimeout"
 
-afs_int32 cryptall = 0;
+afs_uint32 cryptall = 0;
+afs_uint32 cm_anonvldb = 0;
 
 void cm_PutConn(cm_conn_t *connp)
 {
@@ -872,6 +873,9 @@ long cm_ConnByServer(cm_server_t *serverp, cm_user_t *userp, cm_conn_t **connpp)
 
     *connpp = NULL;
 
+    if (cm_anonvldb && serverp->type == CM_SERVER_VLDB)
+        userp = cm_rootUserp;
+
     lock_ObtainMutex(&userp->mx);
     lock_ObtainWrite(&cm_connLock);
     for (tcp = serverp->connsp; tcp; tcp=tcp->nextp) {