Index: openafs/src/WINNT/afsd/NTMakefile
diff -c openafs/src/WINNT/afsd/NTMakefile:1.46.2.4 openafs/src/WINNT/afsd/NTMakefile:1.46.2.5
*** openafs/src/WINNT/afsd/NTMakefile:1.46.2.4	Thu Aug 31 06:29:48 2006
--- openafs/src/WINNT/afsd/NTMakefile	Thu Jul  5 15:22:15 2007
***************
*** 52,57 ****
--- 52,58 ----
  	$(INCFILEDIR)\cm_callback.h \
  	$(INCFILEDIR)\cm_aclent.h \
  	$(INCFILEDIR)\cm_volume.h \
+         $(INCFILEDIR)\cm_volstat.h \
  	$(INCFILEDIR)\cm_dcache.h \
  	$(INCFILEDIR)\cm_access.h \
  	$(INCFILEDIR)\cm_vnodeops.h \
***************
*** 101,106 ****
--- 102,108 ----
  	$(OUT)\cm_cell.obj \
  	$(OUT)\cm_server.obj \
  	$(OUT)\cm_volume.obj \
+         $(OUT)\cm_volstat.obj \
  	$(OUT)\cm_config.obj \
  	$(OUT)\cm_conn.obj \
  	$(OUT)\cm_user.obj \
Index: openafs/src/WINNT/afsd/afsd.h
diff -c openafs/src/WINNT/afsd/afsd.h:1.18.2.1 openafs/src/WINNT/afsd/afsd.h:1.18.2.3
*** openafs/src/WINNT/afsd/afsd.h:1.18.2.1	Mon Feb 26 20:32:09 2007
--- openafs/src/WINNT/afsd/afsd.h	Thu Jul  5 15:22:15 2007
***************
*** 40,49 ****
  #endif /* DISKCACHE95 */
  #include "cm_conn.h"
  #include "cm_aclent.h"
- #include "cm_cell.h"
  #include "cm_server.h"
  #include "cm_scache.h"
  #include "cm_volume.h"
  #include "cm_dcache.h"
  #include "cm_access.h"
  #include "cm_utils.h"
--- 40,50 ----
  #endif /* DISKCACHE95 */
  #include "cm_conn.h"
  #include "cm_aclent.h"
  #include "cm_server.h"
+ #include "cm_cell.h"
  #include "cm_scache.h"
  #include "cm_volume.h"
+ #include "cm_volstat.h"
  #include "cm_dcache.h"
  #include "cm_access.h"
  #include "cm_utils.h"
Index: openafs/src/WINNT/afsd/afsd_init.c
diff -c openafs/src/WINNT/afsd/afsd_init.c:1.79.2.12 openafs/src/WINNT/afsd/afsd_init.c:1.79.2.14
*** openafs/src/WINNT/afsd/afsd_init.c:1.79.2.12	Mon Apr 16 20:06:25 2007
--- openafs/src/WINNT/afsd/afsd_init.c	Fri Jun 22 10:12:39 2007
***************
*** 997,1044 ****
          afsi_log("RX Process Statistics gathering is enabled");
  
      dummyLen = sizeof(DWORD);
-     code = RegQueryValueEx(parmKey, "daemonCheckDownInterval", NULL, NULL,
- 			    (BYTE *) &dwValue, &dummyLen);
-     if (code == ERROR_SUCCESS)
- 	cm_daemonCheckDownInterval = dwValue;
-     afsi_log("daemonCheckDownInterval is %d", cm_daemonCheckDownInterval);
- 
-     dummyLen = sizeof(DWORD);
-     code = RegQueryValueEx(parmKey, "daemonCheckUpInterval", NULL, NULL,
- 			    (BYTE *) &dwValue, &dummyLen);
-     if (code == ERROR_SUCCESS)
- 	cm_daemonCheckUpInterval = dwValue;
-     afsi_log("daemonCheckUpInterval is %d", cm_daemonCheckUpInterval);
- 
-     dummyLen = sizeof(DWORD);
-     code = RegQueryValueEx(parmKey, "daemonCheckVolInterval", NULL, NULL,
- 			    (BYTE *) &dwValue, &dummyLen);
-     if (code == ERROR_SUCCESS)
- 	cm_daemonCheckVolInterval = dwValue;
-     afsi_log("daemonCheckVolInterval is %d", cm_daemonCheckVolInterval);
- 
-     dummyLen = sizeof(DWORD);
-     code = RegQueryValueEx(parmKey, "daemonCheckCBInterval", NULL, NULL,
- 			    (BYTE *) &dwValue, &dummyLen);
-     if (code == ERROR_SUCCESS)
- 	cm_daemonCheckCBInterval = dwValue;
-     afsi_log("daemonCheckCBInterval is %d", cm_daemonCheckCBInterval);
- 
-     dummyLen = sizeof(DWORD);
-     code = RegQueryValueEx(parmKey, "daemonCheckLockInterval", NULL, NULL,
- 			    (BYTE *) &dwValue, &dummyLen);
-     if (code == ERROR_SUCCESS)
- 	cm_daemonCheckLockInterval = dwValue;
-     afsi_log("daemonCheckLockInterval is %d", cm_daemonCheckLockInterval);
- 
-     dummyLen = sizeof(DWORD);
-     code = RegQueryValueEx(parmKey, "daemonCheckTokenInterval", NULL, NULL,
- 			    (BYTE *) &dwValue, &dummyLen);
-     if (code == ERROR_SUCCESS)
- 	cm_daemonTokenCheckInterval = dwValue;
-     afsi_log("daemonCheckTokenInterval is %d", cm_daemonTokenCheckInterval);
- 
-     dummyLen = sizeof(DWORD);
      code = RegQueryValueEx(parmKey, "CallBackPort", NULL, NULL,
                             (BYTE *) &dwValue, &dummyLen);
      if (code == ERROR_SUCCESS) {
--- 997,1002 ----
***************
*** 1245,1251 ****
          osi_Log0(afsd_logp, "Loading Root Volume from cell");
  	do {
  	    code = cm_GetVolumeByName(cm_data.rootCellp, cm_rootVolumeName, cm_rootUserp,
! 				       &req, CM_FLAG_CREATE, &cm_data.rootVolumep);
  	    afsi_log("cm_GetVolumeByName code %x root vol %x", code,
  		      (code ? (cm_volume_t *)-1 : cm_data.rootVolumep));
  	} while (code && --attempts);
--- 1203,1209 ----
          osi_Log0(afsd_logp, "Loading Root Volume from cell");
  	do {
  	    code = cm_GetVolumeByName(cm_data.rootCellp, cm_rootVolumeName, cm_rootUserp,
! 				       &req, CM_GETVOL_FLAG_CREATE, &cm_data.rootVolumep);
  	    afsi_log("cm_GetVolumeByName code %x root vol %x", code,
  		      (code ? (cm_volume_t *)-1 : cm_data.rootVolumep));
  	} while (code && --attempts);
Index: openafs/src/WINNT/afsd/afsd_service.c
diff -c openafs/src/WINNT/afsd/afsd_service.c:1.52.4.9 openafs/src/WINNT/afsd/afsd_service.c:1.52.4.13
*** openafs/src/WINNT/afsd/afsd_service.c:1.52.4.9	Mon Dec 11 23:01:26 2006
--- openafs/src/WINNT/afsd/afsd_service.c	Fri Jul  6 19:22:03 2007
***************
*** 76,81 ****
--- 76,83 ----
      buf_ForceTrace(TRUE);
  
      afsi_log("--- begin dump ---");
+     cm_DumpCells(afsi_file, "a", 0);
+     cm_DumpVolumes(afsi_file, "a", 0);
      cm_DumpSCache(afsi_file, "a", 0);
  #ifdef keisa
      cm_dnlcDump(afsi_file, "a");
***************
*** 85,92 ****
      afsi_log("--- end   dump ---");
      
  #ifdef DEBUG
! 	if (IsDebuggerPresent())
! 		DebugBreak();	
  #endif
  
      SetEvent(WaitToTerminate);
--- 87,94 ----
      afsi_log("--- end   dump ---");
      
  #ifdef DEBUG
!     if (IsDebuggerPresent())
!         DebugBreak();	
  #endif
  
      SetEvent(WaitToTerminate);
***************
*** 309,324 ****
                  case PBT_APMQUERYSUSPEND:       
                      afsi_log("SERVICE_CONTROL_APMQUERYSUSPEND"); 
                      /* Write all dirty buffers back to server */
! 		    if ( !lana_OnlyLoopback() )
  			buf_CleanAndReset();
                      afsi_log("SERVICE_CONTROL_APMQUERYSUSPEND buf_CleanAndReset complete"); 
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMQUERYSTANDBY:                                                         
                      afsi_log("SERVICE_CONTROL_APMQUERYSTANDBY"); 
                      /* Write all dirty buffers back to server */
! 		    if ( !lana_OnlyLoopback() ) 
  			buf_CleanAndReset();
                      afsi_log("SERVICE_CONTROL_APMQUERYSTANDBY buf_CleanAndReset complete"); 
                      dwRet = NO_ERROR;                                                             
                      break;                                                                        
--- 311,330 ----
                  case PBT_APMQUERYSUSPEND:       
                      afsi_log("SERVICE_CONTROL_APMQUERYSUSPEND"); 
                      /* Write all dirty buffers back to server */
! 		    if ( !lana_OnlyLoopback() ) {
  			buf_CleanAndReset();
+                         cm_SuspendSCache();
+                     }
                      afsi_log("SERVICE_CONTROL_APMQUERYSUSPEND buf_CleanAndReset complete"); 
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMQUERYSTANDBY:                                                         
                      afsi_log("SERVICE_CONTROL_APMQUERYSTANDBY"); 
                      /* Write all dirty buffers back to server */
! 		    if ( !lana_OnlyLoopback() ) {
  			buf_CleanAndReset();
+                         cm_SuspendSCache();
+                     }
                      afsi_log("SERVICE_CONTROL_APMQUERYSTANDBY buf_CleanAndReset complete"); 
                      dwRet = NO_ERROR;                                                             
                      break;                                                                        
***************
*** 327,341 ****
                  case PBT_APMSUSPEND:                         
                      afsi_log("SERVICE_CONTROL_APMSUSPEND");
  		    powerStateSuspended = 1;
! 		    if (osVersion.dwMajorVersion >= 6)
  			smb_StopListeners();
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMSTANDBY:                  
                      afsi_log("SERVICE_CONTROL_APMSTANDBY"); 
  		    powerStateSuspended = 1;
! 		    if (osVersion.dwMajorVersion >= 6)
  			smb_StopListeners();
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMRESUMECRITICAL:             
--- 333,351 ----
                  case PBT_APMSUSPEND:                         
                      afsi_log("SERVICE_CONTROL_APMSUSPEND");
  		    powerStateSuspended = 1;
! 		    if (osVersion.dwMajorVersion >= 6) {
!                         cm_SuspendSCache();
  			smb_StopListeners();
+                     }
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMSTANDBY:                  
                      afsi_log("SERVICE_CONTROL_APMSTANDBY"); 
  		    powerStateSuspended = 1;
! 		    if (osVersion.dwMajorVersion >= 6) {
!                         cm_SuspendSCache();
  			smb_StopListeners();
+                     }
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMRESUMECRITICAL:             
***************
*** 1231,1236 ****
--- 1241,1249 ----
          }
      }
  
+     /* Perform Volume Status Notification Initialization */
+     cm_VolStatus_Initialization();
+ 
  #ifdef JUMP
      MainThreadId = GetCurrentThreadId();
      jmpret = setjmp(notifier_jmp);
***************
*** 1350,1355 ****
--- 1363,1371 ----
  	LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_SERVICE_RUNNING);
      }
  
+     /* Notify any volume status handlers that we have started */
+     cm_VolStatus_Service_Started();
+ 
      /* allow an exit to be called when started */
      hHookDll = LoadLibrary(AFSD_HOOK_DLL);
      if (hHookDll)
***************
*** 1459,1464 ****
--- 1475,1486 ----
          PowerNotificationThreadExit();
  #endif
  
+     /* Notify any Volume Status Handlers that we are stopped */
+     cm_VolStatus_Service_Stopped();
+ 
+     /* Cleanup any Volume Status Notification Handler */
+     cm_VolStatus_Finalize();
+ 
      /* allow an exit to be called after stopping the service */
      hHookDll = LoadLibrary(AFSD_HOOK_DLL);
      if (hHookDll)
Index: openafs/src/WINNT/afsd/cm.h
diff -c openafs/src/WINNT/afsd/cm.h:1.17.2.2 openafs/src/WINNT/afsd/cm.h:1.17.2.4
*** openafs/src/WINNT/afsd/cm.h:1.17.2.2	Mon Jan 15 14:52:19 2007
--- openafs/src/WINNT/afsd/cm.h	Thu Jul  5 15:22:15 2007
***************
*** 300,303 ****
--- 300,309 ----
  #define CM_ERROR_TOOFEWBUFS		(CM_ERROR_BASE+50)
  #define CM_ERROR_TOOMANYBUFS		(CM_ERROR_BASE+51)
  #define CM_ERROR_BAD_LEVEL	        (CM_ERROR_BASE+52)
+ #define CM_ERROR_NOT_A_DFSLINK          (CM_ERROR_BASE+53)
+ 
+ /* Used by cm_FollowMountPoint and cm_GetVolumeByName */
+ #define RWVOL	0
+ #define ROVOL	1
+ #define BACKVOL	2
  #endif /*  __CM_H_ENV__ */
Index: openafs/src/WINNT/afsd/cm_buf.c
diff -c openafs/src/WINNT/afsd/cm_buf.c:1.31.2.15 openafs/src/WINNT/afsd/cm_buf.c:1.31.2.16
*** openafs/src/WINNT/afsd/cm_buf.c:1.31.2.15	Sun Feb  4 22:41:41 2007
--- openafs/src/WINNT/afsd/cm_buf.c	Sun Jun 10 13:00:07 2007
***************
*** 316,322 ****
  	    cm_data.buf_hashSize = osi_PrimeLessThan((afs_uint32)(cm_data.buf_nbuffers/7 + 1));
   
              /* create hash table */
!             memset((void *)cm_data.buf_hashTablepp, 0, cm_data.buf_hashSize * sizeof(cm_buf_t *));
              
              /* another hash table */
              memset((void *)cm_data.buf_fileHashTablepp, 0, cm_data.buf_hashSize * sizeof(cm_buf_t *));
--- 316,322 ----
  	    cm_data.buf_hashSize = osi_PrimeLessThan((afs_uint32)(cm_data.buf_nbuffers/7 + 1));
   
              /* create hash table */
!             memset((void *)cm_data.buf_scacheHashTablepp, 0, cm_data.buf_hashSize * sizeof(cm_buf_t *));
              
              /* another hash table */
              memset((void *)cm_data.buf_fileHashTablepp, 0, cm_data.buf_hashSize * sizeof(cm_buf_t *));
***************
*** 552,558 ****
      cm_buf_t *bp;
  
      i = BUF_HASH(&scp->fid, offsetp);
!     for(bp = cm_data.buf_hashTablepp[i]; bp; bp=bp->hashp) {
          if (cm_FidCmp(&scp->fid, &bp->fid) == 0
               && offsetp->LowPart == bp->offset.LowPart
               && offsetp->HighPart == bp->offset.HighPart) {
--- 552,558 ----
      cm_buf_t *bp;
  
      i = BUF_HASH(&scp->fid, offsetp);
!     for(bp = cm_data.buf_scacheHashTablepp[i]; bp; bp=bp->hashp) {
          if (cm_FidCmp(&scp->fid, &bp->fid) == 0
               && offsetp->LowPart == bp->offset.LowPart
               && offsetp->HighPart == bp->offset.HighPart) {
***************
*** 691,697 ****
          /* Remove from hash */
  
          i = BUF_HASH(&bp->fid, &bp->offset);
!         lbpp = &(cm_data.buf_hashTablepp[i]);
          for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = *lbpp) {
              if (tbp == bp) break;
          }
--- 691,697 ----
          /* Remove from hash */
  
          i = BUF_HASH(&bp->fid, &bp->offset);
!         lbpp = &(cm_data.buf_scacheHashTablepp[i]);
          for(tbp = *lbpp; tbp; lbpp = &tbp->hashp, tbp = *lbpp) {
              if (tbp == bp) break;
          }
***************
*** 864,871 ****
  #endif
                  bp->offset = *offsetp;
                  i = BUF_HASH(&scp->fid, offsetp);
!                 bp->hashp = cm_data.buf_hashTablepp[i];
!                 cm_data.buf_hashTablepp[i] = bp;
                  i = BUF_FILEHASH(&scp->fid);
                  nextBp = cm_data.buf_fileHashTablepp[i];
                  bp->fileHashp = nextBp;
--- 864,871 ----
  #endif
                  bp->offset = *offsetp;
                  i = BUF_HASH(&scp->fid, offsetp);
!                 bp->hashp = cm_data.buf_scacheHashTablepp[i];
!                 cm_data.buf_scacheHashTablepp[i] = bp;
                  i = BUF_FILEHASH(&scp->fid);
                  nextBp = cm_data.buf_fileHashTablepp[i];
                  bp->fileHashp = nextBp;
***************
*** 1242,1248 ****
  
      lock_ObtainWrite(&buf_globalLock);
      for(i=0; i<cm_data.buf_hashSize; i++) {
!         for(bp = cm_data.buf_hashTablepp[i]; bp; bp = bp->hashp) {
              if ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
                  buf_HoldLocked(bp);
                  lock_ReleaseWrite(&buf_globalLock);
--- 1242,1248 ----
  
      lock_ObtainWrite(&buf_globalLock);
      for(i=0; i<cm_data.buf_hashSize; i++) {
!         for(bp = cm_data.buf_scacheHashTablepp[i]; bp; bp = bp->hashp) {
              if ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
                  buf_HoldLocked(bp);
                  lock_ReleaseWrite(&buf_globalLock);
***************
*** 1602,1608 ****
  }
  #endif /* TESTING */
  
! /* dump the contents of the buf_hashTablepp. */
  int cm_DumpBufHashTable(FILE *outputFile, char *cookie, int lock)
  {
      int zilch;
--- 1602,1608 ----
  }
  #endif /* TESTING */
  
! /* dump the contents of the buf_scacheHashTablepp. */
  int cm_DumpBufHashTable(FILE *outputFile, char *cookie, int lock)
  {
      int zilch;
***************
*** 1610,1616 ****
      char output[1024];
      afs_uint32 i;
    
!     if (cm_data.buf_hashTablepp == NULL)
          return -1;
  
      if (lock)
--- 1610,1616 ----
      char output[1024];
      afs_uint32 i;
    
!     if (cm_data.buf_scacheHashTablepp == NULL)
          return -1;
  
      if (lock)
***************
*** 1622,1628 ****
    
      for (i = 0; i < cm_data.buf_hashSize; i++)
      {
!         for (bp = cm_data.buf_hashTablepp[i]; bp; bp=bp->hashp) 
          {
  	    StringCbPrintfA(output, sizeof(output), 
  			    "%s bp=0x%08X, hash=%d, fid (cell=%d, volume=%d, "
--- 1622,1628 ----
    
      for (i = 0; i < cm_data.buf_hashSize; i++)
      {
!         for (bp = cm_data.buf_scacheHashTablepp[i]; bp; bp=bp->hashp) 
          {
  	    StringCbPrintfA(output, sizeof(output), 
  			    "%s bp=0x%08X, hash=%d, fid (cell=%d, volume=%d, "
Index: openafs/src/WINNT/afsd/cm_callback.c
diff -c openafs/src/WINNT/afsd/cm_callback.c:1.41.4.11 openafs/src/WINNT/afsd/cm_callback.c:1.41.4.17
*** openafs/src/WINNT/afsd/cm_callback.c:1.41.4.11	Wed Feb  7 12:35:16 2007
--- openafs/src/WINNT/afsd/cm_callback.c	Sat Jul  7 09:38:33 2007
***************
*** 165,171 ****
   *
   * The callp parameter is currently unused.
   */
! void cm_RevokeCallback(struct rx_call *callp, AFSFid *fidp)
  {
      cm_fid_t tfid;
      cm_scache_t *scp;
--- 165,171 ----
   *
   * The callp parameter is currently unused.
   */
! void cm_RevokeCallback(struct rx_call *callp, cm_cell_t * cellp, AFSFid *fidp)
  {
      cm_fid_t tfid;
      cm_scache_t *scp;
***************
*** 195,204 ****
      /* do all in the hash bucket, since we don't know how many we'll find with
       * varying cells.
       */
!     for (scp = cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
          if (scp->fid.volume == tfid.volume &&
               scp->fid.vnode == tfid.vnode &&
               scp->fid.unique == tfid.unique &&
               scp->cbExpires > 0 && 
               scp->cbServerp != NULL)
          {
--- 195,205 ----
      /* do all in the hash bucket, since we don't know how many we'll find with
       * varying cells.
       */
!     for (scp = cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
          if (scp->fid.volume == tfid.volume &&
               scp->fid.vnode == tfid.vnode &&
               scp->fid.unique == tfid.unique &&
+              (cellp == NULL || scp->fid.cell == cellp->cellID) &&
               scp->cbExpires > 0 && 
               scp->cbServerp != NULL)
          {
***************
*** 206,215 ****
--- 207,219 ----
              lock_ReleaseWrite(&cm_scacheLock);
              osi_Log4(afsd_logp, "RevokeCallback Discarding SCache scp 0x%p vol %u vn %u uniq %u", 
                       scp, scp->fid.volume, scp->fid.vnode, scp->fid.unique);
+ 
              lock_ObtainMutex(&scp->mx);
              cm_DiscardSCache(scp);
              lock_ReleaseMutex(&scp->mx);
+ 
              cm_CallbackNotifyChange(scp);
+             
              lock_ObtainWrite(&cm_scacheLock);
              cm_ReleaseSCacheNoLock(scp);
          }
***************
*** 225,231 ****
   *
   * Called with no locks held.
   */
! void cm_RevokeVolumeCallback(struct rx_call *callp, AFSFid *fidp)
  {
      long hash;
      cm_scache_t *scp;
--- 229,235 ----
   *
   * Called with no locks held.
   */
! void cm_RevokeVolumeCallback(struct rx_call *callp, cm_cell_t *cellp, AFSFid *fidp)
  {
      long hash;
      cm_scache_t *scp;
***************
*** 242,261 ****
      tfid.volume = fidp->Volume;
      cm_RecordRacingRevoke(&tfid, CM_RACINGFLAG_CANCELVOL);
  
- 
      lock_ObtainWrite(&cm_scacheLock);
!     for (hash = 0; hash < cm_data.hashTableSize; hash++) {
!         for(scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
              if (scp->fid.volume == fidp->Volume &&
                   scp->cbExpires > 0 &&
                   scp->cbServerp != NULL) {
                  cm_HoldSCacheNoLock(scp);
                  lock_ReleaseWrite(&cm_scacheLock);
                  lock_ObtainMutex(&scp->mx);
                  osi_Log4(afsd_logp, "RevokeVolumeCallback Discarding SCache scp 0x%p vol %u vn %u uniq %u", 
                            scp, scp->fid.volume, scp->fid.vnode, scp->fid.unique);
                  cm_DiscardSCache(scp);
                  lock_ReleaseMutex(&scp->mx);
                  cm_CallbackNotifyChange(scp);
                  lock_ObtainWrite(&cm_scacheLock);
                  cm_ReleaseSCacheNoLock(scp);
--- 246,267 ----
      tfid.volume = fidp->Volume;
      cm_RecordRacingRevoke(&tfid, CM_RACINGFLAG_CANCELVOL);
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (hash = 0; hash < cm_data.scacheHashTableSize; hash++) {
!         for(scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
              if (scp->fid.volume == fidp->Volume &&
+                 (cellp == NULL || scp->fid.cell == cellp->cellID) &&
                   scp->cbExpires > 0 &&
                   scp->cbServerp != NULL) {
                  cm_HoldSCacheNoLock(scp);
                  lock_ReleaseWrite(&cm_scacheLock);
+ 
                  lock_ObtainMutex(&scp->mx);
                  osi_Log4(afsd_logp, "RevokeVolumeCallback Discarding SCache scp 0x%p vol %u vn %u uniq %u", 
                            scp, scp->fid.volume, scp->fid.vnode, scp->fid.unique);
                  cm_DiscardSCache(scp);
                  lock_ReleaseMutex(&scp->mx);
+ 
                  cm_CallbackNotifyChange(scp);
                  lock_ObtainWrite(&cm_scacheLock);
                  cm_ReleaseSCacheNoLock(scp);
***************
*** 343,354 ****
--- 349,366 ----
      struct rx_peer *peerp;
      unsigned long host = 0;
      unsigned short port = 0;
+     cm_server_t *tsp = NULL;
+     cm_cell_t * cellp = NULL;
  
      MUTEX_ENTER(&callp->lock);
  
      if ((connp = rx_ConnectionOf(callp)) && (peerp = rx_PeerOf(connp))) {
          host = rx_HostOf(peerp);
          port = rx_PortOf(peerp);
+ 
+         tsp = cm_FindServerByIP(host, CM_SERVER_FILE);
+         if (tsp)
+             cellp = tsp->cellp;
      }
  
      osi_Log2(afsd_logp, "SRXAFSCB_CallBack from host 0x%x port %d",
***************
*** 361,369 ****
          if (tfidp->Volume == 0)
              continue;   /* means don't do anything */
          else if (tfidp->Vnode == 0)
!             cm_RevokeVolumeCallback(callp, tfidp);
          else
!             cm_RevokeCallback(callp, tfidp);
      }
  
      MUTEX_EXIT(&callp->lock);
--- 373,381 ----
          if (tfidp->Volume == 0)
              continue;   /* means don't do anything */
          else if (tfidp->Vnode == 0)
!             cm_RevokeVolumeCallback(callp, cellp, tfidp);
          else
!             cm_RevokeCallback(callp, cellp, tfidp);
      }
  
      MUTEX_EXIT(&callp->lock);
***************
*** 450,457 ****
  	 * are "rare," hopefully this won't be a problem.
  	 */
  	lock_ObtainWrite(&cm_scacheLock);
! 	for (hash = 0; hash < cm_data.hashTableSize; hash++) {
!             for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
                  cm_HoldSCacheNoLock(scp);
                  lock_ReleaseWrite(&cm_scacheLock);
                  lock_ObtainMutex(&scp->mx);
--- 462,469 ----
  	 * are "rare," hopefully this won't be a problem.
  	 */
  	lock_ObtainWrite(&cm_scacheLock);
! 	for (hash = 0; hash < cm_data.scacheHashTableSize; hash++) {
!             for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
                  cm_HoldSCacheNoLock(scp);
                  lock_ReleaseWrite(&cm_scacheLock);
                  lock_ObtainMutex(&scp->mx);
***************
*** 482,488 ****
  
  	    /* we're done with the server structure */
              cm_PutServer(tsp);
! 	}
      }
      MUTEX_EXIT(&callp->lock);
      return 0;
--- 494,500 ----
  
  	    /* we're done with the server structure */
              cm_PutServer(tsp);
! 	} 
      }
      MUTEX_EXIT(&callp->lock);
      return 0;
***************
*** 693,700 ****
               ntohl(host), ntohs(port));
  
      lock_ObtainRead(&cm_scacheLock);
!     for (i = 0; i < cm_data.hashTableSize; i++) {
!         for (scp = cm_data.hashTablep[i]; scp; scp = scp->nextp) {
              if (index == 0)
                  goto searchDone;
              index--;
--- 705,712 ----
               ntohl(host), ntohs(port));
  
      lock_ObtainRead(&cm_scacheLock);
!     for (i = 0; i < cm_data.scacheHashTableSize; i++) {
!         for (scp = cm_data.scacheHashTablep[i]; scp; scp = scp->nextp) {
              if (index == 0)
                  goto searchDone;
              index--;
***************
*** 799,806 ****
               ntohl(host), ntohs(port));
  
      lock_ObtainRead(&cm_scacheLock);
!     for (i = 0; i < cm_data.hashTableSize; i++) {
!         for (scp = cm_data.hashTablep[i]; scp; scp = scp->nextp) {
              if (index == 0)
                  goto searchDone;
              index--;
--- 811,818 ----
               ntohl(host), ntohs(port));
  
      lock_ObtainRead(&cm_scacheLock);
!     for (i = 0; i < cm_data.scacheHashTableSize; i++) {
!         for (scp = cm_data.scacheHashTablep[i]; scp; scp = scp->nextp) {
              if (index == 0)
                  goto searchDone;
              index--;
***************
*** 1522,1528 ****
      cm_racingRevokes_t *revp;		/* where we are */
      cm_racingRevokes_t *nrevp;		/* where we'll be next */
      int freeFlag;
!     cm_server_t * serverp = 0;
      int discardScp = 0;
  
      lock_ObtainWrite(&cm_callbackLock);
--- 1534,1540 ----
      cm_racingRevokes_t *revp;		/* where we are */
      cm_racingRevokes_t *nrevp;		/* where we'll be next */
      int freeFlag;
!     cm_server_t * serverp = NULL;
      int discardScp = 0;
  
      lock_ObtainWrite(&cm_callbackLock);
***************
*** 1603,1609 ****
          lock_ReleaseMutex(&scp->mx);
          cm_CallbackNotifyChange(scp);
          lock_ObtainMutex(&scp->mx);
!     }
  
      if ( serverp ) {
          lock_ObtainWrite(&cm_serverLock);
--- 1615,1621 ----
          lock_ReleaseMutex(&scp->mx);
          cm_CallbackNotifyChange(scp);
          lock_ObtainMutex(&scp->mx);
!     } 
  
      if ( serverp ) {
          lock_ObtainWrite(&cm_serverLock);
***************
*** 1697,1703 ****
          osi_Log4(afsd_logp, "CALL FetchStatus scp 0x%p vol %u vn %u uniq %u", 
                   scp, sfid.volume, sfid.vnode, sfid.unique);
          do {
!             code = cm_Conn(&sfid, userp, reqp, &connp);
              if (code) 
                  continue;
  
--- 1709,1715 ----
          osi_Log4(afsd_logp, "CALL FetchStatus scp 0x%p vol %u vn %u uniq %u", 
                   scp, sfid.volume, sfid.vnode, sfid.unique);
          do {
!             code = cm_ConnFromFID(&sfid, userp, reqp, &connp);
              if (code) 
                  continue;
  
***************
*** 1755,1762 ****
  
      now = osi_Time();
      lock_ObtainWrite(&cm_scacheLock);
!     for (i=0; i<cm_data.hashTableSize; i++) {
!         for (scp = cm_data.hashTablep[i]; scp; scp=scp->nextp) {
              cm_HoldSCacheNoLock(scp);
              if (scp->cbExpires > 0 && (scp->cbServerp == NULL || now > scp->cbExpires)) {
                  lock_ReleaseWrite(&cm_scacheLock);
--- 1767,1774 ----
  
      now = osi_Time();
      lock_ObtainWrite(&cm_scacheLock);
!     for (i=0; i<cm_data.scacheHashTableSize; i++) {
!         for (scp = cm_data.scacheHashTablep[i]; scp; scp=scp->nextp) {
              cm_HoldSCacheNoLock(scp);
              if (scp->cbExpires > 0 && (scp->cbServerp == NULL || now > scp->cbExpires)) {
                  lock_ReleaseWrite(&cm_scacheLock);
***************
*** 1776,1778 ****
--- 1788,1827 ----
      osi_Log0(afsd_logp, "CheckCBExpiration Complete");
  }
  
+ 
+ void 
+ cm_GiveUpAllCallbacks(cm_server_t *tsp)
+ {
+     long code;
+     cm_conn_t *connp;
+     struct rx_connection * rxconnp;
+ 
+     if (tsp->type == CM_SERVER_FILE && !(tsp->flags & CM_SERVERFLAG_DOWN)) {
+         code = cm_ConnByServer(tsp, cm_rootUserp, &connp);
+         if (code == 0) {
+             rxconnp = cm_GetRxConn(connp);
+             rx_SetConnDeadTime(rxconnp, 10);
+ 	    code = RXAFS_GiveUpAllCallBacks(rxconnp);
+             rx_SetConnDeadTime(rxconnp, ConnDeadtimeout);
+ 	    rx_PutConnection(rxconnp);
+         }
+     }
+ }
+ 
+ void
+ cm_GiveUpAllCallbacksAllServers(void)
+ {
+     cm_server_t *tsp;
+ 
+     lock_ObtainWrite(&cm_serverLock);
+     for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
+         cm_GetServerNoLock(tsp);
+         lock_ReleaseWrite(&cm_serverLock);
+         cm_GiveUpAllCallbacks(tsp);
+         lock_ObtainWrite(&cm_serverLock);
+         cm_PutServerNoLock(tsp);
+     }
+     lock_ReleaseWrite(&cm_serverLock);
+ }
+ 
+ 
Index: openafs/src/WINNT/afsd/cm_callback.h
diff -c openafs/src/WINNT/afsd/cm_callback.h:1.7 openafs/src/WINNT/afsd/cm_callback.h:1.7.4.2
*** openafs/src/WINNT/afsd/cm_callback.h:1.7	Sat Nov  5 01:47:46 2005
--- openafs/src/WINNT/afsd/cm_callback.h	Thu Jun 28 00:50:15 2007
***************
*** 68,71 ****
--- 68,75 ----
  
  extern void cm_CallbackNotifyChange(cm_scache_t *scp);
  
+ extern void cm_GiveUpAllCallbacks(cm_server_t *tsp);
+ 
+ extern void cm_GiveUpAllCallbacksAllServers(void);
+ 
  #endif /*  _CM_CALLBACK_H_ENV__ */
Index: openafs/src/WINNT/afsd/cm_cell.c
diff -c openafs/src/WINNT/afsd/cm_cell.c:1.23.2.1 openafs/src/WINNT/afsd/cm_cell.c:1.23.2.6
*** openafs/src/WINNT/afsd/cm_cell.c:1.23.2.1	Sat Oct 21 16:47:48 2006
--- openafs/src/WINNT/afsd/cm_cell.c	Fri Jun 22 18:16:39 2007
***************
*** 46,52 ****
          tsp = cm_NewServer(addrp, CM_SERVER_VLDB, cellp);
  
      /* Insert the vlserver into a sorted list, sorted by server rank */
!     tsrp = cm_NewServerRef(tsp);
      cm_InsertServerList(&cellp->vlServersp, tsrp);
      /* drop the allocation reference */
      lock_ObtainWrite(&cm_serverLock);
--- 46,52 ----
          tsp = cm_NewServer(addrp, CM_SERVER_VLDB, cellp);
  
      /* Insert the vlserver into a sorted list, sorted by server rank */
!     tsrp = cm_NewServerRef(tsp, 0);
      cm_InsertServerList(&cellp->vlServersp, tsrp);
      /* drop the allocation reference */
      lock_ObtainWrite(&cm_serverLock);
***************
*** 79,85 ****
              ) {
          /* must empty cp->vlServersp */
          if (cp->vlServersp) {
!             cm_FreeServerList(&cp->vlServersp);
              cp->vlServersp = NULL;
          }
  
--- 79,85 ----
              ) {
          /* must empty cp->vlServersp */
          if (cp->vlServersp) {
!             cm_FreeServerList(&cp->vlServersp, CM_FREESERVERLIST_DELETE);
              cp->vlServersp = NULL;
          }
  
***************
*** 115,145 ****
  }
  
  /* load up a cell structure from the cell database, afsdcell.ini */
! cm_cell_t *cm_GetCell(char *namep, long flags)
  {
      return cm_GetCell_Gen(namep, NULL, flags);
  }
  
! cm_cell_t *cm_GetCell_Gen(char *namep, char *newnamep, long flags)
  {
!     cm_cell_t *cp;
      long code;
      char fullname[200]="";
  
      if (!strcmp(namep,SMB_IOCTL_FILENAME_NOSLASH))
          return NULL;
  
!     lock_ObtainWrite(&cm_cellLock);
!     for (cp = cm_data.allCellsp; cp; cp=cp->nextp) {
          if (stricmp(namep, cp->name) == 0) {
              strcpy(fullname, cp->name);
              break;
          }
      }   
  
      if (cp) {
!         cp = cm_UpdateCell(cp);
      } else if (flags & CM_FLAG_CREATE) {
          if ( cm_data.currentCells >= cm_data.maxCells )
              osi_panic("Exceeded Max Cells", __FILE__, __LINE__);
  
--- 115,166 ----
  }
  
  /* load up a cell structure from the cell database, afsdcell.ini */
! cm_cell_t *cm_GetCell(char *namep, afs_uint32 flags)
  {
      return cm_GetCell_Gen(namep, NULL, flags);
  }
  
! cm_cell_t *cm_GetCell_Gen(char *namep, char *newnamep, afs_uint32 flags)
  {
!     cm_cell_t *cp, *cp2;
      long code;
      char fullname[200]="";
+     int  hasWriteLock = 0;
+     afs_uint32 hash;
  
      if (!strcmp(namep,SMB_IOCTL_FILENAME_NOSLASH))
          return NULL;
  
!     hash = CM_CELL_NAME_HASH(namep);
! 
!     lock_ObtainRead(&cm_cellLock);
!     for (cp = cm_data.cellNameHashTablep[hash]; cp; cp=cp->nameNextp) {
          if (stricmp(namep, cp->name) == 0) {
              strcpy(fullname, cp->name);
              break;
          }
      }   
+     lock_ReleaseRead(&cm_cellLock);	
  
      if (cp) {
!         cm_UpdateCell(cp);
      } else if (flags & CM_FLAG_CREATE) {
+         lock_ObtainWrite(&cm_cellLock);
+         hasWriteLock = 1;
+ 
+         /* when we dropped the lock the cell could have been added
+          * to the list so check again while holding the write lock 
+          */
+         for (cp = cm_data.cellNameHashTablep[hash]; cp; cp=cp->nameNextp) {
+             if (stricmp(namep, cp->name) == 0) {
+                 strcpy(fullname, cp->name);
+                 break;
+             }
+         }   
+ 
+         if (cp)
+             goto done;
+ 
          if ( cm_data.currentCells >= cm_data.maxCells )
              osi_panic("Exceeded Max Cells", __FILE__, __LINE__);
  
***************
*** 181,186 ****
--- 202,226 ----
  	    cp->timeout = time(0) + 7200;	/* two hour timeout */
  	}
  
+         /* we have now been given the fullname of the cell.  It may
+          * be that we already have a cell with that name.  If so,
+          * we should use it instead of completing the allocation
+          * of a new cm_cell_t 
+          */
+         hash = CM_CELL_NAME_HASH(fullname);
+         for (cp2 = cm_data.cellNameHashTablep[hash]; cp2; cp2=cp2->nameNextp) {
+             if (stricmp(fullname, cp2->name) == 0) {
+                 break;
+             }
+         }   
+ 
+         if (cp2) {
+             cm_FreeServerList(&cp->vlServersp, CM_FREESERVERLIST_DELETE);
+             cp = cp2;
+             goto done;
+         }
+ 
+ 
          /* randomise among those vlservers having the same rank*/ 
          cm_RandomizeServer(&cp->vlServersp);
  
***************
*** 191,227 ****
          strncpy(cp->name, fullname, CELL_MAXNAMELEN);
          cp->name[CELL_MAXNAMELEN-1] = '\0';
  
-         /* thread on global list */
-         cp->nextp = cm_data.allCellsp;
-         cm_data.allCellsp = cp;
-            
          /* the cellID cannot be 0 */
          cp->cellID = ++cm_data.currentCells;
      }
  
    done:
      /* fullname is not valid if cp == NULL */
      if (cp && newnamep)
          strcpy(newnamep, fullname);
      
-     lock_ReleaseWrite(&cm_cellLock);
      return cp;
  }
  
  cm_cell_t *cm_FindCellByID(afs_int32 cellID)
  {
      cm_cell_t *cp;
  
!     lock_ObtainWrite(&cm_cellLock);
!     for (cp = cm_data.allCellsp; cp; cp=cp->nextp) {
          if (cellID == cp->cellID) 
              break;
      }
  
      if (cp)
!         cp = cm_UpdateCell(cp);
  
-     lock_ReleaseWrite(&cm_cellLock);	
      return cp;
  }
  
--- 231,282 ----
          strncpy(cp->name, fullname, CELL_MAXNAMELEN);
          cp->name[CELL_MAXNAMELEN-1] = '\0';
  
          /* the cellID cannot be 0 */
          cp->cellID = ++cm_data.currentCells;
+ 
+ 		/* append cell to global list */
+         if (cm_data.allCellsp == NULL) {
+             cm_data.allCellsp = cp;
+         } else {
+             for (cp2 = cm_data.allCellsp; cp2->allNextp; cp2=cp2->allNextp)
+                 ;
+             cp2->allNextp = cp;
+         }
+         cp->allNextp = NULL;
+ 
+         cm_AddCellToNameHashTable(cp);
+         cm_AddCellToIDHashTable(cp);           
      }
  
    done:
+     if (hasWriteLock)
+         lock_ReleaseWrite(&cm_cellLock);
+     
      /* fullname is not valid if cp == NULL */
      if (cp && newnamep)
          strcpy(newnamep, fullname);
      
      return cp;
  }
  
  cm_cell_t *cm_FindCellByID(afs_int32 cellID)
  {
      cm_cell_t *cp;
+     afs_uint32 hash;
+ 
+     lock_ObtainRead(&cm_cellLock);
+ 
+     hash = CM_CELL_ID_HASH(cellID);
  
!     for (cp = cm_data.cellIDHashTablep[hash]; cp; cp=cp->idNextp) {
          if (cellID == cp->cellID) 
              break;
      }
+     lock_ReleaseRead(&cm_cellLock);	
  
      if (cp)
!         cm_UpdateCell(cp);
  
      return cp;
  }
  
***************
*** 231,237 ****
      cm_cell_t * cellp;
      afs_uint32 count;
  
!     for (cellp = cm_data.allCellsp, count = 0; cellp; cellp=cellp->nextp, count++) {
          if ( cellp->magic != CM_CELL_MAGIC ) {
              afsi_log("cm_ValidateCell failure: cellp->magic != CM_CELL_MAGIC");
              fprintf(stderr, "cm_ValidateCell failure: cellp->magic != CM_CELL_MAGIC\n");
--- 286,292 ----
      cm_cell_t * cellp;
      afs_uint32 count;
  
!     for (cellp = cm_data.allCellsp, count = 0; cellp; cellp=cellp->allNextp, count++) {
          if ( cellp->magic != CM_CELL_MAGIC ) {
              afsi_log("cm_ValidateCell failure: cellp->magic != CM_CELL_MAGIC");
              fprintf(stderr, "cm_ValidateCell failure: cellp->magic != CM_CELL_MAGIC\n");
***************
*** 260,266 ****
  {
      cm_cell_t * cellp;
  
!     for (cellp = cm_data.allCellsp; cellp; cellp=cellp->nextp)
          lock_FinalizeMutex(&cellp->mx);
  
      return 0;
--- 315,321 ----
  {
      cm_cell_t * cellp;
  
!     for (cellp = cm_data.allCellsp; cellp; cellp=cellp->allNextp)
          lock_FinalizeMutex(&cellp->mx);
  
      return 0;
***************
*** 280,285 ****
--- 335,342 ----
              cm_data.allCellsp = NULL;
              cm_data.currentCells = 0;
              cm_data.maxCells = maxCells;
+             memset(cm_data.cellNameHashTablep, 0, sizeof(cm_cell_t *) * cm_data.cellHashTableSize);
+             memset(cm_data.cellIDHashTablep, 0, sizeof(cm_cell_t *) * cm_data.cellHashTableSize);
          
  #ifdef AFS_FREELANCE_CLIENT
              /* Generate a dummy entry for the Freelance cell whether or not 
***************
*** 296,302 ****
              strncpy(cellp->name, "Freelance.Local.Cell", CELL_MAXNAMELEN); /*safe*/
  
              /* thread on global list */
!             cellp->nextp = cm_data.allCellsp;
              cm_data.allCellsp = cellp;
                  
              cellp->cellID = AFS_FAKE_ROOT_CELL_ID;
--- 353,359 ----
              strncpy(cellp->name, "Freelance.Local.Cell", CELL_MAXNAMELEN); /*safe*/
  
              /* thread on global list */
!             cellp->allNextp = cm_data.allCellsp;
              cm_data.allCellsp = cellp;
                  
              cellp->cellID = AFS_FAKE_ROOT_CELL_ID;
***************
*** 304,310 ****
              cellp->flags = CM_CELLFLAG_FREELANCE;
  #endif  
          } else {
!             for (cellp = cm_data.allCellsp; cellp; cellp=cellp->nextp) {
                  lock_InitializeMutex(&cellp->mx, "cm_cell_t mutex");
                  cellp->vlServersp = NULL;
              }
--- 361,367 ----
              cellp->flags = CM_CELLFLAG_FREELANCE;
  #endif  
          } else {
!             for (cellp = cm_data.allCellsp; cellp; cellp=cellp->allNextp) {
                  lock_InitializeMutex(&cellp->mx, "cm_cell_t mutex");
                  cellp->vlServersp = NULL;
              }
***************
*** 331,333 ****
--- 388,494 ----
      }
  }       
  
+ int cm_DumpCells(FILE *outputFile, char *cookie, int lock)
+ {
+     cm_cell_t *cellp;
+     int zilch;
+     char output[1024];
+ 
+     if (lock)
+         lock_ObtainRead(&cm_cellLock);
+ 
+     sprintf(output, "%s - dumping cells - cm_data.currentCells=%d, cm_data.maxCells=%d\r\n", 
+             cookie, cm_data.currentCells, cm_data.maxCells);
+     WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
+ 
+     for (cellp = cm_data.allCellsp; cellp; cellp=cellp->allNextp) {
+         sprintf(output, "%s cellp=0x%p,name=%s ID=%d flags=0x%x\r\n", 
+                 cookie, cellp, cellp->name, cellp->cellID, cellp->flags);
+         WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
+     }
+ 
+     sprintf(output, "%s - Done dumping cells.\r\n", cookie);
+     WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
+ 
+     if (lock)
+         lock_ReleaseRead(&cm_cellLock);
+ 
+     return(0);
+ }
+ 
+ /* call with volume write-locked and mutex held */
+ void cm_AddCellToNameHashTable(cm_cell_t *cellp)
+ {
+     int i;
+     
+     if (cellp->flags & CM_CELLFLAG_IN_NAMEHASH)
+         return;
+ 
+     i = CM_CELL_NAME_HASH(cellp->name);
+ 
+     cellp->nameNextp = cm_data.cellNameHashTablep[i];
+     cm_data.cellNameHashTablep[i] = cellp;
+     cellp->flags |= CM_CELLFLAG_IN_NAMEHASH;
+ }
+ 
+ /* call with cell write-locked and mutex held */
+ void cm_RemoveCellFromNameHashTable(cm_cell_t *cellp)
+ {
+     cm_cell_t **lcellpp;
+     cm_cell_t *tcellp;
+     int i;
+ 	
+     if (cellp->flags & CM_CELLFLAG_IN_NAMEHASH) {
+ 	/* hash it out first */
+ 	i = CM_CELL_NAME_HASH(cellp->name);
+ 	for (lcellpp = &cm_data.cellNameHashTablep[i], tcellp = cm_data.cellNameHashTablep[i];
+ 	     tcellp;
+ 	     lcellpp = &tcellp->nameNextp, tcellp = tcellp->nameNextp) {
+ 	    if (tcellp == cellp) {
+ 		*lcellpp = cellp->nameNextp;
+ 		cellp->flags &= ~CM_CELLFLAG_IN_NAMEHASH;
+                 cellp->nameNextp = NULL;
+ 		break;
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* call with cell write-locked and mutex held */
+ void cm_AddCellToIDHashTable(cm_cell_t *cellp)
+ {
+     int i;
+     
+     if (cellp->flags & CM_CELLFLAG_IN_IDHASH)
+         return;
+ 
+     i = CM_CELL_ID_HASH(cellp->cellID);
+ 
+     cellp->idNextp = cm_data.cellIDHashTablep[i];
+     cm_data.cellIDHashTablep[i] = cellp;
+     cellp->flags |= CM_CELLFLAG_IN_IDHASH;
+ }
+ 
+ /* call with cell write-locked and mutex held */
+ void cm_RemoveCellFromIDHashTable(cm_cell_t *cellp)
+ {
+     cm_cell_t **lcellpp;
+     cm_cell_t *tcellp;
+     int i;
+ 	
+     if (cellp->flags & CM_CELLFLAG_IN_IDHASH) {
+ 	/* hash it out first */
+ 	i = CM_CELL_ID_HASH(cellp->cellID);
+ 	for (lcellpp = &cm_data.cellIDHashTablep[i], tcellp = cm_data.cellIDHashTablep[i];
+ 	     tcellp;
+ 	     lcellpp = &tcellp->idNextp, tcellp = tcellp->idNextp) {
+ 	    if (tcellp == cellp) {
+ 		*lcellpp = cellp->idNextp;
+ 		cellp->flags &= ~CM_CELLFLAG_IN_IDHASH;
+                 cellp->idNextp = NULL;
+ 		break;
+ 	    }
+ 	}
+     }
+ }
+ 
Index: openafs/src/WINNT/afsd/cm_cell.h
diff -c openafs/src/WINNT/afsd/cm_cell.h:1.7.6.1 openafs/src/WINNT/afsd/cm_cell.h:1.7.6.5
*** openafs/src/WINNT/afsd/cm_cell.h:1.7.6.1	Sat Oct 21 16:47:48 2006
--- openafs/src/WINNT/afsd/cm_cell.h	Wed Jun 27 20:34:26 2007
***************
*** 10,17 ****
  #ifndef __CELL_H_ENV_
  #define __CELL_H_ENV_ 1
  
- #include "cm_server.h"
- 
  #define CELL_MAXNAMELEN                 256
  
  #define CM_CELL_MAGIC    ('C' | 'E' <<8 | 'L'<<16 | 'L'<<24)
--- 10,15 ----
***************
*** 20,26 ****
  typedef struct cm_cell {        
      afs_uint32  magic;
      afs_int32 cellID;		        /* cell ID */
!     struct cm_cell *nextp;	        /* locked by cm_cellLock */
      char name[CELL_MAXNAMELEN];         /* cell name; never changes */
      cm_serverRef_t *vlServersp;         /* locked by cm_serverLock */
      osi_mutex_t mx;			/* mutex locking fields (flags) */
--- 18,26 ----
  typedef struct cm_cell {        
      afs_uint32  magic;
      afs_int32 cellID;		        /* cell ID */
!     struct cm_cell *allNextp;	        /* locked by cm_cellLock */
!     struct cm_cell *nameNextp;	        /* locked by cm_cellLock */
!     struct cm_cell *idNextp;	        /* locked by cm_cellLock */
      char name[CELL_MAXNAMELEN];         /* cell name; never changes */
      cm_serverRef_t *vlServersp;         /* locked by cm_serverLock */
      osi_mutex_t mx;			/* mutex locking fields (flags) */
***************
*** 29,38 ****
  } cm_cell_t;
  
  /* These are bit flag values */
! #define CM_CELLFLAG_SUID	     1	/* setuid flag; not yet used */
! #define CM_CELLFLAG_DNS              2  /* cell servers are from DNS */
! #define CM_CELLFLAG_VLSERVER_INVALID 4  /* cell servers are invalid */
! #define CM_CELLFLAG_FREELANCE        8  /* local freelance fake cell */
  
  extern void cm_InitCell(int newFile, long maxCells);
  
--- 29,44 ----
  } cm_cell_t;
  
  /* These are bit flag values */
! #define CM_CELLFLAG_SUID	       1	/* setuid flag; not yet used */
! #define CM_CELLFLAG_DNS                2  /* cell servers are from DNS */
! #define CM_CELLFLAG_VLSERVER_INVALID   4  /* cell servers are invalid */
! #define CM_CELLFLAG_FREELANCE          8  /* local freelance fake cell */
! #define CM_CELLFLAG_IN_NAMEHASH        0x10
! #define CM_CELLFLAG_IN_IDHASH          0x20
! 
! #define CM_CELL_NAME_HASH(name)  (SDBMHash(name) % cm_data.cellHashTableSize)
! 
! #define CM_CELL_ID_HASH(id)   ((unsigned long) id % cm_data.cellHashTableSize)
  
  extern void cm_InitCell(int newFile, long maxCells);
  
***************
*** 40,55 ****
  
  extern long cm_ValidateCell(void);
  
! extern cm_cell_t *cm_GetCell(char *namep, long flags);
  
! extern cm_cell_t *cm_GetCell_Gen(char *namep, char *newnamep, long flags);
  
  extern cm_cell_t *cm_FindCellByID(afs_int32 cellID);
  
! extern void cm_ChangeRankCellVLServer(cm_server_t       *tsp);
  
  extern osi_rwlock_t cm_cellLock;
  
  extern cm_cell_t *cm_allCellsp;
  
  #endif /* __CELL_H_ENV_ */
--- 46,67 ----
  
  extern long cm_ValidateCell(void);
  
! extern cm_cell_t *cm_GetCell(char *namep, afs_uint32 flags);
  
! extern cm_cell_t *cm_GetCell_Gen(char *namep, char *newnamep, afs_uint32 flags);
  
  extern cm_cell_t *cm_FindCellByID(afs_int32 cellID);
  
! extern void cm_ChangeRankCellVLServer(cm_server_t *tsp);
  
  extern osi_rwlock_t cm_cellLock;
  
  extern cm_cell_t *cm_allCellsp;
  
+ extern int cm_DumpCells(FILE *, char *, int);
+ 
+ extern void cm_AddCellToNameHashTable(cm_cell_t * cellp);
+ 
+ extern void cm_AddCellToIDHashTable(cm_cell_t * cellp);
+ 
  #endif /* __CELL_H_ENV_ */
Index: openafs/src/WINNT/afsd/cm_config.c
diff -c openafs/src/WINNT/afsd/cm_config.c:1.26 openafs/src/WINNT/afsd/cm_config.c:1.26.4.1
*** openafs/src/WINNT/afsd/cm_config.c:1.26	Mon Dec 19 07:42:23 2005
--- openafs/src/WINNT/afsd/cm_config.c	Wed Jun 27 20:34:26 2007
***************
*** 7,16 ****
   * directory or online at http://www.openafs.org/dl/license10.html
   */
  
- #include <afs/param.h>
- #include <afs/stds.h>
- #include <afs/cellconfig.h>
- 
  #ifndef DJGPP
  #include <windows.h>
  #include <winsock2.h>
--- 7,12 ----
***************
*** 25,35 ****
--- 21,38 ----
  #include "afsd.h"
  #include <WINNT\afssw.h>
  #include <WINNT\afsreg.h>
+ 
+ #include <afs/param.h>
+ #include <afs/stds.h>
+ #include <afs/cellconfig.h>
+ 
  #ifdef AFS_AFSDB_ENV
  #include "cm_dns.h"
  #include <afs/afsint.h>
  #endif
  
+ 
+ 
  /* TODO: these should be pulled in from dirpath.h */
  #if !defined(DJGPP) && !defined(AFS_WIN95_ENV)
  #define AFS_THISCELL "ThisCell"
Index: openafs/src/WINNT/afsd/cm_conn.c
diff -c openafs/src/WINNT/afsd/cm_conn.c:1.49.2.13 openafs/src/WINNT/afsd/cm_conn.c:1.49.2.19
*** openafs/src/WINNT/afsd/cm_conn.c:1.49.2.13	Sat Apr 14 14:49:36 2007
--- openafs/src/WINNT/afsd/cm_conn.c	Mon Jun 25 00:59:40 2007
***************
*** 119,132 ****
  
      if (!fidp) {
          *serversppp = NULL;
!         return 0;
      }
  
      cellp = cm_FindCellByID(fidp->cell);
!     if (!cellp) return CM_ERROR_NOSUCHCELL;
  
!     code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, &volp);
!     if (code) return code;
      
      *serversppp = cm_GetVolServers(volp, fidp->volume);
  
--- 119,134 ----
  
      if (!fidp) {
          *serversppp = NULL;
!         return CM_ERROR_INVAL;
      }
  
      cellp = cm_FindCellByID(fidp->cell);
!     if (!cellp) 
!         return CM_ERROR_NOSUCHCELL;
  
!     code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, CM_GETVOL_FLAG_CREATE, &volp);
!     if (code) 
!         return code;
      
      *serversppp = cm_GetVolServers(volp, fidp->volume);
  
***************
*** 139,150 ****
   * and if we're going to retry, determine whether failover is appropriate,
   * and whether timed backoff is appropriate.
   *
!  * If the error code is from cm_Conn() or friends, it will be a CM_ERROR code.
   * Otherwise it will be an RPC code.  This may be a UNIX code (e.g. EDQUOT), or
   * it may be an RX code, or it may be a special code (e.g. VNOVOL), or it may
   * be a security code (e.g. RXKADEXPIRED).
   *
!  * If the error code is from cm_Conn() or friends, connp will be NULL.
   *
   * For VLDB calls, fidp will be NULL.
   *
--- 141,152 ----
   * and if we're going to retry, determine whether failover is appropriate,
   * and whether timed backoff is appropriate.
   *
!  * If the error code is from cm_ConnFromFID() or friends, it will be a CM_ERROR code.
   * Otherwise it will be an RPC code.  This may be a UNIX code (e.g. EDQUOT), or
   * it may be an RX code, or it may be a special code (e.g. VNOVOL), or it may
   * be a security code (e.g. RXKADEXPIRED).
   *
!  * If the error code is from cm_ConnFromFID() or friends, connp will be NULL.
   *
   * For VLDB calls, fidp will be NULL.
   *
***************
*** 162,167 ****
--- 164,171 ----
      cm_serverRef_t *tsrp;
      cm_cell_t  *cellp = NULL;
      cm_ucell_t *ucellp;
+     cm_volume_t * volp = NULL;
+     cm_vol_state_t *statep = NULL;
      int retry = 0;
      int free_svr_list = 0;
      int dead_session;
***************
*** 210,227 ****
      /* leave 5 seconds margin for sleep */
      timeLeft = HardDeadtimeout - timeUsed;
  
      if (errorCode == CM_ERROR_TIMEDOUT) {
          if (timeLeft > 5 ) {
              thrd_Sleep(3000);
-             if (cellp == NULL && serverp)
-                 cellp = serverp->cellp;
-             if (cellp == NULL && serversp) {
-                 struct cm_serverRef * refp;
-                 for ( refp=serversp ; cellp == NULL && refp != NULL; refp=refp->next) {
-                     if ( refp->server )
-                         cellp = refp->server->cellp;
-                 }
-             }
              cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, cellp);
              retry = 1;
          }
--- 214,238 ----
      /* leave 5 seconds margin for sleep */
      timeLeft = HardDeadtimeout - timeUsed;
  
+     /* get a pointer to the cell */
+     if (errorCode) {
+         if (cellp == NULL && serverp)
+             cellp = serverp->cellp;
+         if (cellp == NULL && serversp) {
+             struct cm_serverRef * refp;
+             for ( refp=serversp ; cellp == NULL && refp != NULL; refp=refp->next) {
+                 if ( refp->server )
+                     cellp = refp->server->cellp;
+             }
+         } 
+         if (cellp == NULL && fidp) {
+             cellp = cm_FindCellByID(fidp->cell);
+         }
+     }
+ 
      if (errorCode == CM_ERROR_TIMEDOUT) {
          if (timeLeft > 5 ) {
              thrd_Sleep(3000);
              cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, cellp);
              retry = 1;
          }
***************
*** 253,327 ****
      }
  
      else if (errorCode == CM_ERROR_ALLOFFLINE) {
!         if (timeLeft > 7) {
!             osi_Log0(afsd_logp, "cm_Analyze passed CM_ERROR_ALLOFFLINE.");
              thrd_Sleep(5000);
-             
- 	    if (fidp) {	/* Not a VLDB call */
- 		if (!serversp) {
- 		    code = cm_GetServerList(fidp, userp, reqp, &serverspp);
- 		    if (code == 0) {
- 			serversp = *serverspp;
- 			free_svr_list = 1;
- 		    }
- 		}
- 		if (serversp) {
- 		    lock_ObtainWrite(&cm_serverLock);
- 		    for (tsrp = serversp; tsrp; tsrp=tsrp->next)
- 			tsrp->status = not_busy;
- 		    lock_ReleaseWrite(&cm_serverLock);
- 		    if (free_svr_list) {
- 			cm_FreeServerList(&serversp);
- 			*serverspp = serversp;
- 		    }
- 		    retry = 1;
- 		}
  
!                 cm_ForceUpdateVolume(fidp, userp, reqp);
! 	    } else { /* VLDB call */
! 		if (serversp) {
! 		    lock_ObtainWrite(&cm_serverLock);
! 		    for (tsrp = serversp; tsrp; tsrp=tsrp->next)
! 			tsrp->status = not_busy;
! 		    lock_ReleaseWrite(&cm_serverLock);
! 		    if (free_svr_list) {
! 			cm_FreeServerList(&serversp);
! 			*serverspp = serversp;
! 		    }
! 		}
! 	    }	
          }
      }
- 
-     /* if all servers are busy, mark them non-busy and start over */
      else if (errorCode == CM_ERROR_ALLBUSY) {
  	osi_Log0(afsd_logp, "cm_Analyze passed CM_ERROR_ALLBUSY.");
          if (timeLeft > 7) {
              thrd_Sleep(5000);
!             if (!serversp) {
!                 code = cm_GetServerList(fidp, userp, reqp, &serverspp);
                  if (code == 0) {
!                     serversp = *serverspp;
!                     free_svr_list = 1;
                  }
              }
-             lock_ObtainWrite(&cm_serverLock);
-             for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
-                 if (tsrp->status == busy)
-                     tsrp->status = not_busy;
-             }
-             lock_ReleaseWrite(&cm_serverLock);
-             if (free_svr_list) {
-                 cm_FreeServerList(&serversp);
-                 *serverspp = serversp;
-             }
-             retry = 1;
          }
      }
  
      /* special codes:  VBUSY and VRESTARTING */
      else if (errorCode == VBUSY || errorCode == VRESTARTING) {
!         if (!serversp) {
              code = cm_GetServerList(fidp, userp, reqp, &serverspp);
              if (code == 0) {
                  serversp = *serverspp;
--- 264,368 ----
      }
  
      else if (errorCode == CM_ERROR_ALLOFFLINE) {
!         osi_Log0(afsd_logp, "cm_Analyze passed CM_ERROR_ALLOFFLINE.");
!         /* Volume instances marked offline will be restored by the 
!          * background daemon thread as they become available 
!          */
!         if (timeLeft > 7 && fidp) {
!             cm_volume_t *volp;
!             cm_vol_state_t *statep;
! 
              thrd_Sleep(5000);
  
!             code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, 
!                                     CM_GETVOL_FLAG_NO_LRU_UPDATE, 
!                                     &volp);
!             if (code == 0) {
!                 if (fidp->volume == volp->rw.ID)
!                     statep = &volp->rw;
!                 else if (fidp->volume == volp->ro.ID)
!                     statep = &volp->ro;
!                 else if (fidp->volume == volp->bk.ID)
!                     statep = &volp->bk;
! 
!                 if (statep->state != vl_offline) {
!                     retry = 1;
!                 } else {
!                     if (cm_CheckOfflineVolume(volp, statep->ID))
!                         retry = 1;
!                 }
!             
!                 cm_PutVolume(volp);
!             }
          }
      }
      else if (errorCode == CM_ERROR_ALLBUSY) {
+         /* Volumes that are busy cannot be determined to be non-busy 
+          * without actually attempting to access them.
+          */
  	osi_Log0(afsd_logp, "cm_Analyze passed CM_ERROR_ALLBUSY.");
          if (timeLeft > 7) {
+ 
              thrd_Sleep(5000);
! 
!             if (fidp) { /* File Server query */
!                 code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, 
!                                         CM_GETVOL_FLAG_NO_LRU_UPDATE, 
!                                         &volp);
                  if (code == 0) {
!                     if (fidp->volume == volp->rw.ID)
!                         statep = &volp->rw;
!                     else if (fidp->volume == volp->ro.ID)
!                         statep = &volp->ro;
!                     else if (fidp->volume == volp->bk.ID)
!                         statep = &volp->bk;
! 
!                     if (statep->state != vl_offline && statep->state != vl_busy) {
!                         retry = 1;
!                     } else {
!                         if (!serversp) {
!                             code = cm_GetServerList(fidp, userp, reqp, &serverspp);
!                             if (code == 0) {
!                                 serversp = *serverspp;
!                                 free_svr_list = 1;
!                             }
!                         }
!                         lock_ObtainWrite(&cm_serverLock);
!                         for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
!                             if (tsrp->status == srv_busy) {
!                                 tsrp->status = srv_not_busy;
!                             }
!                         }
!                         lock_ReleaseWrite(&cm_serverLock);
!                         if (free_svr_list) {
!                             cm_FreeServerList(&serversp, 0);
!                             *serverspp = serversp;
!                         }
! 
!                         cm_UpdateVolumeStatus(volp, statep->ID);
!                         retry = 1;
!                     }
!             
!                     cm_PutVolume(volp);
!                 }
!             } else {    /* VL Server query */
!                 if (serversp) {
!                     lock_ObtainWrite(&cm_serverLock);
!                     for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
!                         if (tsrp->status == srv_busy) {
!                             tsrp->status = srv_not_busy;
!                         }
!                     }
!                     lock_ReleaseWrite(&cm_serverLock);
!                     retry = 1;
                  }
              }
          }
      }
  
      /* special codes:  VBUSY and VRESTARTING */
      else if (errorCode == VBUSY || errorCode == VRESTARTING) {
!         if (!serversp && fidp) {
              code = cm_GetServerList(fidp, userp, reqp, &serverspp);
              if (code == 0) {
                  serversp = *serverspp;
***************
*** 330,344 ****
          }
          lock_ObtainWrite(&cm_serverLock);
          for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
!             if (tsrp->server == serverp
!                  && tsrp->status == not_busy) {
!                 tsrp->status = busy;
                  break;
              }
          }
          lock_ReleaseWrite(&cm_serverLock);
          if (free_svr_list) {
!             cm_FreeServerList(&serversp);
              *serverspp = serversp;
          }
          retry = 1;
--- 371,403 ----
          }
          lock_ObtainWrite(&cm_serverLock);
          for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
!             if (tsrp->server == serverp && tsrp->status == srv_not_busy) {
!                 tsrp->status = srv_busy;
!                 if (fidp) { /* File Server query */
!                     code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, 
!                                              CM_GETVOL_FLAG_NO_LRU_UPDATE, 
!                                              &volp);
!                     if (code == 0) {
!                         if (fidp->volume == volp->rw.ID)
!                             statep = &volp->rw;
!                         else if (fidp->volume == volp->ro.ID)
!                             statep = &volp->ro;
!                         else if (fidp->volume == volp->bk.ID)
!                             statep = &volp->bk;
!                     }
!             
!                     cm_PutVolume(volp);
!                 }
                  break;
              }
          }
          lock_ReleaseWrite(&cm_serverLock);
+         
+         if (statep)
+             cm_UpdateVolumeStatus(volp, statep->ID);
+         
          if (free_svr_list) {
!             cm_FreeServerList(&serversp, 0);
              *serverspp = serversp;
          }
          retry = 1;
***************
*** 405,411 ****
  #endif
  
          /* Mark server offline for this volume */
!         if (!serversp) {
              code = cm_GetServerList(fidp, userp, reqp, &serverspp);
              if (code == 0) {
                  serversp = *serverspp;
--- 464,470 ----
  #endif
  
          /* Mark server offline for this volume */
!         if (!serversp && fidp) {
              code = cm_GetServerList(fidp, userp, reqp, &serverspp);
              if (code == 0) {
                  serversp = *serverspp;
***************
*** 413,423 ****
              }
          }
          for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
!             if (tsrp->server == serverp)
!                 tsrp->status = offline;
          }   
          if (free_svr_list) {
!             cm_FreeServerList(&serversp);
              *serverspp = serversp;
          }
          if ( timeLeft > 2 )
--- 472,490 ----
              }
          }
          for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
!             if (tsrp->server == serverp) {
!                 /* REDIRECT */
!                 if (errorCode == VNOVOL || errorCode == VMOVED) {
!                     tsrp->status = srv_deleted;
!                     if (fidp) {
!                         cm_ForceUpdateVolume(fidp, userp, reqp);
!                     }
!                 } else 
!                     tsrp->status = srv_offline;
!             }
          }   
          if (free_svr_list) {
!             cm_FreeServerList(&serversp, 0);
              *serverspp = serversp;
          }
          if ( timeLeft > 2 )
***************
*** 666,675 ****
          lock_ReleaseWrite(&cm_serverLock);
          if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
  	    allDown = 0;
!             if (tsrp->status == busy) {
  		allOffline = 0;
                  someBusy = 1;
!             } else if (tsrp->status == offline) {
  		allBusy = 0;
  		someOffline = 1;
              } else {
--- 733,744 ----
          lock_ReleaseWrite(&cm_serverLock);
          if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
  	    allDown = 0;
!             if (tsrp->status == srv_deleted) {
!                 /* skip this entry.  no longer valid. */;
!             } else if (tsrp->status == srv_busy) {
  		allOffline = 0;
                  someBusy = 1;
!             } else if (tsrp->status == srv_offline) {
  		allBusy = 0;
  		someOffline = 1;
              } else {
***************
*** 870,879 ****
          cm_GetServerNoLock(tsp);
          if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
  	    allDown = 0;
!             if (tsrp->status == busy) {
  		allOffline = 0;
                  someBusy = 1;
!             } else if (tsrp->status == offline) {
  		allBusy = 0;
  		someOffline = 1;
              } else {
--- 939,948 ----
          cm_GetServerNoLock(tsp);
          if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
  	    allDown = 0;
!             if (tsrp->status == srv_busy) {
  		allOffline = 0;
                  someBusy = 1;
!             } else if (tsrp->status == srv_offline) {
  		allBusy = 0;
  		someOffline = 1;
              } else {
***************
*** 884,890 ****
          cm_PutServerNoLock(tsp);
      }   
      lock_ReleaseWrite(&cm_serverLock);
!     cm_FreeServerList(serverspp);
  
      if (allDown)
  	return 0;
--- 953,959 ----
          cm_PutServerNoLock(tsp);
      }   
      lock_ReleaseWrite(&cm_serverLock);
!     cm_FreeServerList(serverspp, 0);
  
      if (allDown)
  	return 0;
***************
*** 896,919 ****
  	return 1;
  }
  
! long cm_Conn(struct cm_fid *fidp, struct cm_user *userp, cm_req_t *reqp,
!              cm_conn_t **connpp)
  {
      long code;
      cm_serverRef_t **serverspp;
  
      code = cm_GetServerList(fidp, userp, reqp, &serverspp);
      if (code) {
-         *connpp = NULL;
          return code;
      }
  
      code = cm_ConnByMServers(*serverspp, userp, reqp, connpp);
!     cm_FreeServerList(serverspp);
      return code;
  }
  
! extern struct rx_connection * 
  cm_GetRxConn(cm_conn_t *connp)
  {
      struct rx_connection * rxconn;
--- 965,1010 ----
  	return 1;
  }
  
! /* 
!  * The returned cm_conn_t ** object is released in the subsequent call
!  * to cm_Analyze().  
!  */
! long cm_ConnFromFID(struct cm_fid *fidp, struct cm_user *userp, cm_req_t *reqp,
!                     cm_conn_t **connpp)
  {
      long code;
      cm_serverRef_t **serverspp;
  
+     *connpp = NULL;
+ 
      code = cm_GetServerList(fidp, userp, reqp, &serverspp);
      if (code) {
          return code;
      }
  
      code = cm_ConnByMServers(*serverspp, userp, reqp, connpp);
!     cm_FreeServerList(serverspp, 0);
!     return code;
! }
! 
! 
! long cm_ConnFromVolume(struct cm_volume *volp, unsigned long volid, struct cm_user *userp, cm_req_t *reqp,
!                        cm_conn_t **connpp)
! {
!     long code;
!     cm_serverRef_t **serverspp;
! 
!     *connpp = NULL;
! 
!     serverspp = cm_GetVolServers(volp, volid);
! 
!     code = cm_ConnByMServers(*serverspp, userp, reqp, connpp);
!     cm_FreeServerList(serverspp, 0);
      return code;
  }
  
! 
! extern struct rx_connection *
  cm_GetRxConn(cm_conn_t *connp)
  {
      struct rx_connection * rxconn;
Index: openafs/src/WINNT/afsd/cm_conn.h
diff -c openafs/src/WINNT/afsd/cm_conn.h:1.13.4.7 openafs/src/WINNT/afsd/cm_conn.h:1.13.4.8
*** openafs/src/WINNT/afsd/cm_conn.h:1.13.4.7	Sat Mar 10 10:50:07 2007
--- openafs/src/WINNT/afsd/cm_conn.h	Sun Jun 10 13:00:07 2007
***************
*** 113,121 ****
  
  extern long cm_ConnByServer(struct cm_server *, struct cm_user *, cm_conn_t **);
  
! extern long cm_Conn(struct cm_fid *, struct cm_user *, struct cm_req *,
  	cm_conn_t **);
  
  extern void cm_PutConn(cm_conn_t *connp);
  
  extern void cm_GCConnections(cm_server_t *serverp);
--- 113,125 ----
  
  extern long cm_ConnByServer(struct cm_server *, struct cm_user *, cm_conn_t **);
  
! extern long cm_ConnFromFID(struct cm_fid *, struct cm_user *, struct cm_req *,
  	cm_conn_t **);
  
+ extern long cm_ConnFromVolume(struct cm_volume *volp, unsigned long volid, 
+                               struct cm_user *userp, cm_req_t *reqp,
+                               cm_conn_t **connpp);
+ 
  extern void cm_PutConn(cm_conn_t *connp);
  
  extern void cm_GCConnections(cm_server_t *serverp);
Index: openafs/src/WINNT/afsd/cm_daemon.c
diff -c openafs/src/WINNT/afsd/cm_daemon.c:1.16.4.11 openafs/src/WINNT/afsd/cm_daemon.c:1.16.4.16
*** openafs/src/WINNT/afsd/cm_daemon.c:1.16.4.11	Sat Mar 10 10:50:07 2007
--- openafs/src/WINNT/afsd/cm_daemon.c	Thu Jul  5 15:22:15 2007
***************
*** 36,41 ****
--- 36,42 ----
  long cm_daemonCheckCBInterval    = 60;
  long cm_daemonCheckLockInterval  = 60;
  long cm_daemonTokenCheckInterval = 180;
+ long cm_daemonCheckOfflineVolInterval = 600;
  
  osi_rwlock_t cm_daemonLock;
  
***************
*** 58,68 ****
      while (daemon_ShutdownFlag == 0) {
  	DWORD Result = NotifyAddrChange(NULL,NULL);
  	if (Result == NO_ERROR && daemon_ShutdownFlag == 0) {
- 	    osi_Log0(afsd_logp, "cm_IpAddrDaemon CheckDownServers");
  	    Sleep(2500);
  	    cm_ForceNewConnectionsAllServers();
!             cm_CheckServers(CM_FLAG_CHECKUPSERVERS | CM_FLAG_CHECKDOWNSERVERS, NULL);
  	    smb_CheckVCs();
  	}	
      }
  }
--- 59,71 ----
      while (daemon_ShutdownFlag == 0) {
  	DWORD Result = NotifyAddrChange(NULL,NULL);
  	if (Result == NO_ERROR && daemon_ShutdownFlag == 0) {
  	    Sleep(2500);
+ 	    osi_Log0(afsd_logp, "cm_IpAddrDaemon CheckDownServers");
+             cm_CheckServers(CM_FLAG_CHECKVLDBSERVERS | CM_FLAG_CHECKUPSERVERS | CM_FLAG_CHECKDOWNSERVERS, NULL);
  	    cm_ForceNewConnectionsAllServers();
!             cm_CheckServers(CM_FLAG_CHECKFILESERVERS | CM_FLAG_CHECKUPSERVERS | CM_FLAG_CHECKDOWNSERVERS, NULL);
  	    smb_CheckVCs();
+             cm_VolStatus_Network_Addr_Change();
  	}	
      }
  }
***************
*** 244,283 ****
  	return;
  
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "DownServerCheckInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckDownInterval = dummy;
!     
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "UpServerCheckInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckUpInterval = dummy;
!     
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "VolumeCheckInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckVolInterval = dummy;
!     
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "CallbackCheckInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckCBInterval = dummy;
!     
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "LockCheckInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckLockInterval = dummy;
!     
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "TokenCheckInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonTokenCheckInterval = dummy;
      
      RegCloseKey(parmKey);
  }
--- 247,299 ----
  	return;
  
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "daemonCheckDownInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckDownInterval = dummy;
!     afsi_log("daemonCheckDownInterval is %d", cm_daemonCheckDownInterval);
! 
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "daemonCheckUpInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckUpInterval = dummy;
!     afsi_log("daemonCheckUpInterval is %d", cm_daemonCheckUpInterval);
! 
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "daemonCheckVolInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckVolInterval = dummy;
!     afsi_log("daemonCheckVolInterval is %d", cm_daemonCheckVolInterval);
! 
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "daemonCheckCBInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckCBInterval = dummy;
!     afsi_log("daemonCheckCBInterval is %d", cm_daemonCheckCBInterval);
! 
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "daemonCheckLockInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonCheckLockInterval = dummy;
!     afsi_log("daemonCheckLockInterval is %d", cm_daemonCheckLockInterval);
! 
      dummyLen = sizeof(DWORD);
!     code = RegQueryValueEx(parmKey, "daemonCheckTokenInterval", NULL, NULL,
  			    (BYTE *) &dummy, &dummyLen);
      if (code == ERROR_SUCCESS)
  	cm_daemonTokenCheckInterval = dummy;
+     afsi_log("daemonCheckTokenInterval is %d", cm_daemonTokenCheckInterval);
+ 
+     dummyLen = sizeof(DWORD);
+     code = RegQueryValueEx(parmKey, "daemonCheckOfflineVolInterval", NULL, NULL,
+ 			    (BYTE *) &dummy, &dummyLen);
+     if (code == ERROR_SUCCESS)
+ 	cm_daemonCheckOfflineVolInterval = dummy;
+     afsi_log("daemonCheckOfflineVolInterval is %d", cm_daemonCheckOfflineVolInterval);
      
      RegCloseKey(parmKey);
  }
***************
*** 292,297 ****
--- 308,314 ----
      time_t lastDownServerCheck;
      time_t lastUpServerCheck;
      time_t lastTokenCacheCheck;
+     time_t lastBusyVolCheck;
      char thostName[200];
      unsigned long code;
      struct hostent *thp;
***************
*** 331,336 ****
--- 348,354 ----
      lastDownServerCheck = now - cm_daemonCheckDownInterval/2 + (rand() % cm_daemonCheckDownInterval);
      lastUpServerCheck = now - cm_daemonCheckUpInterval/2 + (rand() % cm_daemonCheckUpInterval);
      lastTokenCacheCheck = now - cm_daemonTokenCheckInterval/2 + (rand() % cm_daemonTokenCheckInterval);
+     lastBusyVolCheck = now - cm_daemonCheckOfflineVolInterval/2 * (rand() % cm_daemonCheckOfflineVolInterval);
  
      while (daemon_ShutdownFlag == 0) {
  	/* check to see if the listener threads halted due to network 
***************
*** 384,389 ****
--- 402,413 ----
  	    now = osi_Time();
          }
  
+         if (now > lastBusyVolCheck + cm_daemonCheckOfflineVolInterval) {
+             lastVolCheck = now;
+             cm_CheckOfflineVolumes();
+ 	    now = osi_Time();
+         }
+ 
          if (now > lastCBExpirationCheck + cm_daemonCheckCBInterval) {
              lastCBExpirationCheck = now;
              cm_CheckCBExpiration();
Index: openafs/src/WINNT/afsd/cm_dcache.c
diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.14 openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.15
*** openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.14	Wed Feb  7 12:35:16 2007
--- openafs/src/WINNT/afsd/cm_dcache.c	Sun Jun 10 13:00:07 2007
***************
*** 149,155 ****
  
      /* now we're ready to do the store operation */
      do {
!         code = cm_Conn(&scp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 149,155 ----
  
      /* now we're ready to do the store operation */
      do {
!         code = cm_ConnFromFID(&scp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 356,362 ****
  
      /* now we're ready to do the store operation */
      do {
!         code = cm_Conn(&scp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 356,362 ----
  
      /* now we're ready to do the store operation */
      do {
!         code = cm_ConnFromFID(&scp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 1429,1435 ****
  
  	/* now make the call */
      do {
!         code = cm_Conn(&scp->fid, up, reqp, &connp);
          if (code) 
              continue;
  
--- 1429,1435 ----
  
  	/* now make the call */
      do {
!         code = cm_ConnFromFID(&scp->fid, up, reqp, &connp);
          if (code) 
              continue;
  
Index: openafs/src/WINNT/afsd/cm_dns.c
diff -c openafs/src/WINNT/afsd/cm_dns.c:1.12 openafs/src/WINNT/afsd/cm_dns.c:1.12.4.1
*** openafs/src/WINNT/afsd/cm_dns.c:1.12	Sat Nov  5 01:47:46 2005
--- openafs/src/WINNT/afsd/cm_dns.c	Mon Jul  2 20:35:13 2007
***************
*** 707,712 ****
--- 707,717 ----
      struct sockaddr_in vlSockAddr;
      char query[1024];
  
+ #ifdef AFS_FREELANCE_CLIENT
+     if ( stricmp(cellName, "Freelance.Local.Root") == 0 )
+         return -1;
+ #endif /* AFS_FREELANCE_CLIENT */
+ 
      *numServers = 0; 
      *ttl = 0;
  
Index: openafs/src/WINNT/afsd/cm_freelance.c
diff -c openafs/src/WINNT/afsd/cm_freelance.c:1.33.2.1 openafs/src/WINNT/afsd/cm_freelance.c:1.33.2.2
*** openafs/src/WINNT/afsd/cm_freelance.c:1.33.2.1	Sat Jun 24 16:41:54 2006
--- openafs/src/WINNT/afsd/cm_freelance.c	Sun Jun 10 13:00:07 2007
***************
*** 157,163 ****
          cm_data.fakeDirVersion = cm_data.rootSCachep->dataVersion;                          
                                                                                        
      // yj: first we make a call to cm_initLocalMountPoints
!     // to read all the local mount points from an ini file
      cm_InitLocalMountPoints();
  
      // then we make a call to InitFakeRootDir to create
--- 157,163 ----
          cm_data.fakeDirVersion = cm_data.rootSCachep->dataVersion;                          
                                                                                        
      // yj: first we make a call to cm_initLocalMountPoints
!     // to read all the local mount points from the registry
      cm_InitLocalMountPoints();
  
      // then we make a call to InitFakeRootDir to create
***************
*** 358,364 ****
  int cm_FakeRootFid(cm_fid_t *fidp)
  {
      fidp->cell = AFS_FAKE_ROOT_CELL_ID;            /* root cell */
!     fidp->volume = AFS_FAKE_ROOT_VOL_ID;   /* root.afs ? */
      fidp->vnode = 0x1;
      fidp->unique = 0x1;
      return 0;
--- 358,364 ----
  int cm_FakeRootFid(cm_fid_t *fidp)
  {
      fidp->cell = AFS_FAKE_ROOT_CELL_ID;            /* root cell */
!     fidp->volume = AFS_FAKE_ROOT_VOL_ID;           /* root.afs ? */
      fidp->vnode = 0x1;
      fidp->unique = 0x1;
      return 0;
***************
*** 404,410 ****
      lock_ObtainMutex(&cm_Freelance_Lock);  /* always scache then freelance lock */
      for (i=0; i<cm_noLocalMountPoints; i++) {
          hash = CM_SCACHE_HASH(&aFid);
!         for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
              if (scp->fid.volume == aFid.volume &&
                   scp->fid.vnode == aFid.vnode &&
                   scp->fid.unique == aFid.unique 
--- 404,410 ----
      lock_ObtainMutex(&cm_Freelance_Lock);  /* always scache then freelance lock */
      for (i=0; i<cm_noLocalMountPoints; i++) {
          hash = CM_SCACHE_HASH(&aFid);
!         for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
              if (scp->fid.volume == aFid.volume &&
                   scp->fid.vnode == aFid.vnode &&
                   scp->fid.unique == aFid.unique 
***************
*** 421,427 ****
                  cm_ReleaseSCacheNoLock(scp);
  
                  // take the scp out of the hash
!                 for (lscpp = &cm_data.hashTablep[hash], tscp = cm_data.hashTablep[hash]; 
                       tscp; 
                       lscpp = &tscp->nextp, tscp = tscp->nextp) {
                      if (tscp == scp) {
--- 421,427 ----
                  cm_ReleaseSCacheNoLock(scp);
  
                  // take the scp out of the hash
!                 for (lscpp = &cm_data.scacheHashTablep[hash], tscp = cm_data.scacheHashTablep[hash]; 
                       tscp; 
                       lscpp = &tscp->nextp, tscp = tscp->nextp) {
                      if (tscp == scp) {
***************
*** 467,473 ****
  }
  
  
! // yj: open up the ini file and read all the local mount 
  // points that are stored there. Part of the initialization
  // process for the freelance client.
  /* to be called while holding freelance lock unless during init. */
--- 467,473 ----
  }
  
  
! // yj: open up the registry and read all the local mount 
  // points that are stored there. Part of the initialization
  // process for the freelance client.
  /* to be called while holding freelance lock unless during init. */
***************
*** 518,524 ****
              if (code == 0) {
                  cm_FreelanceAddMount(&rootCellName[1], &rootCellName[1], "root.cell.", 0, NULL);
                  cm_FreelanceAddMount(rootCellName, &rootCellName[1], "root.cell.", 1, NULL);
!                 dwMountPoints = 2;
              }
          }
  
--- 518,525 ----
              if (code == 0) {
                  cm_FreelanceAddMount(&rootCellName[1], &rootCellName[1], "root.cell.", 0, NULL);
                  cm_FreelanceAddMount(rootCellName, &rootCellName[1], "root.cell.", 1, NULL);
!                 cm_FreelanceAddMount(".root", &rootCellName[1], "root.afs.", 1, NULL);
!                 dwMountPoints = 3;
              }
          }
  
***************
*** 719,724 ****
--- 720,726 ----
          if (code == 0) {
              cm_FreelanceAddMount(&rootCellName[1], &rootCellName[1], "root.cell.", 0, NULL);
              cm_FreelanceAddMount(rootCellName, &rootCellName[1], "root.cell.", 1, NULL);
+             cm_FreelanceAddMount(".root", &rootCellName[1], "root.afs.", 1, NULL);
          }
          return 0;
      }
Index: openafs/src/WINNT/afsd/cm_ioctl.c
diff -c openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.12 openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.18
*** openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.12	Sat Apr 14 14:49:36 2007
--- openafs/src/WINNT/afsd/cm_ioctl.c	Sat Jun 30 00:44:23 2007
***************
*** 32,38 ****
  #include <WINNT\afsreg.h>
  
  #include "smb.h"
- #include "cm_server.h"
  
  #ifndef DJGPP
  #include <rx/rxkad.h>
--- 32,37 ----
***************
*** 137,144 ****
  #endif
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (i=0; i<cm_data.hashTableSize; i++) {
!         for (scp = cm_data.hashTablep[i]; scp; scp = scp->nextp) {
              if (scp->fid.volume == volume && scp->fid.cell == cell) {
                  cm_HoldSCacheNoLock(scp);
                  lock_ReleaseWrite(&cm_scacheLock);
--- 136,143 ----
  #endif
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (i=0; i<cm_data.scacheHashTableSize; i++) {
!         for (scp = cm_data.scacheHashTablep[i]; scp; scp = scp->nextp) {
              if (scp->fid.volume == volume && scp->fid.cell == cell) {
                  cm_HoldSCacheNoLock(scp);
                  lock_ReleaseWrite(&cm_scacheLock);
***************
*** 165,172 ****
      int hash;
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (hash=0; hash < cm_data.hashTableSize; hash++) {
!         for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
              cm_HoldSCacheNoLock(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              lock_ObtainMutex(&scp->mx);
--- 164,171 ----
      int hash;
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (hash=0; hash < cm_data.scacheHashTableSize; hash++) {
!         for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
              cm_HoldSCacheNoLock(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              lock_ObtainMutex(&scp->mx);
***************
*** 238,244 ****
         and it returns the correct (full) path.  therefore, there is
         no drive letter, and the path is absolute. */
      code = cm_NameI(cm_data.rootSCachep, relativePath,
!                      CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                       userp, "", reqp, scpp);
  
      if (code) {
--- 237,243 ----
         and it returns the correct (full) path.  therefore, there is
         no drive letter, and the path is absolute. */
      code = cm_NameI(cm_data.rootSCachep, relativePath,
!                      CM_FLAG_CASEFOLD,
                       userp, "", reqp, scpp);
  
      if (code) {
***************
*** 332,338 ****
              return code;
  	}
          
!         code = cm_NameI(substRootp, relativePath, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                           userp, NULL, reqp, scpp);
          if (code) {
  	    cm_ReleaseSCache(substRootp);
--- 331,338 ----
              return code;
  	}
          
!         code = cm_NameI(substRootp, relativePath, 
!                          CM_FLAG_CASEFOLD,
                           userp, NULL, reqp, scpp);
          if (code) {
  	    cm_ReleaseSCache(substRootp);
***************
*** 543,549 ****
      do {
          acl.AFSOpaque_val = ioctlp->outDatap;
          acl.AFSOpaque_len = 0;
!         code = cm_Conn(&scp->fid, userp, &req, &connp);
          if (code) continue;
  
          callp = cm_GetRxConn(connp);
--- 543,549 ----
      do {
          acl.AFSOpaque_val = ioctlp->outDatap;
          acl.AFSOpaque_len = 0;
!         code = cm_ConnFromFID(&scp->fid, userp, &req, &connp);
          if (code) continue;
  
          callp = cm_GetRxConn(connp);
***************
*** 625,631 ****
      do {
          acl.AFSOpaque_val = ioctlp->inDatap;
          acl.AFSOpaque_len = (u_int)strlen(ioctlp->inDatap)+1;
!         code = cm_Conn(&scp->fid, userp, &req, &connp);
          if (code) continue;
  
          callp = cm_GetRxConn(connp);
--- 625,631 ----
      do {
          acl.AFSOpaque_val = ioctlp->inDatap;
          acl.AFSOpaque_len = (u_int)strlen(ioctlp->inDatap)+1;
!         code = cm_ConnFromFID(&scp->fid, userp, &req, &connp);
          if (code) continue;
  
          callp = cm_GetRxConn(connp);
***************
*** 657,664 ****
      cm_InitReq(&req);
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (i=0; i<cm_data.hashTableSize; i++) {
!         for (scp = cm_data.hashTablep[i]; scp; scp = scp->nextp) {
  	    cm_HoldSCacheNoLock(scp);
  	    lock_ReleaseWrite(&cm_scacheLock);
  
--- 657,664 ----
      cm_InitReq(&req);
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (i=0; i<cm_data.scacheHashTableSize; i++) {
!         for (scp = cm_data.scacheHashTablep[i]; scp; scp = scp->nextp) {
  	    cm_HoldSCacheNoLock(scp);
  	    lock_ReleaseWrite(&cm_scacheLock);
  
***************
*** 741,747 ****
          return CM_ERROR_READONLY;
      }
  
!     code = cm_GetVolumeByID(cellp, scp->fid.volume, userp, &req, &tvp);
      if (code) {
          cm_ReleaseSCache(scp);
          return code;
--- 741,748 ----
          return CM_ERROR_READONLY;
      }
  
!     code = cm_GetVolumeByID(cellp, scp->fid.volume, userp, &req, 
!                             CM_GETVOL_FLAG_CREATE, &tvp);
      if (code) {
          cm_ReleaseSCache(scp);
          return code;
***************
*** 768,774 ****
      }
  
      do {
!         code = cm_Conn(&scp->fid, userp, &req, &tcp);
          if (code) continue;
  
          callp = cm_GetRxConn(tcp);
--- 769,775 ----
      }
  
      do {
!         code = cm_ConnFromFID(&scp->fid, userp, &req, &tcp);
          if (code) continue;
  
          callp = cm_GetRxConn(tcp);
***************
*** 811,817 ****
      cm_scache_t *scp;
      char offLineMsg[256];
      char motd[256];
!     cm_conn_t *tcp;
      register long code;
      AFSFetchVolumeStatus volStat;
      register char *cp;
--- 812,818 ----
      cm_scache_t *scp;
      char offLineMsg[256];
      char motd[256];
!     cm_conn_t *connp;
      register long code;
      AFSFetchVolumeStatus volStat;
      register char *cp;
***************
*** 830,844 ****
      OfflineMsg = offLineMsg;
      MOTD = motd;
      do {
!         code = cm_Conn(&scp->fid, userp, &req, &tcp);
          if (code) continue;
  
!         callp = cm_GetRxConn(tcp);
          code = RXAFS_GetVolumeStatus(callp, scp->fid.volume,
                                        &volStat, &Name, &OfflineMsg, &MOTD);
          rx_PutConnection(callp);
  
!     } while (cm_Analyze(tcp, userp, &req, &scp->fid, NULL, NULL, NULL, code));
      code = cm_MapRPCError(code, &req);
  
      cm_ReleaseSCache(scp);
--- 831,845 ----
      OfflineMsg = offLineMsg;
      MOTD = motd;
      do {
!         code = cm_ConnFromFID(&scp->fid, userp, &req, &connp);
          if (code) continue;
  
!         callp = cm_GetRxConn(connp);
          code = RXAFS_GetVolumeStatus(callp, scp->fid.volume,
                                        &volStat, &Name, &OfflineMsg, &MOTD);
          rx_PutConnection(callp);
  
!     } while (cm_Analyze(connp, userp, &req, &scp->fid, NULL, NULL, NULL, code));
      code = cm_MapRPCError(code, &req);
  
      cm_ReleaseSCache(scp);
***************
*** 945,951 ****
      if (!cellp)
  	return CM_ERROR_NOSUCHCELL;
  
!     code = cm_GetVolumeByID(cellp, volume, userp, &req, &tvp);
      if (code) return code;
  	
      cp = ioctlp->outDatap;
--- 946,952 ----
      if (!cellp)
  	return CM_ERROR_NOSUCHCELL;
  
!     code = cm_GetVolumeByID(cellp, volume, userp, &req, CM_GETVOL_FLAG_CREATE, &tvp);
      if (code) return code;
  	
      cp = ioctlp->outDatap;
***************
*** 959,965 ****
          cp += sizeof(long);
      }
      lock_ReleaseRead(&cm_serverLock);
!     cm_FreeServerList(tsrpp);
      lock_ReleaseMutex(&tvp->mx);
  
      /* still room for terminating NULL, add it on */
--- 960,966 ----
          cp += sizeof(long);
      }
      lock_ReleaseRead(&cm_serverLock);
!     cm_FreeServerList(tsrpp, 0);
      lock_ReleaseMutex(&tvp->mx);
  
      /* still room for terminating NULL, add it on */
***************
*** 1267,1273 ****
      }
  
      lock_ObtainRead(&cm_cellLock);
!     for (tcellp = cm_data.allCellsp; tcellp; tcellp = tcellp->nextp) {
          if (whichCell == 0) break;
          whichCell--;
      }
--- 1268,1274 ----
      }
  
      lock_ObtainRead(&cm_cellLock);
!     for (tcellp = cm_data.allCellsp; tcellp; tcellp = tcellp->allNextp) {
          if (whichCell == 0) break;
          whichCell--;
      }
***************
*** 1324,1335 ****
      cm_SkipIoctlPath(ioctlp);
      lock_ObtainWrite(&cm_cellLock);
    
!     for (cp = cm_data.allCellsp; cp; cp=cp->nextp) 
      {
          long code;
  	lock_ObtainMutex(&cp->mx);
          /* delete all previous server lists - cm_FreeServerList will ask for write on cm_ServerLock*/
!         cm_FreeServerList(&cp->vlServersp);
          cp->vlServersp = NULL;
          code = cm_SearchCellFile(cp->name, cp->name, cm_AddCellProc, cp);
  #ifdef AFS_AFSDB_ENV
--- 1325,1336 ----
      cm_SkipIoctlPath(ioctlp);
      lock_ObtainWrite(&cm_cellLock);
    
!     for (cp = cm_data.allCellsp; cp; cp=cp->allNextp) 
      {
          long code;
  	lock_ObtainMutex(&cp->mx);
          /* delete all previous server lists - cm_FreeServerList will ask for write on cm_ServerLock*/
!         cm_FreeServerList(&cp->vlServersp, CM_FREESERVERLIST_DELETE);
          cp->vlServersp = NULL;
          code = cm_SearchCellFile(cp->name, cp->name, cm_AddCellProc, cp);
  #ifdef AFS_AFSDB_ENV
***************
*** 2755,2762 ****
  #endif
    
      /* dump all interesting data */
!     cm_DumpSCache(hLogFile, cookie, 1);
      cm_DumpVolumes(hLogFile, cookie, 1);
      cm_DumpBufHashTable(hLogFile, cookie, 1);
      smb_DumpVCP(hLogFile, cookie, 1);
  
--- 2756,2764 ----
  #endif
    
      /* dump all interesting data */
!     cm_DumpCells(hLogFile, cookie, 1);
      cm_DumpVolumes(hLogFile, cookie, 1);
+     cm_DumpSCache(hLogFile, cookie, 1);
      cm_DumpBufHashTable(hLogFile, cookie, 1);
      smb_DumpVCP(hLogFile, cookie, 1);
  
***************
*** 2790,2799 ****
              lock_ReleaseRead(&cm_serverLock);
              if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
                  allDown = 0;
!                 if (tsrp->status == busy) {
                      allOffline = 0;
                      someBusy = 1;
!                 } else if (tsrp->status == offline) {
                      allBusy = 0;
                      someOffline = 1;
                  } else {
--- 2792,2801 ----
              lock_ReleaseRead(&cm_serverLock);
              if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
                  allDown = 0;
!                 if (tsrp->status == srv_busy) {
                      allOffline = 0;
                      someBusy = 1;
!                 } else if (tsrp->status == srv_offline) {
                      allBusy = 0;
                      someOffline = 1;
                  } else {
***************
*** 2828,2835 ****
      cm_scache_t *scp;
      cm_cell_t *cellp;
      cm_volume_t *tvp;
!     cm_serverRef_t **tsrpp;
!     unsigned long volume;
      cm_req_t req;
  
      cm_InitReq(&req);
--- 2830,2837 ----
      cm_scache_t *scp;
      cm_cell_t *cellp;
      cm_volume_t *tvp;
!     cm_vol_state_t *statep;
!     afs_uint32 volume;
      cm_req_t req;
  
      cm_InitReq(&req);
***************
*** 2847,2863 ****
      if (!cellp)
  	return CM_ERROR_NOSUCHCELL;
  
!     code = cm_GetVolumeByID(cellp, volume, userp, &req, &tvp);
      if (code) 
          return code;
  	
!     lock_ObtainMutex(&tvp->mx);
!     tsrpp = cm_GetVolServers(tvp, volume);
!     code = cm_CheckServersStatus(*tsrpp);
!     cm_FreeServerList(tsrpp);
!     lock_ReleaseMutex(&tvp->mx);
      cm_PutVolume(tvp);
!     return 0;
  }       
  
  
--- 2849,2882 ----
      if (!cellp)
  	return CM_ERROR_NOSUCHCELL;
  
!     code = cm_GetVolumeByID(cellp, volume, userp, &req, CM_GETVOL_FLAG_CREATE, &tvp);
      if (code) 
          return code;
  	
!     if (volume == tvp->rw.ID)
!         statep = &tvp->rw;
!     else if (volume == tvp->ro.ID)
!         statep = &tvp->ro;
!     else
!         statep = &tvp->bk;
! 
!     switch (statep->state) {
!     case vl_online:
!     case vl_unknown:
!         code = 0;
!         break;
!     case vl_busy:
!         code = CM_ERROR_ALLBUSY;
!         break;
!     case vl_offline:
!         code = CM_ERROR_ALLOFFLINE;
!         break;
!     case vl_alldown:
!         code = CM_ERROR_ALLDOWN;
!         break;
!     }
      cm_PutVolume(tvp);
!     return code;
  }       
  
  
Index: openafs/src/WINNT/afsd/cm_memmap.c
diff -c openafs/src/WINNT/afsd/cm_memmap.c:1.7.2.4 openafs/src/WINNT/afsd/cm_memmap.c:1.7.2.6
*** openafs/src/WINNT/afsd/cm_memmap.c:1.7.2.4	Sun Feb  4 22:41:41 2007
--- openafs/src/WINNT/afsd/cm_memmap.c	Fri Jun 22 18:16:39 2007
***************
*** 39,44 ****
--- 39,60 ----
  }
  
  afs_uint64
+ ComputeSizeOfCellHT(DWORD maxcells)
+ {
+     afs_uint64 size;
+     size = osi_PrimeLessThan((afs_uint32)(maxcells/7 + 1)) * sizeof(cm_cell_t *);
+     return size;
+ }
+ 
+ afs_uint64
+ ComputeSizeOfVolumeHT(DWORD maxvols)
+ {
+     afs_uint64 size;
+     size = osi_PrimeLessThan((afs_uint32)(maxvols/7 + 1)) * sizeof(cm_volume_t *);
+     return size;
+ }
+ 
+ afs_uint64
  ComputeSizeOfCells(DWORD maxcells)
  {
      afs_uint64 size;
***************
*** 66,72 ****
  ComputeSizeOfSCacheHT(DWORD stats)
  {
      afs_uint64 size;
!     size = (stats + 10) / 2 * sizeof(cm_scache_t *);;
      return size;
  }
  
--- 82,88 ----
  ComputeSizeOfSCacheHT(DWORD stats)
  {
      afs_uint64 size;
!     size = osi_PrimeLessThan(stats / 2 + 1) * sizeof(cm_scache_t *);;
      return size;
  }
  
***************
*** 109,115 ****
--- 125,133 ----
      
      size       =  ComputeSizeOfConfigData()
                 +  ComputeSizeOfVolumes(maxVols) 
+                +  4 * ComputeSizeOfVolumeHT(maxVols) 
                 +  ComputeSizeOfCells(maxCells) 
+                +  2 * ComputeSizeOfCellHT(maxCells)
                 +  ComputeSizeOfACLCache(stats)
                 +  ComputeSizeOfSCache(stats)
                 +  ComputeSizeOfSCacheHT(stats)
***************
*** 221,231 ****
      afsi_log("  blockSize      = %d", cm_data.blockSize);
      afsi_log("  bufferSize     = %d", cm_data.bufferSize);
      afsi_log("  cacheType      = %d", cm_data.cacheType);
      afsi_log("  currentVolumes = %d", cm_data.currentVolumes);
      afsi_log("  maxVolumes     = %d", cm_data.maxVolumes);
      afsi_log("  currentCells   = %d", cm_data.currentCells);
      afsi_log("  maxCells       = %d", cm_data.maxCells);
!     afsi_log("  hashTableSize  = %d", cm_data.hashTableSize);
      afsi_log("  currentSCaches = %d", cm_data.currentSCaches);
      afsi_log("  maxSCaches     = %d", cm_data.maxSCaches);
  
--- 239,251 ----
      afsi_log("  blockSize      = %d", cm_data.blockSize);
      afsi_log("  bufferSize     = %d", cm_data.bufferSize);
      afsi_log("  cacheType      = %d", cm_data.cacheType);
+     afsi_log("  volumeHashTableSize = %d", cm_data.volumeHashTableSize);
      afsi_log("  currentVolumes = %d", cm_data.currentVolumes);
      afsi_log("  maxVolumes     = %d", cm_data.maxVolumes);
+     afsi_log("  cellHashTableSize = %d", cm_data.cellHashTableSize);
      afsi_log("  currentCells   = %d", cm_data.currentCells);
      afsi_log("  maxCells       = %d", cm_data.maxCells);
!     afsi_log("  scacheHashTableSize  = %d", cm_data.scacheHashTableSize);
      afsi_log("  currentSCaches = %d", cm_data.currentSCaches);
      afsi_log("  maxSCaches     = %d", cm_data.maxSCaches);
  
***************
*** 404,414 ****
      fprintf(stderr,"  blockSize      = %d\n", config_data_p->blockSize);
      fprintf(stderr,"  bufferSize     = %d\n", config_data_p->bufferSize);
      fprintf(stderr,"  cacheType      = %d\n", config_data_p->cacheType);
      fprintf(stderr,"  currentVolumes = %d\n", config_data_p->currentVolumes);
      fprintf(stderr,"  maxVolumes     = %d\n", config_data_p->maxVolumes);
      fprintf(stderr,"  currentCells   = %d\n", config_data_p->currentCells);
      fprintf(stderr,"  maxCells       = %d\n", config_data_p->maxCells);
!     fprintf(stderr,"  hashTableSize  = %d\n", config_data_p->hashTableSize);
      fprintf(stderr,"  currentSCaches = %d\n", config_data_p->currentSCaches);
      fprintf(stderr,"  maxSCaches     = %d\n", config_data_p->maxSCaches);
      cm_data = *config_data_p;      
--- 424,436 ----
      fprintf(stderr,"  blockSize      = %d\n", config_data_p->blockSize);
      fprintf(stderr,"  bufferSize     = %d\n", config_data_p->bufferSize);
      fprintf(stderr,"  cacheType      = %d\n", config_data_p->cacheType);
+     fprintf(stderr,"  volumeHashTableSize = %d", config_data_p->volumeHashTableSize);
      fprintf(stderr,"  currentVolumes = %d\n", config_data_p->currentVolumes);
      fprintf(stderr,"  maxVolumes     = %d\n", config_data_p->maxVolumes);
+     fprintf(stderr,"  cellHashTableSize = %d", config_data_p->cellHashTableSize);
      fprintf(stderr,"  currentCells   = %d\n", config_data_p->currentCells);
      fprintf(stderr,"  maxCells       = %d\n", config_data_p->maxCells);
!     fprintf(stderr,"  scacheHashTableSize  = %d\n", config_data_p->scacheHashTableSize);
      fprintf(stderr,"  currentSCaches = %d\n", config_data_p->currentSCaches);
      fprintf(stderr,"  maxSCaches     = %d\n", config_data_p->maxSCaches);
      cm_data = *config_data_p;      
***************
*** 802,812 ****
  	afsi_log("  blockSize      = %d", config_data_p->blockSize);
  	afsi_log("  bufferSize     = %d", config_data_p->bufferSize);
  	afsi_log("  cacheType      = %d", config_data_p->cacheType);
  	afsi_log("  currentVolumes = %d", config_data_p->currentVolumes);
  	afsi_log("  maxVolumes     = %d", config_data_p->maxVolumes);
  	afsi_log("  currentCells   = %d", config_data_p->currentCells);
  	afsi_log("  maxCells       = %d", config_data_p->maxCells);
! 	afsi_log("  hashTableSize  = %d", config_data_p->hashTableSize);
  	afsi_log("  currentSCaches = %d", config_data_p->currentSCaches);
  	afsi_log("  maxSCaches     = %d", config_data_p->maxSCaches);
  
--- 824,836 ----
  	afsi_log("  blockSize      = %d", config_data_p->blockSize);
  	afsi_log("  bufferSize     = %d", config_data_p->bufferSize);
  	afsi_log("  cacheType      = %d", config_data_p->cacheType);
+ 	afsi_log("  volumeHashTableSize  = %d", config_data_p->volumeHashTableSize);
  	afsi_log("  currentVolumes = %d", config_data_p->currentVolumes);
  	afsi_log("  maxVolumes     = %d", config_data_p->maxVolumes);
+         afsi_log("  cellHashTableSize = %d", config_data_p->cellHashTableSize);
  	afsi_log("  currentCells   = %d", config_data_p->currentCells);
  	afsi_log("  maxCells       = %d", config_data_p->maxCells);
! 	afsi_log("  scacheHashTableSize  = %d", config_data_p->scacheHashTableSize);
  	afsi_log("  currentSCaches = %d", config_data_p->currentSCaches);
  	afsi_log("  maxSCaches     = %d", config_data_p->maxSCaches);
  
***************
*** 827,833 ****
          cm_data.chunkSize = chunkSize;
          cm_data.blockSize = CM_CONFIGDEFAULT_BLOCKSIZE;
          cm_data.bufferSize = mappingSize;
!         cm_data.hashTableSize = osi_PrimeLessThan(stats / 2 + 1);
          if (virtualCache) {
              cm_data.cacheType = CM_BUF_CACHETYPE_VIRTUAL;
          } else {
--- 851,859 ----
          cm_data.chunkSize = chunkSize;
          cm_data.blockSize = CM_CONFIGDEFAULT_BLOCKSIZE;
          cm_data.bufferSize = mappingSize;
!         cm_data.scacheHashTableSize = osi_PrimeLessThan(stats / 2 + 1);
!         cm_data.volumeHashTableSize = osi_PrimeLessThan((afs_uint32)(maxVols/7 + 1));
!         cm_data.cellHashTableSize = osi_PrimeLessThan((afs_uint32)(maxCells/7 + 1));
          if (virtualCache) {
              cm_data.cacheType = CM_BUF_CACHETYPE_VIRTUAL;
          } else {
***************
*** 844,860 ****
          baseAddress += ComputeSizeOfConfigData();
          cm_data.volumeBaseAddress = (cm_volume_t *) baseAddress;
          baseAddress += ComputeSizeOfVolumes(maxVols);
          cm_data.cellBaseAddress = (cm_cell_t *) baseAddress;
          baseAddress += ComputeSizeOfCells(maxCells);
          cm_data.aclBaseAddress = (cm_aclent_t *) baseAddress;
          baseAddress += ComputeSizeOfACLCache(stats);
          cm_data.scacheBaseAddress = (cm_scache_t *) baseAddress;
          baseAddress += ComputeSizeOfSCache(stats);
!         cm_data.hashTablep = (cm_scache_t **) baseAddress;
          baseAddress += ComputeSizeOfSCacheHT(stats);
          cm_data.dnlcBaseAddress = (cm_nc_t *) baseAddress;
          baseAddress += ComputeSizeOfDNLCache();
!         cm_data.buf_hashTablepp = (cm_buf_t **) baseAddress;
          baseAddress += ComputeSizeOfDataHT(cacheBlocks);
          cm_data.buf_fileHashTablepp = (cm_buf_t **) baseAddress;
          baseAddress += ComputeSizeOfDataHT(cacheBlocks);
--- 870,898 ----
          baseAddress += ComputeSizeOfConfigData();
          cm_data.volumeBaseAddress = (cm_volume_t *) baseAddress;
          baseAddress += ComputeSizeOfVolumes(maxVols);
+         cm_data.volumeNameHashTablep = (cm_volume_t **)baseAddress;
+         baseAddress += ComputeSizeOfVolumeHT(maxVols);
+         cm_data.volumeRWIDHashTablep = (cm_volume_t **)baseAddress;
+         baseAddress += ComputeSizeOfVolumeHT(maxVols);
+         cm_data.volumeROIDHashTablep = (cm_volume_t **)baseAddress;
+         baseAddress += ComputeSizeOfVolumeHT(maxVols);
+         cm_data.volumeBKIDHashTablep = (cm_volume_t **)baseAddress;
+         baseAddress += ComputeSizeOfVolumeHT(maxVols);
+         cm_data.cellNameHashTablep = (cm_cell_t **)baseAddress;
+         baseAddress += ComputeSizeOfCellHT(maxCells);
+         cm_data.cellIDHashTablep = (cm_cell_t **)baseAddress;
+         baseAddress += ComputeSizeOfCellHT(maxCells);
          cm_data.cellBaseAddress = (cm_cell_t *) baseAddress;
          baseAddress += ComputeSizeOfCells(maxCells);
          cm_data.aclBaseAddress = (cm_aclent_t *) baseAddress;
          baseAddress += ComputeSizeOfACLCache(stats);
          cm_data.scacheBaseAddress = (cm_scache_t *) baseAddress;
          baseAddress += ComputeSizeOfSCache(stats);
!         cm_data.scacheHashTablep = (cm_scache_t **) baseAddress;
          baseAddress += ComputeSizeOfSCacheHT(stats);
          cm_data.dnlcBaseAddress = (cm_nc_t *) baseAddress;
          baseAddress += ComputeSizeOfDNLCache();
!         cm_data.buf_scacheHashTablepp = (cm_buf_t **) baseAddress;
          baseAddress += ComputeSizeOfDataHT(cacheBlocks);
          cm_data.buf_fileHashTablepp = (cm_buf_t **) baseAddress;
          baseAddress += ComputeSizeOfDataHT(cacheBlocks);
Index: openafs/src/WINNT/afsd/cm_memmap.h
diff -c openafs/src/WINNT/afsd/cm_memmap.h:1.3.4.2 openafs/src/WINNT/afsd/cm_memmap.h:1.3.4.4
*** openafs/src/WINNT/afsd/cm_memmap.h:1.3.4.2	Sun Feb  4 22:41:41 2007
--- openafs/src/WINNT/afsd/cm_memmap.h	Fri Jun 22 18:16:39 2007
***************
*** 51,64 ****
      cm_aclent_t *       aclLRUp;
      cm_aclent_t	*       aclLRUEndp;
  
!     cm_scache_t	**      hashTablep;
!     afs_uint32		hashTableSize;
  
      afs_uint32		currentSCaches;
      afs_uint32          maxSCaches;
      cm_scache_t *       scacheLRUFirstp;
      cm_scache_t *       scacheLRULastp;
  
      cm_nc_t 	*       ncfreelist;
      cm_nc_t 	*       nameCache;
      cm_nc_t 	**      nameHash; 
--- 51,77 ----
      cm_aclent_t *       aclLRUp;
      cm_aclent_t	*       aclLRUEndp;
  
!     cm_scache_t	**      scacheHashTablep;
!     afs_uint32		scacheHashTableSize;
  
+     cm_scache_t *       allSCachesp;
      afs_uint32		currentSCaches;
      afs_uint32          maxSCaches;
      cm_scache_t *       scacheLRUFirstp;
      cm_scache_t *       scacheLRULastp;
  
+     cm_cell_t   **      cellNameHashTablep;
+     cm_cell_t   **      cellIDHashTablep;
+     afs_uint32          cellHashTableSize;
+ 
+     cm_volume_t **      volumeNameHashTablep;
+     cm_volume_t **      volumeRWIDHashTablep;
+     cm_volume_t **      volumeROIDHashTablep;
+     cm_volume_t **      volumeBKIDHashTablep;
+     afs_uint32          volumeHashTableSize;
+     cm_volume_t *       volumeLRUFirstp;
+     cm_volume_t *       volumeLRULastp;
+ 
      cm_nc_t 	*       ncfreelist;
      cm_nc_t 	*       nameCache;
      cm_nc_t 	**      nameHash; 
***************
*** 67,73 ****
      cm_buf_t    *       buf_freeListEndp;
      cm_buf_t	*       buf_dirtyListp;
      cm_buf_t    *       buf_dirtyListEndp;
!     cm_buf_t	**      buf_hashTablepp;
      cm_buf_t	**      buf_fileHashTablepp;
      cm_buf_t	*       buf_allp;
      afs_uint64		buf_nbuffers;
--- 80,86 ----
      cm_buf_t    *       buf_freeListEndp;
      cm_buf_t	*       buf_dirtyListp;
      cm_buf_t    *       buf_dirtyListEndp;
!     cm_buf_t	**      buf_scacheHashTablepp;
      cm_buf_t	**      buf_fileHashTablepp;
      cm_buf_t	*       buf_allp;
      afs_uint64		buf_nbuffers;
Index: openafs/src/WINNT/afsd/cm_scache.c
diff -c openafs/src/WINNT/afsd/cm_scache.c:1.35.2.34 openafs/src/WINNT/afsd/cm_scache.c:1.35.2.39
*** openafs/src/WINNT/afsd/cm_scache.c:1.35.2.34	Wed May 16 11:51:05 2007
--- openafs/src/WINNT/afsd/cm_scache.c	Fri Jul  6 19:22:03 2007
***************
*** 42,48 ****
  #endif
  
  /* must be called with cm_scacheLock write-locked! */
! void cm_AdjustLRU(cm_scache_t *scp)
  {
      if (scp == cm_data.scacheLRULastp)
          cm_data.scacheLRULastp = (cm_scache_t *) osi_QPrev(&scp->q);
--- 42,48 ----
  #endif
  
  /* must be called with cm_scacheLock write-locked! */
! void cm_AdjustScacheLRU(cm_scache_t *scp)
  {
      if (scp == cm_data.scacheLRULastp)
          cm_data.scacheLRULastp = (cm_scache_t *) osi_QPrev(&scp->q);
***************
*** 62,68 ****
      if (scp->flags & CM_SCACHEFLAG_INHASH) {
  	/* hash it out first */
  	i = CM_SCACHE_HASH(&scp->fid);
! 	for (lscpp = &cm_data.hashTablep[i], tscp = cm_data.hashTablep[i];
  	     tscp;
  	     lscpp = &tscp->nextp, tscp = tscp->nextp) {
  	    if (tscp == scp) {
--- 62,68 ----
      if (scp->flags & CM_SCACHEFLAG_INHASH) {
  	/* hash it out first */
  	i = CM_SCACHE_HASH(&scp->fid);
! 	for (lscpp = &cm_data.scacheHashTablep[i], tscp = cm_data.scacheHashTablep[i];
  	     tscp;
  	     lscpp = &tscp->nextp, tscp = tscp->nextp) {
  	    if (tscp == scp) {
***************
*** 162,179 ****
      scp->bulkStatProgress = hzero;
      scp->waitCount = 0;
  
      scp->fid.vnode = 0;
      scp->fid.volume = 0;
      scp->fid.unique = 0;
      scp->fid.cell = 0;
  
-     /* discard callback */
-     if (scp->cbServerp) {
- 	cm_PutServer(scp->cbServerp);
- 	scp->cbServerp = NULL;
-     }
-     scp->cbExpires = 0;
- 
      /* remove from dnlc */
      cm_dnlcPurgedp(scp);
      cm_dnlcPurgevp(scp);
--- 162,178 ----
      scp->bulkStatProgress = hzero;
      scp->waitCount = 0;
  
+     if (scp->cbServerp) {
+         cm_PutServer(scp->cbServerp);
+         scp->cbServerp = NULL;
+     }
+     scp->cbExpires = 0;
+ 
      scp->fid.vnode = 0;
      scp->fid.volume = 0;
      scp->fid.unique = 0;
      scp->fid.cell = 0;
  
      /* remove from dnlc */
      cm_dnlcPurgedp(scp);
      cm_dnlcPurgevp(scp);
***************
*** 222,228 ****
  	  scp;
  	  scp = (cm_scache_t *) osi_QPrev(&scp->q)) 
      {
! 	osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.hashTablep);
  
  	if (scp->refCount == 0) {
  	    if (scp->flags & CM_SCACHEFLAG_DELETED) {
--- 221,227 ----
  	  scp;
  	  scp = (cm_scache_t *) osi_QPrev(&scp->q)) 
      {
! 	osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.scacheHashTablep);
  
  	if (scp->refCount == 0) {
  	    if (scp->flags & CM_SCACHEFLAG_DELETED) {
***************
*** 233,239 ****
  		    /* now remove from the LRU queue and put it back at the
  		     * head of the LRU queue.
  		     */
! 		    cm_AdjustLRU(scp);
  
  		    /* and we're done */
  		    return scp;
--- 232,238 ----
  		    /* now remove from the LRU queue and put it back at the
  		     * head of the LRU queue.
  		     */
! 		    cm_AdjustScacheLRU(scp);
  
  		    /* and we're done */
  		    return scp;
***************
*** 244,250 ****
  		/* now remove from the LRU queue and put it back at the
  		* head of the LRU queue.
  		*/
! 		cm_AdjustLRU(scp);
  
  		/* and we're done */
  		return scp;
--- 243,249 ----
  		/* now remove from the LRU queue and put it back at the
  		* head of the LRU queue.
  		*/
! 		cm_AdjustScacheLRU(scp);
  
  		/* and we're done */
  		return scp;
***************
*** 258,297 ****
  	/* There were no deleted scache objects that we could use.  Try to find
  	 * one that simply hasn't been used in a while.
  	 */
! 	    for ( scp = cm_data.scacheLRULastp;
! 		  scp;
! 		  scp = (cm_scache_t *) osi_QPrev(&scp->q)) 
! 	    {
! 		/* It is possible for the refCount to be zero and for there still
! 		 * to be outstanding dirty buffers.  If there are dirty buffers,
! 		 * we must not recycle the scp. */
! 		if (scp->refCount == 0 && scp->bufReadsp == NULL && scp->bufWritesp == NULL) {
! 		    if (!buf_DirtyBuffersExist(&scp->fid)) {
! 			if (!cm_RecycleSCache(scp, 0)) {
! 			    /* we found an entry, so return it */
! 			    /* now remove from the LRU queue and put it back at the
! 			     * head of the LRU queue.
! 			     */
! 			    cm_AdjustLRU(scp);
! 
! 			    /* and we're done */
! 			    return scp;
! 			}
! 		    } else {
! 			osi_Log1(afsd_logp,"GetNewSCache dirty buffers exist scp 0x%x", scp);
! 		    }
! 		}	
! 	    }
! 	    osi_Log1(afsd_logp, "GetNewSCache all scache entries in use (retry = %d)", retry);
! 	    
! 		return NULL;
      }
          
      /* if we get here, we should allocate a new scache entry.  We either are below
       * quota or we have a leak and need to allocate a new one to avoid panicing.
       */
      scp = cm_data.scacheBaseAddress + cm_data.currentSCaches;
!     osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.hashTablep);
      memset(scp, 0, sizeof(cm_scache_t));
      scp->magic = CM_SCACHE_MAGIC;
      lock_InitializeMutex(&scp->mx, "cm_scache_t mutex");
--- 257,296 ----
  	/* There were no deleted scache objects that we could use.  Try to find
  	 * one that simply hasn't been used in a while.
  	 */
!         for ( scp = cm_data.scacheLRULastp;
!               scp;
!               scp = (cm_scache_t *) osi_QPrev(&scp->q)) 
!         {
!             /* It is possible for the refCount to be zero and for there still
!              * to be outstanding dirty buffers.  If there are dirty buffers,
!              * we must not recycle the scp. */
!             if (scp->refCount == 0 && scp->bufReadsp == NULL && scp->bufWritesp == NULL) {
!                 if (!buf_DirtyBuffersExist(&scp->fid)) {
!                     if (!cm_RecycleSCache(scp, 0)) {
!                         /* we found an entry, so return it */
!                         /* now remove from the LRU queue and put it back at the
!                          * head of the LRU queue.
!                          */
!                         cm_AdjustScacheLRU(scp);
! 
!                         /* and we're done */
!                         return scp;
!                     }
!                 } else {
!                     osi_Log1(afsd_logp,"GetNewSCache dirty buffers exist scp 0x%x", scp);
!                 }
!             }	
!         }
!         osi_Log1(afsd_logp, "GetNewSCache all scache entries in use (retry = %d)", retry);
! 
!         return NULL;
      }
          
      /* if we get here, we should allocate a new scache entry.  We either are below
       * quota or we have a leak and need to allocate a new one to avoid panicing.
       */
      scp = cm_data.scacheBaseAddress + cm_data.currentSCaches;
!     osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.scacheHashTablep);
      memset(scp, 0, sizeof(cm_scache_t));
      scp->magic = CM_SCACHE_MAGIC;
      lock_InitializeMutex(&scp->mx, "cm_scache_t mutex");
***************
*** 305,310 ****
--- 304,311 ----
      cm_data.currentSCaches++;
      cm_dnlcPurgedp(scp); /* make doubly sure that this is not in dnlc */
      cm_dnlcPurgevp(scp); 
+     scp->allNextp = cm_data.allSCachesp;
+     cm_data.allSCachesp = scp;
      return scp;
  }       
  
***************
*** 419,426 ****
          }
      }
  
!     for ( i=0; i < cm_data.hashTableSize; i++ ) {
!         for ( scp = cm_data.hashTablep[i]; scp; scp = scp->nextp ) {
              if (scp->magic != CM_SCACHE_MAGIC) {
                  afsi_log("cm_ValidateSCache failure: scp->magic != CM_SCACHE_MAGIC");
                  fprintf(stderr, "cm_ValidateSCache failure: scp->magic != CM_SCACHE_MAGIC\n");
--- 420,427 ----
          }
      }
  
!     for ( i=0; i < cm_data.scacheHashTableSize; i++ ) {
!         for ( scp = cm_data.scacheHashTablep[i]; scp; scp = scp->nextp ) {
              if (scp->magic != CM_SCACHE_MAGIC) {
                  afsi_log("cm_ValidateSCache failure: scp->magic != CM_SCACHE_MAGIC");
                  fprintf(stderr, "cm_ValidateSCache failure: scp->magic != CM_SCACHE_MAGIC\n");
***************
*** 447,467 ****
      return cm_dnlcValidate();
  }
  
  long
  cm_ShutdownSCache(void)
  {
      cm_scache_t * scp;
  
!     for ( scp = cm_data.scacheLRULastp; scp;
!           scp = (cm_scache_t *) osi_QPrev(&scp->q) ) {
          if (scp->randomACLp) {
              lock_ObtainMutex(&scp->mx);
              cm_FreeAllACLEnts(scp);
              lock_ReleaseMutex(&scp->mx);
          }
          lock_FinalizeMutex(&scp->mx);
          lock_FinalizeRWLock(&scp->bufCreateLock);
      }
  
      return cm_dnlcShutdown();
  }
--- 448,501 ----
      return cm_dnlcValidate();
  }
  
+ void
+ cm_SuspendSCache(void)
+ {
+     cm_scache_t * scp;
+ 
+     cm_GiveUpAllCallbacksAllServers();
+ 
+     lock_ObtainWrite(&cm_scacheLock);
+     for ( scp = cm_data.allSCachesp; scp;
+           scp = scp->allNextp ) {
+         if (scp->cbServerp) {
+             cm_PutServer(scp->cbServerp);
+             scp->cbServerp = NULL;
+         }
+         scp->cbExpires = 0;
+         scp->flags &= ~CM_SCACHEFLAG_CALLBACK;
+     }
+     lock_ReleaseWrite(&cm_scacheLock);
+ }
+ 
  long
  cm_ShutdownSCache(void)
  {
      cm_scache_t * scp;
  
!     lock_ObtainWrite(&cm_scacheLock);
! 
!     for ( scp = cm_data.allSCachesp; scp;
!           scp = scp->allNextp ) {
          if (scp->randomACLp) {
              lock_ObtainMutex(&scp->mx);
              cm_FreeAllACLEnts(scp);
              lock_ReleaseMutex(&scp->mx);
          }
+ 
+         if (scp->cbServerp) {
+             cm_PutServer(scp->cbServerp);
+             scp->cbServerp = NULL;
+         }
+         scp->cbExpires = 0;
+         scp->flags &= ~CM_SCACHEFLAG_CALLBACK;
+ 
          lock_FinalizeMutex(&scp->mx);
          lock_FinalizeRWLock(&scp->bufCreateLock);
      }
+     lock_ReleaseWrite(&cm_scacheLock);
+ 
+     cm_GiveUpAllCallbacksAllServers();
  
      return cm_dnlcShutdown();
  }
***************
*** 473,487 ****
      if (osi_Once(&once)) {
          lock_InitializeRWLock(&cm_scacheLock, "cm_scacheLock");
          if ( newFile ) {
!             memset(cm_data.hashTablep, 0, sizeof(cm_scache_t *) * cm_data.hashTableSize);
              cm_data.currentSCaches = 0;
              cm_data.maxSCaches = maxSCaches;
              cm_data.scacheLRUFirstp = cm_data.scacheLRULastp = NULL;
          } else {
              cm_scache_t * scp;
  
!             for ( scp = cm_data.scacheLRULastp; scp;
!                   scp = (cm_scache_t *) osi_QPrev(&scp->q) ) {
                  lock_InitializeMutex(&scp->mx, "cm_scache_t mutex");
                  lock_InitializeRWLock(&scp->bufCreateLock, "cm_scache_t bufCreateLock");
  
--- 507,522 ----
      if (osi_Once(&once)) {
          lock_InitializeRWLock(&cm_scacheLock, "cm_scacheLock");
          if ( newFile ) {
!             memset(cm_data.scacheHashTablep, 0, sizeof(cm_scache_t *) * cm_data.scacheHashTableSize);
!             cm_data.allSCachesp = NULL;
              cm_data.currentSCaches = 0;
              cm_data.maxSCaches = maxSCaches;
              cm_data.scacheLRUFirstp = cm_data.scacheLRULastp = NULL;
          } else {
              cm_scache_t * scp;
  
!             for ( scp = cm_data.allSCachesp; scp;
!                   scp = scp->allNextp ) {
                  lock_InitializeMutex(&scp->mx, "cm_scache_t mutex");
                  lock_InitializeRWLock(&scp->bufCreateLock, "cm_scache_t bufCreateLock");
  
***************
*** 523,532 ****
      }
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
              cm_HoldSCacheNoLock(scp);
!             cm_AdjustLRU(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              return scp;
          }
--- 558,567 ----
      }
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
              cm_HoldSCacheNoLock(scp);
!             cm_AdjustScacheLRU(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              return scp;
          }
***************
*** 567,573 ****
      // yj: check if we have the scp, if so, we don't need
      // to do anything else
      lock_ObtainWrite(&cm_scacheLock);
!     for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
  #ifdef DEBUG_REFCOUNT
  	    afsi_log("%s:%d cm_GetSCache (1) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
--- 602,608 ----
      // yj: check if we have the scp, if so, we don't need
      // to do anything else
      lock_ObtainWrite(&cm_scacheLock);
!     for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
  #ifdef DEBUG_REFCOUNT
  	    afsi_log("%s:%d cm_GetSCache (1) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
***************
*** 575,581 ****
  #endif
              cm_HoldSCacheNoLock(scp);
              *outScpp = scp;
!             cm_AdjustLRU(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              return 0;
          }
--- 610,616 ----
  #endif
              cm_HoldSCacheNoLock(scp);
              *outScpp = scp;
!             cm_AdjustScacheLRU(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              return 0;
          }
***************
*** 638,645 ****
          scp->dotdotFid.unique=1;
          scp->dotdotFid.vnode=1;
          scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
!         scp->nextp=cm_data.hashTablep[hash];
!         cm_data.hashTablep[hash]=scp;
          scp->flags |= CM_SCACHEFLAG_INHASH;
          scp->refCount = 1;
  	osi_Log1(afsd_logp,"cm_GetSCache (freelance) sets refCount to 1 scp 0x%x", scp);
--- 673,680 ----
          scp->dotdotFid.unique=1;
          scp->dotdotFid.vnode=1;
          scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
!         scp->nextp=cm_data.scacheHashTablep[hash];
!         cm_data.scacheHashTablep[hash]=scp;
          scp->flags |= CM_SCACHEFLAG_INHASH;
          scp->refCount = 1;
  	osi_Log1(afsd_logp,"cm_GetSCache (freelance) sets refCount to 1 scp 0x%x", scp);
***************
*** 685,691 ****
          if (!cellp) 
              return CM_ERROR_NOSUCHCELL;
  
!         code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, &volp);
          if (code) 
              return code;
          lock_ObtainWrite(&cm_scacheLock);
--- 720,726 ----
          if (!cellp) 
              return CM_ERROR_NOSUCHCELL;
  
!         code = cm_GetVolumeByID(cellp, fidp->volume, userp, reqp, CM_GETVOL_FLAG_CREATE, &volp);
          if (code) 
              return code;
          lock_ObtainWrite(&cm_scacheLock);
***************
*** 694,700 ****
      /* otherwise, we have the volume, now reverify that the scp doesn't
       * exist, and proceed.
       */
!     for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
  #ifdef DEBUG_REFCOUNT
  	    afsi_log("%s:%d cm_GetSCache (3) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
--- 729,735 ----
      /* otherwise, we have the volume, now reverify that the scp doesn't
       * exist, and proceed.
       */
!     for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
  #ifdef DEBUG_REFCOUNT
  	    afsi_log("%s:%d cm_GetSCache (3) outScpp 0x%p ref %d", file, line, scp, scp->refCount);
***************
*** 702,708 ****
  #endif
              cm_HoldSCacheNoLock(scp);
              osi_assert(scp->volp == volp);
!             cm_AdjustLRU(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              if (volp)
                  cm_PutVolume(volp);
--- 737,743 ----
  #endif
              cm_HoldSCacheNoLock(scp);
              osi_assert(scp->volp == volp);
!             cm_AdjustScacheLRU(scp);
              lock_ReleaseWrite(&cm_scacheLock);
              if (volp)
                  cm_PutVolume(volp);
***************
*** 746,758 ****
  	    scp->dotdotFid = volp->dotdotFid;
          }
  	  
!         if (volp->roID == fidp->volume)
  	    scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
!         else if (volp->bkID == fidp->volume)
  	    scp->flags |= CM_SCACHEFLAG_RO;
      }
!     scp->nextp = cm_data.hashTablep[hash];
!     cm_data.hashTablep[hash] = scp;
      scp->flags |= CM_SCACHEFLAG_INHASH;
      scp->refCount = 1;
      osi_Log1(afsd_logp,"cm_GetSCache sets refCount to 1 scp 0x%x", scp);
--- 781,793 ----
  	    scp->dotdotFid = volp->dotdotFid;
          }
  	  
!         if (volp->ro.ID == fidp->volume)
  	    scp->flags |= (CM_SCACHEFLAG_PURERO | CM_SCACHEFLAG_RO);
!         else if (volp->bk.ID == fidp->volume)
  	    scp->flags |= CM_SCACHEFLAG_RO;
      }
!     scp->nextp = cm_data.scacheHashTablep[hash];
!     cm_data.scacheHashTablep[hash] = scp;
      scp->flags |= CM_SCACHEFLAG_INHASH;
      scp->refCount = 1;
      osi_Log1(afsd_logp,"cm_GetSCache sets refCount to 1 scp 0x%x", scp);
***************
*** 793,799 ****
  
      if (cm_FidCmp(&scp->fid, &parent_fid)) {
  	i = CM_SCACHE_HASH(&parent_fid);
! 	for (pscp = cm_data.hashTablep[i]; pscp; pscp = pscp->nextp) {
  	    if (!cm_FidCmp(&pscp->fid, &parent_fid)) {
  		cm_HoldSCacheNoLock(pscp);
  		break;
--- 828,834 ----
  
      if (cm_FidCmp(&scp->fid, &parent_fid)) {
  	i = CM_SCACHE_HASH(&parent_fid);
! 	for (pscp = cm_data.scacheHashTablep[i]; pscp; pscp = pscp->nextp) {
  	    if (!cm_FidCmp(&pscp->fid, &parent_fid)) {
  		cm_HoldSCacheNoLock(pscp);
  		break;
***************
*** 1355,1361 ****
              struct cm_volume *volp = NULL;
  
              cm_GetVolumeByID(cellp, scp->fid.volume, userp,
!                               (cm_req_t *) NULL, &volp);
              osi_Log2(afsd_logp, "old data from server %x volume %s",
                        scp->cbServerp->addr.sin_addr.s_addr,
                        volp ? volp->namep : "(unknown)");
--- 1390,1396 ----
              struct cm_volume *volp = NULL;
  
              cm_GetVolumeByID(cellp, scp->fid.volume, userp,
!                               (cm_req_t *) NULL, CM_GETVOL_FLAG_CREATE, &volp);
              osi_Log2(afsd_logp, "old data from server %x volume %s",
                        scp->cbServerp->addr.sin_addr.s_addr,
                        volp ? volp->namep : "(unknown)");
***************
*** 1564,1570 ****
      osi_assert(fidp->cell != 0);
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (scp=cm_data.hashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
              lock_ReleaseWrite(&cm_scacheLock);
              return scp->fileType;
--- 1599,1605 ----
      osi_assert(fidp->cell != 0);
  
      lock_ObtainWrite(&cm_scacheLock);
!     for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
          if (cm_FidCmp(fidp, &scp->fid) == 0) {
              lock_ReleaseWrite(&cm_scacheLock);
              return scp->fileType;
***************
*** 1582,1625 ****
  {
      int zilch;
      cm_scache_t *scp;
!     char output[1024];
      int i;
    
      if (lock)
          lock_ObtainRead(&cm_scacheLock);
    
!     sprintf(output, "%s - dumping scache - cm_data.currentSCaches=%d, cm_data.maxSCaches=%d\r\n", cookie, cm_data.currentSCaches, cm_data.maxSCaches);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
!     for (scp = cm_data.scacheLRULastp; scp; scp = (cm_scache_t *) osi_QPrev(&scp->q)) 
      {
!         if (scp->refCount != 0)
!         {
!             sprintf(output, "%s scp=0x%p, fid (cell=%d, volume=%d, vnode=%d, unique=%d) refCount=%u\r\n", 
!                     cookie, scp, scp->fid.cell, scp->fid.volume, scp->fid.vnode, scp->fid.unique, 
!                     scp->refCount);
!             WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
!         }
      }
    
!     sprintf(output, "%s - dumping cm_data.hashTable - cm_data.hashTableSize=%d\r\n", cookie, cm_data.hashTableSize);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
!     for (i = 0; i < cm_data.hashTableSize; i++)
      {
!         for(scp = cm_data.hashTablep[i]; scp; scp=scp->nextp) 
          {
!             if (scp->refCount != 0)
!             {
!                 sprintf(output, "%s scp=0x%p, hash=%d, fid (cell=%d, volume=%d, vnode=%d, unique=%d) refCount=%u\r\n", 
!                          cookie, scp, i, scp->fid.cell, scp->fid.volume, scp->fid.vnode, 
!                          scp->fid.unique, scp->refCount);
!                 WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
!             }
          }
      }
  
!     sprintf(output, "%s - Done dumping scache.\r\n", cookie);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
      if (lock)
--- 1617,1656 ----
  {
      int zilch;
      cm_scache_t *scp;
!     char output[2048];
      int i;
    
      if (lock)
          lock_ObtainRead(&cm_scacheLock);
    
!     sprintf(output, "%s - dumping all scache - cm_data.currentSCaches=%d, cm_data.maxSCaches=%d\r\n", cookie, cm_data.currentSCaches, cm_data.maxSCaches);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
!     for (scp = cm_data.allSCachesp; scp; scp = scp->allNextp) 
      {
!         sprintf(output, "%s scp=0x%p, fid (cell=%d, volume=%d, vnode=%d, unique=%d) volp=0x%p type=%d dv=%d len=0x%I64x mp='%s' flags=0x%x cb=0x%x refCount=%u\r\n", 
!                 cookie, scp, scp->fid.cell, scp->fid.volume, scp->fid.vnode, scp->fid.unique, 
!                 scp->volp, scp->fileType, scp->dataVersion, scp->length.QuadPart, scp->mountPointStringp, scp->flags,
!                 (unsigned long)scp->cbExpires, scp->refCount);
!         WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
      }
    
!     sprintf(output, "%s - Done dumping all scache.\r\n", cookie);
!     WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
!     sprintf(output, "%s - dumping cm_data.scacheHashTable - cm_data.scacheHashTableSize=%d\r\n", cookie, cm_data.scacheHashTableSize);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
!     for (i = 0; i < cm_data.scacheHashTableSize; i++)
      {
!         for(scp = cm_data.scacheHashTablep[i]; scp; scp=scp->nextp) 
          {
!             sprintf(output, "%s scp=0x%p, hash=%d, fid (cell=%d, volume=%d, vnode=%d, unique=%d)\r\n", 
!                     cookie, scp, i, scp->fid.cell, scp->fid.volume, scp->fid.vnode, scp->fid.unique);
!             WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
          }
      }
  
!     sprintf(output, "%s - Done dumping cm_data.scacheHashTable\r\n", cookie);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
      if (lock)
Index: openafs/src/WINNT/afsd/cm_scache.h
diff -c openafs/src/WINNT/afsd/cm_scache.h:1.21.2.11 openafs/src/WINNT/afsd/cm_scache.h:1.21.2.13
*** openafs/src/WINNT/afsd/cm_scache.h:1.21.2.11	Wed Feb  7 12:35:16 2007
--- openafs/src/WINNT/afsd/cm_scache.h	Thu Jun 28 00:05:20 2007
***************
*** 89,94 ****
--- 89,95 ----
      osi_queue_t q;              	/* lru queue; cm_scacheLock */
      afs_uint32      magic;
      struct cm_scache *nextp;		/* next in hash; cm_scacheLock */
+     struct cm_scache *allNextp;         /* next in all scache list; cm_scacheLock */
      cm_fid_t fid;
      afs_uint32 flags;			/* flags; locked by mx */
  
***************
*** 302,308 ****
  				   ((fidp)->volume +	\
  				    (fidp)->vnode +	\
  				    (fidp)->unique))	\
! 					% cm_data.hashTableSize)
  
  #include "cm_conn.h"
  #include "cm_buf.h"
--- 303,309 ----
  				   ((fidp)->volume +	\
  				    (fidp)->vnode +	\
  				    (fidp)->unique))	\
! 					% cm_data.scacheHashTableSize)
  
  #include "cm_conn.h"
  #include "cm_buf.h"
***************
*** 378,383 ****
--- 379,386 ----
  
  extern long cm_ShutdownSCache(void);
  
+ extern void cm_SuspendSCache(void);
+ 
  extern long cm_RecycleSCache(cm_scache_t *scp, afs_int32 flags);
  
  extern void cm_RemoveSCacheFromHashTable(cm_scache_t *scp);
Index: openafs/src/WINNT/afsd/cm_server.c
diff -c openafs/src/WINNT/afsd/cm_server.c:1.25.2.4 openafs/src/WINNT/afsd/cm_server.c:1.25.2.11
*** openafs/src/WINNT/afsd/cm_server.c:1.25.2.4	Mon Mar 19 09:46:15 2007
--- openafs/src/WINNT/afsd/cm_server.c	Sat Jul  7 09:38:33 2007
***************
*** 22,27 ****
--- 22,28 ----
  #include <string.h>
  
  #include "afsd.h"
+ #include <WINNT\syscfg.h>
  #include <osi.h>
  #include <rx/rx.h>
  
***************
*** 54,59 ****
--- 55,61 ----
      long usecs;
      Capabilities caps = {0, 0};
      char hoststr[16];
+     cm_req_t req;
  
      lock_ObtainMutex(&tsp->mx);
      if (tsp->flags & CM_SERVERFLAG_PINGING) {
***************
*** 86,106 ****
  		  wasDown ? "down" : "up",
  		  tsp->capabilities);
  
  	if (wasDown)
! 	    rx_SetConnDeadTime(connp->callp, 10);
  	if (tsp->type == CM_SERVER_VLDB) {
! 	    code = VL_ProbeServer(connp->callp);
  	}
  	else {
  	    /* file server */
- 	    rxconnp = cm_GetRxConn(connp);
  	    code = RXAFS_GetCapabilities(rxconnp, &caps);
  	    if (code == RXGEN_OPCODE)
  		code = RXAFS_GetTime(rxconnp, &secs, &usecs);
- 	    rx_PutConnection(rxconnp);
  	}
  	if (wasDown)
! 	    rx_SetConnDeadTime(connp->callp, ConnDeadtimeout);
  	cm_PutConn(connp);
      }	/* got an unauthenticated connection to this server */
  
--- 88,108 ----
  		  wasDown ? "down" : "up",
  		  tsp->capabilities);
  
+         rxconnp = cm_GetRxConn(connp);
  	if (wasDown)
! 	    rx_SetConnDeadTime(rxconnp, 10);
  	if (tsp->type == CM_SERVER_VLDB) {
! 	    code = VL_ProbeServer(rxconnp);
  	}
  	else {
  	    /* file server */
  	    code = RXAFS_GetCapabilities(rxconnp, &caps);
  	    if (code == RXGEN_OPCODE)
  		code = RXAFS_GetTime(rxconnp, &secs, &usecs);
  	}
  	if (wasDown)
! 	    rx_SetConnDeadTime(rxconnp, ConnDeadtimeout);
!         rx_PutConnection(rxconnp);
  	cm_PutConn(connp);
      }	/* got an unauthenticated connection to this server */
  
***************
*** 123,128 ****
--- 125,154 ----
  		  osi_LogSaveString(afsd_logp, hoststr), 
  		  tsp->type == CM_SERVER_VLDB ? "vldb" : "file",
  		  tsp->capabilities);
+ 
+         /* Now update the volume status if necessary */
+         if (wasDown) {
+             cm_server_vols_t * tsrvp;
+             cm_volume_t * volp;
+             int i;
+ 
+             lock_ReleaseMutex(&tsp->mx);
+             for (tsrvp = tsp->vols; tsrvp; tsrvp = tsrvp->nextp) {
+                 for (i=0; i<NUM_SERVER_VOLS; i++) {
+                     if (tsrvp->ids[i] != 0) {
+                         cm_InitReq(&req);
+ 
+                         code = cm_GetVolumeByID(tsp->cellp, tsrvp->ids[i], cm_rootUserp,
+                                                 &req, CM_GETVOL_FLAG_NO_LRU_UPDATE, &volp);
+                         if (code == 0) {
+                             cm_UpdateVolumeStatus(volp, tsrvp->ids[i]);
+                             cm_PutVolume(volp);
+                         }
+                     }
+                 }
+             }
+             lock_ObtainMutex(&tsp->mx);
+         }
      } else {
  	/* mark server as down */
  	tsp->flags |= CM_SERVERFLAG_DOWN;
***************
*** 133,138 ****
--- 159,188 ----
  		  osi_LogSaveString(afsd_logp, hoststr), 
  		  tsp->type == CM_SERVER_VLDB ? "vldb" : "file",
  		  tsp->capabilities);
+ 
+         /* Now update the volume status if necessary */
+         if (!wasDown) {
+             cm_server_vols_t * tsrvp;
+             cm_volume_t * volp;
+             int i;
+ 
+             lock_ReleaseMutex(&tsp->mx);
+             for (tsrvp = tsp->vols; tsrvp; tsrvp = tsrvp->nextp) {
+                 for (i=0; i<NUM_SERVER_VOLS; i++) {
+                     if (tsrvp->ids[i] != 0) {
+                         cm_InitReq(&req);
+ 
+                         code = cm_GetVolumeByID(tsp->cellp, tsrvp->ids[i], cm_rootUserp,
+                                                 &req, CM_GETVOL_FLAG_NO_LRU_UPDATE, &volp);
+                         if (code == 0) {
+                             cm_UpdateVolumeStatus(volp, tsrvp->ids[i]);
+                             cm_PutVolume(volp);
+                         }
+                     }
+                 }
+             }
+             lock_ObtainMutex(&tsp->mx);
+         }
      }
  
      if (tsp->waitCount == 0)
***************
*** 152,157 ****
--- 202,208 ----
      cm_server_t *tsp;
      int doPing;
      int isDown;
+     int isFS;
  
      lock_ObtainWrite(&cm_serverLock);
      for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
***************
*** 163,168 ****
--- 214,220 ----
  
          doPing = 0;
          isDown = tsp->flags & CM_SERVERFLAG_DOWN;
+         isFS   = tsp->type == CM_SERVER_FILE;
  
          /* only do the ping if the cell matches the requested cell, or we're
           * matching all cells (cellp == NULL), and if we've requested to ping
***************
*** 170,176 ****
           */
          if ((cellp == NULL || cellp == tsp->cellp) &&
               ((isDown && (flags & CM_FLAG_CHECKDOWNSERVERS)) ||
!                (!isDown && (flags & CM_FLAG_CHECKUPSERVERS)))) {
              doPing = 1;
          }	/* we're supposed to check this up/down server */
          lock_ReleaseMutex(&tsp->mx);
--- 222,232 ----
           */
          if ((cellp == NULL || cellp == tsp->cellp) &&
               ((isDown && (flags & CM_FLAG_CHECKDOWNSERVERS)) ||
!                (!isDown && (flags & CM_FLAG_CHECKUPSERVERS))) &&
!              ((!(flags & CM_FLAG_CHECKVLDBSERVERS) || 
!                !isFS && (flags & CM_FLAG_CHECKVLDBSERVERS)) &&
!               (!(flags & CM_FLAG_CHECKFILESERVERS) || 
!                  isFS && (flags & CM_FLAG_CHECKFILESERVERS)))) {
              doPing = 1;
          }	/* we're supposed to check this up/down server */
          lock_ReleaseMutex(&tsp->mx);
***************
*** 311,332 ****
      osi_assert(socketp->sin_family == AF_INET);
  
      tsp = malloc(sizeof(*tsp));
!     memset(tsp, 0, sizeof(*tsp));
!     tsp->type = type;
!     tsp->cellp = cellp;
!     tsp->refCount = 1;
!     lock_InitializeMutex(&tsp->mx, "cm_server_t mutex");
!     tsp->addr = *socketp;
!     tsp->flags = CM_SERVERFLAG_DOWN;	/* assume down; ping will mark up if available */
! 
!     cm_SetServerPrefs(tsp); 
! 
!     lock_ObtainWrite(&cm_serverLock); 	/* get server lock */
!     tsp->allNextp = cm_allServersp;
!     cm_allServersp = tsp;
!     lock_ReleaseWrite(&cm_serverLock); 	/* release server lock */
  
-     cm_PingServer(tsp);			/* Obtain Capabilities and check up/down state */
      return tsp;
  }
  
--- 367,406 ----
      osi_assert(socketp->sin_family == AF_INET);
  
      tsp = malloc(sizeof(*tsp));
!     if (tsp) {
!         memset(tsp, 0, sizeof(*tsp));
!         tsp->type = type;
!         tsp->cellp = cellp;
!         tsp->refCount = 1;
!         lock_InitializeMutex(&tsp->mx, "cm_server_t mutex");
!         tsp->addr = *socketp;
!         tsp->flags = CM_SERVERFLAG_DOWN;	/* assume down; ping will mark up if available */
! 
!         cm_SetServerPrefs(tsp); 
! 
!         lock_ObtainWrite(&cm_serverLock); 	/* get server lock */
!         tsp->allNextp = cm_allServersp;
!         cm_allServersp = tsp;
!         lock_ReleaseWrite(&cm_serverLock); 	/* release server lock */
! 
!         cm_PingServer(tsp);			/* Obtain Capabilities and check up/down state */
!     }
!     return tsp;
! }
! 
! cm_server_t *
! cm_FindServerByIP(afs_uint32 ipaddr, int type)
! {
!     cm_server_t *tsp;
! 
!     lock_ObtainRead(&cm_serverLock);
!     for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
!         if (tsp->type == type &&
!             tsp->addr.sin_addr.S_un.S_addr == ipaddr)
!             break;
!     }
!     lock_ReleaseRead(&cm_serverLock);
  
      return tsp;
  }
  
***************
*** 355,371 ****
      return tsp;
  }       
  
! cm_serverRef_t *cm_NewServerRef(cm_server_t *serverp)
  {
      cm_serverRef_t *tsrp;
  
      cm_GetServer(serverp);
      tsrp = malloc(sizeof(*tsrp));
      tsrp->server = serverp;
!     tsrp->status = not_busy;
      tsrp->next = NULL;
      tsrp->refCount = 1;
  
      return tsrp;
  }
  
--- 429,501 ----
      return tsp;
  }       
  
! cm_server_vols_t *cm_NewServerVols(void) {
!     cm_server_vols_t *tsvp;
! 
!     tsvp = malloc(sizeof(*tsvp));
!     if (tsvp)
!         memset(tsvp, 0, sizeof(*tsvp));
! 
!     return tsvp;
! }
! 
! cm_serverRef_t *cm_NewServerRef(cm_server_t *serverp, afs_uint32 volID)
  {
      cm_serverRef_t *tsrp;
+     cm_server_vols_t **tsrvpp = NULL;
+     afs_uint32 *slotp = NULL;
+     int found = 0;
  
      cm_GetServer(serverp);
      tsrp = malloc(sizeof(*tsrp));
      tsrp->server = serverp;
!     tsrp->status = srv_not_busy;
      tsrp->next = NULL;
+     tsrp->volID = volID;
      tsrp->refCount = 1;
  
+     /* if we have a non-zero volID, we need to add it to the list
+      * of volumes maintained by the server.  There are two phases:
+      * (1) see if the volID is already in the list and (2) insert
+      * it into the first empty slot if it is not.
+      */
+     if (volID) {
+         lock_ObtainMutex(&serverp->mx);
+ 
+         tsrvpp = &serverp->vols;
+         while (*tsrvpp) {
+             int i;
+ 
+             for (i=0; i<NUM_SERVER_VOLS; i++) {
+                 if ((*tsrvpp)->ids[i] == volID) {
+                     found = 1;
+                     break;
+                 } else if (!slotp && (*tsrvpp)->ids[i] == 0) {
+                     slotp = &(*tsrvpp)->ids[i];
+                 }
+             }
+ 
+             if (found)
+                 break;
+ 
+             tsrvpp = &(*tsrvpp)->nextp;
+         }
+ 
+         if (!found) {
+             if (slotp) {
+                 *slotp = volID;
+             } else {
+                 /* if we didn't find an empty slot in a current
+                  * page we must need a new page */
+                 *tsrvpp = cm_NewServerVols();
+                 if (*tsrvpp)
+                     (*tsrvpp)->ids[0] = volID;
+             }
+         }
+ 
+         lock_ReleaseMutex(&serverp->mx);
+     }
+ 
      return tsrp;
  }
  
***************
*** 515,520 ****
--- 645,652 ----
  /* call cm_FreeServer while holding a write lock on cm_serverLock */
  void cm_FreeServer(cm_server_t* serverp)
  {
+     cm_server_vols_t * tsrvp, *nextp;
+ 
      cm_PutServerNoLock(serverp);
      if (serverp->refCount == 0)
      {
***************
*** 538,549 ****
  		    }
  		}
              }
  	    free(serverp);
          }
      }
  }
  
! void cm_FreeServerList(cm_serverRef_t** list)
  {
      cm_serverRef_t  **current = list;
      cm_serverRef_t  **nextp = 0;
--- 670,706 ----
  		    }
  		}
              }
+ 
+             /* free the volid list */
+             for ( tsrvp = serverp->vols; tsrvp; tsrvp = nextp) {
+                 nextp = tsrvp->nextp;
+                 free(tsrvp);
+             }
+ 
  	    free(serverp);
          }
      }
  }
  
! void cm_RemoveVolumeFromServer(cm_server_t * serverp, afs_uint32 volID)
! {
!     cm_server_vols_t * tsrvp;
!     int i;
! 
!     if (volID == 0)
!         return;
! 
!     for (tsrvp = serverp->vols; tsrvp; tsrvp = tsrvp->nextp) {
!         for (i=0; i<NUM_SERVER_VOLS; i++) {
!             if (tsrvp->ids[i] == volID) {
!                 tsrvp->ids[i] = 0;;
!                 break;
!             }
!         }
!     }
! }
! 
! void cm_FreeServerList(cm_serverRef_t** list, afs_uint32 flags)
  {
      cm_serverRef_t  **current = list;
      cm_serverRef_t  **nextp = 0;
***************
*** 556,569 ****
          nextp = &(*current)->next;
          if (--((*current)->refCount) == 0) {
              next = *nextp;
              cm_FreeServer((*current)->server);
              free(*current);
              *current = next;
          } else {
!            current = nextp;
          }
      }
    
      lock_ReleaseWrite(&cm_serverLock);
  }
- 
--- 713,733 ----
          nextp = &(*current)->next;
          if (--((*current)->refCount) == 0) {
              next = *nextp;
+ 
+             if ((*current)->volID)
+                 cm_RemoveVolumeFromServer((*current)->server, (*current)->volID);
              cm_FreeServer((*current)->server);
              free(*current);
              *current = next;
          } else {
!             if (flags & CM_FREESERVERLIST_DELETE) {
!                 (*current)->status = srv_deleted;
!                 if ((*current)->volID)
!                     cm_RemoveVolumeFromServer((*current)->server, (*current)->volID);
!             }
!             current = nextp;
          }
      }
    
      lock_ReleaseWrite(&cm_serverLock);
  }
Index: openafs/src/WINNT/afsd/cm_server.h
diff -c openafs/src/WINNT/afsd/cm_server.h:1.13.2.3 openafs/src/WINNT/afsd/cm_server.h:1.13.2.8
*** openafs/src/WINNT/afsd/cm_server.h:1.13.2.3	Tue Jun 27 23:24:05 2006
--- openafs/src/WINNT/afsd/cm_server.h	Thu Jun 28 00:50:15 2007
***************
*** 17,22 ****
--- 17,29 ----
  #endif /* !DJGPP */
  #include <osi.h>
  
+ /* this value is set to 1022 in order to  */
+ #define NUM_SERVER_VOLS         (32 - sizeof(void *) / 4)
+ typedef struct cm_server_vols {
+     afs_uint32             ids[NUM_SERVER_VOLS];
+     struct cm_server_vols *nextp;
+ } cm_server_vols_t;
+ 
  /* pointed to by volumes and cells without holds; cm_serverLock is obtained
   * at the appropriate times to change the pointers to these servers.
   */
***************
*** 32,46 ****
      unsigned long refCount;		/* locked by cm_serverLock */
      osi_mutex_t mx;
      unsigned short ipRank;		/* server priority */
  } cm_server_t;
  
! enum repstate {not_busy, busy, offline};
  
  typedef struct cm_serverRef {
      struct cm_serverRef *next;      /* locked by cm_serverLock */
      struct cm_server *server;       /* locked by cm_serverLock */
      enum repstate status;           /* locked by cm_serverLock */
      unsigned long refCount;         /* locked by cm_serverLock */
  } cm_serverRef_t;
  
  /* types */
--- 39,55 ----
      unsigned long refCount;		/* locked by cm_serverLock */
      osi_mutex_t mx;
      unsigned short ipRank;		/* server priority */
+     cm_server_vols_t *  vols;           /* by mx */
  } cm_server_t;
  
! enum repstate {srv_not_busy, srv_busy, srv_offline, srv_deleted};
  
  typedef struct cm_serverRef {
      struct cm_serverRef *next;      /* locked by cm_serverLock */
      struct cm_server *server;       /* locked by cm_serverLock */
      enum repstate status;           /* locked by cm_serverLock */
      unsigned long refCount;         /* locked by cm_serverLock */
+     afs_uint32 volID;               /* locked by cm_serverLock */
  } cm_serverRef_t;
  
  /* types */
***************
*** 58,63 ****
--- 67,74 ----
  /* flags for procedures */
  #define CM_FLAG_CHECKUPSERVERS		1	/* check working servers */
  #define CM_FLAG_CHECKDOWNSERVERS	2	/* check down servers */
+ #define CM_FLAG_CHECKVLDBSERVERS        4       /* check only vldb servers */
+ #define CM_FLAG_CHECKFILESERVERS        8       /* check only file servers */
  
  /* values for ipRank */
  #define CM_IPRANK_TOP	5000	/* on same machine */
***************
*** 72,78 ****
  extern cm_server_t *cm_NewServer(struct sockaddr_in *addrp, int type,
  	struct cm_cell *cellp);
  
! extern cm_serverRef_t *cm_NewServerRef(struct cm_server *serverp);
  
  extern LONG_PTR cm_ChecksumServerList(cm_serverRef_t *serversp);
  
--- 83,89 ----
  extern cm_server_t *cm_NewServer(struct sockaddr_in *addrp, int type,
  	struct cm_cell *cellp);
  
! extern cm_serverRef_t *cm_NewServerRef(struct cm_server *serverp, afs_uint32 volID);
  
  extern LONG_PTR cm_ChecksumServerList(cm_serverRef_t *serversp);
  
***************
*** 104,110 ****
  
  extern void cm_FreeServer(cm_server_t* server);
  
! extern void cm_FreeServerList(cm_serverRef_t** list);
  
  extern void cm_ForceNewConnectionsAllServers(void);
  
--- 115,123 ----
  
  extern void cm_FreeServer(cm_server_t* server);
  
! #define CM_FREESERVERLIST_DELETE 1
! 
! extern void cm_FreeServerList(cm_serverRef_t** list, afs_uint32 flags);
  
  extern void cm_ForceNewConnectionsAllServers(void);
  
***************
*** 112,115 ****
--- 125,130 ----
  
  extern void cm_SetServerNoInlineBulk(cm_server_t * serverp, int no);
  
+ extern cm_server_t * cm_FindServerByIP(afs_uint32 addr, int type);
+ 
  #endif /*  __CM_SERVER_H_ENV__ */
Index: openafs/src/WINNT/afsd/cm_vnodeops.c
diff -c openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.30 openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.32
*** openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.30	Wed May  2 20:45:58 2007
--- openafs/src/WINNT/afsd/cm_vnodeops.c	Wed Jun 13 18:28:25 2007
***************
*** 24,34 ****
  
  #include "afsd.h"
  
- /* Used by cm_FollowMountPoint */
- #define RWVOL	0
- #define ROVOL	1
- #define BACKVOL	2
- 
  #ifdef DEBUG
  extern void afsi_log(char *pattern, ...);
  #endif
--- 24,29 ----
***************
*** 991,996 ****
--- 986,992 ----
      return code;
  }
  
+ 
  /* called with a locked scp and chases the mount point, yielding outScpp.
   * scp remains locked, just for simplicity of describing the interface.
   */
***************
*** 1067,1073 ****
  
      /* now we need to get the volume */
      lock_ReleaseMutex(&scp->mx);
!     code = cm_GetVolumeByName(cellp, volNamep, userp, reqp, 0, &volp);
      lock_ObtainMutex(&scp->mx);
          
      if (code == 0) {
--- 1063,1075 ----
  
      /* now we need to get the volume */
      lock_ReleaseMutex(&scp->mx);
!     if (cm_VolNameIsID(volNamep)) {
!         code = cm_GetVolumeByID(cellp, atoi(volNamep), userp, reqp, 
!                                 CM_GETVOL_FLAG_CREATE, &volp);
!     } else {
!         code = cm_GetVolumeByName(cellp, volNamep, userp, reqp, 
!                                   CM_GETVOL_FLAG_CREATE, &volp);
!     }
      lock_ObtainMutex(&scp->mx);
          
      if (code == 0) {
***************
*** 1088,1101 ****
           * the read-only, otherwise use the one specified.
           */
          if (mtType == '#' && (scp->flags & CM_SCACHEFLAG_PURERO)
!              && volp->roID != 0 && type == RWVOL)
              type = ROVOL;
          if (type == ROVOL)
!             scp->mountRootFid.volume = volp->roID;
          else if (type == BACKVOL)
!             scp->mountRootFid.volume = volp->bkID;
          else
!             scp->mountRootFid.volume = volp->rwID;
  
          /* the rest of the fid is a magic number */
          scp->mountRootFid.vnode = 1;
--- 1090,1103 ----
           * the read-only, otherwise use the one specified.
           */
          if (mtType == '#' && (scp->flags & CM_SCACHEFLAG_PURERO)
!              && volp->ro.ID != 0 && type == RWVOL)
              type = ROVOL;
          if (type == ROVOL)
!             scp->mountRootFid.volume = volp->ro.ID;
          else if (type == BACKVOL)
!             scp->mountRootFid.volume = volp->bk.ID;
          else
!             scp->mountRootFid.volume = volp->rw.ID;
  
          /* the rest of the fid is a magic number */
          scp->mountRootFid.vnode = 1;
***************
*** 1292,1297 ****
--- 1294,1407 ----
      return 1;
  }   
  
+ long cm_EvaluateVolumeReference(char * namep, long flags, cm_user_t * userp,
+                                 cm_req_t *reqp, cm_scache_t ** outpScpp)
+ {
+     long          code = 0;
+     char          cellName[CELL_MAXNAMELEN];
+     char          volumeName[VL_MAXNAMELEN];
+     size_t        len;
+     char *        cp;
+     char *        tp;
+ 
+     cm_cell_t *   cellp = NULL;
+     cm_volume_t * volp = NULL;
+     cm_fid_t      fid;
+     int           volType;
+     int           mountType = RWVOL;
+ 
+     osi_Log1(afsd_logp, "cm_EvaluateVolumeReference for string [%s]",
+              osi_LogSaveString(afsd_logp, namep));
+ 
+     if (strnicmp(namep, CM_PREFIX_VOL, CM_PREFIX_VOL_CCH) != 0) {
+         goto _exit_invalid_path;
+     }
+ 
+     /* namep is assumed to look like the following:
+ 
+        @vol:<cellname>%<volume>\0
+        or
+        @vol:<cellname>#<volume>\0
+ 
+      */
+ 
+     cp = namep + CM_PREFIX_VOL_CCH; /* cp points to cell name, hopefully */
+     tp = strchr(cp, '%');
+     if (tp == NULL)
+         tp = strchr(cp, '#');
+     if (tp == NULL ||
+         (len = tp - cp) == 0 ||
+         len > CELL_MAXNAMELEN)
+         goto _exit_invalid_path;
+     strncpy(cellName, cp, len);
+     cellName[len] = '\0';
+ 
+     if (*tp == '#')
+         mountType = ROVOL;
+ 
+     cp = tp+1;                  /* cp now points to volume, supposedly */
+     strncpy(volumeName, cp, VL_MAXNAMELEN-1);
+     volumeName[VL_MAXNAMELEN - 1] = 0;
+ 
+     /* OK, now we have the cell and the volume */
+     osi_Log2(afsd_logp, "   Found cell [%s] and volume [%s]",
+              osi_LogSaveString(afsd_logp, cellName),
+              osi_LogSaveString(afsd_logp, volumeName));
+ 
+     cellp = cm_GetCell(cellName, CM_FLAG_CREATE);
+     if (cellp == NULL) {
+         goto _exit_invalid_path;
+     }
+ 
+     len = strlen(volumeName);
+     if (len >= 8 && strcmp(volumeName + len - 7, ".backup") == 0)
+         volType = BACKVOL;
+     else if (len >= 10 &&
+              strcmp(volumeName + len - 9, ".readonly") == 0)
+         volType = ROVOL;
+     else
+         volType = RWVOL;
+ 
+     if (cm_VolNameIsID(volumeName)) {
+         code = cm_GetVolumeByID(cellp, atoi(volumeName), userp, reqp,
+                                 CM_GETVOL_FLAG_CREATE, &volp);
+     } else {
+         code = cm_GetVolumeByName(cellp, volumeName, userp, reqp,
+                                   CM_GETVOL_FLAG_CREATE, &volp);
+     }
+ 
+     if (code != 0)
+         goto _exit_cleanup;
+ 
+     fid.cell = cellp->cellID;
+ 
+     if (volType == BACKVOL)
+         fid.volume = volp->bk.ID;
+     else if (volType == ROVOL ||
+              (volType == RWVOL && mountType == ROVOL && volp->ro.ID != 0))
+         fid.volume = volp->ro.ID;
+     else
+         fid.volume = volp->rw.ID;
+ 
+     fid.vnode = 1;
+     fid.unique = 1;
+ 
+     code = cm_GetSCache(&fid, outpScpp, userp, reqp);
+ 
+  _exit_cleanup:
+     if (volp)
+         cm_PutVolume(volp);
+ 
+     if (code == 0)
+         return code;
+ 
+  _exit_invalid_path:
+     if (flags & CM_FLAG_CHECKPATH)
+         return CM_ERROR_NOSUCHPATH;
+     else
+         return CM_ERROR_NOSUCHFILE;
+ }
+ 
  #ifdef DEBUG_REFCOUNT
  long cm_LookupDbg(cm_scache_t *dscp, char *namep, long flags, cm_user_t *userp,
                 cm_req_t *reqp, cm_scache_t **outpScpp, char * file, long line)
***************
*** 1317,1348 ****
              return CM_ERROR_NOSUCHFILE;
      }
  
!     for ( sysNameIndex = 0; sysNameIndex < MAXNUMSYSNAMES; sysNameIndex++) {
!         code = cm_ExpandSysName(namep, tname, sizeof(tname), sysNameIndex);
!         if (code > 0) {
!             code = cm_LookupInternal(dscp, tname, flags, userp, reqp, &scp);
  #ifdef DEBUG_REFCOUNT
! 	    afsi_log("%s:%d cm_LookupInternal (1) code 0x%x dscp 0x%p ref %d scp 0x%p ref %d", file, line, code, dscp, dscp->refCount, scp, scp ? scp->refCount : 0);
! 	    osi_Log3(afsd_logp, "cm_LookupInternal (1) code 0x%x dscp 0x%p scp 0x%p", code, dscp, scp);
  #endif
  
!             if (code == 0) {
                  *outpScpp = scp;
!                 return 0;
!             }
!             if (scp) {
!                 cm_ReleaseSCache(scp);
!                 scp = NULL;
              }
!         } else {
!             code = cm_LookupInternal(dscp, namep, flags, userp, reqp, &scp);
  #ifdef DEBUG_REFCOUNT
! 	    afsi_log("%s:%d cm_LookupInternal (2) code 0x%x dscp 0x%p ref %d scp 0x%p ref %d", file, line, code, dscp, dscp->refCount, scp, scp ? scp->refCount : 0);
! 	    osi_Log3(afsd_logp, "cm_LookupInternal (2) code 0x%x dscp 0x%p scp 0x%p", code, dscp, scp);
  #endif
! 	    *outpScpp = scp;
! 	    return code;
!         }
      }
  
      /* None of the possible sysName expansions could be found */
--- 1427,1473 ----
              return CM_ERROR_NOSUCHFILE;
      }
  
!     if (dscp == cm_data.rootSCachep &&
!         strnicmp(namep, CM_PREFIX_VOL, CM_PREFIX_VOL_CCH) == 0) {
!         return cm_EvaluateVolumeReference(namep, flags, userp, reqp, outpScpp);
!     }
! 
!     if (cm_ExpandSysName(namep, NULL, 0, 0) > 0) {
!         for ( sysNameIndex = 0; sysNameIndex < MAXNUMSYSNAMES; sysNameIndex++) {
!             code = cm_ExpandSysName(namep, tname, sizeof(tname), sysNameIndex);
!             if (code > 0) {
!                 code = cm_LookupInternal(dscp, tname, flags, userp, reqp, &scp);
  #ifdef DEBUG_REFCOUNT
!                 afsi_log("%s:%d cm_LookupInternal (1) code 0x%x dscp 0x%p ref %d scp 0x%p ref %d", file, line, code, dscp, dscp->refCount, scp, scp ? scp->refCount : 0);
!                 osi_Log3(afsd_logp, "cm_LookupInternal (1) code 0x%x dscp 0x%p scp 0x%p", code, dscp, scp);
  #endif
  
!                 if (code == 0) {
!                     *outpScpp = scp;
!                     return 0;
!                 }
!                 if (scp) {
!                     cm_ReleaseSCache(scp);
!                     scp = NULL;
!                 }
!             } else {
!                 code = cm_LookupInternal(dscp, namep, flags, userp, reqp, &scp);
! #ifdef DEBUG_REFCOUNT
!                 afsi_log("%s:%d cm_LookupInternal (2) code 0x%x dscp 0x%p ref %d scp 0x%p ref %d", file, line, code, dscp, dscp->refCount, scp, scp ? scp->refCount : 0);
!                 osi_Log3(afsd_logp, "cm_LookupInternal (2) code 0x%x dscp 0x%p scp 0x%p", code, dscp, scp);
! #endif
                  *outpScpp = scp;
!                 return code;
              }
!         }
!     } else {
!         code = cm_LookupInternal(dscp, namep, flags, userp, reqp, &scp);
  #ifdef DEBUG_REFCOUNT
!         afsi_log("%s:%d cm_LookupInternal (2) code 0x%x dscp 0x%p ref %d scp 0x%p ref %d", file, line, code, dscp, dscp->refCount, scp, scp ? scp->refCount : 0);
!         osi_Log3(afsd_logp, "cm_LookupInternal (2) code 0x%x dscp 0x%p scp 0x%p", code, dscp, scp);
  #endif
!         *outpScpp = scp;
!         return code;
      }
  
      /* None of the possible sysName expansions could be found */
***************
*** 1385,1391 ****
  
      osi_Log1(afsd_logp, "CALL RemoveFile scp 0x%p", dscp);
      do {
!         code = cm_Conn(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 1510,1516 ----
  
      osi_Log1(afsd_logp, "CALL RemoveFile scp 0x%p", dscp);
      do {
!         code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 2026,2032 ****
          cm_StartCallbackGrantingCall(NULL, &cbReq);
          osi_Log1(afsd_logp, "CALL BulkStatus, %d entries", filesThisCall);
          do {
!             code = cm_Conn(&dscp->fid, userp, reqp, &connp);
              if (code) 
                  continue;
  
--- 2151,2157 ----
          cm_StartCallbackGrantingCall(NULL, &cbReq);
          osi_Log1(afsd_logp, "CALL BulkStatus, %d entries", filesThisCall);
          do {
!             code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
              if (code) 
                  continue;
  
***************
*** 2294,2300 ****
      /* now make the RPC */
      osi_Log1(afsd_logp, "CALL StoreStatus scp 0x%p", scp);
      do {
!         code = cm_Conn(&scp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 2419,2425 ----
      /* now make the RPC */
      osi_Log1(afsd_logp, "CALL StoreStatus scp 0x%p", scp);
      do {
!         code = cm_ConnFromFID(&scp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 2372,2378 ****
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL CreateFile scp 0x%p", dscp);
      do {
!         code = cm_Conn(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 2497,2503 ----
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL CreateFile scp 0x%p", dscp);
      do {
!         code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 2506,2512 ****
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL MakeDir scp 0x%p", dscp);
      do {
!         code = cm_Conn(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 2631,2637 ----
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL MakeDir scp 0x%p", dscp);
      do {
!         code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 2597,2603 ****
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL Link scp 0x%p", dscp);
      do {
!         code = cm_Conn(&dscp->fid, userp, reqp, &connp);
          if (code) continue;
  
          dirAFSFid.Volume = dscp->fid.volume;
--- 2722,2728 ----
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL Link scp 0x%p", dscp);
      do {
!         code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
          if (code) continue;
  
          dirAFSFid.Volume = dscp->fid.volume;
***************
*** 2665,2671 ****
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL Symlink scp 0x%p", dscp);
      do {
!         code = cm_Conn(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 2790,2796 ----
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL Symlink scp 0x%p", dscp);
      do {
!         code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 2747,2753 ****
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL RemoveDir scp 0x%p", dscp);
      do {
!         code = cm_Conn(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 2872,2878 ----
      /* try the RPC now */
      osi_Log1(afsd_logp, "CALL RemoveDir scp 0x%p", dscp);
      do {
!         code = cm_ConnFromFID(&dscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 2899,2905 ****
      osi_Log2(afsd_logp, "CALL Rename old scp 0x%p new scp 0x%p", 
                oldDscp, newDscp);
      do {
!         code = cm_Conn(&oldDscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
--- 3024,3030 ----
      osi_Log2(afsd_logp, "CALL Rename old scp 0x%p new scp 0x%p", 
                oldDscp, newDscp);
      do {
!         code = cm_ConnFromFID(&oldDscp->fid, userp, reqp, &connp);
          if (code) 
              continue;
  
***************
*** 3483,3489 ****
      lock_ReleaseMutex(&scp->mx);
  
      do {
!         code = cm_Conn(&cfid, userp, reqp, &connp);
          if (code) 
              break;
  
--- 3608,3614 ----
      lock_ReleaseMutex(&scp->mx);
  
      do {
!         code = cm_ConnFromFID(&cfid, userp, reqp, &connp);
          if (code) 
              break;
  
***************
*** 3527,3533 ****
      osi_Log1(afsd_logp, "CALL ReleaseLock scp 0x%p", scp);
  
      do {
!         code = cm_Conn(&cfid, userp, reqp, &connp);
          if (code) 
              break;
  
--- 3652,3658 ----
      osi_Log1(afsd_logp, "CALL ReleaseLock scp 0x%p", scp);
  
      do {
!         code = cm_ConnFromFID(&cfid, userp, reqp, &connp);
          if (code) 
              break;
  
***************
*** 3910,3920 ****
  
              if (code != 0 &&
                  (scp->sharedLocks > 0 || scp->exclusiveLocks > 0) &&
!                     scp->serverLock == -1) {
!                     /* Oops. We lost the lock. */
!                     cm_LockMarkSCacheLost(scp);
!                 }
              }
      } else if (code == 0) {     /* server locks not enabled */
          osi_Log0(afsd_logp,
                   "  Skipping server lock for scp");
--- 4035,4045 ----
  
              if (code != 0 &&
                  (scp->sharedLocks > 0 || scp->exclusiveLocks > 0) &&
!                 scp->serverLock == -1) {
!                 /* Oops. We lost the lock. */
!                 cm_LockMarkSCacheLost(scp);
              }
+         }
      } else if (code == 0) {     /* server locks not enabled */
          osi_Log0(afsd_logp,
                   "  Skipping server lock for scp");
***************
*** 4527,4533 ****
                      lock_ReleaseMutex(&scp->mx);
  
                      do {
!                         code = cm_Conn(&cfid, userp,
                                         &req, &connp);
                          if (code) 
                              break;
--- 4652,4658 ----
                      lock_ReleaseMutex(&scp->mx);
  
                      do {
!                         code = cm_ConnFromFID(&cfid, userp,
                                         &req, &connp);
                          if (code) 
                              break;
***************
*** 4967,4975 ****
      cm_file_lock_t *fileLock;
      unsigned int i;
  
!     for (i = 0; i < cm_data.hashTableSize; i++)
      {
! 	for ( scp = cm_data.hashTablep[i]; scp; scp = scp->nextp ) {
  	    while (scp->fileLocksH != NULL) {
  		lock_ObtainMutex(&scp->mx);
  		lock_ObtainWrite(&cm_scacheLock);
--- 5092,5100 ----
      cm_file_lock_t *fileLock;
      unsigned int i;
  
!     for (i = 0; i < cm_data.scacheHashTableSize; i++)
      {
! 	for ( scp = cm_data.scacheHashTablep[i]; scp; scp = scp->nextp ) {
  	    while (scp->fileLocksH != NULL) {
  		lock_ObtainMutex(&scp->mx);
  		lock_ObtainWrite(&cm_scacheLock);
Index: openafs/src/WINNT/afsd/cm_vnodeops.h
diff -c openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.4 openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.5
*** openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.4	Sun Dec 17 16:07:23 2006
--- openafs/src/WINNT/afsd/cm_vnodeops.h	Wed Jun 13 18:28:25 2007
***************
*** 45,50 ****
--- 45,61 ----
  typedef int (*cm_DirFuncp_t)(struct cm_scache *, struct cm_dirEntry *, void *,
  	osi_hyper_t *entryOffsetp);
  
+ /* Special path syntax for direct references to volumes
+ 
+    The syntax: @vol:<cellname>{%,#}<volume> can be used to refer to a
+    specific volume in a specific cell, where:
+ 
+    <cellname> : name of the cell
+    <volume>   : volume name or ID
+  */
+ #define CM_PREFIX_VOL "@vol:"
+ #define CM_PREFIX_VOL_CCH 5
+ 
  /* arrays */
  
  extern unsigned char cm_foldUpper[];
***************
*** 69,75 ****
                                 char *shortName, char **shortNameEndp);
  
  extern long cm_ReadMountPoint(cm_scache_t *scp, cm_user_t *userp,
! 	cm_req_t *reqp);
  
  #ifdef DEBUG_REFCOUNT
  extern long cm_NameIDbg(cm_scache_t *rootSCachep, char *pathp, long flags,
--- 80,89 ----
                                 char *shortName, char **shortNameEndp);
  
  extern long cm_ReadMountPoint(cm_scache_t *scp, cm_user_t *userp,
!                               cm_req_t *reqp);
! 
! extern long cm_EvaluateVolumeReference(char * namep, long flags, cm_user_t * userp,
!                                        cm_req_t *reqp, cm_scache_t ** outpScpp);
  
  #ifdef DEBUG_REFCOUNT
  extern long cm_NameIDbg(cm_scache_t *rootSCachep, char *pathp, long flags,
Index: openafs/src/WINNT/afsd/cm_volstat.c
diff -c /dev/null openafs/src/WINNT/afsd/cm_volstat.c:1.1.2.2
*** /dev/null	Wed Jul 11 00:47:27 2007
--- openafs/src/WINNT/afsd/cm_volstat.c	Thu Jul  5 15:22:16 2007
***************
*** 0 ****
--- 1,286 ----
+ /* Copyright 2007 Secure Endpoints Inc.
+  *
+  * BSD 2-part License 
+  */
+ 
+ /* This source file provides the declarations 
+  * which specify the AFS Cache Manager Volume Status Event
+  * Notification API
+  */
+ 
+ #include <afs/param.h>
+ #include <afs/stds.h>
+ 
+ #include <windows.h>
+ #include <winsock2.h>
+ #include <nb30.h>
+ #include <string.h>
+ #include <malloc.h>
+ #include "afsd.h"
+ #include <WINNT/afsreg.h>
+ 
+ HMODULE hVolStatus = NULL;
+ dll_VolStatus_Funcs_t dll_funcs;
+ cm_VolStatus_Funcs_t cm_funcs;
+ 
+ /* This function is used to load any Volume Status Handlers 
+  * and their associated function pointers.  
+  */
+ long 
+ cm_VolStatus_Initialization(void)
+ {
+     long (__fastcall * dll_VolStatus_Initialization)(dll_VolStatus_Funcs_t * dll_funcs, cm_VolStatus_Funcs_t *cm_funcs) = NULL;
+     long code = 0;
+     HKEY parmKey;
+     DWORD dummyLen;
+     char wd[MAX_PATH+1] = "";
+ 
+     code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY,
+                          0, KEY_QUERY_VALUE, &parmKey);
+     if (code == ERROR_SUCCESS) {
+         dummyLen = sizeof(wd);
+         code = RegQueryValueEx(parmKey, "VolStatusHandler", NULL, NULL,
+                                 (BYTE *) &wd, &dummyLen);
+         RegCloseKey (parmKey);
+     }
+ 
+     if (code == ERROR_SUCCESS && wd[0])
+         hVolStatus = LoadLibrary(wd);
+     if (hVolStatus) {
+         (FARPROC) dll_VolStatus_Initialization = GetProcAddress(hVolStatus, "@VolStatus_Initialization@8");
+         if (dll_VolStatus_Initialization) {
+             cm_funcs.version = CM_VOLSTATUS_FUNCS_VERSION;
+             cm_funcs.cm_VolStatus_Path_To_ID = cm_VolStatus_Path_To_ID;
+             cm_funcs.cm_VolStatus_Path_To_DFSlink = cm_VolStatus_Path_To_DFSlink;
+ 
+             code = dll_VolStatus_Initialization(&dll_funcs, &cm_funcs);
+         } 
+ 
+         if (dll_VolStatus_Initialization == NULL || code != 0 || 
+             dll_funcs.version != DLL_VOLSTATUS_FUNCS_VERSION) {
+             FreeLibrary(hVolStatus);
+             hVolStatus = NULL;
+             code = -1;
+         }
+     }
+ 
+     return code;
+ }
+ 
+ /* This function is used to unload any Volume Status Handlers
+  * that were loaded during initialization.
+  */
+ long 
+ cm_VolStatus_Finalize(void)
+ {
+     if (hVolStatus == NULL)
+         return 0;
+ 
+     FreeLibrary(hVolStatus);
+     hVolStatus = NULL;
+     return 0;
+ }
+ 
+ /* This function notifies the Volume Status Handlers that the
+  * AFS client service has started.  If the network is started
+  * at this point we call cm_VolStatus_Network_Started().
+  */
+ long 
+ cm_VolStatus_Service_Started(void)
+ {
+     long code = 0;
+ 
+     if (hVolStatus == NULL)
+         return 0;
+    
+     code = dll_funcs.dll_VolStatus_Service_Started();
+     if (code == 0 && smb_IsNetworkStarted())
+         code = dll_funcs.dll_VolStatus_Network_Started(cm_NetbiosName, cm_NetbiosName);
+ 
+     return code;
+ }
+ 
+ /* This function notifies the Volume Status Handlers that the
+  * AFS client service is stopping.
+  */
+ long 
+ cm_VolStatus_Service_Stopped(void)
+ {
+     long code = 0;
+ 
+     if (hVolStatus == NULL)
+         return 0;
+    
+     code = dll_funcs.dll_VolStatus_Service_Stopped();
+ 
+     return code;
+ }
+ 
+ 
+ /* This function notifies the Volume Status Handlers that the
+  * AFS client service is accepting network requests using the 
+  * specified netbios names.
+  */
+ long
+ #ifdef _WIN64
+ cm_VolStatus_Network_Started(const char * netbios32, const char * netbios64)
+ #else /* _WIN64 */
+ cm_VolStatus_Network_Started(const char * netbios)
+ #endif /* _WIN64 */
+ {
+     long code = 0;
+ 
+     if (hVolStatus == NULL)
+         return 0;
+ 
+ #ifdef _WIN64
+     code = dll_funcs.dll_VolStatus_Network_Started(netbios32, netbios64);
+ #else
+     code = dll_funcs.dll_VolStatus_Network_Started(netbios, netbios);
+ #endif
+ 
+     return code;
+ }
+ 
+ /* This function notifies the Volume Status Handlers that the
+  * AFS client service is no longer accepting network requests 
+  * using the specified netbios names 
+  */
+ long
+ #ifdef _WIN64
+ cm_VolStatus_Network_Stopped(const char * netbios32, const char * netbios64)
+ #else /* _WIN64 */
+ cm_VolStatus_Network_Stopped(const char * netbios)
+ #endif /* _WIN64 */
+ {
+     long code = 0;
+ 
+     if (hVolStatus == NULL)
+         return 0;
+ 
+ #ifdef _WIN64
+     code = dll_funcs.dll_VolStatus_Network_Stopped(netbios32, netbios64);
+ #else
+     code = dll_funcs.dll_VolStatus_Network_Stopped(netbios, netbios);
+ #endif
+ 
+     return code;
+ }
+ 
+ /* This function is called when the IP address list changes.
+  * Volume Status Handlers can use this notification as a hint 
+  * that it might be possible to determine volume IDs for paths 
+  * that previously were not accessible.  
+  */
+ long 
+ cm_VolStatus_Network_Addr_Change(void)
+ {
+     long code = 0;
+ 
+     if (hVolStatus == NULL)
+         return 0;
+ 
+     code = dll_funcs.dll_VolStatus_Network_Addr_Change();
+ 
+     return code;
+ }
+ 
+ /* This function notifies the Volume Status Handlers that the 
+  * state of the specified cell.volume has changed.
+  */
+ long 
+ cm_VolStatus_Change_Notification(afs_uint32 cellID, afs_uint32 volID, enum volstatus status)
+ {
+     long code = 0;
+ 
+     if (hVolStatus == NULL)
+         return 0;
+ 
+     code = dll_funcs.dll_VolStatus_Change_Notification(cellID, volID, status);
+ 
+     return code;
+ }
+ 
+ 
+ long __fastcall
+ cm_VolStatus_Path_To_ID(const char * share, const char * path, afs_uint32 * cellID, afs_uint32 * volID)
+ {
+     afs_uint32  code;
+     cm_req_t    req;
+     cm_scache_t *scp;
+ 
+     if (cellID == NULL || volID == NULL)
+         return CM_ERROR_INVAL;
+ 
+     cm_InitReq(&req);
+ 
+ 
+     code = cm_NameI(cm_data.rootSCachep, (char *)path, CM_FLAG_FOLLOW, cm_rootUserp, (char *)share, &req, &scp);
+     if (code)
+         return code;
+ 
+     lock_ObtainMutex(&scp->mx);
+     code = cm_SyncOp(scp, NULL,cm_rootUserp, &req, 0,
+                      CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
+     if (code) {
+         lock_ReleaseMutex(&scp->mx);
+         cm_ReleaseSCache(scp);
+         return code;
+     }
+         
+     cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
+ 
+     *cellID = scp->fid.cell;
+     *volID  = scp->fid.volume;
+ 
+     lock_ReleaseMutex(&scp->mx);
+     cm_ReleaseSCache(scp);
+ 
+     return 0;
+ }
+ 
+ long __fastcall
+ cm_VolStatus_Path_To_DFSlink(const char * share, const char * path, afs_uint32 *pBufSize, char *pBuffer)
+ {
+     afs_uint32  code;
+     cm_req_t    req;
+     cm_scache_t *scp;
+     size_t      len;
+ 
+     if (pBufSize == NULL || (pBuffer == NULL && *pBufSize != 0))
+         return CM_ERROR_INVAL;
+ 
+     cm_InitReq(&req);
+ 
+     code = cm_NameI(cm_data.rootSCachep, (char *)path, CM_FLAG_FOLLOW, cm_rootUserp, (char *)share, &req, &scp);
+     if (code)
+         return code;
+ 
+     lock_ObtainMutex(&scp->mx);
+     code = cm_SyncOp(scp, NULL, cm_rootUserp, &req, 0,
+                      CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
+     if (code) {
+         lock_ReleaseMutex(&scp->mx);
+         cm_ReleaseSCache(scp);
+         return code;
+     }
+         
+     cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
+ 
+     if (scp->fileType != CM_SCACHETYPE_DFSLINK)
+         return CM_ERROR_NOT_A_DFSLINK;
+ 
+     len = strlen(scp->mountPointStringp) + 1;
+     if (pBuffer == NULL)
+         *pBufSize = len;
+     else if (*pBufSize >= len) {
+         strcpy(pBuffer, scp->mountPointStringp);
+         *pBufSize = len;
+     } else 
+         code = CM_ERROR_TOOBIG;
+ 
+     lock_ReleaseMutex(&scp->mx);
+     cm_ReleaseSCache(scp);
+ 
+     return 0;
+ }
Index: openafs/src/WINNT/afsd/cm_volstat.h
diff -c /dev/null openafs/src/WINNT/afsd/cm_volstat.h:1.1.2.3
*** /dev/null	Wed Jul 11 00:47:27 2007
--- openafs/src/WINNT/afsd/cm_volstat.h	Fri Jul  6 19:22:04 2007
***************
*** 0 ****
--- 1,55 ----
+ /* Copyright 2007 Secure Endpoints Inc.
+  *
+  * BSD 2-part License 
+  */
+ 
+ /* This header file provides the definitions and prototypes 
+  * which specify the AFS Cache Manager Volume Status Event
+  * Notification API
+  */
+ 
+ 
+ extern long cm_VolStatus_Initialization(void);
+ 
+ extern long cm_VolStatus_Finalize(void);
+ 
+ extern long cm_VolStatus_Service_Started(void);
+ 
+ extern long cm_VolStatus_Service_Stopped(void);
+ 
+ #ifdef _WIN64
+ extern long cm_VolStatus_Network_Started(const char * netbios32, const char * netbios64);
+ 
+ extern long cm_VolStatus_Network_Stopped(const char * netbios32, const char * netbios64);
+ #else /* _WIN64 */
+ extern long cm_VolStatus_Network_Started(const char * netbios);
+ 
+ extern long cm_VolStatus_Network_Stopped(const char * netbios);
+ #endif /* _WIN64 */
+ 
+ extern long cm_VolStatus_Network_Addr_Change(void);
+ 
+ extern long cm_VolStatus_Change_Notification(afs_uint32 cellID, afs_uint32 volID, enum volstatus status);
+ 
+ extern long __fastcall cm_VolStatus_Path_To_ID(const char * share, const char * path, afs_uint32 * cellID, afs_uint32 * volID);
+ 
+ extern long __fastcall cm_VolStatus_Path_To_DFSlink(const char * share, const char * path, afs_uint32 *pBufSize, char *pBuffer);
+ 
+ #define DLL_VOLSTATUS_FUNCS_VERSION 1
+ typedef struct dll_VolStatus_Funcs {
+     afs_uint32          version;
+     long (__fastcall * dll_VolStatus_Service_Started)(void);
+     long (__fastcall * dll_VolStatus_Service_Stopped)(void);
+     long (__fastcall * dll_VolStatus_Network_Started)(const char *netbios32, const char *netbios64);
+     long (__fastcall * dll_VolStatus_Network_Stopped)(const char *netbios32, const char *netbios64);
+     long (__fastcall * dll_VolStatus_Network_Addr_Change)(void);
+     long (__fastcall * dll_VolStatus_Change_Notification)(afs_uint32 cellID, afs_uint32 volID, enum volstatus status);
+ } dll_VolStatus_Funcs_t;
+ 
+ #define CM_VOLSTATUS_FUNCS_VERSION 1
+ typedef struct cm_VolStatus_Funcs {
+     afs_uint32          version;
+     long (__fastcall * cm_VolStatus_Path_To_ID)(const char * share, const char * path, afs_uint32 * cellID, afs_uint32 * volID);
+     long (__fastcall * cm_VolStatus_Path_To_DFSlink)(const char * share, const char * path, afs_uint32 *pBufSize, char *pBuffer);
+ } cm_VolStatus_Funcs_t;
+ 
Index: openafs/src/WINNT/afsd/cm_volume.c
diff -c openafs/src/WINNT/afsd/cm_volume.c:1.14.4.8 openafs/src/WINNT/afsd/cm_volume.c:1.14.4.13
*** openafs/src/WINNT/afsd/cm_volume.c:1.14.4.8	Fri May  4 02:06:13 2007
--- openafs/src/WINNT/afsd/cm_volume.c	Thu Jul  5 15:22:16 2007
***************
*** 31,37 ****
      cm_volume_t * volp;
      afs_uint32 count;
  
!     for (volp = cm_data.allVolumesp, count = 0; volp; volp=volp->nextp, count++) {
          if ( volp->magic != CM_VOLUME_MAGIC ) {
              afsi_log("cm_ValidateVolume failure: volp->magic != CM_VOLUME_MAGIC");
              fprintf(stderr, "cm_ValidateVolume failure: volp->magic != CM_VOLUME_MAGIC\n");
--- 31,37 ----
      cm_volume_t * volp;
      afs_uint32 count;
  
!     for (volp = cm_data.allVolumesp, count = 0; volp; volp=volp->allNextp, count++) {
          if ( volp->magic != CM_VOLUME_MAGIC ) {
              afsi_log("cm_ValidateVolume failure: volp->magic != CM_VOLUME_MAGIC");
              fprintf(stderr, "cm_ValidateVolume failure: volp->magic != CM_VOLUME_MAGIC\n");
***************
*** 42,50 ****
              fprintf(stderr, "cm_ValidateVolume failure: volp->cellp->magic != CM_CELL_MAGIC\n");
              return -2;
          }
!         if ( volp->nextp && volp->nextp->magic != CM_VOLUME_MAGIC ) {
!             afsi_log("cm_ValidateVolume failure: volp->nextp->magic != CM_VOLUME_MAGIC");
!             fprintf(stderr, "cm_ValidateVolume failure: volp->nextp->magic != CM_VOLUME_MAGIC\n");
              return -3;
          }
          if ( count != 0 && volp == cm_data.allVolumesp || 
--- 42,50 ----
              fprintf(stderr, "cm_ValidateVolume failure: volp->cellp->magic != CM_CELL_MAGIC\n");
              return -2;
          }
!         if ( volp->allNextp && volp->allNextp->magic != CM_VOLUME_MAGIC ) {
!             afsi_log("cm_ValidateVolume failure: volp->allNextp->magic != CM_VOLUME_MAGIC");
!             fprintf(stderr, "cm_ValidateVolume failure: volp->allNextp->magic != CM_VOLUME_MAGIC\n");
              return -3;
          }
          if ( count != 0 && volp == cm_data.allVolumesp || 
***************
*** 69,76 ****
  {
      cm_volume_t * volp;
  
!     for (volp = cm_data.allVolumesp; volp; volp=volp->nextp)
          lock_FinalizeMutex(&volp->mx);
  
      return 0;
  }
--- 69,85 ----
  {
      cm_volume_t * volp;
  
!     for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
! 
!         if (volp->rw.ID)
!             cm_VolumeStatusNotification(volp, volp->rw.ID, volp->rw.state, vl_alldown);
!         if (volp->ro.ID)
!             cm_VolumeStatusNotification(volp, volp->ro.ID, volp->ro.state, vl_alldown);
!         if (volp->bk.ID)
!             cm_VolumeStatusNotification(volp, volp->bk.ID, volp->bk.state, vl_alldown);
! 
          lock_FinalizeMutex(&volp->mx);
+     }
  
      return 0;
  }
***************
*** 86,106 ****
              cm_data.allVolumesp = NULL;
              cm_data.currentVolumes = 0;
              cm_data.maxVolumes = maxVols;
          } else {
              cm_volume_t * volp;
  
!             for (volp = cm_data.allVolumesp; volp; volp=volp->nextp) {
                  lock_InitializeMutex(&volp->mx, "cm_volume_t mutex");
                  volp->flags |= CM_VOLUMEFLAG_RESET;
!                 volp->rwServersp = NULL;
!                 volp->roServersp = NULL;
!                 volp->bkServersp = NULL;
              }
          }
          osi_EndOnce(&once);
      }
  }
  
  /*
   * Update a volume.  Caller holds volume's lock (volp->mx).
   *
--- 95,145 ----
              cm_data.allVolumesp = NULL;
              cm_data.currentVolumes = 0;
              cm_data.maxVolumes = maxVols;
+             memset(cm_data.volumeNameHashTablep, 0, sizeof(cm_volume_t *) * cm_data.volumeHashTableSize);
+             memset(cm_data.volumeRWIDHashTablep, 0, sizeof(cm_volume_t *) * cm_data.volumeHashTableSize);
+             memset(cm_data.volumeROIDHashTablep, 0, sizeof(cm_volume_t *) * cm_data.volumeHashTableSize);
+             memset(cm_data.volumeBKIDHashTablep, 0, sizeof(cm_volume_t *) * cm_data.volumeHashTableSize);
+             cm_data.volumeLRUFirstp = cm_data.volumeLRULastp = NULL;
          } else {
              cm_volume_t * volp;
  
!             for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
                  lock_InitializeMutex(&volp->mx, "cm_volume_t mutex");
                  volp->flags |= CM_VOLUMEFLAG_RESET;
!                 volp->rw.state = vl_unknown;
!                 volp->rw.serversp = NULL;
!                 volp->ro.state = vl_unknown;
!                 volp->ro.serversp = NULL;
!                 volp->bk.state = vl_unknown;
!                 volp->bk.serversp = NULL;
!                 if (volp->rw.ID)
!                     cm_VolumeStatusNotification(volp, volp->rw.ID, vl_alldown, volp->rw.state);
!                 if (volp->ro.ID)
!                     cm_VolumeStatusNotification(volp, volp->ro.ID, vl_alldown, volp->ro.state);
!                 if (volp->bk.ID)
!                     cm_VolumeStatusNotification(volp, volp->bk.ID, vl_alldown, volp->bk.state);
              }
          }
          osi_EndOnce(&once);
      }
  }
  
+ 
+ /* returns true if the id is a decimal integer, in which case we interpret it
+  * as an id.  make the cache manager much simpler.  
+  * Stolen from src/volser/vlprocs.c */
+ int
+ cm_VolNameIsID(char *aname)
+ {
+     int tc;
+     while (tc = *aname++) {
+         if (tc > '9' || tc < '0')
+             return 0;
+     }
+     return 1;
+ }
+ 
+ 
  /*
   * Update a volume.  Caller holds volume's lock (volp->mx).
   *
***************
*** 143,159 ****
  #ifdef MULTIHOMED
      struct uvldbentry uvldbEntry;
  #endif
!     int type = -1;
      int ROcount = 0;
      long code;
  
      /* clear out old bindings */
!     if (volp->rwServersp)
!         cm_FreeServerList(&volp->rwServersp);
!     if (volp->roServersp)
!         cm_FreeServerList(&volp->roServersp);
!     if (volp->bkServersp)
!         cm_FreeServerList(&volp->bkServersp);
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( cellp->cellID == AFS_FAKE_ROOT_CELL_ID && atoi(volp->namep)==AFS_FAKE_ROOT_VOL_ID ) 
--- 182,201 ----
  #ifdef MULTIHOMED
      struct uvldbentry uvldbEntry;
  #endif
!     int method = -1;
      int ROcount = 0;
      long code;
+     enum volstatus rwNewstate = vl_online;
+     enum volstatus roNewstate = vl_online;
+     enum volstatus bkNewstate = vl_online;
  
      /* clear out old bindings */
!     if (volp->rw.serversp)
!         cm_FreeServerList(&volp->rw.serversp, CM_FREESERVERLIST_DELETE);
!     if (volp->ro.serversp)
!         cm_FreeServerList(&volp->ro.serversp, CM_FREESERVERLIST_DELETE);
!     if (volp->bk.serversp)
!         cm_FreeServerList(&volp->bk.serversp, CM_FREESERVERLIST_DELETE);
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( cellp->cellID == AFS_FAKE_ROOT_CELL_ID && atoi(volp->namep)==AFS_FAKE_ROOT_VOL_ID ) 
***************
*** 162,168 ****
          vldbEntry.flags |= VLF_RWEXISTS;
          vldbEntry.volumeId[0] = AFS_FAKE_ROOT_VOL_ID;
          code = 0;
!         type = 0;
      } else
  #endif
      {
--- 204,210 ----
          vldbEntry.flags |= VLF_RWEXISTS;
          vldbEntry.volumeId[0] = AFS_FAKE_ROOT_VOL_ID;
          code = 0;
!         method = 0;
      } else
  #endif
      {
***************
*** 174,189 ****
                  continue;
  #ifdef MULTIHOMED
              code = VL_GetEntryByNameU(connp->callp, volp->namep, &uvldbEntry);
!             type = 2;
              if ( code == RXGEN_OPCODE ) 
  #endif
              {
                  code = VL_GetEntryByNameN(connp->callp, volp->namep, &nvldbEntry);
!                 type = 1;
              }
              if ( code == RXGEN_OPCODE ) {
                  code = VL_GetEntryByNameO(connp->callp, volp->namep, &vldbEntry);
!                 type = 0;
              }
          } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
          code = cm_MapVLRPCError(code, reqp);
--- 216,231 ----
                  continue;
  #ifdef MULTIHOMED
              code = VL_GetEntryByNameU(connp->callp, volp->namep, &uvldbEntry);
!             method = 2;
              if ( code == RXGEN_OPCODE ) 
  #endif
              {
                  code = VL_GetEntryByNameN(connp->callp, volp->namep, &nvldbEntry);
!                 method = 1;
              }
              if ( code == RXGEN_OPCODE ) {
                  code = VL_GetEntryByNameO(connp->callp, volp->namep, &vldbEntry);
!                 method = 0;
              }
          } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
          code = cm_MapVLRPCError(code, reqp);
***************
*** 194,199 ****
--- 236,281 ----
  	    osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s SUCCESS", 
  		      volp->cellp->name, volp->namep);
      }
+ 
+     /* We can end up here with code == CM_ERROR_NOSUCHVOLUME if the base volume name
+      * does not exist but there might exist a .readonly volume.  If the base name 
+      * doesn't exist we will not care about the .backup that might be left behind
+      * since there should be no method to access it.  
+      */
+     if (code == CM_ERROR_NOSUCHVOLUME && volp->rw.ID == 0 && strlen(volp->namep) < (VL_MAXNAMELEN - 9)) {
+         char name[VL_MAXNAMELEN];
+ 
+         snprintf(name, VL_MAXNAMELEN, "%s.readonly", volp->namep);
+                 
+         /* now we have volume structure locked and held; make RPC to fill it */
+ 	osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp->cellp->name, name);
+         do {
+             code = cm_ConnByMServers(cellp->vlServersp, userp, reqp, &connp);
+             if (code) 
+                 continue;
+ #ifdef MULTIHOMED
+             code = VL_GetEntryByNameU(connp->callp, name, &uvldbEntry);
+             method = 2;
+             if ( code == RXGEN_OPCODE ) 
+ #endif
+             {
+                 code = VL_GetEntryByNameN(connp->callp, name, &nvldbEntry);
+                 method = 1;
+             }
+             if ( code == RXGEN_OPCODE ) {
+                 code = VL_GetEntryByNameO(connp->callp, name, &vldbEntry);
+                 method = 0;
+             }
+         } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp->vlServersp, NULL, code));
+         code = cm_MapVLRPCError(code, reqp);
+ 	if ( code )
+ 	    osi_Log3(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s FAILURE, code 0x%x", 
+ 		      volp->cellp->name, name, code);
+ 	else
+ 	    osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s SUCCESS", 
+ 		      volp->cellp->name, name);
+     }
+ 
      if (code == 0) {
          afs_int32 flags;
          afs_int32 nServers;
***************
*** 202,209 ****
          afs_int32 bkID;
          afs_int32 serverNumber[NMAXNSERVERS];
          afs_int32 serverFlags[NMAXNSERVERS];
  
!         switch ( type ) {
          case 0:
              flags = vldbEntry.flags;
              nServers = vldbEntry.nServers;
--- 284,295 ----
          afs_int32 bkID;
          afs_int32 serverNumber[NMAXNSERVERS];
          afs_int32 serverFlags[NMAXNSERVERS];
+         afs_int32 rwServers_alldown = 1;
+         afs_int32 roServers_alldown = 1;
+         afs_int32 bkServers_alldown = 1;
+         char      name[VL_MAXNAMELEN];
  
!         switch ( method ) {
          case 0:
              flags = vldbEntry.flags;
              nServers = vldbEntry.nServers;
***************
*** 214,219 ****
--- 300,307 ----
                  serverFlags[i] = vldbEntry.serverFlags[i];
                  serverNumber[i] = vldbEntry.serverNumber[i];
              }
+             strncpy(name, vldbEntry.name, VL_MAXNAMELEN);
+             name[VL_MAXNAMELEN - 1] = '\0';
              break;
          case 1:
              flags = nvldbEntry.flags;
***************
*** 225,230 ****
--- 313,320 ----
                  serverFlags[i] = nvldbEntry.serverFlags[i];
                  serverNumber[i] = nvldbEntry.serverNumber[i];
              }
+             strncpy(name, nvldbEntry.name, VL_MAXNAMELEN);
+             name[VL_MAXNAMELEN - 1] = '\0';
              break;
  #ifdef MULTIHOMED
          case 2:
***************
*** 274,297 ****
                  }
              }
              nServers = j;					/* update the server count */
              break;
  #endif
          }
  
          /* decode the response */
          lock_ObtainWrite(&cm_volumeLock);
!         if (flags & VLF_RWEXISTS)
!             volp->rwID = rwID;
!         else
!             volp->rwID = 0;
!         if (flags & VLF_ROEXISTS)
!             volp->roID = roID;
!         else
!             volp->roID = 0;
!         if (flags & VLF_BACKEXISTS)
!             volp->bkID = bkID;
!         else
!             volp->bkID = 0;
          lock_ReleaseWrite(&cm_volumeLock);
          for (i=0; i<nServers; i++) {
              /* create a server entry */
--- 364,434 ----
                  }
              }
              nServers = j;					/* update the server count */
+             strncpy(name, uvldbEntry.name, VL_MAXNAMELEN);
+             name[VL_MAXNAMELEN - 1] = '\0';
              break;
  #endif
          }
  
          /* decode the response */
          lock_ObtainWrite(&cm_volumeLock);
!         if (cm_VolNameIsID(volp->namep)) {
!             size_t    len;
! 
!             len = strlen(name);
! 
!             if (len >= 8 && strcmp(name + len - 7, ".backup") == 0) {
!                 name[len - 7] = '\0';
!             } else if (len >= 10 && strcmp(name + len - 9, ".readonly") == 0) {
!                 name[len - 9] = '\0';
!             }
!             
!             osi_Log2(afsd_logp, "cm_UpdateVolume name %s -> %s", volp->namep, name);
! 
!             if (volp->flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromNameHashTable(volp);
! 
!             strcpy(volp->namep, name);
! 
!             cm_AddVolumeToNameHashTable(volp);
!         }
! 
!         if (flags & VLF_RWEXISTS) {
!             if (volp->rw.ID != rwID) {
!                 if (volp->rw.flags & CM_VOLUMEFLAG_IN_HASH)
!                     cm_RemoveVolumeFromIDHashTable(volp, RWVOL);
!                 volp->rw.ID = rwID;
!                 cm_AddVolumeToIDHashTable(volp, RWVOL);
!             }
!         } else {
!             if (volp->rw.flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromIDHashTable(volp, RWVOL);
!             volp->rw.ID = 0;
!         }
!         if (flags & VLF_ROEXISTS) {
!             if (volp->ro.ID != roID) {
!                 if (volp->ro.flags & CM_VOLUMEFLAG_IN_HASH)
!                     cm_RemoveVolumeFromIDHashTable(volp, ROVOL);
!                 volp->ro.ID = roID;
!                 cm_AddVolumeToIDHashTable(volp, ROVOL);
!             }
!         } else {
!             if (volp->ro.flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromIDHashTable(volp, ROVOL);
!             volp->ro.ID = 0;
!         }
!         if (flags & VLF_BACKEXISTS) {
!             if (volp->bk.ID != bkID) {
!                 if (volp->bk.flags & CM_VOLUMEFLAG_IN_HASH)
!                     cm_RemoveVolumeFromIDHashTable(volp, BACKVOL);
!                 volp->bk.ID = bkID;
!                 cm_AddVolumeToIDHashTable(volp, BACKVOL);
!             }
!         } else {
!             if (volp->bk.flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromIDHashTable(volp, BACKVOL);
!             volp->bk.ID = 0;
!         }
          lock_ReleaseWrite(&cm_volumeLock);
          for (i=0; i<nServers; i++) {
              /* create a server entry */
***************
*** 320,346 ****
               * earlier in this function.
               */
              if ((tflags & VLSF_RWVOL) && (flags & VLF_RWEXISTS)) {
!                 tsrp = cm_NewServerRef(tsp);
!                 cm_InsertServerList(&volp->rwServersp, tsrp);
                  lock_ObtainWrite(&cm_serverLock);
                  tsrp->refCount--;       /* drop allocation reference */
                  lock_ReleaseWrite(&cm_serverLock);
              }
              if ((tflags & VLSF_ROVOL) && (flags & VLF_ROEXISTS)) {
!                 tsrp = cm_NewServerRef(tsp);
!                 cm_InsertServerList(&volp->roServersp, tsrp);
                  lock_ObtainWrite(&cm_serverLock);
                  tsrp->refCount--;       /* drop allocation reference */
                  lock_ReleaseWrite(&cm_serverLock);
                  ROcount++;
              }
              /* We don't use VLSF_BACKVOL !?! */
              if ((tflags & VLSF_RWVOL) && (flags & VLF_BACKEXISTS)) {
!                 tsrp = cm_NewServerRef(tsp);
!                 cm_InsertServerList(&volp->bkServersp, tsrp);
                  lock_ObtainWrite(&cm_serverLock);
                  tsrp->refCount--;       /* drop allocation reference */
                  lock_ReleaseWrite(&cm_serverLock);
              }
              /* Drop the reference obtained by cm_FindServer() */
              cm_PutServer(tsp);
--- 457,497 ----
               * earlier in this function.
               */
              if ((tflags & VLSF_RWVOL) && (flags & VLF_RWEXISTS)) {
!                 tsrp = cm_NewServerRef(tsp, rwID);
!                 cm_InsertServerList(&volp->rw.serversp, tsrp);
! 
                  lock_ObtainWrite(&cm_serverLock);
                  tsrp->refCount--;       /* drop allocation reference */
                  lock_ReleaseWrite(&cm_serverLock);
+ 
+                 if (!(tsp->flags & CM_SERVERFLAG_DOWN))
+                     rwServers_alldown = 0;
              }
              if ((tflags & VLSF_ROVOL) && (flags & VLF_ROEXISTS)) {
!                 tsrp = cm_NewServerRef(tsp, roID);
!                 cm_InsertServerList(&volp->ro.serversp, tsrp);
                  lock_ObtainWrite(&cm_serverLock);
                  tsrp->refCount--;       /* drop allocation reference */
                  lock_ReleaseWrite(&cm_serverLock);
                  ROcount++;
+ 
+                 if (!(tsp->flags & CM_SERVERFLAG_DOWN))
+                     roServers_alldown = 0;
              }
              /* We don't use VLSF_BACKVOL !?! */
+             /* Because only the backup on the server holding the RW 
+              * volume can be valid.  This check prevents errors if a
+              * RW is moved but the old backup is not removed.
+              */
              if ((tflags & VLSF_RWVOL) && (flags & VLF_BACKEXISTS)) {
!                 tsrp = cm_NewServerRef(tsp, bkID);
!                 cm_InsertServerList(&volp->bk.serversp, tsrp);
                  lock_ObtainWrite(&cm_serverLock);
                  tsrp->refCount--;       /* drop allocation reference */
                  lock_ReleaseWrite(&cm_serverLock);
+ 
+                 if (!(tsp->flags & CM_SERVERFLAG_DOWN))
+                     bkServers_alldown = 0;
              }
              /* Drop the reference obtained by cm_FindServer() */
              cm_PutServer(tsp);
***************
*** 357,365 ****
           * lists are length 1.
           */
          if (ROcount > 1) {
!             cm_RandomizeServer(&volp->roServersp);
          }
      }
      return code;
  }
  
--- 508,539 ----
           * lists are length 1.
           */
          if (ROcount > 1) {
!             cm_RandomizeServer(&volp->ro.serversp);
          }
+ 
+         rwNewstate = rwServers_alldown ? vl_alldown : vl_online;
+         roNewstate = roServers_alldown ? vl_alldown : vl_online;
+         bkNewstate = bkServers_alldown ? vl_alldown : vl_online;
+     } else {
+         rwNewstate = roNewstate = bkNewstate = vl_alldown;
+     }
+ 
+     if (volp->rw.state != rwNewstate) {
+         if (volp->rw.ID)
+             cm_VolumeStatusNotification(volp, volp->rw.ID, volp->rw.state, rwNewstate);
+         volp->rw.state = rwNewstate;
+     }
+     if (volp->ro.state != roNewstate) {
+         if (volp->ro.ID)
+             cm_VolumeStatusNotification(volp, volp->ro.ID, volp->ro.state, roNewstate);
+         volp->ro.state = roNewstate;
+     }
+     if (volp->bk.state != bkNewstate) {
+         if (volp->bk.ID)
+             cm_VolumeStatusNotification(volp, volp->bk.ID, volp->bk.state, bkNewstate);
+         volp->bk.state = bkNewstate;
      }
+ 
      return code;
  }
  
***************
*** 372,397 ****
      }
  }
  
! long cm_GetVolumeByID(cm_cell_t *cellp, long volumeID, cm_user_t *userp,
! 	cm_req_t *reqp, cm_volume_t **outVolpp)
  {
      cm_volume_t *volp;
!     char volNameString[100];
      long code = 0;
  
!     lock_ObtainWrite(&cm_volumeLock);
!     for(volp = cm_data.allVolumesp; volp; volp=volp->nextp) {
  	if (cellp == volp->cellp &&
! 	     ((unsigned) volumeID == volp->rwID ||
! 	       (unsigned) volumeID == volp->roID ||
! 	       (unsigned) volumeID == volp->bkID))
  	    break;
      }	
  
      /* hold the volume if we found it */
      if (volp) 
!         volp->refCount++;
!     lock_ReleaseWrite(&cm_volumeLock);
          
      /* return it held */
      if (volp) {
--- 546,609 ----
      }
  }
  
! 
! long cm_GetVolumeByID(cm_cell_t *cellp, afs_uint32 volumeID, cm_user_t *userp,
!                       cm_req_t *reqp, afs_uint32 flags, cm_volume_t **outVolpp)
  {
      cm_volume_t *volp;
! #ifdef SEARCH_ALL_VOLUMES
!     cm_volume_t *volp2;
! #endif
!     char volNameString[VL_MAXNAMELEN];
!     afs_uint32 hash;
      long code = 0;
  
!     lock_ObtainRead(&cm_volumeLock);
! #ifdef SEARCH_ALL_VOLUMES
!     for(volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
  	if (cellp == volp->cellp &&
! 	     ((unsigned) volumeID == volp->rw.ID ||
! 	       (unsigned) volumeID == volp->ro.ID ||
! 	       (unsigned) volumeID == volp->bk.ID))
  	    break;
      }	
  
+     volp2 = volp;
+ #endif /* SEARCH_ALL_VOLUMES */
+ 
+     hash = CM_VOLUME_ID_HASH(volumeID);
+     /* The volumeID can be any one of the three types.  So we must
+      * search the hash table for all three types until we find it.
+      * We will search in the order of RO, RW, BK.
+      */
+     for ( volp = cm_data.volumeROIDHashTablep[hash]; volp; volp = volp->ro.nextp) {
+         if ( cellp == volp->cellp && volumeID == volp->ro.ID )
+             break;
+     }
+     if (!volp) {
+         /* try RW volumes */
+         for ( volp = cm_data.volumeRWIDHashTablep[hash]; volp; volp = volp->rw.nextp) {
+             if ( cellp == volp->cellp && volumeID == volp->rw.ID )
+                 break;
+         }
+     }
+     if (!volp) {
+         /* try BK volumes */
+         for ( volp = cm_data.volumeBKIDHashTablep[hash]; volp; volp = volp->bk.nextp) {
+             if ( cellp == volp->cellp && volumeID == volp->bk.ID )
+                 break;
+         }
+     }
+ 
+ #ifdef SEARCH_ALL_VOLUMES
+     osi_assert(volp == volp2);
+ #endif
+ 
+     lock_ReleaseRead(&cm_volumeLock);
+ 
      /* hold the volume if we found it */
      if (volp) 
!         cm_GetVolume(volp);
          
      /* return it held */
      if (volp) {
***************
*** 404,412 ****
  		volp->flags &= ~CM_VOLUMEFLAG_RESET;
  	}
  	lock_ReleaseMutex(&volp->mx);
! 	if (code == 0)
  	    *outVolpp = volp;
! 	else
  	    cm_PutVolume(volp);
  
  	return code;
--- 616,628 ----
  		volp->flags &= ~CM_VOLUMEFLAG_RESET;
  	}
  	lock_ReleaseMutex(&volp->mx);
! 	if (code == 0) {
  	    *outVolpp = volp;
! 
!             lock_ObtainWrite(&cm_volumeLock);
!             cm_AdjustVolumeLRU(volp);
!             lock_ReleaseWrite(&cm_volumeLock);
!         } else
  	    cm_PutVolume(volp);
  
  	return code;
***************
*** 415,453 ****
      /* otherwise, we didn't find it so consult the VLDB */
      sprintf(volNameString, "%u", volumeID);
      code = cm_GetVolumeByName(cellp, volNameString, userp, reqp,
! 			       0, outVolpp);
      return code;
  }
  
  long cm_GetVolumeByName(struct cm_cell *cellp, char *volumeNamep,
! 			 struct cm_user *userp, struct cm_req *reqp,
! 			 long flags, cm_volume_t **outVolpp)
  {
      cm_volume_t *volp;
!     long code = 0;
!         
!     lock_ObtainWrite(&cm_volumeLock);
!     for (volp = cm_data.allVolumesp; volp; volp=volp->nextp) {
! 	if (cellp == volp->cellp && strcmp(volumeNamep, volp->namep) == 0) {
  	    break;
  	}
      }	
!         
!     /* otherwise, get from VLDB */
!     if (!volp) {
  	if ( cm_data.currentVolumes >= cm_data.maxVolumes ) {
! 	    for (volp = cm_data.allVolumesp; volp; volp=volp->nextp) {
  		if ( volp->refCount == 0 ) {
  		    /* There is one we can re-use */
  		    break;
  		}
  	    }
  	    if (!volp)
  		osi_panic("Exceeded Max Volumes", __FILE__, __LINE__);
- 	}	
  
! 	if (volp) {
! 	    volp->rwID = volp->roID = volp->bkID = 0;
  	    volp->dotdotFid.cell = 0;
  	    volp->dotdotFid.volume = 0;
  	    volp->dotdotFid.unique = 0;
--- 631,741 ----
      /* otherwise, we didn't find it so consult the VLDB */
      sprintf(volNameString, "%u", volumeID);
      code = cm_GetVolumeByName(cellp, volNameString, userp, reqp,
! 			       flags, outVolpp);
      return code;
  }
  
+ 
  long cm_GetVolumeByName(struct cm_cell *cellp, char *volumeNamep,
! 			struct cm_user *userp, struct cm_req *reqp,
! 			afs_uint32 flags, cm_volume_t **outVolpp)
  {
      cm_volume_t *volp;
! #ifdef SEARCH_ALL_VOLUMES
!     cm_volume_t *volp2;
! #endif
!     long        code = 0;
!     char        name[VL_MAXNAMELEN];
!     size_t      len;
!     int         type;
!     afs_uint32  hash;
! 
!     strncpy(name, volumeNamep, VL_MAXNAMELEN);
!     name[VL_MAXNAMELEN-1] = '\0';
!     len = strlen(name);
! 
!     if (len >= 8 && strcmp(name + len - 7, ".backup") == 0) {
!         type = BACKVOL;
!         name[len - 7] = '\0';
!     } else if (len >= 10 && strcmp(name + len - 9, ".readonly") == 0) {
!         type = ROVOL;
!         name[len - 9] = '\0';
!     } else {
!         type = RWVOL;
!     }
! 
!     lock_ObtainRead(&cm_volumeLock);
! #ifdef SEARCH_ALL_VOLUMES
!     for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
! 	if (cellp == volp->cellp && strcmp(name, volp->namep) == 0) {
  	    break;
  	}
      }	
!     volp2 = volp;
! #endif /* SEARCH_ALL_VOLUMES */
! 
!     hash = CM_VOLUME_NAME_HASH(name);
!     for (volp = cm_data.volumeNameHashTablep[hash]; volp; volp = volp->nameNextp) {
!         if (cellp == volp->cellp && strcmp(name, volp->namep) == 0)
!             break;
!     }
! 
! #ifdef SEARCH_ALL_VOLUMES
!     osi_assert(volp2 == volp);
! #endif
! 
!     if (!volp && (flags & CM_GETVOL_FLAG_CREATE)) {
!         /* otherwise, get from VLDB */
! 
  	if ( cm_data.currentVolumes >= cm_data.maxVolumes ) {
! 
! #ifdef RECYCLE_FROM_ALL_VOLUMES_LIST
! 	    for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
  		if ( volp->refCount == 0 ) {
  		    /* There is one we can re-use */
  		    break;
  		}
  	    }
+ #else
+             for ( volp = cm_data.volumeLRULastp;
+                   volp;
+                   volp = (cm_volume_t *) osi_QPrev(&volp->q)) 
+             {
+ 		if ( volp->refCount == 0 ) {
+ 		    /* There is one we can re-use */
+ 		    break;
+ 		}
+             }
+ #endif
  	    if (!volp)
  		osi_panic("Exceeded Max Volumes", __FILE__, __LINE__);
  
!             lock_ReleaseRead(&cm_volumeLock);
!             lock_ObtainMutex(&volp->mx);
!             lock_ObtainWrite(&cm_volumeLock);
! 
!             osi_Log2(afsd_logp, "Recycling Volume %s:%s",
!                      volp->cellp->name, volp->namep);
! 
!             if (volp->flags & CM_VOLUMEFLAG_IN_LRU_QUEUE)
!                 cm_RemoveVolumeFromLRU(volp);
!             if (volp->flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromNameHashTable(volp);
!             if (volp->rw.flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromIDHashTable(volp, RWVOL);
!             if (volp->ro.flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromIDHashTable(volp, ROVOL);
!             if (volp->bk.flags & CM_VOLUMEFLAG_IN_HASH)
!                 cm_RemoveVolumeFromIDHashTable(volp, BACKVOL);
! 
!             if (volp->rw.ID)
!                 cm_VolumeStatusNotification(volp, volp->rw.ID, volp->rw.state, vl_unknown);
!             if (volp->ro.ID)
!                 cm_VolumeStatusNotification(volp, volp->ro.ID, volp->ro.state, vl_unknown);
!             if (volp->bk.ID)
!                 cm_VolumeStatusNotification(volp, volp->bk.ID, volp->bk.state, vl_unknown);
! 
!             volp->rw.ID = volp->ro.ID = volp->bk.ID = 0;
  	    volp->dotdotFid.cell = 0;
  	    volp->dotdotFid.volume = 0;
  	    volp->dotdotFid.unique = 0;
***************
*** 456,491 ****
  	    volp = &cm_data.volumeBaseAddress[cm_data.currentVolumes++];
  	    memset(volp, 0, sizeof(cm_volume_t));
  	    volp->magic = CM_VOLUME_MAGIC;
! 	    volp->nextp = cm_data.allVolumesp;
  	    cm_data.allVolumesp = volp;
  	    lock_InitializeMutex(&volp->mx, "cm_volume_t mutex");
! 	}
  	volp->cellp = cellp;
! 	strncpy(volp->namep, volumeNamep, VL_MAXNAMELEN);
  	volp->namep[VL_MAXNAMELEN-1] = '\0';
! 	volp->refCount = 1;	/* starts off held */
  	volp->flags = CM_VOLUMEFLAG_RESET;
      }
      else {
! 	volp->refCount++;
      }
  
!     /* next should work since no one could have gotten ptr to this structure yet */
!     lock_ReleaseWrite(&cm_volumeLock);
!     lock_ObtainMutex(&volp->mx);
! 
      if (volp->flags & CM_VOLUMEFLAG_RESET) {
  	code = cm_UpdateVolume(cellp, userp, reqp, volp);
  	if (code == 0)
  	    volp->flags &= ~CM_VOLUMEFLAG_RESET;
      }	
  
!     if (code == 0)
  	*outVolpp = volp;
!     else
  	cm_PutVolume(volp);
  
-     lock_ReleaseMutex(&volp->mx);
      return code;
  }	
  
--- 744,798 ----
  	    volp = &cm_data.volumeBaseAddress[cm_data.currentVolumes++];
  	    memset(volp, 0, sizeof(cm_volume_t));
  	    volp->magic = CM_VOLUME_MAGIC;
! 	    volp->allNextp = cm_data.allVolumesp;
  	    cm_data.allVolumesp = volp;
  	    lock_InitializeMutex(&volp->mx, "cm_volume_t mutex");
!             lock_ReleaseRead(&cm_volumeLock);
!             lock_ObtainMutex(&volp->mx);
!             lock_ObtainWrite(&cm_volumeLock);
!         }
  	volp->cellp = cellp;
! 	strncpy(volp->namep, name, VL_MAXNAMELEN);
  	volp->namep[VL_MAXNAMELEN-1] = '\0';
!         volp->refCount = 1;	/* starts off held */
  	volp->flags = CM_VOLUMEFLAG_RESET;
+         volp->rw.state = volp->ro.state = volp->bk.state = vl_unknown;
+         volp->rw.nextp = volp->ro.nextp = volp->bk.nextp = NULL;
+         volp->rw.flags = volp->ro.flags = volp->bk.flags = 0;
+         cm_AddVolumeToNameHashTable(volp);
+         lock_ReleaseWrite(&cm_volumeLock);
      }
      else {
!         lock_ReleaseRead(&cm_volumeLock);
!         if (volp) {
!             cm_GetVolume(volp);
!             lock_ObtainMutex(&volp->mx);
!         } else {
!             return CM_ERROR_NOSUCHVOLUME;
!         }
      }
  
!     /* if we get here we are holding the mutex */
      if (volp->flags & CM_VOLUMEFLAG_RESET) {
  	code = cm_UpdateVolume(cellp, userp, reqp, volp);
  	if (code == 0)
  	    volp->flags &= ~CM_VOLUMEFLAG_RESET;
      }	
+     lock_ReleaseMutex(&volp->mx);
  
!     if (code == 0 && (type == BACKVOL && volp->bk.ID == 0 ||
!                       type == ROVOL && volp->ro.ID == 0))
!         code = CM_ERROR_NOSUCHVOLUME;
! 
!     if (code == 0) {
  	*outVolpp = volp;
! 
!         lock_ObtainWrite(&cm_volumeLock);
!         cm_AdjustVolumeLRU(volp);
!         lock_ReleaseWrite(&cm_volumeLock);
!     } else
  	cm_PutVolume(volp);
  
      return code;
  }	
  
***************
*** 493,498 ****
--- 800,809 ----
  {
      cm_cell_t *cellp;
      cm_volume_t *volp;
+ #ifdef SEARCH_ALL_VOLUMES
+     cm_volume_t *volp2;
+ #endif
+     afs_uint32  hash;
  
      if (!fidp) return;
  
***************
*** 500,518 ****
      if (!cellp) return;
  
      /* search for the volume */
!     lock_ObtainWrite(&cm_volumeLock);
!     for(volp = cm_data.allVolumesp; volp; volp=volp->nextp) {
  	if (cellp == volp->cellp &&
! 	     (fidp->volume == volp->rwID ||
! 	       fidp->volume == volp->roID ||
! 	       fidp->volume == volp->bkID))
  	    break;
      }	
  
      /* hold the volume if we found it */
      if (volp) 
! 	volp->refCount++;
!     lock_ReleaseWrite(&cm_volumeLock);
  
      /* update it */
      cm_data.mountRootGen = time(NULL);
--- 811,860 ----
      if (!cellp) return;
  
      /* search for the volume */
!     lock_ObtainRead(&cm_volumeLock);
! #ifdef SEARCH_ALL_VOLUMES
!     for(volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
  	if (cellp == volp->cellp &&
! 	     (fidp->volume == volp->rw.ID ||
! 	       fidp->volume == volp->ro.ID ||
! 	       fidp->volume == volp->bk.ID))
  	    break;
      }	
+ #endif /* SEARCH_ALL_VOLUMES */
+ 
+     hash = CM_VOLUME_ID_HASH(fidp->volume);
+     /* The volumeID can be any one of the three types.  So we must
+      * search the hash table for all three types until we find it.
+      * We will search in the order of RO, RW, BK.
+      */
+     for ( volp = cm_data.volumeROIDHashTablep[hash]; volp; volp = volp->ro.nextp) {
+         if ( cellp == volp->cellp && fidp->volume == volp->ro.ID )
+             break;
+     }
+     if (!volp) {
+         /* try RW volumes */
+         for ( volp = cm_data.volumeRWIDHashTablep[hash]; volp; volp = volp->rw.nextp) {
+             if ( cellp == volp->cellp && fidp->volume == volp->rw.ID )
+                 break;
+         }
+     }
+     if (!volp) {
+         /* try BK volumes */
+         for ( volp = cm_data.volumeBKIDHashTablep[hash]; volp; volp = volp->bk.nextp) {
+             if ( cellp == volp->cellp && fidp->volume == volp->bk.ID )
+                 break;
+         }
+     }
+ 
+ #ifdef SEARCH_ALL_VOLUMES
+     osi_assert(volp == volp2);
+ #endif
+ 
+     lock_ReleaseRead(&cm_volumeLock);
  
      /* hold the volume if we found it */
      if (volp) 
! 	cm_GetVolume(volp);
  
      /* update it */
      cm_data.mountRootGen = time(NULL);
***************
*** 539,557 ****
  }
  
  /* find the appropriate servers from a volume */
! cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, unsigned long volume)
  {
      cm_serverRef_t **serverspp;
      cm_serverRef_t *current;;
  
      lock_ObtainWrite(&cm_serverLock);
  
!     if (volume == volp->rwID)
!         serverspp = &volp->rwServersp;
!     else if (volume == volp->roID)
!         serverspp = &volp->roServersp;
!     else if (volume == volp->bkID)
!         serverspp = &volp->bkServersp;
      else 
          osi_panic("bad volume ID in cm_GetVolServers", __FILE__, __LINE__);
          
--- 881,899 ----
  }
  
  /* find the appropriate servers from a volume */
! cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, afs_uint32 volume)
  {
      cm_serverRef_t **serverspp;
      cm_serverRef_t *current;;
  
      lock_ObtainWrite(&cm_serverLock);
  
!     if (volume == volp->rw.ID)
!         serverspp = &volp->rw.serversp;
!     else if (volume == volp->ro.ID)
!         serverspp = &volp->ro.serversp;
!     else if (volume == volp->bk.ID)
!         serverspp = &volp->bk.serversp;
      else 
          osi_panic("bad volume ID in cm_GetVolServers", __FILE__, __LINE__);
          
***************
*** 578,587 ****
      long id;
  
      lock_ObtainMutex(&volp->mx);
!     if (volp->roID && volp->roServersp)
! 	id = volp->roID;
      else
! 	id = volp->rwID;
      lock_ReleaseMutex(&volp->mx);
  
      return id;
--- 920,929 ----
      long id;
  
      lock_ObtainMutex(&volp->mx);
!     if (volp->ro.ID && volp->ro.serversp)
! 	id = volp->ro.ID;
      else
! 	id = volp->rw.ID;
      lock_ReleaseMutex(&volp->mx);
  
      return id;
***************
*** 596,610 ****
  
      /* force a re-loading of volume data from the vldb */
      lock_ObtainWrite(&cm_volumeLock);
!     for (volp = cm_data.allVolumesp; volp; volp=volp->nextp) {
  	volp->refCount++;
  	lock_ReleaseWrite(&cm_volumeLock);
- 	lock_ObtainMutex(&volp->mx);
  
  	volp->flags |= CM_VOLUMEFLAG_RESET;
- 
  	lock_ReleaseMutex(&volp->mx);
! 	lock_ObtainWrite(&cm_volumeLock);
  	osi_assert(volp->refCount-- > 0);
      }
      lock_ReleaseWrite(&cm_volumeLock);
--- 938,952 ----
  
      /* force a re-loading of volume data from the vldb */
      lock_ObtainWrite(&cm_volumeLock);
!     for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
  	volp->refCount++;
  	lock_ReleaseWrite(&cm_volumeLock);
  
+ 	lock_ObtainMutex(&volp->mx);
  	volp->flags |= CM_VOLUMEFLAG_RESET;
  	lock_ReleaseMutex(&volp->mx);
! 	
!         lock_ObtainWrite(&cm_volumeLock);
  	osi_assert(volp->refCount-- > 0);
      }
      lock_ReleaseWrite(&cm_volumeLock);
***************
*** 629,634 ****
--- 971,1174 ----
  
  }
  
+ 
+ /* The return code is 0 if the volume is not online and 
+  * 1 if the volume is online
+  */
+ long
+ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
+ {
+     cm_conn_t *connp;
+     long code;
+     AFSFetchVolumeStatus volStat;
+     char *Name;
+     char *OfflineMsg;
+     char *MOTD;
+     cm_req_t req;
+     struct rx_connection * callp;
+     char volName[32];
+     char offLineMsg[256];
+     char motd[256];
+     long online = 0;
+     cm_serverRef_t *serversp;
+ 
+     Name = volName;
+     OfflineMsg = offLineMsg;
+     MOTD = motd;
+ 
+     lock_ObtainMutex(&volp->mx);
+ 
+     if (volp->rw.ID != 0 && (!volID || volID == volp->rw.ID) &&
+          (volp->rw.state == vl_busy || volp->rw.state == vl_offline)) {
+         cm_InitReq(&req);
+ 
+         for (serversp = volp->rw.serversp; serversp; serversp = serversp->next) {
+             if (serversp->status == srv_busy || serversp->status == srv_offline)
+                 serversp->status = srv_not_busy;
+         }
+ 
+         do {
+             code = cm_ConnFromVolume(volp, volp->rw.ID, cm_rootUserp, &req, &connp);
+             if (code) 
+                 continue;
+ 
+             callp = cm_GetRxConn(connp);
+             code = RXAFS_GetVolumeStatus(callp, volp->rw.ID,
+                                           &volStat, &Name, &OfflineMsg, &MOTD);
+             rx_PutConnection(callp);        
+ 
+         } while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
+         code = cm_MapRPCError(code, &req);
+ 
+         if (code == 0 && volStat.Online) {
+             cm_VolumeStatusNotification(volp, volp->rw.ID, volp->rw.state, vl_online);
+             volp->rw.state = vl_online;
+             online = 1;
+         }
+     }
+ 
+     if (volp->ro.ID != 0 && (!volID || volID == volp->ro.ID) &&
+          (volp->ro.state == vl_busy || volp->ro.state == vl_offline)) {
+         cm_InitReq(&req);
+ 
+         for (serversp = volp->ro.serversp; serversp; serversp = serversp->next) {
+             if (serversp->status == srv_busy || serversp->status == srv_offline)
+                 serversp->status = srv_not_busy;
+         }
+ 
+         do {
+             code = cm_ConnFromVolume(volp, volp->ro.ID, cm_rootUserp, &req, &connp);
+             if (code) 
+                 continue;
+ 
+             callp = cm_GetRxConn(connp);
+             code = RXAFS_GetVolumeStatus(callp, volp->ro.ID,
+                                           &volStat, &Name, &OfflineMsg, &MOTD);
+             rx_PutConnection(callp);        
+ 
+         } while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
+         code = cm_MapRPCError(code, &req);
+ 
+         if (code == 0 && volStat.Online) {
+             cm_VolumeStatusNotification(volp, volp->ro.ID, volp->ro.state, vl_online);
+             volp->ro.state = vl_online;
+             online = 1;
+         }
+     }
+ 
+     if (volp->bk.ID != 0 && (!volID || volID == volp->bk.ID) &&
+          (volp->bk.state == vl_busy || volp->bk.state == vl_offline)) {
+         cm_InitReq(&req);
+ 
+         for (serversp = volp->bk.serversp; serversp; serversp = serversp->next) {
+             if (serversp->status == srv_busy || serversp->status == srv_offline)
+                 serversp->status = srv_not_busy;
+         }
+ 
+         do {
+             code = cm_ConnFromVolume(volp, volp->bk.ID, cm_rootUserp, &req, &connp);
+             if (code) 
+                 continue;
+ 
+             callp = cm_GetRxConn(connp);
+             code = RXAFS_GetVolumeStatus(callp, volp->bk.ID,
+                                           &volStat, &Name, &OfflineMsg, &MOTD);
+             rx_PutConnection(callp);        
+ 
+         } while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
+         code = cm_MapRPCError(code, &req);
+ 
+         if (code == 0 && volStat.Online) {
+             cm_VolumeStatusNotification(volp, volp->bk.ID, volp->bk.state, vl_online);
+             volp->bk.state = vl_online;
+             online = 1;
+         }
+     }
+ 
+     lock_ReleaseMutex(&volp->mx);
+     return online;
+ }
+ 
+ 
+ /* called from the Daemon thread */
+ void cm_CheckOfflineVolumes(void)
+ {
+     cm_volume_t *volp;
+ 
+     lock_ObtainWrite(&cm_volumeLock);
+     for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp) {
+ 	volp->refCount++;
+ 	lock_ReleaseWrite(&cm_volumeLock);
+ 
+         cm_CheckOfflineVolume(volp, 0);
+ 
+ 	lock_ObtainWrite(&cm_volumeLock);
+ 	osi_assert(volp->refCount-- > 0);
+     }
+     lock_ReleaseWrite(&cm_volumeLock);
+ }
+ 
+ void
+ cm_UpdateVolumeStatus(cm_volume_t *volp, afs_uint32 volID)
+ {
+     struct cm_vol_state * statep = NULL;
+     enum volstatus newStatus;
+     cm_serverRef_t *tsrp;
+     cm_server_t *tsp;
+     int someBusy = 0, someOffline = 0, allOffline = 1, allBusy = 1, allDown = 1;
+ 
+     if (volp->rw.ID == volID) {
+         statep = &volp->rw;
+     } else if (volp->ro.ID == volID) {
+         statep = &volp->ro;
+     } else if (volp->bk.ID == volID) {
+         statep = &volp->bk;
+     }
+ 
+     if (!statep) {
+ #ifdef DEBUG
+         DebugBreak();
+ #endif
+         return;
+     }
+ 
+     lock_ObtainWrite(&cm_serverLock);
+     for (tsrp = statep->serversp; tsrp; tsrp=tsrp->next) {
+         tsp = tsrp->server;
+         cm_GetServerNoLock(tsp);
+         if (!(tsp->flags & CM_SERVERFLAG_DOWN)) {
+ 	    allDown = 0;
+             if (tsrp->status == srv_busy) {
+ 		allOffline = 0;
+                 someBusy = 1;
+             } else if (tsrp->status == srv_offline) {
+ 		allBusy = 0;
+ 		someOffline = 1;
+             } else {
+ 		allOffline = 0;
+                 allBusy = 0;
+             }
+         }
+         cm_PutServerNoLock(tsp);
+     }   
+     lock_ReleaseWrite(&cm_serverLock);
+ 
+     if (allDown)
+ 	newStatus = vl_alldown;
+     else if (allBusy || (someBusy && someOffline)) 
+ 	newStatus = vl_busy;
+     else if (allOffline)
+ 	newStatus = vl_offline;
+     else
+ 	newStatus = vl_online;
+ 
+ 
+     if (statep->ID && statep->state != newStatus)
+         cm_VolumeStatusNotification(volp, statep->ID, statep->state, newStatus);
+ 
+     statep->state = newStatus;
+ }
+ 
  /*
  ** Finds all volumes that reside on this server and reorders their
  ** RO list according to the changed rank of server.
***************
*** 640,658 ****
  
      /* find volumes which might have RO copy on server*/
      lock_ObtainWrite(&cm_volumeLock);
!     for(volp = cm_data.allVolumesp; volp; volp=volp->nextp)
      {
  	code = 1 ;	/* assume that list is unchanged */
  	volp->refCount++;
  	lock_ReleaseWrite(&cm_volumeLock);
  	lock_ObtainMutex(&volp->mx);
  
! 	if ((tsp->cellp==volp->cellp) && (volp->roServersp))
! 	    code =cm_ChangeRankServer(&volp->roServersp, tsp);
  
  	/* this volume list was changed */
  	if ( !code )
! 	    cm_RandomizeServer(&volp->roServersp);
  
  	lock_ReleaseMutex(&volp->mx);
  	lock_ObtainWrite(&cm_volumeLock);
--- 1180,1198 ----
  
      /* find volumes which might have RO copy on server*/
      lock_ObtainWrite(&cm_volumeLock);
!     for(volp = cm_data.allVolumesp; volp; volp=volp->allNextp)
      {
  	code = 1 ;	/* assume that list is unchanged */
  	volp->refCount++;
  	lock_ReleaseWrite(&cm_volumeLock);
  	lock_ObtainMutex(&volp->mx);
  
! 	if ((tsp->cellp==volp->cellp) && (volp->ro.serversp))
! 	    code =cm_ChangeRankServer(&volp->ro.serversp, tsp);
  
  	/* this volume list was changed */
  	if ( !code )
! 	    cm_RandomizeServer(&volp->ro.serversp);
  
  	lock_ReleaseMutex(&volp->mx);
  	lock_ObtainWrite(&cm_volumeLock);
***************
*** 661,667 ****
      lock_ReleaseWrite(&cm_volumeLock);
  }	
  
! /* dump all scp's that have reference count > 0 to a file. 
   * cookie is used to identify this batch for easy parsing, 
   * and it a string provided by a caller 
   */
--- 1201,1207 ----
      lock_ReleaseWrite(&cm_volumeLock);
  }	
  
! /* dump all volumes that have reference count > 0 to a file. 
   * cookie is used to identify this batch for easy parsing, 
   * and it a string provided by a caller 
   */
***************
*** 679,703 ****
      sprintf(output, "%s - dumping volumes - cm_data.currentVolumes=%d, cm_data.maxVolumes=%d\r\n", cookie, cm_data.currentVolumes, cm_data.maxVolumes);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
!     for (volp = cm_data.allVolumesp; volp; volp=volp->nextp)
      {
!         if (volp->refCount != 0)
!         {
! 	    cm_scache_t *scp;
! 	    int scprefs = 0;
! 
! 	    for (scp = cm_data.scacheLRULastp; scp; scp = (cm_scache_t *) osi_QPrev(&scp->q)) 
! 	    {
! 		if (scp->volp == volp)
! 		    scprefs++;
! 	    }
  
!             sprintf(output, "%s cell=%s name=%s rwID=%u roID=%u bkID=%u flags=0x%x fid (cell=%d, volume=%d, vnode=%d, unique=%d) refCount=%u scpRefs=%u\r\n", 
!                     cookie, volp->cellp->name, volp->namep, volp->rwID, volp->roID, volp->bkID, volp->flags, 
! 		    volp->dotdotFid.cell, volp->dotdotFid.volume, volp->dotdotFid.vnode, volp->dotdotFid.unique,
! 		    volp->refCount, scprefs);
!             WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
!         }
      }
      sprintf(output, "%s - Done dumping volumes.\r\n", cookie);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
--- 1219,1240 ----
      sprintf(output, "%s - dumping volumes - cm_data.currentVolumes=%d, cm_data.maxVolumes=%d\r\n", cookie, cm_data.currentVolumes, cm_data.maxVolumes);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
    
!     for (volp = cm_data.allVolumesp; volp; volp=volp->allNextp)
      {
!         cm_scache_t *scp;
!         int scprefs = 0;
  
!         for (scp = cm_data.allSCachesp; scp; scp = scp->allNextp) 
!         {
!             if (scp->volp == volp)
!                 scprefs++;
!         }   
! 
!         sprintf(output, "%s - volp=0x%p cell=%s name=%s rwID=%u roID=%u bkID=%u flags=0x%x fid (cell=%d, volume=%d, vnode=%d, unique=%d) refCount=%u scpRefs=%u\r\n", 
!                  cookie, volp, volp->cellp->name, volp->namep, volp->rw.ID, volp->ro.ID, volp->bk.ID, volp->flags, 
!                  volp->dotdotFid.cell, volp->dotdotFid.volume, volp->dotdotFid.vnode, volp->dotdotFid.unique,
!                  volp->refCount, scprefs);
!         WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
      }
      sprintf(output, "%s - Done dumping volumes.\r\n", cookie);
      WriteFile(outputFile, output, (DWORD)strlen(output), &zilch, NULL);
***************
*** 710,712 ****
--- 1247,1477 ----
  }
  
  
+ /* 
+  * String hash function used by SDBM project.
+  * It was chosen because it is fast and provides
+  * decent coverage.
+  */
+ afs_uint32 SDBMHash(const char * str)
+ {
+     afs_uint32 hash = 0;
+     size_t i, len;
+ 
+     if (str == NULL)
+         return 0;
+ 
+     for(i = 0, len = strlen(str); i < len; i++)
+     {
+         hash = str[i] + (hash << 6) + (hash << 16) - hash;
+     }
+ 
+     return (hash & 0x7FFFFFFF);
+ }
+ 
+ /* call with volume write-locked and mutex held */
+ void cm_AddVolumeToNameHashTable(cm_volume_t *volp)
+ {
+     int i;
+     
+     if (volp->flags & CM_VOLUMEFLAG_IN_HASH)
+         return;
+ 
+     i = CM_VOLUME_NAME_HASH(volp->namep);
+ 
+     volp->nameNextp = cm_data.volumeNameHashTablep[i];
+     cm_data.volumeNameHashTablep[i] = volp;
+     volp->flags |= CM_VOLUMEFLAG_IN_HASH;
+ }
+ 
+ /* call with volume write-locked and mutex held */
+ void cm_RemoveVolumeFromNameHashTable(cm_volume_t *volp)
+ {
+     cm_volume_t **lvolpp;
+     cm_volume_t *tvolp;
+     int i;
+ 	
+     if (volp->flags & CM_VOLUMEFLAG_IN_HASH) {
+ 	/* hash it out first */
+ 	i = CM_VOLUME_NAME_HASH(volp->namep);
+ 	for (lvolpp = &cm_data.volumeNameHashTablep[i], tvolp = cm_data.volumeNameHashTablep[i];
+ 	     tvolp;
+ 	     lvolpp = &tvolp->nameNextp, tvolp = tvolp->nameNextp) {
+ 	    if (tvolp == volp) {
+ 		*lvolpp = volp->nameNextp;
+ 		volp->flags &= ~CM_VOLUMEFLAG_IN_HASH;
+                 volp->nameNextp = NULL;
+ 		break;
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* call with volume write-locked and mutex held */
+ void cm_AddVolumeToIDHashTable(cm_volume_t *volp, afs_uint32 volType)
+ {
+     int i;
+     struct cm_vol_state * statep;
+ 
+     switch (volType) {
+     case RWVOL:
+         statep = &volp->rw;
+         break;
+     case ROVOL:                                
+         statep = &volp->ro;
+         break;
+     case BACKVOL:
+         statep = &volp->bk;
+         break;
+     default:
+         return;
+     }
+ 
+     if (statep->flags & CM_VOLUMEFLAG_IN_HASH)
+         return;
+ 
+     i = CM_VOLUME_ID_HASH(statep->ID);
+ 
+     switch (volType) {
+     case RWVOL:
+         statep->nextp = cm_data.volumeRWIDHashTablep[i];
+         cm_data.volumeRWIDHashTablep[i] = volp;
+         break;
+     case ROVOL:                                
+         statep->nextp = cm_data.volumeROIDHashTablep[i];
+         cm_data.volumeROIDHashTablep[i] = volp;
+         break;
+     case BACKVOL:
+         statep->nextp = cm_data.volumeBKIDHashTablep[i];
+         cm_data.volumeBKIDHashTablep[i] = volp;
+         break;
+     }
+     statep->flags |= CM_VOLUMEFLAG_IN_HASH;
+ }
+ 
+ 
+ /* call with volume write-locked and mutex held */
+ void cm_RemoveVolumeFromIDHashTable(cm_volume_t *volp, afs_uint32 volType)
+ {
+     cm_volume_t **lvolpp;
+     cm_volume_t *tvolp;
+     struct cm_vol_state * statep;
+     int i;
+ 	
+     switch (volType) {
+     case RWVOL:
+         statep = &volp->rw;
+         break;
+     case ROVOL:                                
+         statep = &volp->ro;
+         break;
+     case BACKVOL:
+         statep = &volp->bk;
+         break;
+     default:
+         return;
+     }
+ 
+     if (statep->flags & CM_VOLUMEFLAG_IN_HASH) {
+ 	/* hash it out first */
+         i = CM_VOLUME_ID_HASH(statep->ID);
+ 
+         switch (volType) {
+         case RWVOL:
+             lvolpp = &cm_data.volumeRWIDHashTablep[i];
+             tvolp = cm_data.volumeRWIDHashTablep[i];
+             break;
+         case ROVOL:
+             lvolpp = &cm_data.volumeROIDHashTablep[i];
+             tvolp = cm_data.volumeROIDHashTablep[i];
+             break;
+         case BACKVOL:
+             lvolpp = &cm_data.volumeBKIDHashTablep[i];
+             tvolp = cm_data.volumeBKIDHashTablep[i];
+             break;
+         }
+ 	do {
+ 	    if (tvolp == volp) {
+ 		*lvolpp = statep->nextp;
+                 statep->flags &= ~CM_VOLUMEFLAG_IN_HASH;
+                 statep->nextp = NULL;
+ 		break;
+ 	    }
+ 
+             switch (volType) {
+             case RWVOL:
+                 lvolpp = &tvolp->rw.nextp;
+                 tvolp = tvolp->rw.nextp;
+                 break;
+             case ROVOL:                                
+                 lvolpp = &tvolp->ro.nextp;
+                 tvolp = tvolp->ro.nextp;
+                 break;
+             case BACKVOL:
+                 lvolpp = &tvolp->bk.nextp;
+                 tvolp = tvolp->bk.nextp;
+                 break;
+             }
+ 	} while(tvolp);
+     }
+ }
+ 
+ /* must be called with cm_volumeLock write-locked! */
+ void cm_AdjustVolumeLRU(cm_volume_t *volp)
+ {
+     if (volp == cm_data.volumeLRULastp)
+         cm_data.volumeLRULastp = (cm_volume_t *) osi_QPrev(&volp->q);
+     if (volp->flags & CM_VOLUMEFLAG_IN_LRU_QUEUE)
+         osi_QRemoveHT((osi_queue_t **) &cm_data.volumeLRUFirstp, (osi_queue_t **) &cm_data.volumeLRULastp, &volp->q);
+     osi_QAdd((osi_queue_t **) &cm_data.volumeLRUFirstp, &volp->q);
+     volp->flags |= CM_VOLUMEFLAG_IN_LRU_QUEUE;
+     if (!cm_data.volumeLRULastp) 
+         cm_data.volumeLRULastp = volp;
+ }
+ 
+ /* must be called with cm_volumeLock write-locked! */
+ void cm_RemoveVolumeFromLRU(cm_volume_t *volp)
+ {
+     if (volp->flags & CM_VOLUMEFLAG_IN_LRU_QUEUE) {
+         if (volp == cm_data.volumeLRULastp)
+             cm_data.volumeLRULastp = (cm_volume_t *) osi_QPrev(&volp->q);
+         osi_QRemoveHT((osi_queue_t **) &cm_data.volumeLRUFirstp, (osi_queue_t **) &cm_data.volumeLRULastp, &volp->q);
+         volp->flags &= ~CM_VOLUMEFLAG_IN_LRU_QUEUE;
+     }
+ }
+ 
+ static char * volstatus_str(enum volstatus vs)
+ {
+     switch (vs) {
+     case vl_online:
+         return "online";
+     case vl_busy:
+         return "busy";
+     case vl_offline:
+         return "offline";
+     case vl_alldown:
+         return "alldown";
+     default:
+         return "unknown";
+     }
+ }
+ 
+ void cm_VolumeStatusNotification(cm_volume_t * volp, afs_uint32 volID, enum volstatus old, enum volstatus new)
+ {
+     char volstr[CELL_MAXNAMELEN + VL_MAXNAMELEN];
+     char *ext = "";
+ 
+     if (volID == volp->rw.ID)
+         ext = "";
+     else if (volID == volp->ro.ID)
+         ext = ".readonly";
+     else if (volID == volp->bk.ID)
+         ext = ".backup";
+     else
+         ext = ".nomatch";
+     snprintf(volstr, sizeof(volstr), "%s:%s%s", volp->cellp->name, volp->namep, ext);
+ 
+     osi_Log4(afsd_logp, "VolumeStatusNotification: %-48s [%10u] (%s -> %s)",
+              volstr, volID, volstatus_str(old), volstatus_str(new));
+ 
+     cm_VolStatus_Change_Notification(volp->cellp->cellID, volID, new);
+ }       
Index: openafs/src/WINNT/afsd/cm_volume.h
diff -c openafs/src/WINNT/afsd/cm_volume.h:1.5.6.2 openafs/src/WINNT/afsd/cm_volume.h:1.5.6.4
*** openafs/src/WINNT/afsd/cm_volume.h:1.5.6.2	Sat Feb  3 21:46:25 2007
--- openafs/src/WINNT/afsd/cm_volume.h	Tue Jun 12 11:38:43 2007
***************
*** 14,45 ****
  
  #define CM_VOLUME_MAGIC    ('V' | 'O' <<8 | 'L'<<16 | 'M'<<24)
  
  typedef struct cm_volume {
      afs_uint32  magic;
      cm_cell_t *cellp;		        /* never changes */
!     char namep[VL_MAXNAMELEN];		/* by cm_volumeLock */
!     unsigned long rwID;		        /* by cm_volumeLock */
!     unsigned long roID;		        /* by cm_volumeLock */
!     unsigned long bkID;		        /* by cm_volumeLock */
!     struct cm_volume *nextp;	        /* by cm_volumeLock */
      struct cm_fid dotdotFid;	        /* parent of volume root */
      osi_mutex_t mx;
!     long flags;			        /* by mx */
!     unsigned long refCount;		/* by cm_volumeLock */
!     cm_serverRef_t *rwServersp;	        /* by mx */
!     cm_serverRef_t *roServersp;	        /* by mx */
!     cm_serverRef_t *bkServersp;	        /* by mx */
  } cm_volume_t;
  
! #define CM_VOLUMEFLAG_RESET	1	/* reload this info on next use */
  
  extern void cm_InitVolume(int newFile, long maxVols);
  
! extern long cm_GetVolumeByName(struct cm_cell *, char *, struct cm_user *,
! 	struct cm_req *, long, cm_volume_t **);
  
! extern long cm_GetVolumeByID(struct cm_cell *cellp, long volumeID,
! 	cm_user_t *userp, cm_req_t *reqp, cm_volume_t **outVolpp);
  
  extern void cm_GetVolume(cm_volume_t *volp);
  
--- 14,79 ----
  
  #define CM_VOLUME_MAGIC    ('V' | 'O' <<8 | 'L'<<16 | 'M'<<24)
  
+ enum volstatus {vl_online, vl_busy, vl_offline, vl_alldown, vl_unknown};
+ 
+ typedef struct cm_vol_state {
+     afs_uint32      ID;                 /* by mx */
+     struct cm_volume *nextp;            /* volumeIDHashTable; by cm_volumeLock */
+     cm_serverRef_t *serversp;           /* by mx */
+     enum volstatus  state;              /* by mx */
+     afs_uint32      flags;              /* by mx */
+ } cm_vol_state_t;
+ 
  typedef struct cm_volume {
+     osi_queue_t q;                      /* LRU queue; cm_volumeLock */
      afs_uint32  magic;
+     struct cm_volume *allNextp;	        /* allVolumes; by cm_volumeLock */
+     struct cm_volume *nameNextp;        /* volumeNameHashTable; by cm_volumeLock */
      cm_cell_t *cellp;		        /* never changes */
!     char namep[VL_MAXNAMELEN];		/* name of the normal volume - assigned during allocation; */
!                                         /* by cm_volumeLock */
!     struct cm_vol_state rw;	        /* by cm_volumeLock */
!     struct cm_vol_state ro;		/* by cm_volumeLock */
!     struct cm_vol_state bk;		/* by cm_volumeLock */
      struct cm_fid dotdotFid;	        /* parent of volume root */
      osi_mutex_t mx;
!     afs_uint32 flags;			/* by mx */
!     afs_uint32 refCount;		/* by cm_volumeLock */
  } cm_volume_t;
  
! #define CM_VOLUMEFLAG_RESET	   1	/* reload this info on next use */
! #define CM_VOLUMEFLAG_IN_HASH      2
! #define CM_VOLUMEFLAG_IN_LRU_QUEUE 4
! 
! 
! typedef struct cm_volumeRef {
!     struct cm_volumeRef * next;
!     afs_uint32  volID;
! } cm_volumeRef_t;
  
  extern void cm_InitVolume(int newFile, long maxVols);
  
! extern long cm_GetVolumeByName(struct cm_cell *cellp, char *volNamep, 
!                                struct cm_user *userp, struct cm_req *reqp, 
!                                afs_uint32 flags, cm_volume_t **outVolpp);
! 
! extern long cm_GetVolumeByID(struct cm_cell *cellp, afs_uint32 volumeID,
!                              cm_user_t *userp, cm_req_t *reqp, 
!                              afs_uint32 flags, cm_volume_t **outVolpp);
! 
! #define CM_GETVOL_FLAG_CREATE               1
! #define CM_GETVOL_FLAG_NO_LRU_UPDATE        2
! 
! /* hash define.  Must not include the cell, since the callback revocation code
!  * doesn't necessarily know the cell in the case of a multihomed server
!  * contacting us from a mystery address.
!  */
! #define CM_VOLUME_ID_HASH(volid)   ((unsigned long) volid \
! 					% cm_data.volumeHashTableSize)
! 
! #define CM_VOLUME_NAME_HASH(name)  (SDBMHash(name) % cm_data.volumeHashTableSize)
  
! extern afs_uint32 SDBMHash(const char *);
  
  extern void cm_GetVolume(cm_volume_t *volp);
  
***************
*** 50,56 ****
  extern void cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
  	cm_req_t *reqp);
  
! extern cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, unsigned long volume);
  
  extern void cm_ChangeRankVolume(cm_server_t *tsp);
  
--- 84,90 ----
  extern void cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
  	cm_req_t *reqp);
  
! extern cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, afs_uint32 volume);
  
  extern void cm_ChangeRankVolume(cm_server_t *tsp);
  
***************
*** 61,64 ****
--- 95,121 ----
  extern long cm_ShutdownVolume(void);
  
  extern int cm_DumpVolumes(FILE *outputFile, char *cookie, int lock);
+ 
+ extern int cm_VolNameIsID(char *aname);
+ 
+ extern void cm_RemoveVolumeFromNameHashTable(cm_volume_t * volp);
+ 
+ extern void cm_RemoveVolumeFromIDHashTable(cm_volume_t * volp, afs_uint32 volType);
+ 
+ extern void cm_AddVolumeToNameHashTable(cm_volume_t * volp);
+ 
+ extern void cm_AddVolumeToIDHashTable(cm_volume_t * volp, afs_uint32 volType);
+ 
+ extern void cm_AdjustVolumeLRU(cm_volume_t *volp);
+ 
+ extern void cm_RemoveVolumeFromLRU(cm_volume_t *volp);
+ 
+ extern void cm_CheckOfflineVolumes(void);
+ 
+ extern long cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID);
+ 
+ extern void cm_UpdateVolumeStatus(cm_volume_t *volp, afs_uint32 volID);
+ 
+ extern void cm_VolumeStatusNotification(cm_volume_t * volp, afs_uint32 volID, enum volstatus old, enum volstatus new);
+ 
  #endif /*  __CM_VOLUME_H_ENV__ */
Index: openafs/src/WINNT/afsd/fs.c
diff -c openafs/src/WINNT/afsd/fs.c:1.32.4.9 openafs/src/WINNT/afsd/fs.c:1.32.4.11
*** openafs/src/WINNT/afsd/fs.c:1.32.4.9	Tue May 15 16:20:55 2007
--- openafs/src/WINNT/afsd/fs.c	Mon Jul  2 20:35:13 2007
***************
*** 271,277 ****
  
      code = pioctl(apath, VIOC_FILE_CELL_NAME, &blob, 1);
      if (code == 0)
!         return !strcmp("Freelance.Local.Root",space);
      return 1;   /* assume it is because it is more restrictive that way */
  }
  
--- 271,277 ----
  
      code = pioctl(apath, VIOC_FILE_CELL_NAME, &blob, 1);
      if (code == 0)
!         return !stricmp("Freelance.Local.Root",space);
      return 1;   /* assume it is because it is more restrictive that way */
  }
  
***************
*** 4639,4648 ****
      else if (code == ENODEV) {
  	fprintf(stderr,"%s: AFS service may not have started.\n", pn);
      }
!     else if (code == ESRCH) {
  	fprintf(stderr,"%s: Cell name not recognized.\n", pn);
      }
!     else if (code == EPIPE) {
  	fprintf(stderr,"%s: Volume name or ID not recognized.\n", pn);
      }
      else if (code == EFBIG) {
--- 4639,4648 ----
      else if (code == ENODEV) {
  	fprintf(stderr,"%s: AFS service may not have started.\n", pn);
      }
!     else if (code == ESRCH) {   /* hack */
  	fprintf(stderr,"%s: Cell name not recognized.\n", pn);
      }
!     else if (code == EPIPE) {   /* hack */
  	fprintf(stderr,"%s: Volume name or ID not recognized.\n", pn);
      }
      else if (code == EFBIG) {
***************
*** 4654,4659 ****
--- 4654,4677 ----
  	else
  	    fprintf(stderr,"%s: Connection timed out", pn);
      }
+     else if (code == EBUSY) {
+ 	if (filename) 
+             fprintf(stderr,"%s: All servers are busy on which '%s' resides\n", pn, filename);
+ 	else 
+             fprintf(stderr,"%s: All servers are busy\n", pn);
+     } 
+     else if (code == ENXIO) {
+ 	if (filename) 
+             fprintf(stderr,"%s: All volume instances are offline on which '%s' resides\n", pn, filename);
+ 	else 
+             fprintf(stderr,"%s: All volume instances are offline\n", pn);
+     } 
+     else if (code == ENOSYS) {
+ 	if (filename) 
+             fprintf(stderr,"%s: All servers are down on which '%s' resides\n", pn, filename);
+ 	else 
+             fprintf(stderr,"%s: All servers are down\n", pn);
+     } 
      else {
  	if (filename) 
              fprintf(stderr,"%s:'%s'", pn, filename);
Index: openafs/src/WINNT/afsd/lanahelper.cpp
diff -c openafs/src/WINNT/afsd/lanahelper.cpp:1.12.2.3 openafs/src/WINNT/afsd/lanahelper.cpp:1.12.2.4
*** openafs/src/WINNT/afsd/lanahelper.cpp:1.12.2.3	Tue Feb 27 19:42:05 2007
--- openafs/src/WINNT/afsd/lanahelper.cpp	Tue Jun 19 01:25:40 2007
***************
*** 439,445 ****
--- 439,447 ----
      } astat;
      unsigned char kWLA_MAC[6] = { 0x02, 0x00, 0x4c, 0x4f, 0x4f, 0x50 };
      unsigned char kVista_WLA_MAC[6] = { 0x7F, 0x00, 0x00, 0x01, 0x4f, 0x50 };
+ #ifdef USE_VMWARE
      unsigned char kVMWare_MAC[5] = { 0x00, 0x50, 0x56, 0xC0, 0x00 };
+ #endif
      int status;
      HKEY hkConfig;
      LONG rv;
***************
*** 491,498 ****
          return FALSE;
      }
      return (memcmp(astat.status.adapter_address, kWLA_MAC, 6) == 0 ||
! 	    memcmp(astat.status.adapter_address, kVista_WLA_MAC, 6) == 0 ||
! 	    memcmp(astat.status.adapter_address, kVMWare_MAC, 5) == 0);
  }
  
  // Get the netbios named used/to-be-used by the AFS SMB server.
--- 493,503 ----
          return FALSE;
      }
      return (memcmp(astat.status.adapter_address, kWLA_MAC, 6) == 0 ||
! 	    memcmp(astat.status.adapter_address, kVista_WLA_MAC, 6) == 0 
! #ifdef USE_VMWARE
!              || memcmp(astat.status.adapter_address, kVMWare_MAC, 5) == 0
! #endif
!              );
  }
  
  // Get the netbios named used/to-be-used by the AFS SMB server.
Index: openafs/src/WINNT/afsd/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.118.2.33 openafs/src/WINNT/afsd/smb.c:1.118.2.37
*** openafs/src/WINNT/afsd/smb.c:1.118.2.33	Wed Mar  7 13:14:05 2007
--- openafs/src/WINNT/afsd/smb.c	Thu Jul  5 15:22:16 2007
***************
*** 1798,1803 ****
--- 1798,1833 ----
          return 0;
      }
  
+     /* Check for volume references
+ 
+        They look like <cell>{%,#}<volume>
+     */
+     if (strchr(shareName, '%') != NULL ||
+         strchr(shareName, '#') != NULL) {
+         char pathstr[CELL_MAXNAMELEN + VL_MAXNAMELEN + 1 + CM_PREFIX_VOL_CCH];
+                                 /* make room for '/@vol:' + mountchar + NULL terminator*/
+ 
+         osi_Log1(smb_logp, "smb_FindShare found volume reference [%s]",
+                  osi_LogSaveString(smb_logp, shareName));
+ 
+         snprintf(pathstr, sizeof(pathstr)/sizeof(char),
+                  "/" CM_PREFIX_VOL "%s", shareName);
+         pathstr[sizeof(pathstr)/sizeof(char) - 1] = '\0';
+         len = strlen(pathstr) + 1;
+ 
+         *pathNamep = malloc(len);
+         if (*pathNamep) {
+             strcpy(*pathNamep, pathstr);
+             strlwr(*pathNamep);
+             osi_Log1(smb_logp, "   returning pathname [%s]",
+                      osi_LogSaveString(smb_logp, *pathNamep));
+ 
+             return 1;
+         } else {
+             return 0;
+         }
+     }
+ 
  #ifndef DJGPP
      code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_OPENAFS_SUBKEY "\\Submounts",
                           0, KEY_QUERY_VALUE, &parmKey);
***************
*** 4487,4492 ****
--- 4517,4523 ----
                           "has filetype %d", osi_LogSaveString(smb_logp, dep->name),
                            fileType);
                  if (fileType == CM_SCACHETYPE_DIRECTORY ||
+                     fileType == CM_SCACHETYPE_MOUNTPOINT ||
                      fileType == CM_SCACHETYPE_DFSLINK ||
                      fileType == CM_SCACHETYPE_INVALID)
                      osi_Log0(smb_logp, "SMB search dir skipping directory or bad link");
***************
*** 6715,6721 ****
  
          offset = LargeIntegerAdd(offset,
                                   ConvertLongToLargeInteger(written));
!         count -= written;
          total_written += written;
          written = 0;
      }
--- 6746,6752 ----
  
          offset = LargeIntegerAdd(offset,
                                   ConvertLongToLargeInteger(written));
!         count -= (unsigned short)written;
          total_written += written;
          written = 0;
      }
***************
*** 8342,8347 ****
--- 8373,8383 ----
  	    }
  
  	    if (lanaRemaining == 0) {
+                 cm_VolStatus_Network_Stopped(cm_NetbiosName
+ #ifdef _WIN64
+                                              ,cm_NetbiosName
+ #endif
+                                               );
  		smb_ListenerState = SMB_LISTENER_STOPPED;
  		smb_LANadapter = -1;
  		lana_list.length = 0;
***************
*** 8771,8776 ****
--- 8807,8817 ----
  	lana_list.length = 0;
  	smb_LANadapter = -1;
  	smb_ListenerState = SMB_LISTENER_STOPPED;
+         cm_VolStatus_Network_Stopped(cm_NetbiosName
+ #ifdef _WIN64
+                                       ,cm_NetbiosName
+ #endif
+                                       );
      }
          
      /* we're done with the NCB now */
***************
*** 8789,8794 ****
--- 8830,8840 ----
  	return;
      
      smb_ListenerState = SMB_LISTENER_STARTED;
+     cm_VolStatus_Network_Started(cm_NetbiosName
+ #ifdef _WIN64
+                                   , cm_NetbiosName
+ #endif
+                                   );
  
      for (i = 0; i < lana_list.length; i++) {
          if (lana_list.lana[i] == 255) 
***************
*** 8845,8850 ****
--- 8891,8901 ----
  	return;
  
      smb_ListenerState = SMB_LISTENER_STOPPED;
+     cm_VolStatus_Network_Stopped(cm_NetbiosName
+ #ifdef _WIN64
+                                   , cm_NetbiosName
+ #endif
+                                   );
  
      ncbp = GetNCB();
  
***************
*** 9564,9566 ****
--- 9615,9622 ----
          lock_ReleaseRead(&smb_rctLock);
      return 0;
  }
+ 
+ long smb_IsNetworkStarted(void)
+ {
+     return (smb_ListenerState == SMB_LISTENER_STARTED && smbShutdownFlag == 0);
+ }
Index: openafs/src/WINNT/afsd/smb.h
diff -c openafs/src/WINNT/afsd/smb.h:1.41.2.15 openafs/src/WINNT/afsd/smb.h:1.41.2.16
*** openafs/src/WINNT/afsd/smb.h:1.41.2.15	Tue Apr  3 10:50:40 2007
--- openafs/src/WINNT/afsd/smb.h	Thu Jul  5 15:22:16 2007
***************
*** 755,760 ****
--- 755,761 ----
  extern void smb_RestartListeners(void);
  extern void smb_StopListeners(void);
  extern void smb_StopListener(NCB *ncbp, int lana);
+ extern long smb_IsNetworkStarted(void);
  
  #define SMB_LISTENER_UNINITIALIZED -1
  #define SMB_LISTENER_STOPPED 0
Index: openafs/src/WINNT/afsd/smb3.c
diff -c openafs/src/WINNT/afsd/smb3.c:1.95.2.33 openafs/src/WINNT/afsd/smb3.c:1.95.2.38
*** openafs/src/WINNT/afsd/smb3.c:1.95.2.33	Wed May 16 11:55:16 2007
--- openafs/src/WINNT/afsd/smb3.c	Sat Jun 30 00:38:52 2007
***************
*** 144,150 ****
          if(!(i%16)) {
              if(i) {
                  osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buf));
!                 strcat(buf,"\n");
                  OutputDebugString(buf);
              }
              sprintf(buf,"%5x",i);
--- 144,150 ----
          if(!(i%16)) {
              if(i) {
                  osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buf));
!                 strcat(buf,"\r\n");
                  OutputDebugString(buf);
              }
              sprintf(buf,"%5x",i);
***************
*** 169,175 ****
      }    
      if(i) {
          osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buf));
!         strcat(buf,"\n");
          OutputDebugString(buf);
      }   
  }
--- 169,175 ----
      }    
      if(i) {
          osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buf));
!         strcat(buf,"\r\n");
          OutputDebugString(buf);
      }   
  }
***************
*** 3719,3725 ****
                      *((u_long *)dptr) = SMB_ATTR_DIRECTORY;
                      break;
                  default:
!                     *((u_long *)dptr) = SMB_ATTR_NORMAL;
                          
                  }
                  /* merge in hidden attribute */
--- 3719,3735 ----
                      *((u_long *)dptr) = SMB_ATTR_DIRECTORY;
                      break;
                  default:
!                     /* if we get here we either have a normal file
!                      * or we have a file for which we have never 
!                      * received status info.  In this case, we can
!                      * check the even/odd value of the entry's vnode.
!                      * even means it is to be treated as a directory
!                      * and odd means it is to be treated as a file.
!                      */
!                     if (mustFake && (scp->fid.vnode & 0x1))
!                         *((u_long *)dptr) = SMB_ATTR_DIRECTORY;
!                     else
!                         *((u_long *)dptr) = SMB_ATTR_NORMAL;
                          
                  }
                  /* merge in hidden attribute */
***************
*** 4447,4452 ****
--- 4457,4463 ----
  
      if (!(attribute & SMB_ATTR_DIRECTORY) &&
          (targetscp->fileType == CM_SCACHETYPE_DIRECTORY ||
+          targetscp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
           targetscp->fileType == CM_SCACHETYPE_DFSLINK ||
           targetscp->fileType == CM_SCACHETYPE_INVALID)) {
  
***************
*** 5107,5112 ****
--- 5118,5124 ----
                   "has filetype %d", dep->name,
                   fileType);*/
                  if (fileType == CM_SCACHETYPE_DIRECTORY ||
+                     fileType == CM_SCACHETYPE_MOUNTPOINT ||
                      fileType == CM_SCACHETYPE_DFSLINK ||
                      fileType == CM_SCACHETYPE_INVALID)
                      osi_Log0(smb_logp, "T2 search dir skipping directory or bad link");
***************
*** 6177,6182 ****
--- 6189,6195 ----
          cm_key_t key;
          LARGE_INTEGER LOffset;
          LARGE_INTEGER LLength;
+         cm_scache_t * scp;
  
          pid = ((smb_t *) inp)->pid;
          key = cm_GenerateKey(vcp->vcID, pid, fd);
***************
*** 6186,6194 ****
          LLength.HighPart = 0;
          LLength.LowPart = count;
  
!         lock_ObtainMutex(&fidp->scp->mx);
!         code = cm_LockCheckWrite(fidp->scp, LOffset, LLength, key);
!         lock_ReleaseMutex(&fidp->scp->mx);
  
          if (code)
              goto done;
--- 6199,6208 ----
          LLength.HighPart = 0;
          LLength.LowPart = count;
  
!         scp = fidp->scp;
!         lock_ObtainMutex(&scp->mx);
!         code = cm_LockCheckWrite(scp, LOffset, LLength, key);
!         lock_ReleaseMutex(&scp->mx);
  
          if (code)
              goto done;
***************
*** 6297,6311 ****
      key = cm_GenerateKey(vcp->vcID, pid, fd);
      {
          LARGE_INTEGER LOffset, LLength;
  
          LOffset.HighPart = offset.HighPart;
          LOffset.LowPart = offset.LowPart;
          LLength.HighPart = 0;
          LLength.LowPart = count;
  
!         lock_ObtainMutex(&fidp->scp->mx);
!         code = cm_LockCheckRead(fidp->scp, LOffset, LLength, key);
!         lock_ReleaseMutex(&fidp->scp->mx);
      }
  
      if (code) {
--- 6311,6327 ----
      key = cm_GenerateKey(vcp->vcID, pid, fd);
      {
          LARGE_INTEGER LOffset, LLength;
+         cm_scache_t *scp;
  
          LOffset.HighPart = offset.HighPart;
          LOffset.LowPart = offset.LowPart;
          LLength.HighPart = 0;
          LLength.LowPart = count;
  
!         scp = fidp->scp;
!         lock_ObtainMutex(&scp->mx);
!         code = cm_LockCheckRead(scp, LOffset, LLength, key);
!         lock_ReleaseMutex(&scp->mx);
      }
  
      if (code) {
Index: openafs/src/WINNT/afsd/smb_ioctl.c
diff -c openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.4 openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.5
*** openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.4	Sat Apr 14 14:49:36 2007
--- openafs/src/WINNT/afsd/smb_ioctl.c	Sun Jun 10 13:00:07 2007
***************
*** 115,121 ****
   * this is the first read call.  This is the function that actually makes the
   * call to the ioctl code.
   */
! smb_IoctlPrepareRead(smb_fid_t *fidp, smb_ioctl_t *ioctlp, cm_user_t *userp)
  {
      long opcode;
      smb_ioctlProc_t *procp = NULL;
--- 115,121 ----
   * this is the first read call.  This is the function that actually makes the
   * call to the ioctl code.
   */
! long smb_IoctlPrepareRead(smb_fid_t *fidp, smb_ioctl_t *ioctlp, cm_user_t *userp)
  {
      long opcode;
      smb_ioctlProc_t *procp = NULL;
Index: openafs/src/WINNT/afsd/smb_ioctl.h
diff -c openafs/src/WINNT/afsd/smb_ioctl.h:1.4.14.2 openafs/src/WINNT/afsd/smb_ioctl.h:1.4.14.3
*** openafs/src/WINNT/afsd/smb_ioctl.h:1.4.14.2	Mon Dec 11 23:01:26 2006
--- openafs/src/WINNT/afsd/smb_ioctl.h	Sun Jun 10 13:00:07 2007
***************
*** 42,45 ****
--- 42,47 ----
  	smb_packet_t *outp, dos_ptr rawBuf);
  #endif /* !DJGPP */
  
+ extern long smb_IoctlPrepareRead(smb_fid_t *fidp, smb_ioctl_t *ioctlp, cm_user_t *userp);
+ 
  #endif /*  __SMB_IOCTL_H_ENV__ */
Index: openafs/src/WINNT/afsd/symlink.c
diff -c openafs/src/WINNT/afsd/symlink.c:1.8.4.1 openafs/src/WINNT/afsd/symlink.c:1.8.4.2
*** openafs/src/WINNT/afsd/symlink.c:1.8.4.1	Tue Apr 10 14:39:48 2007
--- openafs/src/WINNT/afsd/symlink.c	Mon Jul  2 20:35:13 2007
***************
*** 88,94 ****
  
      code = pioctl(apath, VIOC_FILE_CELL_NAME, &blob, 1);
      if (code == 0)
!         return !strcmp("Freelance.Local.Root",space);
      return 1;   /* assume it is because it is more restrictive that way */
  }
  
--- 88,94 ----
  
      code = pioctl(apath, VIOC_FILE_CELL_NAME, &blob, 1);
      if (code == 0)
!         return !stricmp("Freelance.Local.Root",space);
      return 1;   /* assume it is because it is more restrictive that way */
  }
  
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.14 openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.16
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.14	Wed May 16 18:37:08 2007
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm	Fri Jun 22 10:40:12 2007
***************
*** 1,213 ****
! <html xmlns:v="urn:schemas-microsoft-com:vml"
! xmlns:o="urn:schemas-microsoft-com:office:office"
! xmlns:w="urn:schemas-microsoft-com:office:word"
! xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
! xmlns="http://www.w3.org/TR/REC-html40">
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
  <meta name=ProgId content=Word.Document>
  <meta name=Generator content="Microsoft Word 11">
  <meta name=Originator content="Microsoft Word 11">
- <link rel=File-List href="index_files/filelist.xml">
  <link rel=Edit-Time-Data href="index_files/editdata.mso">
! <!--[if !mso]>
! <style>
! v\:* {behavior:url(#default#VML);}
! o\:* {behavior:url(#default#VML);}
! w\:* {behavior:url(#default#VML);}
! .shape {behavior:url(#default#VML);}
  </style>
- <![endif]-->
  <title>OpenAFS for Windows Documentation</title>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="PlaceType"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="PlaceName"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="place"/>
- <!--[if gte mso 9]><xml>
-  <w:WordDocument>
-   <w:ValidateAgainstSchemas/>
-   <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
-   <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
-   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
-   <w:Compatibility>
-    <w:UseFELayout/>
-   </w:Compatibility>
-   <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
-  </w:WordDocument>
- </xml><![endif]--><!--[if gte mso 9]><xml>
-  <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
-  </w:LatentStyles>
- </xml><![endif]--><!--[if !mso]><object
-  classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui></object>
  <style>
  st1\:*{behavior:url(#ieooui) }
  </style>
- <![endif]-->
  <style>
  <!--
!  /* Font Definitions */
!  @font-face
! 	{font-family:Wingdings;
! 	panose-1:5 0 0 0 0 0 0 0 0 0;
! 	mso-font-charset:2;
! 	mso-generic-font-family:auto;
! 	mso-font-pitch:variable;
! 	mso-font-signature:0 268435456 0 0 -2147483648 0;}
! @font-face
! 	{font-family:"MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;
! 	mso-font-alt:"\FF2D\FF33 \660E\671D";
! 	mso-font-charset:128;
! 	mso-generic-font-family:modern;
! 	mso-font-pitch:fixed;
! 	mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
! @font-face
! 	{font-family:"\@MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;
! 	mso-font-charset:128;
! 	mso-generic-font-family:modern;
! 	mso-font-pitch:fixed;
! 	mso-font-signature:-1610612033 1757936891 16 0 131231 0;}
!  /* Style Definitions */
!  p.MsoNormal, li.MsoNormal, div.MsoNormal
  	{mso-style-parent:"";
- 	margin:0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
  	font-family:"Times New Roman";
! 	mso-fareast-font-family:"Times New Roman";}
! a:link, span.MsoHyperlink
  	{color:blue;
  	text-decoration:underline;
! 	text-underline:single;}
! a:visited, span.MsoHyperlinkFollowed
  	{color:purple;
  	text-decoration:underline;
! 	text-underline:single;}
  p
! 	{mso-margin-top-alt:auto;
! 	margin-right:0pt;
! 	mso-margin-bottom-alt:auto;
  	margin-left:0pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
  	font-family:"Times New Roman";
! 	mso-fareast-font-family:"Times New Roman";}
! @page Section1
! 	{size:612.0pt 792.0pt;
! 	margin:72.0pt 90.0pt 72.0pt 90.0pt;
! 	mso-header-margin:36.0pt;
! 	mso-footer-margin:36.0pt;
! 	mso-paper-source:0;}
! div.Section1
! 	{page:Section1;}
!  /* List Definitions */
!  @list l0
! 	{mso-list-id:454254861;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:-73732636 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l0:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! ol
! 	{margin-bottom:0pt;}
! ul
! 	{margin-bottom:0pt;}
  -->
  </style>
- <!--[if gte mso 10]>
- <style>
-  /* Style Definitions */
-  table.MsoNormalTable
- 	{mso-style-name:"Table Normal";
- 	mso-tstyle-rowband-size:0;
- 	mso-tstyle-colband-size:0;
- 	mso-style-noshow:yes;
- 	mso-style-parent:"";
- 	mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
- 	mso-para-margin:0pt;
- 	mso-para-margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
- 	font-size:10.0pt;
- 	font-family:"Times New Roman";
- 	mso-fareast-font-family:"Times New Roman";
- 	mso-ansi-language:#0400;
- 	mso-fareast-language:#0400;
- 	mso-bidi-language:#0400;}
- </style>
- <![endif]-->
  <meta name=Template content="C:\Program Files\Microsoft Office\Office\html.dot">
  <!--[if gte mso 9]><xml>
!  <u1:shapedefaults u2:ext="edit" spidmax="1027"/>
! </xml><![endif]--><!--[if gte mso 9]><xml>
!  <u3:shapelayout u4:ext="edit">
!   <u3:idmap u4:ext="edit" data="1"/>
!  </u3:shapelayout>
! </xml><![endif]--><!--[if gte mso 9]><xml>
!  <o:shapedefaults v:ext="edit" spidmax="2050"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
!  <o:shapelayout v:ext="edit">
!   <o:idmap v:ext="edit" data="1"/>
!  </o:shapelayout></xml><![endif]-->
  </head>
  
! <body bgcolor=white lang=EN-US link=blue vlink=purple style='tab-interval:36.0pt'>
  
  <div class=Section1>
  
! <p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
!  o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
!  stroked="f">
!  <v:stroke joinstyle="miter"/>
!  <v:formulas>
!   <v:f eqn="if lineDrawn pixelLineWidth 0"/>
!   <v:f eqn="sum @0 1 0"/>
!   <v:f eqn="sum 0 0 @1"/>
!   <v:f eqn="prod @2 1 2"/>
!   <v:f eqn="prod @3 21600 pixelWidth"/>
!   <v:f eqn="prod @3 21600 pixelHeight"/>
!   <v:f eqn="sum @0 0 1"/>
!   <v:f eqn="prod @6 1 2"/>
!   <v:f eqn="prod @7 21600 pixelWidth"/>
!   <v:f eqn="sum @8 21600 0"/>
!   <v:f eqn="prod @7 21600 pixelHeight"/>
!   <v:f eqn="sum @10 21600 0"/>
!  </v:formulas>
!  <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
!  <o:lock v:ext="edit" aspectratio="t"/>
! </v:shapetype><v:shape id="_x0000_s1026" type="#_x0000_t75"
!  href="http://www.openafs.org/" style='position:absolute;margin-left:0;
!  margin-top:0;width:150.4pt;height:104.2pt;z-index:1;mso-position-horizontal:left;
!  mso-position-vertical:top;mso-position-vertical-relative:line' o:allowoverlap="f"
!  o:button="t">
!  <v:fill o:detectmouseclick="t"/>
!  <v:imagedata src="index_files/image001.jpg" o:title="openafswindowslarge"/>
!  <w:wrap type="square"/>
! </v:shape><![endif]--><![if !vml]><a href="http://www.openafs.org/"><img
! border=0 width=201 height=139 src="index_files/image002.jpg" align=left
! hspace=12 v:shapes="_x0000_s1026"></a><![endif]><a name="Top_Of_Page"></a><span
! style='mso-fareast-font-family:"MS Mincho"'><o:p></o:p></span></p>
  
  <h1>OpenAFS for Windows</h1>
  
! <h2>Version 1.5.20</h2>
  
! <p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>&nbsp; <o:p></o:p></span></p>
  
  <p>Welcome to the OpenAFS for Windows online documentation set! </p>
  
  <p>The documentation set includes the OpenAFS for Windows Release Notes and the
  IBM AFS for Windows 3.6 product notes and installation and configuration
! information for the AFS Server, <st1:place w:st="on"><st1:PlaceName w:st="on">AFS</st1:PlaceName>
!  <st1:PlaceName w:st="on">Control</st1:PlaceName> <st1:PlaceType w:st="on">Center</st1:PlaceType></st1:place>,
  AFS Client, and AFS Light products. The OpenAFS for Windows online
  documentation set also includes the following administrative documentation: the
  <i>IBM AFS Administration Reference</i> and the <i>IBM AFS Administration Guide</i>.
--- 1,71 ----
! <html>
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
  <meta name=ProgId content=Word.Document>
  <meta name=Generator content="Microsoft Word 11">
  <meta name=Originator content="Microsoft Word 11">
  <link rel=Edit-Time-Data href="index_files/editdata.mso">
! <style>w\:* {behavior:url(#default#VML);}
  </style>
  <title>OpenAFS for Windows Documentation</title>
  <style>
  st1\:*{behavior:url(#ieooui) }
  </style>
  <style>
  <!--
!  p.MsoNormal
  	{mso-style-parent:"";
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
  	font-family:"Times New Roman";
! 	margin-left:0pt; margin-right:0pt; margin-top:0pt}
! a:link
  	{color:blue;
  	text-decoration:underline;
! 	}
! a:visited
  	{color:purple;
  	text-decoration:underline;
! 	}
  p
! 	{margin-right:0pt;
  	margin-left:0pt;
  	font-size:12.0pt;
  	font-family:"Times New Roman";
! 	}
  -->
  </style>
  <meta name=Template content="C:\Program Files\Microsoft Office\Office\html.dot">
  <!--[if gte mso 9]><xml>
! <u1:shapedefaults u2:ext="edit" spidmax="1027"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
! <u3:shapelayout u4:ext="edit">
! <u3:idmap u4:ext="edit" data="1"/>
! </u3:shapelayout>
! </xml><![endif]-->
  </head>
  
! <body bgcolor=white lang=EN-US link=blue vlink=purple>
  
  <div class=Section1>
  
! <p class=MsoNormal>
! <a href="http://www.openafs.org/">
! <img border=0 width=201 height=139 src="index_files/image002.jpg" align=left title="www.openafs.org"></a>
! <a name="Top_Of_Page"></a></p>
  
  <h1>OpenAFS for Windows</h1>
  
! <h2>Version 1.5.21</h2>
  
! <p class=MsoNormal>&nbsp; </p>
  
  <p>Welcome to the OpenAFS for Windows online documentation set! </p>
  
  <p>The documentation set includes the OpenAFS for Windows Release Notes and the
  IBM AFS for Windows 3.6 product notes and installation and configuration
! information for the AFS Server, AFS Control Center,
  AFS Client, and AFS Light products. The OpenAFS for Windows online
  documentation set also includes the following administrative documentation: the
  <i>IBM AFS Administration Reference</i> and the <i>IBM AFS Administration Guide</i>.
***************
*** 218,262 ****
  
  <p><b><span style='font-size:13.5pt'>Online Documentation:</span></b> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='font-family:Symbol;
! mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
! style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]><a
! href="ReleaseNotes/frames.htm">OpenAFS for Windows 1.5.11
  Release Notes</a></p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='font-family:Symbol;
! mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
! style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]><a href="InstallGd/awqbg002.htm">IBM AFS for
  Windows 3.6 Quick Beginnings</a> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='font-family:Symbol;
! mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
! style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]><a href="ReleaseNotes/awrns002.htm">IBM AFS for
  Windows 3.6 Release Notes</a> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='font-family:Symbol;
! mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
! style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]><a href="SysAdminGd/auagd002.htm">IBM AFS 3.6 Administration
  Guide</a> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='font-family:Symbol;
! mso-fareast-font-family:Symbol;mso-bidi-font-family:Symbol'><span
! style='mso-list:Ignore'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]><a href="CmdRef/auarf002.htm">IBM AFS 3.6 Administration
  Reference</a> </p>
  
! <p>&nbsp; <br style='mso-special-character:line-break'>
! <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
! <![endif]><a name="Bot_Of_Page"></a></p>
  
  </div>
  
--- 76,115 ----
  
  <p><b><span style='font-size:13.5pt'>Online Documentation:</span></b> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;'>
! <span
! style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span><a
! href="ReleaseNotes/relnotes-frames.htm">OpenAFS for Windows 1.5.21
  Release Notes</a></p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;'>
! <span
! style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span><a href="InstallGd/awqbg002.htm">IBM AFS for
  Windows 3.6 Quick Beginnings</a> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;'>
! <span
! style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span><a href="ReleaseNotes/awrns002.htm">IBM AFS for
  Windows 3.6 Release Notes</a> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;'>
! <span
! style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span><a href="SysAdminGd/auagd002.htm">IBM AFS 3.6 Administration
  Guide</a> </p>
  
! <p style='margin-left:36.0pt;text-indent:-18.0pt;'>
! <span
! style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span><a href="CmdRef/auarf002.htm">IBM AFS 3.6 Administration
  Reference</a> </p>
  
! <p>&nbsp; <br>
! <br>
! <a name="Bot_Of_Page"></a></p>
  
  </div>
  
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.15 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.16
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.15	Wed May 16 18:37:13 2007
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm	Fri Jun 22 10:18:39 2007
***************
*** 18,24 ****
  .shape {behavior:url(#default#VML);}
  </style>
  <![endif]-->
! <title>OpenAFS for Windows 1.5.20 Release Notes</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Revision>1</o:Revision>
--- 18,24 ----
  .shape {behavior:url(#default#VML);}
  </style>
  <![endif]-->
! <title>OpenAFS for Windows 1.5.21 Release Notes</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Revision>1</o:Revision>
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.17 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.18
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.17	Wed May 16 18:37:13 2007
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm	Fri Jun 22 10:18:39 2007
***************
*** 8,14 ****
  <meta name=Generator content="Microsoft Word 11">
  <meta name=Originator content="Microsoft Word 11">
  <link rel=File-List href="relnotes-frames_files/filelist.xml">
! <title>OpenAFS for Windows 1.5.20 Release Notes</title>
  <!--[if gte mso 9]><xml>
   <w:WordDocument>
    <w:Zoom>0</w:Zoom>
--- 8,14 ----
  <meta name=Generator content="Microsoft Word 11">
  <meta name=Originator content="Microsoft Word 11">
  <link rel=File-List href="relnotes-frames_files/filelist.xml">
! <title>OpenAFS for Windows 1.5.21 Release Notes</title>
  <!--[if gte mso 9]><xml>
   <w:WordDocument>
    <w:Zoom>0</w:Zoom>
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.18 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.20
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.18	Wed May 16 18:37:13 2007
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm	Fri Jun 22 10:18:39 2007
***************
*** 19,25 ****
  .shape {behavior:url(#default#VML);}
  </style>
  <![endif]-->
! <title>OpenAFS for Windows 1.5.20 Release Notes</title>
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
   name="PostalCode"/>
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
--- 19,25 ----
  .shape {behavior:url(#default#VML);}
  </style>
  <![endif]-->
! <title>OpenAFS for Windows 1.5.21 Release Notes</title>
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
   name="PostalCode"/>
  <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
***************
*** 41,61 ****
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:LastAuthor>Jeffrey Altman</o:LastAuthor>
!   <o:Revision>2</o:Revision>
!   <o:TotalTime>744</o:TotalTime>
    <o:Created>2006-11-29T17:26:00Z</o:Created>
!   <o:LastSaved>2006-12-18T23:20:00Z</o:LastSaved>
!   <o:Pages>1</o:Pages>
!   <o:Words>16067</o:Words>
!   <o:Characters>91587</o:Characters>
    <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>763</o:Lines>
!   <o:Paragraphs>214</o:Paragraphs>
!   <o:CharactersWithSpaces>107440</o:CharactersWithSpaces>
    <o:Version>11.8132</o:Version>
   </o:DocumentProperties>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <w:WordDocument>
    <w:ValidateAgainstSchemas/>
    <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
    <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
--- 41,63 ----
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:LastAuthor>Jeffrey Altman</o:LastAuthor>
!   <o:Revision>3</o:Revision>
!   <o:TotalTime>787</o:TotalTime>
    <o:Created>2006-11-29T17:26:00Z</o:Created>
!   <o:LastSaved>2007-06-22T13:42:00Z</o:LastSaved>
!   <o:Pages>38</o:Pages>
!   <o:Words>17429</o:Words>
!   <o:Characters>99346</o:Characters>
    <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>827</o:Lines>
!   <o:Paragraphs>233</o:Paragraphs>
!   <o:CharactersWithSpaces>116542</o:CharactersWithSpaces>
    <o:Version>11.8132</o:Version>
   </o:DocumentProperties>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <w:WordDocument>
+   <w:SpellingState>Clean</w:SpellingState>
+   <w:GrammarState>Clean</w:GrammarState>
    <w:ValidateAgainstSchemas/>
    <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
    <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
***************
*** 477,482 ****
--- 479,490 ----
  	font-family:Thorndale;
  	mso-ascii-font-family:Thorndale;
  	mso-hansi-font-family:Thorndale;}
+ span.SpellE
+ 	{mso-style-name:"";
+ 	mso-spl-e:yes;}
+ span.GramE
+ 	{mso-style-name:"";
+ 	mso-gram-e:yes;}
  @page Section1
  	{size:612.0pt 792.0pt;
  	margin:72.0pt 90.0pt 72.0pt 90.0pt;
***************
*** 487,506 ****
  	{page:Section1;}
   /* List Definitions */
   @list l0
- 	{mso-list-id:651374614;
- 	mso-list-template-ids:-98242914;}
- @list l0:level1
- 	{mso-level-number-format:bullet;
- 	mso-level-text:\F0B7;
- 	mso-level-tab-stop:36.0pt;
- 	mso-level-number-position:left;
- 	text-indent:-18.0pt;
- 	mso-ansi-font-size:10.0pt;
- 	font-family:Symbol;}
- @list l1
  	{mso-list-id:1266575792;
  	mso-list-template-ids:-1777932230;}
! @list l1:level1
  	{mso-level-number-format:bullet;
  	mso-level-text:\F0B7;
  	mso-level-tab-stop:36.0pt;
--- 495,503 ----
  	{page:Section1;}
   /* List Definitions */
   @list l0
  	{mso-list-id:1266575792;
  	mso-list-template-ids:-1777932230;}
! @list l0:level1
  	{mso-level-number-format:bullet;
  	mso-level-text:\F0B7;
  	mso-level-tab-stop:36.0pt;
***************
*** 508,545 ****
  	text-indent:-18.0pt;
  	mso-ansi-font-size:10.0pt;
  	font-family:Symbol;}
! @list l1:level2
  	{mso-level-tab-stop:72.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level3
  	{mso-level-tab-stop:108.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level4
  	{mso-level-tab-stop:144.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level5
  	{mso-level-tab-stop:180.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level6
  	{mso-level-tab-stop:216.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level7
  	{mso-level-tab-stop:252.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level8
  	{mso-level-tab-stop:288.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l1:level9
  	{mso-level-tab-stop:324.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
  ol
  	{margin-bottom:0pt;}
  ul
--- 505,553 ----
  	text-indent:-18.0pt;
  	mso-ansi-font-size:10.0pt;
  	font-family:Symbol;}
! @list l0:level2
  	{mso-level-tab-stop:72.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level3
  	{mso-level-tab-stop:108.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level4
  	{mso-level-tab-stop:144.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level5
  	{mso-level-tab-stop:180.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level6
  	{mso-level-tab-stop:216.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level7
  	{mso-level-tab-stop:252.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level8
  	{mso-level-tab-stop:288.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
! @list l0:level9
  	{mso-level-tab-stop:324.0pt;
  	mso-level-number-position:left;
  	text-indent:-18.0pt;}
+ @list l1
+ 	{mso-list-id:2085452249;
+ 	mso-list-template-ids:-1972580140;}
+ @list l1:level1
+ 	{mso-level-number-format:bullet;
+ 	mso-level-text:\F0B7;
+ 	mso-level-tab-stop:36.0pt;
+ 	mso-level-number-position:left;
+ 	text-indent:-18.0pt;
+ 	mso-ansi-font-size:10.0pt;
+ 	font-family:Symbol;}
  ol
  	{margin-bottom:0pt;}
  ul
***************
*** 566,572 ****
  	mso-bidi-language:#0400;}
  </style>
  <![endif]--><!--[if gte mso 9]><xml>
!  <o:shapedefaults v:ext="edit" spidmax="9218"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <o:shapelayout v:ext="edit">
    <o:idmap v:ext="edit" data="1"/>
--- 574,580 ----
  	mso-bidi-language:#0400;}
  </style>
  <![endif]--><!--[if gte mso 9]><xml>
!  <o:shapedefaults v:ext="edit" spidmax="2050"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <o:shapelayout v:ext="edit">
    <o:idmap v:ext="edit" data="1"/>
***************
*** 578,584 ****
  
  <div class=Section1>
  
! <p class=MsoTitle>OpenAFS for Windows 1.5.20<br>
  Release Notes</p>
  
  <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
--- 586,592 ----
  
  <div class=Section1>
  
! <p class=MsoTitle>OpenAFS for Windows 1.5.21<br>
  Release Notes</p>
  
  <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
***************
*** 638,646 ****
  Operational Notes<span style='color:windowtext;display:none;mso-hide:all;
  text-decoration:none;text-underline:none'>. 2</span></a></span></p>
  
! <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417112">4. How to Debug
! Problems with OpenAFS for Windows:<span style='color:windowtext;display:none;
! mso-hide:all;text-decoration:none;text-underline:none'> 11</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417113">5. Reporting
  Bugs:<span style='color:windowtext;display:none;mso-hide:all;text-decoration:
--- 646,654 ----
  Operational Notes<span style='color:windowtext;display:none;mso-hide:all;
  text-decoration:none;text-underline:none'>. 2</span></a></span></p>
  
! <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417112">4. How to
! Debug Problems with OpenAFS for Windows:<span style='color:windowtext;
! display:none;mso-hide:all;text-decoration:none;text-underline:none'> 11</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417113">5. Reporting
  Bugs:<span style='color:windowtext;display:none;mso-hide:all;text-decoration:
***************
*** 650,667 ****
  Contribute to the Development of OpenAFS for Windows<span style='color:windowtext;
  display:none;mso-hide:all;text-decoration:none;text-underline:none'>. 14</span></a></span></p>
  
! <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417115">7. MSI Deployment
! Guide<span style='color:windowtext;display:none;mso-hide:all;text-decoration:
! none;text-underline:none'>. 15</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417116">Appendix A:
  Registry Values<span style='color:windowtext;display:none;mso-hide:all;
  text-decoration:none;text-underline:none'>. 26</span></a></span></p>
  
! <h1><a name="_Toc154229351"></a><a name="_Toc152605032"></a><a
  name="_Toc115416098"></a><a name="_Toc139993082"></a><a name="_Toc126872163"></a><a
  name="_Toc115417109"></a><a name="_Toc115417037"></a><span style='mso-bookmark:
! _Toc154229351'><span style='mso-bookmark:_Toc152605032'><span style='mso-bookmark:
  _Toc115416098'>1. Installer Options</span></span></span></h1>
  
  <p class=MsoNormal>It can be installed either as a new installation or an
--- 658,675 ----
  Contribute to the Development of OpenAFS for Windows<span style='color:windowtext;
  display:none;mso-hide:all;text-decoration:none;text-underline:none'>. 14</span></a></span></p>
  
! <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417115">7. MSI
! Deployment Guide<span style='color:windowtext;display:none;mso-hide:all;
! text-decoration:none;text-underline:none'>. 15</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a href="#_Toc115417116">Appendix A:
  Registry Values<span style='color:windowtext;display:none;mso-hide:all;
  text-decoration:none;text-underline:none'>. 26</span></a></span></p>
  
! <h1><a name="_Toc170268813"></a><a name="_Toc152605032"></a><a
  name="_Toc115416098"></a><a name="_Toc139993082"></a><a name="_Toc126872163"></a><a
  name="_Toc115417109"></a><a name="_Toc115417037"></a><span style='mso-bookmark:
! _Toc170268813'><span style='mso-bookmark:_Toc152605032'><span style='mso-bookmark:
  _Toc115416098'>1. Installer Options</span></span></span></h1>
  
  <p class=MsoNormal>It can be installed either as a new installation or an
***************
*** 670,693 ****
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
  style='font-size:9.0pt'>1.</span><span style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>an executable (.exe) that is built using the Nullsoft Scriptable
! Installation System, or</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
  style='font-size:9.0pt'>2.</span><span style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>a Windows Installer package (.msi) that is built using WiX and can be
! customized for organizations via the use of MSI Transforms (see <a
  href="#_MSI_Deployment_Guide">MSI Deployment Guide</a>)</p>
  
! <h1><a name="_Toc154229352"></a><a name="_Toc152605033"></a><a
  name="_Toc115416099"></a><a name="_Toc139993083"></a><a name="_Toc126872164"></a><a
  name="_Toc115417110"></a><a name="_Toc115417038"></a><span style='mso-bookmark:
! _Toc154229352'><span style='mso-bookmark:_Toc152605033'><span style='mso-bookmark:
  _Toc115416099'>2. System Requirements</span></span></span></h1>
  
! <h2><a name="_Toc154229353"></a><a name="_Toc152605034"></a><a
  name="_Toc115416100"></a><a name="_Toc139993084"></a><a name="_Toc126872165"></a><a
! name="_Toc115417039"></a><span style='mso-bookmark:_Toc154229353'><span
  style='mso-bookmark:_Toc152605034'><span style='mso-bookmark:_Toc115416100'>2.1
  Supported Operating Systems</span></span></span></h2>
  
--- 678,702 ----
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
  style='font-size:9.0pt'>1.</span><span style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span><span class=GramE>an</span> executable (.exe) that is built using the <span
! class=SpellE>Nullsoft</span> Scriptable Installation System, or</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
  style='font-size:9.0pt'>2.</span><span style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span><span class=GramE>a</span> Windows Installer package (.<span
! class=SpellE>msi</span>) that is built using <span class=SpellE>WiX</span> and
! can be customized for organizations via the use of MSI Transforms (see <a
  href="#_MSI_Deployment_Guide">MSI Deployment Guide</a>)</p>
  
! <h1><a name="_Toc170268814"></a><a name="_Toc152605033"></a><a
  name="_Toc115416099"></a><a name="_Toc139993083"></a><a name="_Toc126872164"></a><a
  name="_Toc115417110"></a><a name="_Toc115417038"></a><span style='mso-bookmark:
! _Toc170268814'><span style='mso-bookmark:_Toc152605033'><span style='mso-bookmark:
  _Toc115416099'>2. System Requirements</span></span></span></h1>
  
! <h2><a name="_Toc170268815"></a><a name="_Toc152605034"></a><a
  name="_Toc115416100"></a><a name="_Toc139993084"></a><a name="_Toc126872165"></a><a
! name="_Toc115417039"></a><span style='mso-bookmark:_Toc170268815'><span
  style='mso-bookmark:_Toc152605034'><span style='mso-bookmark:_Toc115416100'>2.1
  Supported Operating Systems</span></span></span></h2>
  
***************
*** 731,739 ****
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Microsoft
  Windows <st1:place w:st="on">Vista</st1:place> (32-bit and 64-bit Intel)</p>
  
! <h3><a name="_Toc154229354"></a><a name="_Toc152605035"></a><a
  name="_Toc115416101"></a><a name="_Toc139993085"></a><a name="_Toc126872166"></a><span
! style='mso-bookmark:_Toc154229354'><span style='mso-bookmark:_Toc152605035'><span
  style='mso-bookmark:_Toc115416101'>2.1.1 Unsupported Operating Systems</span></span></span></h3>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
--- 740,748 ----
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Microsoft
  Windows <st1:place w:st="on">Vista</st1:place> (32-bit and 64-bit Intel)</p>
  
! <h3><a name="_Toc170268816"></a><a name="_Toc152605035"></a><a
  name="_Toc115416101"></a><a name="_Toc139993085"></a><a name="_Toc126872166"></a><span
! style='mso-bookmark:_Toc170268816'><span style='mso-bookmark:_Toc152605035'><span
  style='mso-bookmark:_Toc115416101'>2.1.1 Unsupported Operating Systems</span></span></span></h3>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
***************
*** 766,819 ****
  with support for Win9x is 1.2.2b.&nbsp; The last version with support for
  Windows NT 4.0 is 1.2.10.</p>
  
! <h2><a name="_Toc154229355"></a><a name="_Toc152605036"></a><a
  name="_Toc115416102"></a><a name="_Toc139993086"></a><a name="_Toc126872167"></a><a
! name="_Toc115417040"></a><span style='mso-bookmark:_Toc154229355'><span
  style='mso-bookmark:_Toc152605036'><span style='mso-bookmark:_Toc115416102'>2.2
  Disk Space</span></span></span></h2>
  
  <p class=MsoNormal>Up to 60mb required for the OpenAFS binaries plus 100MB for
! the default AFSCache file.&nbsp;&nbsp; (The size of the AFSCache file may be
! adjusted via the Registry after installation.)</p>
  
! <h2><a name="_Toc154229356"></a><a name="_Toc152605037"></a><a
  name="_Toc115416103"></a><a name="_Toc139993087"></a><a name="_Toc126872168"></a><a
! name="_Toc115417041"></a><span style='mso-bookmark:_Toc154229356'><span
  style='mso-bookmark:_Toc152605037'><span style='mso-bookmark:_Toc115416103'>2.3
  Additional Software</span> Packages</span></span></h2>
  
  <p class=MsoNormal><a href="http://web.mit.edu/kerberos/dist/index.html">MIT
! Kerberos for Windows</a> 2.6.x or 3.1.x if Kerberos v5 authentication support
! is desired.</p>
  
! <h1><a name="_Toc154229357"></a><a name="_Toc152605038"></a><a
  name="_Toc115416104"></a><a name="_Toc139993088"></a><a name="_Toc126872169"></a><a
  name="_Toc115417111"></a><a name="_Toc115417042"></a><span style='mso-bookmark:
! _Toc154229357'><span style='mso-bookmark:_Toc152605038'><span style='mso-bookmark:
  _Toc115416104'>3. Operational Notes</span></span></span></h1>
  
! <h2><a name="_Toc154229358"></a><a name="_Toc152605039"></a><a
  name="_Toc115416105"></a><a name="_Toc139993089"></a><a name="_Toc126872170"></a><a
! name="_Toc115417043"></a><span style='mso-bookmark:_Toc154229358'><span
  style='mso-bookmark:_Toc152605039'><span style='mso-bookmark:_Toc115416105'>3.1.
  Requirements for Kerberos v5 Authentication</span></span></span></h2>
  
  <p class=MsoNormal>The Kerberos v4 infrastructure on which the OpenAFS 1.2
  series is reliant is no longer secure.&nbsp; Cross-realm Kerberos is very
! important in the AFS context and most sites have or are migrating to Kerberos v5
! environments.&nbsp; The OpenAFS 1.4 series (and later) integrates with <a
  href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a> 2.6.5 and
  above to support Kerberos v5 authentication including automatic renewal of AFS
  tokens and single sign-on via the Microsoft Windows Kerberos Logon
! Service.<span style='mso-spacerun:yes'>  </span><span
! style='mso-spacerun:yes'> </span></p>
  
  <p class=MsoNormal>The recommended version of <a
! href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a> is 3.2. <span
! style='mso-spacerun:yes'> </span>KFW 3.2 includes Network Identity Manager 1.2
  which integrates with the <a href="#_3.1.3._Network_Identity">AFS Provider</a>
! installed as part of OpenAFS for Windows. <span
! style='mso-spacerun:yes'> </span></p>
  
  <p class=MsoNormal>When KFW is installed, the OpenAFS for Windows client will
  obtain Kerberos v5 tickets and use them as tokens without modification.&nbsp;
--- 775,828 ----
  with support for Win9x is 1.2.2b.&nbsp; The last version with support for
  Windows NT 4.0 is 1.2.10.</p>
  
! <h2><a name="_Toc170268817"></a><a name="_Toc152605036"></a><a
  name="_Toc115416102"></a><a name="_Toc139993086"></a><a name="_Toc126872167"></a><a
! name="_Toc115417040"></a><span style='mso-bookmark:_Toc170268817'><span
  style='mso-bookmark:_Toc152605036'><span style='mso-bookmark:_Toc115416102'>2.2
  Disk Space</span></span></span></h2>
  
  <p class=MsoNormal>Up to 60mb required for the OpenAFS binaries plus 100MB for
! the default <span class=SpellE>AFSCache</span> file.&nbsp;&nbsp; (The size of
! the <span class=SpellE>AFSCache</span> file may be adjusted via the Registry
! after installation.)</p>
  
! <h2><a name="_Toc170268818"></a><a name="_Toc152605037"></a><a
  name="_Toc115416103"></a><a name="_Toc139993087"></a><a name="_Toc126872168"></a><a
! name="_Toc115417041"></a><span style='mso-bookmark:_Toc170268818'><span
  style='mso-bookmark:_Toc152605037'><span style='mso-bookmark:_Toc115416103'>2.3
  Additional Software</span> Packages</span></span></h2>
  
  <p class=MsoNormal><a href="http://web.mit.edu/kerberos/dist/index.html">MIT
! Kerberos for Windows</a> 2.6.x or 3.1.x if Kerberos v5 authentication support is
! desired.</p>
  
! <h1><a name="_Toc170268819"></a><a name="_Toc152605038"></a><a
  name="_Toc115416104"></a><a name="_Toc139993088"></a><a name="_Toc126872169"></a><a
  name="_Toc115417111"></a><a name="_Toc115417042"></a><span style='mso-bookmark:
! _Toc170268819'><span style='mso-bookmark:_Toc152605038'><span style='mso-bookmark:
  _Toc115416104'>3. Operational Notes</span></span></span></h1>
  
! <h2><a name="_Toc170268820"></a><a name="_Toc152605039"></a><a
  name="_Toc115416105"></a><a name="_Toc139993089"></a><a name="_Toc126872170"></a><a
! name="_Toc115417043"></a><span style='mso-bookmark:_Toc170268820'><span
  style='mso-bookmark:_Toc152605039'><span style='mso-bookmark:_Toc115416105'>3.1.
  Requirements for Kerberos v5 Authentication</span></span></span></h2>
  
  <p class=MsoNormal>The Kerberos v4 infrastructure on which the OpenAFS 1.2
  series is reliant is no longer secure.&nbsp; Cross-realm Kerberos is very
! important in the AFS context and most sites have or are migrating to Kerberos
! v5 environments.&nbsp; The OpenAFS 1.4 series (and later) integrates with <a
  href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a> 2.6.5 and
  above to support Kerberos v5 authentication including automatic renewal of AFS
  tokens and single sign-on via the Microsoft Windows Kerberos Logon
! Service.<span style='mso-spacerun:yes'>   </span></p>
  
  <p class=MsoNormal>The recommended version of <a
! href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a> is 3.2.<span
! style='mso-spacerun:yes'>  </span>KFW 3.2 includes Network Identity Manager 1.2
  which integrates with the <a href="#_3.1.3._Network_Identity">AFS Provider</a>
! installed as part of OpenAFS for Windows.<span style='mso-spacerun:yes'> 
! </span></p>
  
  <p class=MsoNormal>When KFW is installed, the OpenAFS for Windows client will
  obtain Kerberos v5 tickets and use them as tokens without modification.&nbsp;
***************
*** 821,832 ****
  communicates support the use of Kerberos v5 tickets as tokens. If Kerberos v5
  based tokens are presented to an AFS server that does not support them, the
  server will be unable to communicate with the client when tokens are present.
! Kerberos v5 based tokens are supported by OpenAFS release 1.2.8 or later. <span
! style='mso-spacerun:yes'> </span>IBM Transarc servers do not support Kerberos v5.</p>
  
! <h3><a name="_Toc154229359"></a><a name="_Toc152605040"></a><a
  name="_Toc115416106"></a><a name="_Toc139993090"></a><a name="_Toc126872171"></a><span
! style='mso-bookmark:_Toc154229359'><span style='mso-bookmark:_Toc152605040'><span
  style='mso-bookmark:_Toc115416106'>3.1.1. Active Directory</span></span></span></h3>
  
  <p class=MsoNormal>Microsoft Windows Active Directory can be used as a Kerberos
--- 830,842 ----
  communicates support the use of Kerberos v5 tickets as tokens. If Kerberos v5
  based tokens are presented to an AFS server that does not support them, the
  server will be unable to communicate with the client when tokens are present.
! Kerberos v5 based tokens are supported by OpenAFS release 1.2.8 or later.<span
! style='mso-spacerun:yes'>  </span>IBM <span class=SpellE>Transarc</span>
! servers do not support Kerberos v5.</p>
  
! <h3><a name="_Toc170268821"></a><a name="_Toc152605040"></a><a
  name="_Toc115416106"></a><a name="_Toc139993090"></a><a name="_Toc126872171"></a><span
! style='mso-bookmark:_Toc170268821'><span style='mso-bookmark:_Toc152605040'><span
  style='mso-bookmark:_Toc115416106'>3.1.1. Active Directory</span></span></span></h3>
  
  <p class=MsoNormal>Microsoft Windows Active Directory can be used as a Kerberos
***************
*** 837,850 ****
  issued by a traditional KDC due to the incorporation of authorization data (the
  Microsoft PAC).&nbsp; If the issued tickets are larger than 344 bytes, the
  OpenAFS 1.2 servers will be unable to process them and will issue a
! RXKADBADTICKET error.<span style='mso-spacerun:yes'>  </span>OpenAFS 1.4 (and beyond)
! servers can support the largest tickets that Active Directory can issue.&nbsp;
! Second, the Kerberos v5 tickets issued by Windows 2003 Active Directory are
! encrypted with the DES-CBC-MD5 encryption type (enctype).&nbsp; OpenAFS 1.2
! servers only support the DES-CBC-CRC enctype.<span style='mso-spacerun:yes'> 
  </span>As a result, OpenAFS 1.2 servers cannot process the resulting Kerberos
  v5 tokens.<span style='mso-spacerun:yes'>  </span>Windows 2000 Active Directory
! issued tickets with the DES-CBC-CRC enctype.</p>
  
  <p class=MsoNormal>Microsoft has documented in <a
  href="http://support.microsoft.com/kb/832572/">Knowledge Base article 832572</a>
--- 847,861 ----
  issued by a traditional KDC due to the incorporation of authorization data (the
  Microsoft PAC).&nbsp; If the issued tickets are larger than 344 bytes, the
  OpenAFS 1.2 servers will be unable to process them and will issue a
! RXKADBADTICKET error.<span style='mso-spacerun:yes'>  </span>OpenAFS 1.4 (and
! beyond) servers can support the largest tickets that Active Directory can
! issue.&nbsp; Second, the Kerberos v5 tickets issued by Windows 2003 Active
! Directory are encrypted with the DES-CBC-MD5 encryption type (<span
! class=SpellE>enctype</span>).&nbsp; OpenAFS 1.2 servers only support the
! DES-CBC-CRC <span class=SpellE>enctype</span>.<span style='mso-spacerun:yes'> 
  </span>As a result, OpenAFS 1.2 servers cannot process the resulting Kerberos
  v5 tokens.<span style='mso-spacerun:yes'>  </span>Windows 2000 Active Directory
! issued tickets with the DES-CBC-CRC <span class=SpellE>enctype</span>.</p>
  
  <p class=MsoNormal>Microsoft has documented in <a
  href="http://support.microsoft.com/kb/832572/">Knowledge Base article 832572</a>
***************
*** 855,875 ****
  accounts that are associated with non-Windows services and that do not
  understand the authorization data stored in the <st1:place w:st="on">PAC.</st1:place></p>
  
! <h3><a name="_Toc154229360"></a><a name="_Toc152605041"></a><a
  name="_Toc115416107"></a><a name="_Toc139993091"></a><a name="_Toc126872172"></a><span
! style='mso-bookmark:_Toc154229360'><span style='mso-bookmark:_Toc152605041'><span
  style='mso-bookmark:_Toc115416107'>3.1.2. Using the krb524 service</span></span></span></h3>
  
  <p class=MsoNormal>Some organizations which have AFS cell names and Kerberos
  realm names which differ by more then just lower and upper case rely on a
! modification to krb524d which maps a Kerberos v5 ticket from realm FOO to a Kerberos
! v4 ticket in realm BAR.&nbsp; This allows user@FOO to appear to be user@bar for
! the purposes of accessing the AFS cell.&nbsp; As of OpenAFS 1.2.8, support was
! added to allow the immediate use of Kerberos v5 tickets as AFS (2b) tokens.
! This is the first building block necessary to break away from the limitations
! of Kerberos v4 with AFS.&nbsp; By using Kerberos v5 directly we avoid the
! security holes inherent in Kerberos v4 cross-realm.&nbsp; We also gain access
! to cryptographically stronger algorithms for authentication and encryption. </p>
  
  <p class=MsoNormal>Another reason for using Kerberos v5 directly is because the
  krb524 service runs on a port (4444) which has become increasingly blocked by
--- 866,887 ----
  accounts that are associated with non-Windows services and that do not
  understand the authorization data stored in the <st1:place w:st="on">PAC.</st1:place></p>
  
! <h3><a name="_Toc170268822"></a><a name="_Toc152605041"></a><a
  name="_Toc115416107"></a><a name="_Toc139993091"></a><a name="_Toc126872172"></a><span
! style='mso-bookmark:_Toc170268822'><span style='mso-bookmark:_Toc152605041'><span
  style='mso-bookmark:_Toc115416107'>3.1.2. Using the krb524 service</span></span></span></h3>
  
  <p class=MsoNormal>Some organizations which have AFS cell names and Kerberos
  realm names which differ by more then just lower and upper case rely on a
! modification to krb524d which maps a Kerberos v5 ticket from realm FOO to a
! Kerberos v4 ticket in realm BAR.&nbsp; This allows <span class=SpellE>user@FOO</span>
! to appear to be <span class=SpellE>user@bar</span> for the purposes of
! accessing the AFS cell.&nbsp; As of OpenAFS 1.2.8, support was added to allow
! the immediate use of Kerberos v5 tickets as AFS (2b) tokens. This is the first
! building block necessary to break away from the limitations of Kerberos v4 with
! AFS.&nbsp; By using Kerberos v5 directly we avoid the security holes inherent
! in Kerberos v4 cross-realm.&nbsp; We also gain access to cryptographically
! stronger algorithms for authentication and encryption. </p>
  
  <p class=MsoNormal>Another reason for using Kerberos v5 directly is because the
  krb524 service runs on a port (4444) which has become increasingly blocked by
***************
*** 886,894 ****
  should only be used by individuals until such time as their organizations can
  provide a more permanent solution.</p>
  
! <h3><a name="_Toc152605042"></a><a name="_Toc154229361"></a><a
! name="_3.1.3._Network_Identity"></a><span style='mso-bookmark:_Toc152605042'><span
! style='mso-bookmark:_Toc154229361'>3.1.3. Network Identity Manager P</span></span>rovider</h3>
  
  <p class=MsoNormal>As of release 1.5.9, OpenAFS for Windows includes a Network
  Identity Manager Provider for obtaining AFS tokens.<span
--- 898,906 ----
  should only be used by individuals until such time as their organizations can
  provide a more permanent solution.</p>
  
! <h3><a name="_Toc170268823"></a><a name="_Toc152605042"></a><a
! name="_3.1.3._Network_Identity"></a><span style='mso-bookmark:_Toc170268823'><span
! style='mso-bookmark:_Toc152605042'>3.1.3. Network Identity Manager P</span>rovider</span></h3>
  
  <p class=MsoNormal>As of release 1.5.9, OpenAFS for Windows includes a Network
  Identity Manager Provider for obtaining AFS tokens.<span
***************
*** 944,952 ****
  <p class=MsoNormal>The AFS configuration panel for each Kerberos v5 identity is
  used to configure which cells credentials should be obtained for and how they
  should be obtained.<span style='mso-spacerun:yes'>  </span>If the cell to realm
! mapping cannot be automatically determined, it can be explicitly
! specified.<span style='mso-spacerun:yes'>  </span>If the cell does not support Kerberos
! v5 tickets as tokens, then a krb524 service can be configured.</p>
  
  <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape
   id="_x0000_i1027" type="#_x0000_t75" style='width:406.5pt;height:294.75pt'>
--- 956,964 ----
  <p class=MsoNormal>The AFS configuration panel for each Kerberos v5 identity is
  used to configure which cells credentials should be obtained for and how they
  should be obtained.<span style='mso-spacerun:yes'>  </span>If the cell to realm
! mapping cannot be automatically determined, it can be explicitly specified.<span
! style='mso-spacerun:yes'>  </span>If the cell does not support Kerberos v5
! tickets as tokens, then a krb524 service can be configured.</p>
  
  <p class=MsoNormal align=center style='text-align:center'><!--[if gte vml 1]><v:shape
   id="_x0000_i1027" type="#_x0000_t75" style='width:406.5pt;height:294.75pt'>
***************
*** 961,969 ****
  login.<span style='mso-spacerun:yes'>   </span>A shortcut to the OpenAFS
  Control Panel is also provided.</p>
  
! <h2><a name="_Toc154229362"></a><a name="_Toc152605043"></a><a
  name="_Toc115416108"></a><a name="_Toc139993092"></a><a name="_Toc126872173"></a><a
! name="_Toc115417044"></a><span style='mso-bookmark:_Toc154229362'><span
  style='mso-bookmark:_Toc152605043'><span style='mso-bookmark:_Toc115416108'>3.2.
  Use of the Microsoft Loopback Adapter</span> by the AFS Client Service</span></span></h2>
  
--- 973,981 ----
  login.<span style='mso-spacerun:yes'>   </span>A shortcut to the OpenAFS
  Control Panel is also provided.</p>
  
! <h2><a name="_Toc170268824"></a><a name="_Toc152605043"></a><a
  name="_Toc115416108"></a><a name="_Toc139993092"></a><a name="_Toc126872173"></a><a
! name="_Toc115417044"></a><span style='mso-bookmark:_Toc170268824'><span
  style='mso-bookmark:_Toc152605043'><span style='mso-bookmark:_Toc115416108'>3.2.
  Use of the Microsoft Loopback Adapter</span> by the AFS Client Service</span></span></h2>
  
***************
*** 1021,1119 ****
  the AFS Client Service is simply &quot;AFS&quot; and portable UNC paths of the
  form \\AFS\cellname\path can now be used on all machines.</p>
  
! <h2><a name="_Toc154229363"></a><a name="_Toc152605044"></a><a
  name="_Toc115416109"></a><a name="_Toc139993093"></a><a name="_Toc126872174"></a><a
! name="_Toc115417045"></a><span style='mso-bookmark:_Toc154229363'><span
  style='mso-bookmark:_Toc152605044'><span style='mso-bookmark:_Toc115416109'>3.3.
  Using Freelance (Dynamic Root) Mode to Improve Mobility</span></span></span></h2>
  
  <p class=MsoNormal>Traditionally, when the OpenAFS Client Service starts it
! must be able to access the &quot;root.afs&quot; volume of the default
! cell.&nbsp; The &quot;root.afs&quot; volume contains the set of mount points to
! the &quot;root.cell&quot; volumes of various cells the administrator of the
! default cell believes should be accessible.&nbsp; If the &quot;root.afs&quot;
  volume is inaccessible when the client service is started, the service will
  terminate unexpectedly.&nbsp; Since many users now use laptops or otherwise
  operate in disconnected environments in which a VPN may be required to access
! the cell's servers, it is often the case that the &quot;root.afs&quot; volume
! for the default cell is not reachable and the OpenAFS Client Service will not
! successfully start. </p>
  
  <p class=MsoNormal>To allow the OpenAFS Client Service to operate in these
! environments, Freelance mode dynamically constructs a fake &quot;root.afs&quot;
! volume from mount points and symlinks stored in the local registry.</p>
! 
! <p class=MsoNormal>The content of the fake “root.afs” volume is dynamically
! modified as cells are accessed.&nbsp; When the fake &quot;root.afs&quot; volume
! is initially constructed it will only contain two mount points: a <i>regular
! path </i>and <i>read-write path </i>mount point used to access the
! &quot;root.cell&quot; volume of the default AFS cell.&nbsp; Any attempt to access
! a valid cell name will result in a new mount point being created in the fake
! &quot;root.afs&quot; volume.&nbsp; If the cellname begins with a &quot;.&quot;
! the mount point will be a <i>read-write path</i>; otherwise the mount point
! will be a <i>regular path</i>.&nbsp; These mount points are preserved in the
! registry at key:</p>
  
  <p class=preformattedtext style='margin-left:35.45pt'><a
  href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie">HKLM\SOFTWARE\OpenAFS\Client\Freelance</a></p>
  
  <p class=MsoNormal>Additional mount points may be manually created using the
! &quot;fs mkmount&quot; command.&nbsp; Mount points may be removed using the
! &quot;fs rmmount&quot; command.</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;fs mkmount
! \\AFS\athena.mit.edu root.cell athena.mit.edu</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;fs mkmount
! \\AFS\.athena.mit.edu root.cell athena.mit.edu -rw</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;fs rmmount
! \\AFS\athena.mit.edu</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;fs rmmount
! \\AFS\.athena.mit.edu</p>
  
! <p class=MsoNormal>Symlinks may also be created within the Freelance “root.afs”
! volume.</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;symlink make
! \\afs\link \\afs\athena.mit.edu\user\j\a\jaltman</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;symlink list
! \\afs\link</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '\\afs\link' is a
! symlink to 'athena.mit.edu\user\j\a\jaltman'</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;symlink rm \\afs\link</p>
  
  <p class=MsoNormal>The symlinks are stored in the registry at:</p>
  
  <p class=preformattedtext style='margin-left:35.45pt'><a
  href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie_1">HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks</a>&nbsp;</p>
  
! <h2><a name="_Toc154229364"></a><a name="_Toc152605045"></a><a
  name="_Toc115416110"></a><a name="_Toc139993094"></a><a name="_Toc126872175"></a><a
! name="_Toc115417046"></a><span style='mso-bookmark:_Toc154229364'><span
  style='mso-bookmark:_Toc152605045'><span style='mso-bookmark:_Toc115416110'>3.4.
  Locating AFS Volume Database Servers</span> via DNS</span></span> </h2>
  
  <p class=MsoNormal>The OpenAFS for Windows client will use DNS AFSDB records to
  discover the location of AFS Volume Database servers when entries for the cell
! are not present in the client's CellServDB file
! (\%PROGRAMFILES%\OpenAFS\Client\CellServDB).</p>
  
! <h2><a name="_Toc154229365"></a><a name="_Toc152605046"></a><a
  name="_Toc115416111"></a><a name="_Toc139993095"></a><a name="_Toc126872176"></a><a
! name="_Toc115417047"></a><span style='mso-bookmark:_Toc154229365'><span
  style='mso-bookmark:_Toc152605046'><span style='mso-bookmark:_Toc115416111'>3.5.
  Obtaining AFS Tokens as a Integrated Part of Windows Logon</span></span></span></h2>
  
! <p class=MsoNormal>OpenAFS for Windows installs a WinLogon Network Provider to
! provide Single Sign-On functionality (aka Integrated Logon.)&nbsp; Integrated
! Logon can be used when the Windows username and password match the username and
! password associated with the default cell's Kerberos realm.&nbsp; For example,
! if the Windows username is &quot;jaltman&quot; and the default cell is
  &quot;athena.mit.edu&quot;, then Integrated Logon can be successfully used if
  the windows password matches the password assigned to the Kerberos principal
  &quot;<a href="mailto:jaltman@ATHENA.MIT.EDU">jaltman@ATHENA.MIT.EDU</a>&quot;.&nbsp;
--- 1033,1139 ----
  the AFS Client Service is simply &quot;AFS&quot; and portable UNC paths of the
  form \\AFS\cellname\path can now be used on all machines.</p>
  
! <h2><a name="_Toc170268825"></a><a name="_Toc152605044"></a><a
  name="_Toc115416109"></a><a name="_Toc139993093"></a><a name="_Toc126872174"></a><a
! name="_Toc115417045"></a><span style='mso-bookmark:_Toc170268825'><span
  style='mso-bookmark:_Toc152605044'><span style='mso-bookmark:_Toc115416109'>3.3.
  Using Freelance (Dynamic Root) Mode to Improve Mobility</span></span></span></h2>
  
  <p class=MsoNormal>Traditionally, when the OpenAFS Client Service starts it
! must be able to access the &quot;<span class=SpellE>root.afs</span>&quot;
! volume of the default cell.&nbsp; The &quot;<span class=SpellE>root.afs</span>&quot;
! volume contains the set of mount points to the &quot;<span class=SpellE>root.cell</span>&quot;
! volumes of various cells the administrator of the default cell believes should
! be accessible.&nbsp; If the &quot;<span class=SpellE>root.afs</span>&quot;
  volume is inaccessible when the client service is started, the service will
  terminate unexpectedly.&nbsp; Since many users now use laptops or otherwise
  operate in disconnected environments in which a VPN may be required to access
! the cell's servers, it is often the case that the &quot;<span class=SpellE>root.afs</span>&quot;
! volume for the default cell is not reachable and the OpenAFS Client Service
! will not successfully start. </p>
  
  <p class=MsoNormal>To allow the OpenAFS Client Service to operate in these
! environments, Freelance mode dynamically constructs a fake &quot;<span
! class=SpellE>root.afs</span>&quot; volume from mount points and symlinks stored
! in the local registry.</p>
! 
! <p class=MsoNormal>The content of the fake “<span class=SpellE>root.afs</span>”
! volume is dynamically modified as cells are accessed.&nbsp; When the fake
! &quot;<span class=SpellE>root.afs</span>&quot; volume is initially constructed
! it will only contain two mount points: a <i>regular path </i>and <i>read-write
! path </i>mount point used to access the &quot;<span class=SpellE>root.cell</span>&quot;
! volume of the default AFS cell.&nbsp; Any attempt to access a valid cell name
! will result in a new mount point being created in the fake &quot;<span
! class=SpellE>root.afs</span>&quot; volume.&nbsp; If the <span class=SpellE>cellname</span>
! begins with a &quot;.&quot; the mount point will be a <i>read-write path</i>;
! otherwise the mount point will be a <i>regular path</i>.&nbsp; These mount
! points are preserved in the registry at key:</p>
  
  <p class=preformattedtext style='margin-left:35.45pt'><a
  href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie">HKLM\SOFTWARE\OpenAFS\Client\Freelance</a></p>
  
  <p class=MsoNormal>Additional mount points may be manually created using the
! &quot;<span class=SpellE>fs</span> <span class=SpellE>mkmount</span>&quot;
! command.&nbsp; Mount points may be removed using the &quot;<span class=SpellE>fs</span>
! <span class=SpellE>rmmount</span>&quot; command.</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;<span class=SpellE>fs</span>
! <span class=SpellE>mkmount</span> \\AFS\athena.mit.edu <span class=SpellE>root.cell</span>
! athena.mit.edu</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;<span class=SpellE>fs</span>
! <span class=SpellE>mkmount</span> \\AFS\.athena.mit.edu <span class=SpellE>root.cell</span>
! athena.mit.edu -<span class=SpellE>rw</span></p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;<span class=SpellE>fs</span>
! <span class=SpellE>rmmount</span> \\AFS\athena.mit.edu</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;<span class=SpellE>fs</span>
! <span class=SpellE>rmmount</span> \\AFS\.athena.mit.edu</p>
  
! <p class=MsoNormal>Symlinks may also be created within the Freelance “<span
! class=SpellE>root.afs</span>” volume.</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;<span class=SpellE>symlink</span>
! make \\afs\link \\afs\athena.mit.edu\user\j\a\jaltman</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<span
! class=SpellE>symlink</span> list \\afs\link</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '\\<span class=SpellE>afs</span>\link'
! is a <span class=SpellE>symlink</span> to '<span class=SpellE>athena.mit.edu\user\j\a\jaltman</span>'</p>
  
! <p class=preformattedtext style='margin-left:35.45pt'>&gt;<span class=SpellE>symlink</span>
! <span class=SpellE>rm</span> \\afs\link</p>
  
  <p class=MsoNormal>The symlinks are stored in the registry at:</p>
  
  <p class=preformattedtext style='margin-left:35.45pt'><a
  href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie_1">HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks</a>&nbsp;</p>
  
! <h2><a name="_Toc170268826"></a><a name="_Toc152605045"></a><a
  name="_Toc115416110"></a><a name="_Toc139993094"></a><a name="_Toc126872175"></a><a
! name="_Toc115417046"></a><span style='mso-bookmark:_Toc170268826'><span
  style='mso-bookmark:_Toc152605045'><span style='mso-bookmark:_Toc115416110'>3.4.
  Locating AFS Volume Database Servers</span> via DNS</span></span> </h2>
  
  <p class=MsoNormal>The OpenAFS for Windows client will use DNS AFSDB records to
  discover the location of AFS Volume Database servers when entries for the cell
! are not present in the client's <span class=SpellE>CellServDB</span> file
! (\%PROGRAMFILES%\OpenAFS\Client\<span class=SpellE>CellServDB</span>).</p>
  
! <h2><a name="_Toc170268827"></a><a name="_Toc152605046"></a><a
  name="_Toc115416111"></a><a name="_Toc139993095"></a><a name="_Toc126872176"></a><a
! name="_Toc115417047"></a><span style='mso-bookmark:_Toc170268827'><span
  style='mso-bookmark:_Toc152605046'><span style='mso-bookmark:_Toc115416111'>3.5.
  Obtaining AFS Tokens as a Integrated Part of Windows Logon</span></span></span></h2>
  
! <p class=MsoNormal>OpenAFS for Windows installs a <span class=SpellE>WinLogon</span>
! Network Provider to provide Single Sign-On functionality (aka Integrated
! Logon.)&nbsp; Integrated Logon can be used when the Windows username and
! password match the username and password associated with the default cell's
! Kerberos realm.&nbsp; For example, if the Windows username is &quot;<span
! class=SpellE>jaltman</span>&quot; and the default cell is
  &quot;athena.mit.edu&quot;, then Integrated Logon can be successfully used if
  the windows password matches the password assigned to the Kerberos principal
  &quot;<a href="mailto:jaltman@ATHENA.MIT.EDU">jaltman@ATHENA.MIT.EDU</a>&quot;.&nbsp;
***************
*** 1127,1135 ****
  
  <p class=MsoNormal>When KFW is configured, Integrated Logon will use it to
  obtain tokens. Use of KFW for Integrated Logon can be disabled via the <a
! href="#_Value:_EnableKFW">EnableKFW</a> registry value.<span
! style='mso-spacerun:yes'>  </span>Use of the krb524 service can be configured
! via the <a href="#_Value:_Use524">Use524</a> registry value.</p>
  
  <p class=MsoNormal>Integrated Logon will not preserve the Kerberos v5 tickets.
  KFW 3.1 and above implements that functionality.</p>
--- 1147,1155 ----
  
  <p class=MsoNormal>When KFW is configured, Integrated Logon will use it to
  obtain tokens. Use of KFW for Integrated Logon can be disabled via the <a
! href="#_Value:_EnableKFW"><span class=SpellE>EnableKFW</span></a> registry
! value.<span style='mso-spacerun:yes'>  </span>Use of the krb524 service can be
! configured via the <a href="#_Value:_Use524">Use524</a> registry value.</p>
  
  <p class=MsoNormal>Integrated Logon will not preserve the Kerberos v5 tickets.
  KFW 3.1 and above implements that functionality.</p>
***************
*** 1140,1166 ****
  
  <p class=MsoNormal>Integrated Login supports the ability to obtain tokens for
  multiple cells.&nbsp; For further information on how to configure this feature
! read about the <a href="../relnotes.htm#_Value:_TheseCells">TheseCells</a>
  value.</p>
  
! <h2><a name="_Toc154229366"></a><a name="_Toc152605047"></a><a
  name="_Toc115416112"></a><a name="_Toc139993096"></a><a name="_Toc126872177"></a><a
! name="_Toc115417048"></a><span style='mso-bookmark:_Toc154229366'><span
  style='mso-bookmark:_Toc152605047'><span style='mso-bookmark:_Toc115416112'>3.6.
  AFS System Tray Command Line Options</span></span></span></h2>
  
  <p class=MsoNormal><span style='color:red'>The AFS System Tray Tool
! (afscreds.exe) has been deprecated in favor of Network Identity Manager. <span
! style='mso-spacerun:yes'> </span>afscreds.exe will be removed from the OpenAFS
  in a future release.<o:p></o:p></span></p>
  
! <p class=MsoNormal>The AFS System Tray tool (afscreds.exe) supports several
! command line options: </p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -A = autoinit </p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -E = force existing afscreds to
! exit</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -I = install startup shortcut</p>
  
--- 1160,1187 ----
  
  <p class=MsoNormal>Integrated Login supports the ability to obtain tokens for
  multiple cells.&nbsp; For further information on how to configure this feature
! read about the <a href="../relnotes.htm#_Value:_TheseCells"><span class=SpellE>TheseCells</span></a>
  value.</p>
  
! <h2><a name="_Toc170268828"></a><a name="_Toc152605047"></a><a
  name="_Toc115416112"></a><a name="_Toc139993096"></a><a name="_Toc126872177"></a><a
! name="_Toc115417048"></a><span style='mso-bookmark:_Toc170268828'><span
  style='mso-bookmark:_Toc152605047'><span style='mso-bookmark:_Toc115416112'>3.6.
  AFS System Tray Command Line Options</span></span></span></h2>
  
  <p class=MsoNormal><span style='color:red'>The AFS System Tray Tool
! (afscreds.exe) has been deprecated in favor of Network Identity Manager.<span
! style='mso-spacerun:yes'>  </span>afscreds.exe will be removed from the OpenAFS
  in a future release.<o:p></o:p></span></p>
  
! <p class=MsoNormal>The AFS System Tray tool (afscreds.exe) supports several command
! line options: </p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -A = <span class=SpellE>autoinit</span>
! </p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -E = force existing <span
! class=SpellE>afscreds</span> to exit</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -I = install startup shortcut</p>
  
***************
*** 1171,1178 ****
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -Q = quiet mode.&nbsp; do not
  display start service dialog</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if
! afsd_service is not already running</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -S = show tokens dialog on startup</p>
  
--- 1192,1199 ----
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -Q = quiet mode.&nbsp; do not
  display start service dialog</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if <span
! class=SpellE>afsd_service</span> is not already running</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -S = show tokens dialog on startup</p>
  
***************
*** 1180,1194 ****
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -X = test and do map share</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -Z = unmap drives</p>
  
! <p class=MsoNormal>autoinit will result in automated attempts to acquire AFS
! tokens when afscreds.exe is started.&nbsp; afscreds.exe will attempt to utilize
! tickets stored in the MSLSA credentials cache; any existing CCAPI credentials
! cache; and finally display an Obtain Tokens dialog to the user.&nbsp; When used
! in combination with IP address change detection, afscreds.exe will attempt to acquire
! AFS tokens whenever the IP address list changes and the Kerberos KDC is
! accessible.</p>
  
  <p class=MsoNormal>The renew drive maps option is used to ensure that the user
  drive maps constructed via the OpenAFS tools (not NET USE) are re-constructed
--- 1201,1216 ----
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -X = test and do map share</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; -Z = <span class=SpellE>unmap</span>
! drives</p>
  
! <p class=MsoNormal><span class=SpellE>autoinit</span> will result in automated
! attempts to acquire AFS tokens when afscreds.exe is started.&nbsp; afscreds.exe
! will attempt to utilize tickets stored in the MSLSA credentials cache; any
! existing CCAPI credentials cache; and finally display an Obtain Tokens dialog
! to the user.&nbsp; When used in combination with IP address change detection,
! afscreds.exe will attempt to acquire AFS tokens whenever the IP address list
! changes and the Kerberos KDC is accessible.</p>
  
  <p class=MsoNormal>The renew drive maps option is used to ensure that the user
  drive maps constructed via the OpenAFS tools (not NET USE) are re-constructed
***************
*** 1198,1261 ****
  installers to use “-A -N -M -Q” as startup options.&nbsp; Currently, there is
  no user interface to change this selection after install time although these
  options may be altered via the registry on either per machine or per user
! basis.&nbsp; See <a href="#_Value___:_AfscredsShortcutParams">AfscredsShortcutParams</a>
! in <a href="#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
! <h2><a name="_Toc154229367"></a><a name="_Toc152605048"></a><a
  name="_Toc115416113"></a><a name="_Toc139993097"></a><a name="_Toc126872178"></a><a
! name="_Toc115417049"></a><span style='mso-bookmark:_Toc154229367'><span
  style='mso-bookmark:_Toc152605048'><span style='mso-bookmark:_Toc115416113'>3.7.
! The “AFS Client Admins” Authorization Group</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows client supports a local Windows
! authorization group named &quot;AFS Client Admins&quot;.&nbsp; This group is
! used in place of the &quot;Administrators&quot; group to determine which users
! are allowed to modify the AFS Client Service configuration via the AFS Control
! Panel (afs_config.exe) or fs.exe command line tool.&nbsp; The following fs.exe
! commands are now restricted to members of the &quot;AFS Client Admins&quot;
! group:</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>checkservers
! with a non-zero timer value</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setcachesize</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>newcell</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>sysname
! with a new sysname list</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>exportafs</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setcell</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setserverprefs</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>storebehind</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setcrypt</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>cscpolicy</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
--- 1220,1292 ----
  installers to use “-A -N -M -Q” as startup options.&nbsp; Currently, there is
  no user interface to change this selection after install time although these
  options may be altered via the registry on either per machine or per user
! basis.&nbsp; See <a href="#_Value___:_AfscredsShortcutParams"><span
! class=SpellE>AfscredsShortcutParams</span></a> in <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
! <h2><a name="_Toc170268829"></a><a name="_Toc152605048"></a><a
  name="_Toc115416113"></a><a name="_Toc139993097"></a><a name="_Toc126872178"></a><a
! name="_Toc115417049"></a><span style='mso-bookmark:_Toc170268829'><span
  style='mso-bookmark:_Toc152605048'><span style='mso-bookmark:_Toc115416113'>3.7.
! The “AFS Client <span class=SpellE>Admins</span>” Authorization Group</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows client supports a local Windows
! authorization group named &quot;AFS Client <span class=SpellE>Admins</span>&quot;.&nbsp;
! This group is used in place of the &quot;Administrators&quot; group to
! determine which users are allowed to modify the AFS Client Service
! configuration via the AFS Control Panel (afs_config.exe) or fs.exe command line
! tool.&nbsp; The following fs.exe commands are now restricted to members of the
! &quot;AFS Client <span class=SpellE>Admins</span>&quot; group:</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>checkservers</span> with a non-zero timer value</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>setcachesize</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>newcell</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>sysname</span> with a new <span class=SpellE>sysname</span> list</p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>exportafs</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>setcell</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>setserverprefs</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>storebehind</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>setcrypt</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>cscpolicy</span></p>
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
***************
*** 1263,1315 ****
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>minidump</p>
  
! <p class=MsoNormal>The creation or removal of mount points and symlinks in the Freelance
! “root.afs” volume are also restricted to members of the “AFS Client Admins”
! group.</p>
! 
! <p class=MsoNormal>The initial membership of the &quot;AFS Client Admins&quot;
! group when created by the installer is equivalent to the local
! &quot;Administrators&quot; group.&nbsp; If a user is added to the
! &quot;Administrators&quot; group after the creation of the &quot;AFS Client
! Admin&quot; group, that user will not be an AFS Client Administrator.&nbsp;
! Only users that are members of the &quot;AFS Client Admins&quot; group are AFS
! Client Administrators.&nbsp; The local &quot;SYSTEM&quot; account is an implicit
! member of the &quot;AFS Client Admins&quot; group.</p>
! 
! <p class=MsoNormal>Setting the default sysname for a machine should be done via
! the <a href="#_Value_:_SysName">registry</a> and not via &quot;fs
! sysname&quot;.</p>
  
! <h2><a name="_Toc154229368"></a><a name="_Toc152605049"></a><a
  name="_Toc115416114"></a><a name="_Toc139993098"></a><a name="_Toc126872179"></a><a
! name="_Toc115417050"></a><span style='mso-bookmark:_Toc154229368'><span
  style='mso-bookmark:_Toc152605049'><span style='mso-bookmark:_Toc115416114'>3.8.
  OpenAFS support for UNC paths</span></span></span> </h2>
  
  <p class=MsoNormal>The OpenAFS client supports UNC paths everywhere.&nbsp; UNC
  paths provide a canonical name for resources stored within AFS.&nbsp; UNC paths
  should be used instead of drive letter mappings whenever possible.&nbsp;&nbsp;
! This is especially true when specifying the location of roaming profiles and
! redirected folders.&nbsp;&nbsp;</p>
  
  <p class=MsoNormal>Power users that make extensive use of the command line
! shell, cmd.exe, should consider using JP Software's 4NT or Take Command command
! processors.&nbsp; Unlike cmd.exe, the JPSoftware shells fully support UNC paths
! as the current directory.&nbsp; JPSoftware added special recognition for
! OpenAFS to its command shells, 4NT 7.0 and Take Command 7.0.&nbsp; AFS paths
! can be entered in UNIX notation (e.g., <a
! href="file:///\\afs\openafs.org\software">/afs/openafs.org/software</a>), space
! utilization reports the output of the volume status for the specified path, and
! many AFS specific functions and variables have been added to the command
! language.</p>
  
! <p class=MsoNormal>JPSoftware's web site is <span class=MsoHyperlink>http://www.jpsoft.com</span>.</p>
  
! <h2><a name="_Toc154229369"></a><a name="_Toc152605050"></a><a
  name="_Toc115416115"></a><a name="_Toc139993099"></a><a name="_Toc126872180"></a><a
! name="_Toc115417051"></a><span style='mso-bookmark:_Toc154229369'><span
  style='mso-bookmark:_Toc152605050'><span style='mso-bookmark:_Toc115416115'>3.9.
  aklog.exe</span></span></span></h2>
  
--- 1294,1350 ----
  
  <p class=preformattedtext style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>minidump</span></p>
  
! <p class=MsoNormal>The creation or removal of mount points and symlinks in the
! Freelance “<span class=SpellE>root.afs</span>” volume are also restricted to
! members of the “AFS Client <span class=SpellE>Admins</span>” group.</p>
! 
! <p class=MsoNormal>The initial membership of the &quot;AFS Client <span
! class=SpellE>Admins</span>&quot; group when created by the installer is
! equivalent to the local &quot;Administrators&quot; group.&nbsp; If a user is
! added to the &quot;Administrators&quot; group after the creation of the
! &quot;AFS Client Admin&quot; group, that user will not be an AFS Client
! Administrator.&nbsp; Only users that are members of the &quot;AFS Client <span
! class=SpellE>Admins</span>&quot; group are AFS Client Administrators.&nbsp; The
! local &quot;SYSTEM&quot; account is an implicit member of the &quot;AFS Client <span
! class=SpellE>Admins</span>&quot; group.</p>
! 
! <p class=MsoNormal>Setting the default <span class=SpellE>sysname</span> for a
! machine should be done via the <a href="#_Value_:_SysName">registry</a> and not
! via &quot;<span class=SpellE>fs</span> <span class=SpellE>sysname</span>&quot;.</p>
  
! <h2><a name="_Toc170268830"></a><a name="_Toc152605049"></a><a
  name="_Toc115416114"></a><a name="_Toc139993098"></a><a name="_Toc126872179"></a><a
! name="_Toc115417050"></a><span style='mso-bookmark:_Toc170268830'><span
  style='mso-bookmark:_Toc152605049'><span style='mso-bookmark:_Toc115416114'>3.8.
  OpenAFS support for UNC paths</span></span></span> </h2>
  
  <p class=MsoNormal>The OpenAFS client supports UNC paths everywhere.&nbsp; UNC
  paths provide a canonical name for resources stored within AFS.&nbsp; UNC paths
  should be used instead of drive letter mappings whenever possible.&nbsp;&nbsp;
! This is especially true when specifying the location of roaming profiles and redirected
! folders.&nbsp;&nbsp;</p>
  
  <p class=MsoNormal>Power users that make extensive use of the command line
! shell, cmd.exe, should consider using JP Software's 4NT or Take Command <span
! class=SpellE>command</span> processors.&nbsp; Unlike cmd.exe, the <span
! class=SpellE>JPSoftware</span> shells fully support UNC paths as the current
! directory.&nbsp; <span class=SpellE>JPSoftware</span> added special recognition
! for OpenAFS to its command shells, 4NT 7.0 and Take Command 7.0.&nbsp; AFS
! paths can be entered in UNIX notation (e.g., <a
! href="file:///\\afs\openafs.org\software">/<span class=SpellE>afs/openafs.org/software</span></a>),
! space utilization reports the output of the volume status for the specified
! path, and many AFS specific functions and variables have been added to the
! command language.</p>
  
! <p class=MsoNormal><span class=SpellE>JPSoftware's</span> web site is <span
! class=MsoHyperlink>http://www.jpsoft.com</span>.</p>
  
! <h2><a name="_Toc170268831"></a><a name="_Toc152605050"></a><a
  name="_Toc115416115"></a><a name="_Toc139993099"></a><a name="_Toc126872180"></a><a
! name="_Toc115417051"></a><span style='mso-bookmark:_Toc170268831'><span
  style='mso-bookmark:_Toc152605050'><span style='mso-bookmark:_Toc115416115'>3.9.
  aklog.exe</span></span></span></h2>
  
***************
*** 1318,1330 ****
  The OpenAFS aklog.exe supports Kerberos v5 as well as the ability to
  auto-generate AFS IDs within foreign PTS databases.</p>
  
! <p class=preformattedtext>Usage: aklog [-d] [[-cell | -c] cell [-k krb_realm]]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  [[-p | -path] pathname]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! [-noprdb] [-force]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  [-5 [-m]| -4]</p>
--- 1353,1366 ----
  The OpenAFS aklog.exe supports Kerberos v5 as well as the ability to
  auto-generate AFS IDs within foreign PTS databases.</p>
  
! <p class=preformattedtext>Usage: <span class=SpellE>aklog</span> [-d] [[-cell |
! -c] cell [-k <span class=SpellE>krb_realm</span>]]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  [[-p | -path] pathname]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! [-<span class=SpellE>noprdb</span>] [-force]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  [-5 [-m]| -4]</p>
***************
*** 1336,1348 ****
  <p class=preformattedtext>&nbsp;&nbsp; cell = zero or more cells for which
  tokens will be obtained</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; krb_realm = the kerberos realm of the
! cell.</p>
  
  <p class=preformattedtext>&nbsp;&nbsp; pathname = the directory for which
  authentication is required</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; -noprdb = don't try to determine AFS ID.</p>
  
  <p class=preformattedtext>&nbsp;&nbsp; -5 or -4 = use Kerberos V (default) or
  Kerberos IV tickets</p>
--- 1372,1385 ----
  <p class=preformattedtext>&nbsp;&nbsp; cell = zero or more cells for which
  tokens will be obtained</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; <span class=SpellE>krb_realm</span> =
! the <span class=SpellE>kerberos</span> realm of the cell.</p>
  
  <p class=preformattedtext>&nbsp;&nbsp; pathname = the directory for which
  authentication is required</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; -<span class=SpellE>noprdb</span> =
! don't try to determine AFS ID.</p>
  
  <p class=preformattedtext>&nbsp;&nbsp; -5 or -4 = use Kerberos V (default) or
  Kerberos IV tickets</p>
***************
*** 1350,1358 ****
  <p class=preformattedtext>&nbsp;&nbsp; -m = use krb524d to convert Kerberos V
  tickets to Kerberos IV</p>
  
! <h2><a name="_Toc154229370"></a><a name="_Toc152605051"></a><a
  name="_Toc115416116"></a><a name="_Toc139993100"></a><a name="_Toc126872181"></a><a
! name="_Toc115417052"></a><span style='mso-bookmark:_Toc154229370'><span
  style='mso-bookmark:_Toc152605051'><span style='mso-bookmark:_Toc115416116'>3.10.
  OpenAFS Servers on Windows are Unsupported</span></span></span></h2>
  
--- 1387,1395 ----
  <p class=preformattedtext>&nbsp;&nbsp; -m = use krb524d to convert Kerberos V
  tickets to Kerberos IV</p>
  
! <h2><a name="_Toc170268832"></a><a name="_Toc152605051"></a><a
  name="_Toc115416116"></a><a name="_Toc139993100"></a><a name="_Toc126872181"></a><a
! name="_Toc115417052"></a><span style='mso-bookmark:_Toc170268832'><span
  style='mso-bookmark:_Toc152605051'><span style='mso-bookmark:_Toc115416116'>3.10.
  OpenAFS Servers on Windows are Unsupported</span></span></span></h2>
  
***************
*** 1361,1385 ****
  It has not been thoroughly tested.&nbsp; Any data which would cause pain if
  lost should not be stored in an OpenAFS Server on Windows.</p>
  
! <h3><a name="_Toc154229371">3.10.1. OpenAFS Server Installation</a></h3>
  
! <p class=MsoNormal>When the OpenAFS Server is installed, the TransarcAFSServer
! service (bosctlsvc.exe) will be installed and configured.<span
! style='mso-spacerun:yes'>  </span>The TransarcAFSServer service will auto-start
! the traditional AFS bos server.<span style='mso-spacerun:yes'>  </span>The
! former AFS Server Configuration wizard makes assumptions that no longer hold
! true and it has therefore been disabled.<span style='mso-spacerun:yes'> 
! </span>However, following the instructions for installing the AFS Servers on
! UNIX it is possible to properly configure the AFS Servers on Microsoft
! Windows.<span style='mso-spacerun:yes'>  </span>The AFS Server binaries,
! configuration files, and log files are installed under %Program
! Files%\OpenAFS\Server.<span style='mso-spacerun:yes'>   </span><span
! style='color:red'><a href="http://www.openafs.org/no-more-des.html"><span
! style='color:red'>kaserver has been deprecated and its use is strongly
! discouraged.</span></a></span><span style='mso-spacerun:yes'>  </span>Instead,
! Active Directory or some other Kerberos v5 KDC should be used in its place.</p>
  
! <h3><a name="_Toc154229372">3.10.2. Using the AFS Client Service when the
  Server is installed</a></h3>
  
  <p class=MsoNormal>A few notes on the usage of the AFS Client Service if it is
--- 1398,1424 ----
  It has not been thoroughly tested.&nbsp; Any data which would cause pain if
  lost should not be stored in an OpenAFS Server on Windows.</p>
  
! <h3><a name="_Toc170268833">3.10.1. OpenAFS Server Installation</a></h3>
  
! <p class=MsoNormal>When the OpenAFS Server is installed, the <span
! class=SpellE>TransarcAFSServer</span> service (bosctlsvc.exe) will be installed
! and configured.<span style='mso-spacerun:yes'>  </span>The <span class=SpellE>TransarcAFSServer</span>
! service will auto-start the traditional AFS <span class=SpellE>bos</span>
! server.<span style='mso-spacerun:yes'>  </span>The former AFS Server
! Configuration wizard makes assumptions that no longer hold true and it has
! therefore been disabled.<span style='mso-spacerun:yes'>  </span>However,
! following the instructions for installing the AFS Servers on UNIX it is
! possible to properly configure the AFS Servers on Microsoft Windows.<span
! style='mso-spacerun:yes'>  </span>The AFS Server binaries, configuration files,
! and log files are installed under %Program Files%\OpenAFS\Server.<span
! style='mso-spacerun:yes'>   </span><span style='color:red'><a
! href="http://www.openafs.org/no-more-des.html"><span class=SpellE><span
! class=GramE><span style='color:red'>kaserver</span></span></span><span
! style='color:red'> has been deprecated and its use is strongly discouraged.</span></a></span><span
! style='mso-spacerun:yes'>  </span>Instead, Active Directory or some other
! Kerberos v5 KDC should be used in its place.</p>
  
! <h3><a name="_Toc170268834">3.10.2. Using the AFS Client Service when the
  Server is installed</a></h3>
  
  <p class=MsoNormal>A few notes on the usage of the AFS Client Service if it is
***************
*** 1390,1418 ****
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Freelance
  mode should be disabled when the AFS Client Service is installed on the same
  machine as the AFS Server,.&nbsp; Otherwise, you will be unable to manipulate
! the contents of the root.afs volume for the hosted cell without constructing an
! explicit mountpoint to the root.afs volume from another volume.</p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
! AFS Server and related tools only support the built in kaserver (Kerberos
! IV).&nbsp; If kaserver is being used, <a href="http://web.mit.edu/kerberos/">MIT
! Kerberos for Windows</a> should not be installed or must be disabled via the <a
! href="#_Toc126872361">EnableKFW</a> registry value.</p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The AFS
! Servers are not aware of power management events nor are they aware of network
! configuration changes. <span style='mso-spacerun:yes'> </span>It is strongly
! advised that the AFS servers be installed only on systems that will not be
! shutdown or suspended unexpectedly. <span style='mso-spacerun:yes'>  </span>An inadvertent
! shutdown will corrupt volume data.</p>
  
! <h2><a name="_Toc154229373"></a><a name="_Toc152605052"></a><a
  name="_Toc115416117"></a><a name="_Toc139993101"></a><a name="_Toc126872182"></a><a
! name="_Toc115417053"></a><span style='mso-bookmark:_Toc154229373'><span
  style='mso-bookmark:_Toc152605052'><span style='mso-bookmark:_Toc115416117'>3.11.
  OpenAFS Debugging Symbol files</span></span></span></h2>
  
--- 1429,1459 ----
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Freelance
  mode should be disabled when the AFS Client Service is installed on the same
  machine as the AFS Server,.&nbsp; Otherwise, you will be unable to manipulate
! the contents of the <span class=SpellE>root.afs</span> volume for the hosted
! cell without constructing an explicit <span class=SpellE>mountpoint</span> to
! the <span class=SpellE>root.afs</span> volume from another volume.</p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
! AFS Server and related tools only support the built in <span class=SpellE>kaserver</span>
! (Kerberos IV).&nbsp; If <span class=SpellE>kaserver</span> is being used, <a
! href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a> should not be
! installed or must be disabled via the <a href="#_Toc126872361"><span
! class=SpellE>EnableKFW</span></a> registry value.</p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The
! AFS Servers are not aware of power management events nor are they aware of
! network configuration changes.<span style='mso-spacerun:yes'>  </span>It is
! strongly advised that the AFS servers be installed only on systems that will
! not be shutdown or suspended unexpectedly.<span style='mso-spacerun:yes'>  
! </span>An inadvertent shutdown will corrupt volume data.</p>
  
! <h2><a name="_Toc170268835"></a><a name="_Toc152605052"></a><a
  name="_Toc115416117"></a><a name="_Toc139993101"></a><a name="_Toc126872182"></a><a
! name="_Toc115417053"></a><span style='mso-bookmark:_Toc170268835'><span
  style='mso-bookmark:_Toc152605052'><span style='mso-bookmark:_Toc115416117'>3.11.
  OpenAFS Debugging Symbol files</span></span></span></h2>
  
***************
*** 1435,1443 ****
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>whether
! or not <i style='mso-bidi-font-style:normal'>fs trace</i> logging is turned on
! by default (release: no, debug: yes)<span style='font-size:9.0pt;font-family:
! Symbol'><o:p></o:p></span></p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
--- 1476,1484 ----
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>whether
! or not <span class=SpellE><i style='mso-bidi-font-style:normal'>fs</i></span><i
! style='mso-bidi-font-style:normal'> trace</i> logging is turned on by default
! (release: no, debug: yes)<span style='font-size:9.0pt;font-family:Symbol'><o:p></o:p></span></p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
***************
*** 1445,1453 ****
  or not additional debug statements were compiled into the binaries (release:
  no, debug: yes)</p>
  
! <h2><a name="_Toc154229374"></a><a name="_Toc152605053"></a><a
  name="_Toc115416118"></a><a name="_Toc139993102"></a><a name="_Toc126872183"></a><a
! name="_Toc115417054"></a><span style='mso-bookmark:_Toc154229374'><span
  style='mso-bookmark:_Toc152605053'><span style='mso-bookmark:_Toc115416118'>3.12.
  </span>Large Files (64-bit) Supported</span></span></h2>
  
--- 1486,1494 ----
  or not additional debug statements were compiled into the binaries (release:
  no, debug: yes)</p>
  
! <h2><a name="_Toc170268836"></a><a name="_Toc152605053"></a><a
  name="_Toc115416118"></a><a name="_Toc139993102"></a><a name="_Toc126872183"></a><a
! name="_Toc115417054"></a><span style='mso-bookmark:_Toc170268836'><span
  style='mso-bookmark:_Toc152605053'><span style='mso-bookmark:_Toc115416118'>3.12.
  </span>Large Files (64-bit) Supported</span></span></h2>
  
***************
*** 1456,1477 ****
  AFS File Server supports large files.&nbsp;&nbsp; If the AFS File Server does
  not support large files, then the file size limit remains 2GB.</p>
  
! <h2><a name="_Toc154229375"></a><a name="_Toc152605054"></a><a
  name="_Toc115416119"></a><a name="_Toc139993103"></a><a name="_Toc126872184"></a><a
! name="_Toc115417055"></a><span style='mso-bookmark:_Toc154229375'><span
  style='mso-bookmark:_Toc152605054'><span style='mso-bookmark:_Toc115416119'>3.13.
  Encrypted AFS Network Communication</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows installer by default activates a
  weak form of encrypted data transfer between the AFS client and the AFS
! servers.&nbsp; This is often referred to as &quot;fcrypt&quot; mode.&nbsp;
! Encrypted data transfer can be turned on or off with the “fs crypt”
! command.&nbsp; Transitions between “crypt” and “non-crypt” modes are logged to
! the Windows Application Event Log. </p>
  
! <h2><a name="_Toc154229376"></a><a name="_Toc152605055"></a><a
  name="_Toc115416120"></a><a name="_Toc139993104"></a><a name="_Toc126872185"></a><a
! name="_Toc115417056"></a><span style='mso-bookmark:_Toc154229376'><span
  style='mso-bookmark:_Toc152605055'><span style='mso-bookmark:_Toc115416120'>3.14.
  Authenticated Access to the OpenAFS Client Service</span></span></span></h2>
  
--- 1497,1518 ----
  AFS File Server supports large files.&nbsp;&nbsp; If the AFS File Server does
  not support large files, then the file size limit remains 2GB.</p>
  
! <h2><a name="_Toc170268837"></a><a name="_Toc152605054"></a><a
  name="_Toc115416119"></a><a name="_Toc139993103"></a><a name="_Toc126872184"></a><a
! name="_Toc115417055"></a><span style='mso-bookmark:_Toc170268837'><span
  style='mso-bookmark:_Toc152605054'><span style='mso-bookmark:_Toc115416119'>3.13.
  Encrypted AFS Network Communication</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows installer by default activates a
  weak form of encrypted data transfer between the AFS client and the AFS
! servers.&nbsp; This is often referred to as &quot;<span class=SpellE>fcrypt</span>&quot;
! mode.&nbsp; Encrypted data transfer can be turned on or off with the “<span
! class=SpellE>fs</span> crypt” command.&nbsp; Transitions between “crypt” and
! “non-crypt” modes are logged to the Windows Application Event Log. </p>
  
! <h2><a name="_Toc170268838"></a><a name="_Toc152605055"></a><a
  name="_Toc115416120"></a><a name="_Toc139993104"></a><a name="_Toc126872185"></a><a
! name="_Toc115417056"></a><span style='mso-bookmark:_Toc170268838'><span
  style='mso-bookmark:_Toc152605055'><span style='mso-bookmark:_Toc115416120'>3.14.
  Authenticated Access to the OpenAFS Client Service</span></span></span></h2>
  
***************
*** 1482,1500 ****
  machines.&nbsp;&nbsp;&nbsp; </p>
  
  <p class=MsoNormal>When GSS SPNEGO attempts a Kerberos v5 authentication, the
! Windows SMB client will attempt to retrieve service tickets for
! &quot;cifs/afs@REALM&quot; (if the loopback adapter is in use) or
! &quot;cifs/machine-afs@REALM&quot; (if the loopback adapter is not being
! used).&nbsp; It is extremely important that this service principal not exist in
! the KDC database as the Kerberos authentication must fail allowing automatic
! fallback to NTLM.&nbsp; When NTLM is used a special local authentication mode
! will be used that does not require access to the user's password.&nbsp;
! Instead, Windows will internally recognize the request as coming from a local
! logon session.</p>
  
! <h2><a name="_Toc154229377"></a><a name="_Toc152605056"></a><a
  name="_Toc115416121"></a><a name="_Toc139993105"></a><a name="_Toc126872186"></a><a
! name="_Toc115417057"></a><span style='mso-bookmark:_Toc154229377'><span
  style='mso-bookmark:_Toc152605056'><span style='mso-bookmark:_Toc115416121'>3.15.
  No More INI Files</span></span></span></h2>
  
--- 1523,1541 ----
  machines.&nbsp;&nbsp;&nbsp; </p>
  
  <p class=MsoNormal>When GSS SPNEGO attempts a Kerberos v5 authentication, the
! Windows SMB client will attempt to retrieve service tickets for &quot;<span
! class=SpellE>cifs/afs@REALM</span>&quot; (if the loopback adapter is in use) or
! &quot;<span class=SpellE>cifs/machine-afs@REALM</span>&quot; (if the loopback
! adapter is not being used).&nbsp; It is extremely important that this service
! principal not exist in the KDC database as the Kerberos authentication must fail
! allowing automatic fallback to NTLM.&nbsp; When NTLM is used a special local
! authentication mode will be used that does not require access to the user's
! password.&nbsp; Instead, Windows will internally recognize the request as
! coming from a local logon session.</p>
  
! <h2><a name="_Toc170268839"></a><a name="_Toc152605056"></a><a
  name="_Toc115416121"></a><a name="_Toc139993105"></a><a name="_Toc126872186"></a><a
! name="_Toc115417057"></a><span style='mso-bookmark:_Toc170268839'><span
  style='mso-bookmark:_Toc152605056'><span style='mso-bookmark:_Toc115416121'>3.15.
  No More INI Files</span></span></span></h2>
  
***************
*** 1502,1533 ****
  in Windows .INI files. &nbsp;&nbsp;The OpenAFS client does not use Windows .INI
  files for the storage of configuration data.&nbsp;&nbsp; All settings are
  stored in the registry (see <a href="#_Appendix_A:_Registry_Values">Appendix A</a>).&nbsp;
! The CellServDB file is now stored in the %PROGRAMFILES%\OpenAFS\Client
! directory.&nbsp;&nbsp; The <i><a href="#_Value___:_CellServDBDir">CellServDBDir</a></i>
  registry value can be used to specify an alternative location.</p>
  
  <p class=MsoNormal>OpenAFS will relocate the contents of the “afsdcell.ini”
! file to the new CellServDB file.&nbsp; OpenAFS will also import the contents of
! the “afs_freelance.ini” file to the Windows registry.&nbsp;&nbsp; OpenAFS will
! not process the contents of the “afsddbmt.ini”.</p>
  
! <h2><a name="_Toc154229378"></a><a name="_Toc152605057"></a><a
  name="_Toc115416122"></a><a name="_Toc139993106"></a><a name="_Toc126872187"></a><a
! name="_Toc115417058"></a><span style='mso-bookmark:_Toc154229378'><span
  style='mso-bookmark:_Toc152605057'><span style='mso-bookmark:_Toc115416122'>3.16.
  Microsoft Windows Internet Connection Firewall</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client is compatible with the Internet
  Connection Firewall that debuted with Windows XP SP2 and Windows 2003
! SP1.&nbsp; The Internet Connection Firewall will be automatically adjusted to
! allow the receipt of incoming callback messages from the AFS file server.&nbsp;
! In addition, the appropriate <i>Back Connection</i> registry entries are added
! to allow SMB authentication to be performed across the Microsoft Loopback
! Adapter.</p>
  
! <h2><a name="_Toc154229379"></a><a name="_Toc152605058"></a><a
  name="_Toc115416123"></a><a name="_Toc139993107"></a><a name="_Toc126872188"></a><a
! name="_Toc115417059"></a><span style='mso-bookmark:_Toc154229379'><span
  style='mso-bookmark:_Toc152605058'><span style='mso-bookmark:_Toc115416123'>3.17.
  Browsing AFS from the Explorer Shell and Office</span></span></span></h2>
  
--- 1543,1575 ----
  in Windows .INI files. &nbsp;&nbsp;The OpenAFS client does not use Windows .INI
  files for the storage of configuration data.&nbsp;&nbsp; All settings are
  stored in the registry (see <a href="#_Appendix_A:_Registry_Values">Appendix A</a>).&nbsp;
! The <span class=SpellE>CellServDB</span> file is now stored in the
! %PROGRAMFILES%\OpenAFS\Client directory.&nbsp;&nbsp; The <i><a
! href="#_Value___:_CellServDBDir"><span class=SpellE>CellServDBDir</span></a></i>
  registry value can be used to specify an alternative location.</p>
  
  <p class=MsoNormal>OpenAFS will relocate the contents of the “afsdcell.ini”
! file to the new <span class=SpellE>CellServDB</span> file.&nbsp; OpenAFS will
! also import the contents of the “afs_freelance.ini” file to the Windows
! registry.&nbsp;&nbsp; OpenAFS will not process the contents of the
! “afsddbmt.ini”.</p>
  
! <h2><a name="_Toc170268840"></a><a name="_Toc152605057"></a><a
  name="_Toc115416122"></a><a name="_Toc139993106"></a><a name="_Toc126872187"></a><a
! name="_Toc115417058"></a><span style='mso-bookmark:_Toc170268840'><span
  style='mso-bookmark:_Toc152605057'><span style='mso-bookmark:_Toc115416122'>3.16.
  Microsoft Windows Internet Connection Firewall</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client is compatible with the Internet
  Connection Firewall that debuted with Windows XP SP2 and Windows 2003
! SP1.&nbsp; The Internet Connection Firewall will be automatically adjusted to allow
! the receipt of incoming callback messages from the AFS file server.&nbsp; In
! addition, the appropriate <i>Back Connection</i> registry entries are added to
! allow SMB authentication to be performed across the Microsoft Loopback Adapter.</p>
  
! <h2><a name="_Toc170268841"></a><a name="_Toc152605058"></a><a
  name="_Toc115416123"></a><a name="_Toc139993107"></a><a name="_Toc126872188"></a><a
! name="_Toc115417059"></a><span style='mso-bookmark:_Toc170268841'><span
  style='mso-bookmark:_Toc152605058'><span style='mso-bookmark:_Toc115416123'>3.17.
  Browsing AFS from the Explorer Shell and Office</span></span></span></h2>
  
***************
*** 1536,1554 ****
  significantly enhances the interoperability of AFS volumes within the Explorer
  Shell and Microsoft Office applications.</p>
  
! <h2><a name="_Toc154229380"></a><a name="_Toc152605059"></a><a
  name="_Toc115416124"></a><a name="_Toc139993108"></a><a name="_Toc126872189"></a><a
! name="_Toc115417060"></a><span style='mso-bookmark:_Toc154229380'><span
  style='mso-bookmark:_Toc152605059'><span style='mso-bookmark:_Toc115416124'>3.18.
  </span><st1:place w:st="on"><st1:PlaceName w:st="on">Byte</st1:PlaceName> <st1:PlaceType
   w:st="on">Range</st1:PlaceType></st1:place> Locking</span></span></h2>
  
  <p class=MsoNormal>Many applications on Windows (e.g. Microsoft Office) require
  the use of byte range locks applied to a file either to protect against
! simultaneous file access or as a signaling mechanism.&nbsp;&nbsp; OpenAFS for Windows
! release 1.5 (or greater) implements byte range locking within the CIFS-AFS
! gateway server.&nbsp;&nbsp; This support for byte range locking obtains AFS’
! advisory file server locks to simulate Microsoft Windows mandatory
  locks.&nbsp;&nbsp; When an application opens a file, a lock will be obtained
  from AFS indicating that the file is in use.&nbsp; If the lock is a write lock,
  access to the file will be restricted to other applications running on the same
--- 1578,1596 ----
  significantly enhances the interoperability of AFS volumes within the Explorer
  Shell and Microsoft Office applications.</p>
  
! <h2><a name="_Toc170268842"></a><a name="_Toc152605059"></a><a
  name="_Toc115416124"></a><a name="_Toc139993108"></a><a name="_Toc126872189"></a><a
! name="_Toc115417060"></a><span style='mso-bookmark:_Toc170268842'><span
  style='mso-bookmark:_Toc152605059'><span style='mso-bookmark:_Toc115416124'>3.18.
  </span><st1:place w:st="on"><st1:PlaceName w:st="on">Byte</st1:PlaceName> <st1:PlaceType
   w:st="on">Range</st1:PlaceType></st1:place> Locking</span></span></h2>
  
  <p class=MsoNormal>Many applications on Windows (e.g. Microsoft Office) require
  the use of byte range locks applied to a file either to protect against
! simultaneous file access or as a signaling mechanism.&nbsp;&nbsp; OpenAFS for
! Windows release 1.5 (or greater) implements byte range locking within the
! CIFS-AFS gateway server.&nbsp;&nbsp; This support for byte range locking
! obtains AFS’ advisory file server locks to simulate Microsoft Windows mandatory
  locks.&nbsp;&nbsp; When an application opens a file, a lock will be obtained
  from AFS indicating that the file is in use.&nbsp; If the lock is a write lock,
  access to the file will be restricted to other applications running on the same
***************
*** 1586,1604 ****
  inconvenience on end users.&nbsp; </p>
  
  <ul style='margin-top:0pt' type=disc>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-only volume and the application requests a
       shared lock, the CIFS-AFS server will grant the lock request without
       asking the AFS file server.</li>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-only volume and the application opens the
       file with write access and requests an exclusive lock, the CIFS-AFS server
       will refuse the lock request and return a read only error.</li>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-only volume and the application opens the
       file with only read access and requests an exclusive lock, the CIFS-AFS
       server will fulfill the lock request with a read lock.</li>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-write volume and the application requests an
       exclusive lock, the CIFS-AFS server will request a write lock from the AFS
       file server.&nbsp; If granted by the file server, then the CIFS-AFS server
--- 1628,1646 ----
  inconvenience on end users.&nbsp; </p>
  
  <ul style='margin-top:0pt' type=disc>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-only volume and the application requests a
       shared lock, the CIFS-AFS server will grant the lock request without
       asking the AFS file server.</li>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-only volume and the application opens the
       file with write access and requests an exclusive lock, the CIFS-AFS server
       will refuse the lock request and return a read only error.</li>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-only volume and the application opens the
       file with only read access and requests an exclusive lock, the CIFS-AFS
       server will fulfill the lock request with a read lock.</li>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-write volume and the application requests an
       exclusive lock, the CIFS-AFS server will request a write lock from the AFS
       file server.&nbsp; If granted by the file server, then the CIFS-AFS server
***************
*** 1611,1617 ****
       the request even though the AFS file server said ‘no’.&nbsp; If the user
       does not have at least those permissions, the CIFS-AFS server will deny
       the request.</li>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-write volume and the application requests a
       shared lock, the CIFS-AFS server will request a read lock from the AFS
       file server.&nbsp; If granted by the file server, then the CIFS-AFS server
--- 1653,1659 ----
       the request even though the AFS file server said ‘no’.&nbsp; If the user
       does not have at least those permissions, the CIFS-AFS server will deny
       the request.</li>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       the file is located on a read-write volume and the application requests a
       shared lock, the CIFS-AFS server will request a read lock from the AFS
       file server.&nbsp; If granted by the file server, then the CIFS-AFS server
***************
*** 1620,1630 ****
       lock privilege, then the CIFS-AFS server will grant the request even
       though the AFS file server said ‘no’.&nbsp; If the user does not have at
       least those permissions, the CIFS-AFS server will deny the request.</li>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       multiple processes on the same machine attempt to access the same file
       simultaneously, the CIFS-AFS server will locally manage the granted locks
       and all processes will share a single lock on the AFS file server.</li>
!  <li class=MsoNormal style='mso-list:l1 level1 lfo3;tab-stops:list 36.0pt'>If
       the CIFS-AFS server is unable to renew the AFS file server locks, then it
       will invalidate the associated file handles.&nbsp; This is the same
       behavior that an application will experience if it was using a Windows
--- 1662,1672 ----
       lock privilege, then the CIFS-AFS server will grant the request even
       though the AFS file server said ‘no’.&nbsp; If the user does not have at
       least those permissions, the CIFS-AFS server will deny the request.</li>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       multiple processes on the same machine attempt to access the same file
       simultaneously, the CIFS-AFS server will locally manage the granted locks
       and all processes will share a single lock on the AFS file server.</li>
!  <li class=MsoNormal style='mso-list:l0 level1 lfo3;tab-stops:list 36.0pt'>If
       the CIFS-AFS server is unable to renew the AFS file server locks, then it
       will invalidate the associated file handles.&nbsp; This is the same
       behavior that an application will experience if it was using a Windows
***************
*** 1634,1662 ****
  
  <p class=MsoNormal>If you wish to disable the acquisition of locks from the
  file server, this can be performed using the <a
! href="#_Value:_EnableServerLocks">EnableServerLocks</a> registry value.</p>
  
! <h2><a name="_Toc154229381"></a><a name="_Toc152605060"></a><a
  name="_Toc115416125"></a><a name="_Toc139993109"></a><a name="_Toc126872190"></a><a
! name="_Toc115417061"></a><span style='mso-bookmark:_Toc154229381'><span
  style='mso-bookmark:_Toc152605060'><span style='mso-bookmark:_Toc115416125'>3.19.
  Automatic Discarding of AFS Tokens at Logoff</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client will automatically forget a user's tokens
  upon Logoff unless the user's profile was loaded from an AFS volume.&nbsp; In
  this situation there is no mechanism to determine when the profile has been
! successfully written back to the network.&nbsp; It is therefore unsafe to release
! the user's tokens.&nbsp; Whether or not the profile has been loaded from the
! registry can be determined for Local Accounts, Active Directory accounts and
! NT4 accounts.</p>
  
  <p class=MsoNormal>If there is a need to disable this functionality, the <a
! href="#_Value_:_LogoffPreserveTokens">LogoffPreserveTokens</a> registry value
! can be used. (see <a href="#_Appendix_A:_Registry_Values">Appendix A</a>.)</p>
  
! <h2><a name="_Toc154229382"></a><a name="_Toc152605061"></a><a
  name="_Toc115416126"></a><a name="_Toc139993110"></a><a name="_Toc126872191"></a><a
! name="_Toc115417062"></a><span style='mso-bookmark:_Toc154229382'><span
  style='mso-bookmark:_Toc152605061'><span style='mso-bookmark:_Toc115416126'>3.20.
  Windows Terminal Server installations</span></span></span></h2>
  
--- 1676,1706 ----
  
  <p class=MsoNormal>If you wish to disable the acquisition of locks from the
  file server, this can be performed using the <a
! href="#_Value:_EnableServerLocks"><span class=SpellE>EnableServerLocks</span></a>
! registry value.</p>
  
! <h2><a name="_Toc170268843"></a><a name="_Toc152605060"></a><a
  name="_Toc115416125"></a><a name="_Toc139993109"></a><a name="_Toc126872190"></a><a
! name="_Toc115417061"></a><span style='mso-bookmark:_Toc170268843'><span
  style='mso-bookmark:_Toc152605060'><span style='mso-bookmark:_Toc115416125'>3.19.
  Automatic Discarding of AFS Tokens at Logoff</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client will automatically forget a user's tokens
  upon Logoff unless the user's profile was loaded from an AFS volume.&nbsp; In
  this situation there is no mechanism to determine when the profile has been
! successfully written back to the network.&nbsp; It is therefore unsafe to
! release the user's tokens.&nbsp; Whether or not the profile has been loaded
! from the registry can be determined for Local Accounts, Active Directory
! accounts and NT4 accounts.</p>
  
  <p class=MsoNormal>If there is a need to disable this functionality, the <a
! href="#_Value_:_LogoffPreserveTokens"><span class=SpellE>LogoffPreserveTokens</span></a>
! registry value can be used. (<span class=GramE>see</span> <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>.)</p>
  
! <h2><a name="_Toc170268844"></a><a name="_Toc152605061"></a><a
  name="_Toc115416126"></a><a name="_Toc139993110"></a><a name="_Toc126872191"></a><a
! name="_Toc115417062"></a><span style='mso-bookmark:_Toc170268844'><span
  style='mso-bookmark:_Toc152605061'><span style='mso-bookmark:_Toc115416126'>3.20.
  Windows Terminal Server installations</span></span></span></h2>
  
***************
*** 1666,1674 ****
  The AFS Server should not be installed on a machine with Terminal Server
  installed.</p>
  
! <h2><a name="_Toc154229383"></a><a name="_Toc152605062"></a><a
  name="_Toc115416127"></a><a name="_Toc139993111"></a><a name="_Toc126872192"></a><a
! name="_Toc115417063"></a><span style='mso-bookmark:_Toc154229383'><span
  style='mso-bookmark:_Toc152605062'><span style='mso-bookmark:_Toc115416127'>3.21.
  Hidden Dot Files</span></span></span></h2>
  
--- 1710,1718 ----
  The AFS Server should not be installed on a machine with Terminal Server
  installed.</p>
  
! <h2><a name="_Toc170268845"></a><a name="_Toc152605062"></a><a
  name="_Toc115416127"></a><a name="_Toc139993111"></a><a name="_Toc126872192"></a><a
! name="_Toc115417063"></a><span style='mso-bookmark:_Toc170268845'><span
  style='mso-bookmark:_Toc152605062'><span style='mso-bookmark:_Toc115416127'>3.21.
  Hidden Dot Files</span></span></span></h2>
  
***************
*** 1677,1687 ****
  and directory names beginning with a &quot;.&quot; are automatically given the
  Hidden attribute so they will not normally be displayed.<span
  style='mso-spacerun:yes'>  </span>This behavior can be altered via the <a
! href="#_Value:_HideDotFiles">HideDotFiles</a> registry value.</p>
  
! <h2><a name="_Toc154229384"></a><a name="_Toc152605063"></a><a
  name="_Toc115416128"></a><a name="_Toc139993112"></a><a name="_Toc126872193"></a><a
! name="_Toc115417064"></a><span style='mso-bookmark:_Toc154229384'><span
  style='mso-bookmark:_Toc152605063'><span style='mso-bookmark:_Toc115416128'>3.22.
  Status Cache Limits</span></span></span></h2>
  
--- 1721,1732 ----
  and directory names beginning with a &quot;.&quot; are automatically given the
  Hidden attribute so they will not normally be displayed.<span
  style='mso-spacerun:yes'>  </span>This behavior can be altered via the <a
! href="#_Value:_HideDotFiles"><span class=SpellE>HideDotFiles</span></a>
! registry value.</p>
  
! <h2><a name="_Toc170268846"></a><a name="_Toc152605063"></a><a
  name="_Toc115416128"></a><a name="_Toc139993112"></a><a name="_Toc126872193"></a><a
! name="_Toc115417064"></a><span style='mso-bookmark:_Toc170268846'><span
  style='mso-bookmark:_Toc152605063'><span style='mso-bookmark:_Toc115416128'>3.22.
  Status Cache Limits</span></span></span></h2>
  
***************
*** 1701,1727 ****
  style='mso-spacerun:yes'>  </span>This can be adjusted using the <a
  href="#_Value:_Stats">Stats</a> registry value.</p>
  
! <h2><a name="_Toc154229385"></a><a name="_Toc152605064"></a><a
  name="_Toc115416129"></a><a name="_Toc139993113"></a><a name="_Toc126872194"></a><a
! name="_Toc115417065"></a><span style='mso-bookmark:_Toc154229385'><span
  style='mso-bookmark:_Toc152605064'><span style='mso-bookmark:_Toc115416129'>3.23.
  NETBIOS over TCP/IP must be enabled</span></span></span></h2>
  
! <p class=MsoNormal>&quot;Netbios over TCP/IP&quot; must be active on the
! machine in order for communication with the AFS Client Service to
! succeed.&nbsp; If &quot;Netbios over TCP/IP&quot; is disabled on the machine,
! then communication with the AFS Client Service will be impossible.<span
! style='mso-spacerun:yes'>  </span>If you are using the Microsoft Loopback
! Adapter, configure the “Netbios over TCP/IP” setting for the adapter.</p>
  
! <h2><a name="_Toc154229386"></a><a name="_Toc152605065"></a><a
  name="_Toc115416130"></a><a name="_Toc139993114"></a><a name="_Toc126872195"></a><a
! name="_Toc115417066"></a><span style='mso-bookmark:_Toc154229386'><span
  style='mso-bookmark:_Toc152605065'><span style='mso-bookmark:_Toc115416130'>3.24.
  OpenAFS binaries are digitally signed</span></span></span></h2>
  
! <p class=MsoNormal>The OpenAFS Client Service and related binaries distributed
! by OpenAFS.org are digitally signed by &quot;Secure Endpoints Inc.&quot;.&nbsp;
  The OpenAFS Client Service will perform a run-time verification check to ensure
  that all OpenAFS related DLLs loaded by the service match the same file version
  number and were signed by the same entity.&nbsp; This check has been added to
--- 1746,1773 ----
  style='mso-spacerun:yes'>  </span>This can be adjusted using the <a
  href="#_Value:_Stats">Stats</a> registry value.</p>
  
! <h2><a name="_Toc170268847"></a><a name="_Toc152605064"></a><a
  name="_Toc115416129"></a><a name="_Toc139993113"></a><a name="_Toc126872194"></a><a
! name="_Toc115417065"></a><span style='mso-bookmark:_Toc170268847'><span
  style='mso-bookmark:_Toc152605064'><span style='mso-bookmark:_Toc115416129'>3.23.
  NETBIOS over TCP/IP must be enabled</span></span></span></h2>
  
! <p class=MsoNormal>&quot;<span class=SpellE>Netbios</span> over TCP/IP&quot;
! must be active on the machine in order for communication with the AFS Client
! Service to succeed.&nbsp; If &quot;<span class=SpellE>Netbios</span> over
! TCP/IP&quot; is disabled on the machine, then communication with the AFS Client
! Service will be impossible.<span style='mso-spacerun:yes'>  </span>If you are
! using the Microsoft Loopback Adapter, configure the “<span class=SpellE>Netbios</span>
! over TCP/IP” setting for the adapter.</p>
  
! <h2><a name="_Toc170268848"></a><a name="_Toc152605065"></a><a
  name="_Toc115416130"></a><a name="_Toc139993114"></a><a name="_Toc126872195"></a><a
! name="_Toc115417066"></a><span style='mso-bookmark:_Toc170268848'><span
  style='mso-bookmark:_Toc152605065'><span style='mso-bookmark:_Toc115416130'>3.24.
  OpenAFS binaries are digitally signed</span></span></span></h2>
  
! <p class=MsoNormal>The OpenAFS Client Service and related binaries distributed by
! OpenAFS.org are digitally signed by &quot;Secure Endpoints Inc.&quot;.&nbsp;
  The OpenAFS Client Service will perform a run-time verification check to ensure
  that all OpenAFS related DLLs loaded by the service match the same file version
  number and were signed by the same entity.&nbsp; This check has been added to
***************
*** 1731,1745 ****
  releases.&nbsp; </p>
  
  <p class=MsoNormal><a href="#_Appendix_A:_Registry_Values">Appendix A</a>
! documents the &quot;<a href="#_Value___:_VerifyServiceSignature">VerifyServiceSignature</a>&quot;
! registry value which can be used to disable the signature check.&nbsp; The file
! version check cannot be disabled.</p>
  
! <h2><a name="_Toc154229387"></a><a name="_Toc152605066"></a><a
  name="_Toc115416131"></a><a name="_Toc139993115"></a><a name="_Toc126872196"></a><a
! name="_Toc115417067"></a><span style='mso-bookmark:_Toc154229387'><span
  style='mso-bookmark:_Toc152605066'><span style='mso-bookmark:_Toc115416131'>3.25.
! Maximum Size of the AFSCache File</span></span></span></h2>
  
  <p class=MsoNormal>The maximum cache size on 32-bit Windows is approximately
  1.3GB.&nbsp; This is the largest contiguous block of memory in the 2GB process
--- 1777,1792 ----
  releases.&nbsp; </p>
  
  <p class=MsoNormal><a href="#_Appendix_A:_Registry_Values">Appendix A</a>
! documents the &quot;<a href="#_Value___:_VerifyServiceSignature"><span
! class=SpellE>VerifyServiceSignature</span></a>&quot; registry value which can
! be used to disable the signature check.&nbsp; The file version check cannot be
! disabled.</p>
  
! <h2><a name="_Toc170268849"></a><a name="_Toc152605066"></a><a
  name="_Toc115416131"></a><a name="_Toc139993115"></a><a name="_Toc126872196"></a><a
! name="_Toc115417067"></a><span style='mso-bookmark:_Toc170268849'><span
  style='mso-bookmark:_Toc152605066'><span style='mso-bookmark:_Toc115416131'>3.25.
! Maximum Size of the <span class=SpellE>AFSCache</span> File</span></span></span></h2>
  
  <p class=MsoNormal>The maximum cache size on 32-bit Windows is approximately
  1.3GB.&nbsp; This is the largest contiguous block of memory in the 2GB process
***************
*** 1750,1770 ****
  signature check.<span style='mso-spacerun:yes'>  </span>Significantly larger
  cache sizes can be used on 64-bit Windows.</p>
  
! <h2><a name="_Toc154229388"></a><a name="_Toc152605067"></a><a
  name="_Toc115416132"></a><a name="_Toc139993116"></a><a name="_Toc126872197"></a><a
! name="_Toc115417068"></a><span style='mso-bookmark:_Toc154229388'><span
  style='mso-bookmark:_Toc152605067'><span style='mso-bookmark:_Toc115416132'>3.26.
  Filename Character Sets</span></span></span></h2>
  
  <p class=MsoNormal>OpenAFS for Windows implements an SMB server which is used
! as a gateway to the AFS filesystem.&nbsp; Because of limitations of the SMB
! implementation, Windows stores all files into AFS using OEM code pages such as
! CP437 (United States) or CP850 (Western Europe).&nbsp; These code pages are
! incompatible with the ISO Latin-1 character set typically used as the default
! on UNIX systems in both the <st1:country-region w:st="on">United States</st1:country-region>
! and <st1:place w:st="on">Western Europe</st1:place>.&nbsp; Filenames stored by
! OpenAFS for Windows are therefore unreadable on UNIX systems if they include
! any of the following characters:</p>
  
  <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
   style='border-collapse:collapse;mso-padding-alt:0pt 0pt 0pt 0pt'>
--- 1797,1817 ----
  signature check.<span style='mso-spacerun:yes'>  </span>Significantly larger
  cache sizes can be used on 64-bit Windows.</p>
  
! <h2><a name="_Toc170268850"></a><a name="_Toc152605067"></a><a
  name="_Toc115416132"></a><a name="_Toc139993116"></a><a name="_Toc126872197"></a><a
! name="_Toc115417068"></a><span style='mso-bookmark:_Toc170268850'><span
  style='mso-bookmark:_Toc152605067'><span style='mso-bookmark:_Toc115416132'>3.26.
  Filename Character Sets</span></span></span></h2>
  
  <p class=MsoNormal>OpenAFS for Windows implements an SMB server which is used
! as a gateway to the AFS <span class=SpellE>filesystem</span>.&nbsp; Because of
! limitations of the SMB implementation, Windows stores all files into AFS using
! OEM code pages such as CP437 (United States) or CP850 (Western Europe).&nbsp;
! These code pages are incompatible with the ISO Latin-1 character set typically
! used as the default on UNIX systems in both the <st1:country-region w:st="on">United
!  States</st1:country-region> and <st1:place w:st="on">Western Europe</st1:place>.&nbsp;
! Filenames stored by OpenAFS for Windows are therefore unreadable on UNIX
! systems if they include any of the following characters:</p>
  
  <table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
   style='border-collapse:collapse;mso-padding-alt:0pt 0pt 0pt 0pt'>
***************
*** 1823,1829 ****
    </span><span lang=FR style='mso-ansi-language:FR'>[ù]&nbsp; 151&nbsp;
    09/07&nbsp; 227&nbsp; 97&nbsp; u grave<o:p></o:p></span></p>
    <p class=preformattedtext><span lang=FR style='mso-ansi-language:FR'>&nbsp;&nbsp;&nbsp;&nbsp;
!   [ÿ]&nbsp; 152&nbsp; 09/08&nbsp; 230&nbsp; 98&nbsp; y diaeresis<o:p></o:p></span></p>
    <p class=preformattedtext><span lang=FR style='mso-ansi-language:FR'>&nbsp;&nbsp;&nbsp;&nbsp;
    </span><span lang=IT style='mso-ansi-language:IT'>[Ö]&nbsp; 153&nbsp;
    09/09&nbsp; 231&nbsp; 99&nbsp; O diaeresis<o:p></o:p></span></p>
--- 1870,1876 ----
    </span><span lang=FR style='mso-ansi-language:FR'>[ù]&nbsp; 151&nbsp;
    09/07&nbsp; 227&nbsp; 97&nbsp; u grave<o:p></o:p></span></p>
    <p class=preformattedtext><span lang=FR style='mso-ansi-language:FR'>&nbsp;&nbsp;&nbsp;&nbsp;
!   [ÿ]&nbsp; 152&nbsp; 09/08&nbsp; 230&nbsp; 98&nbsp; y <span class=SpellE>diaeresis</span><o:p></o:p></span></p>
    <p class=preformattedtext><span lang=FR style='mso-ansi-language:FR'>&nbsp;&nbsp;&nbsp;&nbsp;
    </span><span lang=IT style='mso-ansi-language:IT'>[Ö]&nbsp; 153&nbsp;
    09/09&nbsp; 231&nbsp; 99&nbsp; O diaeresis<o:p></o:p></span></p>
***************
*** 1848,1863 ****
  <p class=preformattedtext>&nbsp;</p>
  
  <p class=MsoNormal>The OpenAFS Client provides an optional registry value, <i><a
! href="#_Value___:_StoreAnsiFilenames">StoreAnsiFilenames</a></i>, that can be
! set to instruct OpenAFS to store filenames using the ANSI Code Page instead of
! the OEM Code Page.&nbsp; The ANSI Code Page is a compatible superset of
! Latin-1.&nbsp; This setting is not the default setting because making this
! change would prevent OpenAFS for Windows from being able to access filenames
! containing the above characters which were created without this setting.</p>
  
! <h2><a name="_Toc154229389"></a><a name="_Toc152605068"></a><a
  name="_Toc115416133"></a><a name="_Toc139993117"></a><a name="_Toc126872198"></a><a
! name="_Toc115417069"></a><span style='mso-bookmark:_Toc154229389'><span
  style='mso-bookmark:_Toc152605068'><span style='mso-bookmark:_Toc115416133'>3.27.
  Known Character Set Issues with Roaming Profiles</span></span></span></h2>
  
--- 1895,1911 ----
  <p class=preformattedtext>&nbsp;</p>
  
  <p class=MsoNormal>The OpenAFS Client provides an optional registry value, <i><a
! href="#_Value___:_StoreAnsiFilenames"><span class=SpellE>StoreAnsiFilenames</span></a></i><span
! class=GramE>, that</span> can be set to instruct OpenAFS to store filenames
! using the ANSI Code Page instead of the OEM Code Page.&nbsp; The ANSI Code Page
! is a compatible superset of Latin-1.&nbsp; This setting is not the default
! setting because making this change would prevent OpenAFS for Windows from being
! able to access filenames containing the above characters which were created
! without this setting.</p>
  
! <h2><a name="_Toc170268851"></a><a name="_Toc152605068"></a><a
  name="_Toc115416133"></a><a name="_Toc139993117"></a><a name="_Toc126872198"></a><a
! name="_Toc115417069"></a><span style='mso-bookmark:_Toc170268851'><span
  style='mso-bookmark:_Toc152605068'><span style='mso-bookmark:_Toc115416133'>3.27.
  Known Character Set Issues with Roaming Profiles</span></span></span></h2>
  
***************
*** 1870,1914 ****
  (assigned by group policy) which rename all files to use only the supported
  characters for the locale.</p>
  
! <h2><a name="_Toc154229390"></a><a name="_Toc152605069"></a><a
  name="_Toc115416134"></a><a name="_Toc139993118"></a><a name="_Toc126872199"></a><a
! name="_Toc115417070"></a><span style='mso-bookmark:_Toc154229390'><span
  style='mso-bookmark:_Toc152605069'><span style='mso-bookmark:_Toc115416134'>3.28.
! The AFSCache File</span></span></span></h2>
  
! <p class=MsoNormal>The AFS Cache file is stored by default at %TEMP%\AFSCache
! in a persistent file marked with the Hidden and System attributes.&nbsp; The
! persistent nature of the data stored in the cache file improves the performance
! of OpenAFS by reducing the number of times data must be read from the AFS file
! servers.&nbsp; </p>
  
  <p class=MsoNormal>The performance of the AFS Client Service is significantly
! affected by the access times associated with the AFSCache paging
! file.&nbsp;&nbsp; When given the choice, the AFSCache file should be placed on a
! fast disk, preferably NTFS, the file should not be compressed and should
! consist of as few fragments as possible.&nbsp;&nbsp; Significant performance
! gains can be achieved by defragmenting the AFSCache file with Sysinternal's
! Contig utility while the AFS Client Service is stopped.</p>
  
! <h2><a name="_Toc154229391"></a><a name="_Toc152605070"></a><a
  name="_Toc115416135"></a><a name="_Toc139993119"></a><a name="_Toc126872200"></a><a
! name="_Toc115417071"></a><span style='mso-bookmark:_Toc154229391'><span
  style='mso-bookmark:_Toc152605070'><span style='mso-bookmark:_Toc115416135'>3.29.
  Restricting OpenAFS Client Service Start and Stop</span></span></span></h2>
  
  <p class=MsoNormal>A new command line tool, afsdacl.exe, can be used to
  restrict the ability to start and stop the OpenAFS Client Service.</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; afsdacl : Set or reset the DACL to
! allow starting or stopping</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the
! afsd service by any ordinary user.</p>
  
  <p class=preformattedtext>&nbsp;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; Usage : afsdacl [-set | -reset]
! [-show]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  -set&nbsp;&nbsp; : Sets the DACL</p>
--- 1918,1964 ----
  (assigned by group policy) which rename all files to use only the supported
  characters for the locale.</p>
  
! <h2><a name="_Toc170268852"></a><a name="_Toc152605069"></a><a
  name="_Toc115416134"></a><a name="_Toc139993118"></a><a name="_Toc126872199"></a><a
! name="_Toc115417070"></a><span style='mso-bookmark:_Toc170268852'><span
  style='mso-bookmark:_Toc152605069'><span style='mso-bookmark:_Toc115416134'>3.28.
! The <span class=SpellE>AFSCache</span> File</span></span></span></h2>
  
! <p class=MsoNormal>The AFS Cache file is stored by default at %TEMP%\<span
! class=SpellE>AFSCache</span> in a persistent file marked with the Hidden and
! System attributes.&nbsp; The persistent nature of the data stored in the cache file
! improves the performance of OpenAFS by reducing the number of times data must
! be read from the AFS file servers.&nbsp; </p>
  
  <p class=MsoNormal>The performance of the AFS Client Service is significantly
! affected by the access times associated with the <span class=SpellE>AFSCache</span>
! paging file.&nbsp;&nbsp; When given the choice, the <span class=SpellE>AFSCache</span>
! file should be placed on a fast disk, preferably NTFS, the file should not be
! compressed and should consist of as few fragments as possible.&nbsp;&nbsp;
! Significant performance gains can be achieved by <span class=SpellE>defragmenting</span>
! the <span class=SpellE>AFSCache</span> file with <span class=SpellE>Sysinternal's</span>
! <span class=SpellE>Contig</span> utility while the AFS Client Service is
! stopped.</p>
  
! <h2><a name="_Toc170268853"></a><a name="_Toc152605070"></a><a
  name="_Toc115416135"></a><a name="_Toc139993119"></a><a name="_Toc126872200"></a><a
! name="_Toc115417071"></a><span style='mso-bookmark:_Toc170268853'><span
  style='mso-bookmark:_Toc152605070'><span style='mso-bookmark:_Toc115416135'>3.29.
  Restricting OpenAFS Client Service Start and Stop</span></span></span></h2>
  
  <p class=MsoNormal>A new command line tool, afsdacl.exe, can be used to
  restrict the ability to start and stop the OpenAFS Client Service.</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; <span class=SpellE>afsdacl</span>
! : Set or reset the DACL to allow starting or stopping</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the <span
! class=SpellE>afsd</span> service by any ordinary user.</p>
  
  <p class=preformattedtext>&nbsp;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp; Usage : <span class=SpellE>afsdacl</span>
! [-set | -reset] [-show]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  -set&nbsp;&nbsp; : Sets the DACL</p>
***************
*** 1919,1970 ****
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  &nbsp;&nbsp;-show&nbsp; : Show current DACL (SDSF)</p>
  
! <h2><a name="_Toc154229392"></a><a name="_Toc152605071"></a><a
  name="_Toc115416136"></a><a name="_Toc139993120"></a><a name="_Toc126872201"></a><a
! name="_Toc115417072"></a><span style='mso-bookmark:_Toc154229392'><span
  style='mso-bookmark:_Toc152605071'><span style='mso-bookmark:_Toc115416136'>3.30.
  The @sys Name List</span></span></span></h2>
  
  <p class=MsoNormal>The default @sys name list in the OpenAFS Client is set to
  &quot;x86_win32 i386_w2k i386_nt40&quot; for 32-bit x86 systems.&nbsp; The
! default is &quot;amd64_win64&quot; for amd 64-bit versions of Windows.</p>
  
! <h2><a name="_Toc154229393"></a><a name="_Toc152605072"></a><a
  name="_Toc115416137"></a><a name="_Toc139993121"></a><a name="_Toc126872202"></a><a
! name="_Toc115417073"></a><span style='mso-bookmark:_Toc154229393'><span
  style='mso-bookmark:_Toc152605072'><span style='mso-bookmark:_Toc115416137'>3.31.
  Symlinks to AFS UNC paths</span></span></span></h2>
  
  <p class=MsoNormal>In OpenAFS, symlinks to AFS UNC paths, \\AFS[\all]\..., are
! treated the same as symlinks to /afs/...&nbsp; However, please use /afs/... as
! the Windows UNC form will not work on UNIX client.</p>
  
! <h2><a name="_Toc154229394"></a><a name="_Toc152605073"></a><a
  name="_Toc115416138"></a><a name="_Toc139993122"></a><a name="_Toc126872203"></a><a
! name="_Toc115417074"></a><span style='mso-bookmark:_Toc154229394'><span
  style='mso-bookmark:_Toc152605073'><span style='mso-bookmark:_Toc115416138'>3.32.
  Cache Manager Debugging Now Supported</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client implements the Cache Manager Debugging
  RPC Interface.&nbsp; The CM debugger can be queried with cmdebug.exe.</p>
  
! <p class=preformattedtext>Usage: cmdebug -servers &lt;server machine&gt; [-port
! &lt;IP port&gt;] [-long]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! [-addrs] [-cache] [-help]</p>
  
  <p class=preformattedtext>Where: -long&nbsp;&nbsp; print all info</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -addrs&nbsp;
! print only host interfaces</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -cache&nbsp;
  print only cache configuration</p>
  
! <h2><a name="_Toc154229395"></a><a name="_Toc152605074"></a><a
  name="_Toc115416139"></a><a name="_Toc139993123"></a><a name="_Toc126872204"></a><a
! name="_Toc115417075"></a><span style='mso-bookmark:_Toc154229395'><span
  style='mso-bookmark:_Toc152605074'><span style='mso-bookmark:_Toc115416139'>3.33.
  Windows Logon Caching vs. Kerberos Logons</span></span></span></h2>
  
--- 1969,2022 ----
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  &nbsp;&nbsp;-show&nbsp; : Show current DACL (SDSF)</p>
  
! <h2><a name="_Toc170268854"></a><a name="_Toc152605071"></a><a
  name="_Toc115416136"></a><a name="_Toc139993120"></a><a name="_Toc126872201"></a><a
! name="_Toc115417072"></a><span style='mso-bookmark:_Toc170268854'><span
  style='mso-bookmark:_Toc152605071'><span style='mso-bookmark:_Toc115416136'>3.30.
  The @sys Name List</span></span></span></h2>
  
  <p class=MsoNormal>The default @sys name list in the OpenAFS Client is set to
  &quot;x86_win32 i386_w2k i386_nt40&quot; for 32-bit x86 systems.&nbsp; The
! default is &quot;amd64_win64&quot; for <span class=SpellE>amd</span> 64-bit
! versions of Windows.</p>
  
! <h2><a name="_Toc170268855"></a><a name="_Toc152605072"></a><a
  name="_Toc115416137"></a><a name="_Toc139993121"></a><a name="_Toc126872202"></a><a
! name="_Toc115417073"></a><span style='mso-bookmark:_Toc170268855'><span
  style='mso-bookmark:_Toc152605072'><span style='mso-bookmark:_Toc115416137'>3.31.
  Symlinks to AFS UNC paths</span></span></span></h2>
  
  <p class=MsoNormal>In OpenAFS, symlinks to AFS UNC paths, \\AFS[\all]\..., are
! treated the same as symlinks to /<span class=SpellE>afs</span>/...&nbsp;
! However, please use /<span class=SpellE>afs</span>/... as the Windows UNC form
! will not work on UNIX client.</p>
  
! <h2><a name="_Toc170268856"></a><a name="_Toc152605073"></a><a
  name="_Toc115416138"></a><a name="_Toc139993122"></a><a name="_Toc126872203"></a><a
! name="_Toc115417074"></a><span style='mso-bookmark:_Toc170268856'><span
  style='mso-bookmark:_Toc152605073'><span style='mso-bookmark:_Toc115416138'>3.32.
  Cache Manager Debugging Now Supported</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client implements the Cache Manager Debugging
  RPC Interface.&nbsp; The CM debugger can be queried with cmdebug.exe.</p>
  
! <p class=preformattedtext>Usage: <span class=SpellE>cmdebug</span> -servers
! &lt;server machine&gt; [-port &lt;IP port&gt;] [-long]</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! [-<span class=SpellE>addrs</span>] [-cache] [-help]</p>
  
  <p class=preformattedtext>Where: -long&nbsp;&nbsp; print all info</p>
  
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>addrs</span>&nbsp; print only host interfaces</p>
  
  <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -cache&nbsp;
  print only cache configuration</p>
  
! <h2><a name="_Toc170268857"></a><a name="_Toc152605074"></a><a
  name="_Toc115416139"></a><a name="_Toc139993123"></a><a name="_Toc126872204"></a><a
! name="_Toc115417075"></a><span style='mso-bookmark:_Toc170268857'><span
  style='mso-bookmark:_Toc152605074'><span style='mso-bookmark:_Toc115416139'>3.33.
  Windows Logon Caching vs. Kerberos Logons</span></span></span></h2>
  
***************
*** 1973,1994 ****
  multi-domain Windows forest, you must enable Windows logon caching unless the
  workstation is Windows Vista.</p>
  
! <h2><a name="_Toc154229396"></a><a name="_Toc152605075"></a><a
  name="_Toc115416140"></a><a name="_Toc139993124"></a><a name="_Toc126872205"></a><a
! name="_Toc115417076"></a><span style='mso-bookmark:_Toc154229396'><span
  style='mso-bookmark:_Toc152605075'><span style='mso-bookmark:_Toc115416140'>3.34.
  Initial Server Preferences</span></span></span></h2>
  
  <p class=MsoNormal>VLDB and File Server Preferences can now be provided initial
! values using registry keys.&nbsp; This is useful for managed machines in a
! Windows domain which are centrally located (e.g., in a computing lab.)&nbsp;
! See <a href="#_Appendix_A:_Registry_Values">Appendix A</a> for details on the
! &quot;<a href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie_2">Server Preferences</a>&quot;
! keys.</p>
  
! <h2><a name="_Toc154229397"></a><a name="_Toc152605076"></a><a
  name="_Toc115416141"></a><a name="_Toc139993125"></a><a name="_Toc126872206"></a><a
! name="_Toc115417077"></a><span style='mso-bookmark:_Toc154229397'><span
  style='mso-bookmark:_Toc152605076'><span style='mso-bookmark:_Toc115416141'>3.35.
  File Timestamps</span></span></span></h2>
  
--- 2025,2045 ----
  multi-domain Windows forest, you must enable Windows logon caching unless the
  workstation is Windows Vista.</p>
  
! <h2><a name="_Toc170268858"></a><a name="_Toc152605075"></a><a
  name="_Toc115416140"></a><a name="_Toc139993124"></a><a name="_Toc126872205"></a><a
! name="_Toc115417076"></a><span style='mso-bookmark:_Toc170268858'><span
  style='mso-bookmark:_Toc152605075'><span style='mso-bookmark:_Toc115416140'>3.34.
  Initial Server Preferences</span></span></span></h2>
  
  <p class=MsoNormal>VLDB and File Server Preferences can now be provided initial
! values using registry keys.&nbsp; This is useful for managed machines in a Windows
! domain which are centrally located (e.g., in a computing lab.)&nbsp; See <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a> for details on the &quot;<a
! href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie_2">Server Preferences</a>&quot; keys.</p>
  
! <h2><a name="_Toc170268859"></a><a name="_Toc152605076"></a><a
  name="_Toc115416141"></a><a name="_Toc139993125"></a><a name="_Toc126872206"></a><a
! name="_Toc115417077"></a><span style='mso-bookmark:_Toc170268859'><span
  style='mso-bookmark:_Toc152605076'><span style='mso-bookmark:_Toc115416141'>3.35.
  File Timestamps</span></span></span></h2>
  
***************
*** 2010,2066 ****
  timestamp from the Windows explorer.&nbsp; During DST, these two times will no
  longer agree even though they are in fact representing the same moment in time.</p>
  
! <h2><a name="_Toc154229398"></a><a name="_Toc152605077"></a><a
  name="_Toc115416142"></a><a name="_Toc139993126"></a><a name="_Toc126872207"></a><a
! name="_Toc115417078"></a><span style='mso-bookmark:_Toc154229398'><span
  style='mso-bookmark:_Toc152605077'><span style='mso-bookmark:_Toc115416142'>3.36.
  Windows RPC client support must be installed</span></span></span> </h2>
  
  <p class=MsoNormal>If the installer refuses to install and complains about an
  RPC configuration error, check to ensure that the following registry entries
! are present and that they refer to the dll &quot;rpcrt4.dll&quot;:</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM
! &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_np&quot;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM
! &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_ip_tcp&quot;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM
! &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncadg_ip_udp&quot;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM
! &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_http&quot;</p>
  
! <h2><a name="_Toc154229399"></a><a name="_Toc152605078"></a><a
  name="_Toc115416143"></a><a name="_Toc139993127"></a><a name="_Toc126872208"></a><a
! name="_Toc115417079"></a><span style='mso-bookmark:_Toc154229399'><span
  style='mso-bookmark:_Toc152605078'><span style='mso-bookmark:_Toc115416143'>3.37.
! Generating Minidumps of the OpenAFS Client Service</span></span></span></h2>
  
! <p class=MsoNormal>OpenAFS 1.4 added a new command, &quot;fs
! minidump&quot;.&nbsp; This command can be used at any time to generate a mini
! dump file containing the current stack of the afsd_service.exe
! process.&nbsp;&nbsp; This output can be very helpful when debugging the AFS
! Client Service when it is unresponsive to SMB/CIFS requests.</p>
  
! <h2><a name="_Toc154229400"></a><a name="_Toc152605079"></a><a
  name="_Toc115416144"></a><a name="_Toc139993128"></a><a name="_Toc126872209"></a><a
! name="_Toc115417080"></a><span style='mso-bookmark:_Toc154229400'><span
  style='mso-bookmark:_Toc152605079'><span style='mso-bookmark:_Toc115416144'>3.38.
  AFS Client Universally Unique Identifiers</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client implements Universally Unique Identifiers
! (UUIDs).&nbsp; They are used to provide the server with a method of identifying
! the client that is independent of IP address.&nbsp; The UUID is generated when
! the AFSCache file is created and is maintained as long as the contents of the
! AFSCache file are kept intact.&nbsp; The UUID is stored in the AFSCache
! file.&nbsp;&nbsp; When cloning machines that have Windows AFS client installed,
! the AFSCache files should be deleted as part of the cloning process.</p>
! 
! <h2><a name="_Toc139993129"></a><a name="_Toc152605080"></a><a
! name="_Toc154229401"><span style='mso-bookmark:_Toc152605080'><span
! style='mso-bookmark:_Toc139993129'>3.39. Delayed Write Errors with Microsoft
  Office Applications</span></span></a></h2>
  
  <p class=MsoBodyText>Microsoft Office makes heavy use of asynchronous
--- 2061,2120 ----
  timestamp from the Windows explorer.&nbsp; During DST, these two times will no
  longer agree even though they are in fact representing the same moment in time.</p>
  
! <h2><a name="_Toc170268860"></a><a name="_Toc152605077"></a><a
  name="_Toc115416142"></a><a name="_Toc139993126"></a><a name="_Toc126872207"></a><a
! name="_Toc115417078"></a><span style='mso-bookmark:_Toc170268860'><span
  style='mso-bookmark:_Toc152605077'><span style='mso-bookmark:_Toc115416142'>3.36.
  Windows RPC client support must be installed</span></span></span> </h2>
  
  <p class=MsoNormal>If the installer refuses to install and complains about an
  RPC configuration error, check to ensure that the following registry entries
! are present and that they refer to the <span class=SpellE>dll</span>
! &quot;rpcrt4.dll&quot;:</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM &quot;SOFTWARE\Microsoft\RPC\<span
! class=SpellE>ClientProtocols</span>&quot; &quot;<span class=SpellE>ncacn_np</span>&quot;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM &quot;SOFTWARE\Microsoft\RPC\<span
! class=SpellE>ClientProtocols</span>&quot; &quot;<span class=SpellE>ncacn_ip_tcp</span>&quot;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM &quot;SOFTWARE\Microsoft\RPC\<span
! class=SpellE>ClientProtocols</span>&quot; &quot;<span class=SpellE>ncadg_ip_udp</span>&quot;</p>
  
! <p class=preformattedtext>&nbsp;&nbsp; HKLM &quot;SOFTWARE\Microsoft\RPC\<span
! class=SpellE>ClientProtocols</span>&quot; &quot;<span class=SpellE>ncacn_http</span>&quot;</p>
  
! <h2><a name="_Toc170268861"></a><a name="_Toc152605078"></a><a
  name="_Toc115416143"></a><a name="_Toc139993127"></a><a name="_Toc126872208"></a><a
! name="_Toc115417079"></a><span style='mso-bookmark:_Toc170268861'><span
  style='mso-bookmark:_Toc152605078'><span style='mso-bookmark:_Toc115416143'>3.37.
! Generating <span class=SpellE>Minidumps</span> of the OpenAFS Client Service</span></span></span></h2>
  
! <p class=MsoNormal>OpenAFS 1.4 added a new command, &quot;<span class=SpellE>fs</span>
! <span class=SpellE>minidump</span>&quot;.&nbsp; This command can be used at any
! time to generate a mini dump file containing the current stack of the
! afsd_service.exe process.&nbsp;&nbsp; This output can be very helpful when
! debugging the AFS Client Service when it is unresponsive to SMB/CIFS requests.</p>
  
! <h2><a name="_Toc170268862"></a><a name="_Toc152605079"></a><a
  name="_Toc115416144"></a><a name="_Toc139993128"></a><a name="_Toc126872209"></a><a
! name="_Toc115417080"></a><span style='mso-bookmark:_Toc170268862'><span
  style='mso-bookmark:_Toc152605079'><span style='mso-bookmark:_Toc115416144'>3.38.
  AFS Client Universally Unique Identifiers</span></span></span></h2>
  
  <p class=MsoNormal>The OpenAFS Client implements Universally Unique Identifiers
! (<span class=SpellE>UUIDs</span>).&nbsp; They are used to provide the server
! with a method of identifying the client that is independent of IP
! address.&nbsp; The UUID is generated when the <span class=SpellE>AFSCache</span>
! file is created and is maintained as long as the contents of the <span
! class=SpellE>AFSCache</span> file are kept intact.&nbsp; The UUID is stored in
! the <span class=SpellE>AFSCache</span> file.&nbsp;&nbsp; When cloning machines
! that have Windows AFS client installed, the <span class=SpellE>AFSCache</span>
! files should be deleted as part of the cloning process.</p>
! 
! <h2><a name="_Toc170268863"></a><a name="_Toc152605080"></a><a
! name="_Toc139993129"><span style='mso-bookmark:_Toc152605080'><span
! style='mso-bookmark:_Toc170268863'>3.39. Delayed Write Errors with Microsoft
  Office Applications</span></span></a></h2>
  
  <p class=MsoBodyText>Microsoft Office makes heavy use of asynchronous
***************
*** 2080,2095 ****
  <p class=MsoBodyText>The CIFS session timeout defaults to 45 seconds and can be
  increased by modifying the <a href="../relnotes.htm#_Value:_ConnDeadTimeout">registry</a>.</p>
  
! <h2><a name="_Toc154229402"></a><a name="_Toc152605081"></a><a
  name="_Toc139993130"><span style='mso-bookmark:_Toc152605081'><span
! style='mso-bookmark:_Toc154229402'>3.40. Global Drives (aka </span></span></a><st1:Street
! w:st="on"><st1:address w:st="on"><span style='mso-bookmark:_Toc154229402'><span
    style='mso-bookmark:_Toc152605081'>Service Drive</span></span></st1:address></st1:Street><span
! style='mso-bookmark:_Toc154229402'><span style='mso-bookmark:_Toc152605081'>
  Letters) are no longer supported by Microsoft</span></span></h2>
  
! <p class=MsoBodyText>The Global DriveAuto-mount feature has been deprecated due
! to the following Microsoft KB article.</p>
  
  <p class=MsoBodyText style='text-indent:35.45pt'><a
  href="http://msdn.microsoft.com/library/en-us/dllproc/base/services_and_redirected_drives.asp">http://msdn.microsoft.com/library/en-us/dllproc/base/services_and_redirected_drives.asp</a></p>
--- 2134,2149 ----
  <p class=MsoBodyText>The CIFS session timeout defaults to 45 seconds and can be
  increased by modifying the <a href="../relnotes.htm#_Value:_ConnDeadTimeout">registry</a>.</p>
  
! <h2><a name="_Toc170268864"></a><a name="_Toc152605081"></a><a
  name="_Toc139993130"><span style='mso-bookmark:_Toc152605081'><span
! style='mso-bookmark:_Toc170268864'>3.40. Global Drives (aka </span></span></a><st1:Street
! w:st="on"><st1:address w:st="on"><span style='mso-bookmark:_Toc170268864'><span
    style='mso-bookmark:_Toc152605081'>Service Drive</span></span></st1:address></st1:Street><span
! style='mso-bookmark:_Toc170268864'><span style='mso-bookmark:_Toc152605081'>
  Letters) are no longer supported by Microsoft</span></span></h2>
  
! <p class=MsoBodyText>The Global <span class=SpellE>DriveAuto</span>-mount
! feature has been deprecated due to the following Microsoft KB article.</p>
  
  <p class=MsoBodyText style='text-indent:35.45pt'><a
  href="http://msdn.microsoft.com/library/en-us/dllproc/base/services_and_redirected_drives.asp">http://msdn.microsoft.com/library/en-us/dllproc/base/services_and_redirected_drives.asp</a></p>
***************
*** 2104,2112 ****
  applications should be modified to use of \\AFS\&lt;cellname&gt;\&lt;path&gt;
  instead of drive letters.</p>
  
! <h2><a name="_Toc139993131"></a><a name="_Toc152605082"></a><a
! name="_Toc154229403"><span style='mso-bookmark:_Toc152605082'><span
! style='mso-bookmark:_Toc139993131'>3.41. 64-bit Microsoft Windows Installations</span></span></a></h2>
  
  <p class=MsoBodyText>Although 64-bit Windows platforms support both 64-bit and
  32-bit applications, the OpenAFS Service installed on the machine must be
--- 2158,2166 ----
  applications should be modified to use of \\AFS\&lt;cellname&gt;\&lt;path&gt;
  instead of drive letters.</p>
  
! <h2><a name="_Toc170268865"></a><a name="_Toc152605082"></a><a
! name="_Toc139993131"><span style='mso-bookmark:_Toc152605082'><span
! style='mso-bookmark:_Toc170268865'>3.41. 64-bit Microsoft Windows Installations</span></span></a></h2>
  
  <p class=MsoBodyText>Although 64-bit Windows platforms support both 64-bit and
  32-bit applications, the OpenAFS Service installed on the machine must be
***************
*** 2121,2130 ****
  Without this restriction the AFS Cache File can become arbitrarily large
  limited only by available disk space.</p>
  
! <h2><a name="_Toc154229404"></a><a name="_Toc152605083"></a><a
  name="_Toc139993132"><span style='mso-bookmark:_Toc152605083'><span
! style='mso-bookmark:_Toc154229404'>3.42. Known Issues with Microsoft Windows </span></span></a><st1:place
! w:st="on"><span style='mso-bookmark:_Toc154229404'><span style='mso-bookmark:
   _Toc152605083'>Vista</span></span></st1:place></h2>
  
  <p class=MsoBodyText>OpenAFS for Windows works with Microsoft Windows Vista
--- 2175,2184 ----
  Without this restriction the AFS Cache File can become arbitrarily large
  limited only by available disk space.</p>
  
! <h2><a name="_Toc170268866"></a><a name="_Toc152605083"></a><a
  name="_Toc139993132"><span style='mso-bookmark:_Toc152605083'><span
! style='mso-bookmark:_Toc170268866'>3.42. Known Issues with Microsoft Windows </span></span></a><st1:place
! w:st="on"><span style='mso-bookmark:_Toc170268866'><span style='mso-bookmark:
   _Toc152605083'>Vista</span></span></st1:place></h2>
  
  <p class=MsoBodyText>OpenAFS for Windows works with Microsoft Windows Vista
***************
*** 2132,2139 ****
  style='mso-spacerun:yes'>  </span>When performing an upgrade from earlier
  versions of Microsoft Windows the Microsoft Loopback Adapter (MSLA) may be
  uninstalled.<span style='mso-spacerun:yes'>   </span>OpenAFS should be
! re-installed after the Microsoft Vista installation to restore the MSLA
! configuration.</p>
  
  <p class=MsoBodyText>Due to a feature change in Windows Vista’s Plug-n-Play
  network stack, during a standby/hibernate operation the MSLA is disabled just
--- 2186,2192 ----
  style='mso-spacerun:yes'>  </span>When performing an upgrade from earlier
  versions of Microsoft Windows the Microsoft Loopback Adapter (MSLA) may be
  uninstalled.<span style='mso-spacerun:yes'>   </span>OpenAFS should be
! re-installed after the Microsoft Vista installation to restore the MSLA configuration.</p>
  
  <p class=MsoBodyText>Due to a feature change in Windows Vista’s Plug-n-Play
  network stack, during a standby/hibernate operation the MSLA is disabled just
***************
*** 2152,2160 ****
  run with the minimum required privileges.<span style='mso-spacerun:yes'> 
  </span>Even Administrator accounts run applications without the “Administrator”
  access control credentials.<span style='mso-spacerun:yes'>  </span>One side
! effect of this is that existing applications that mix user and system
! configuration capabilities must be re-written to separate those functions that
! require “Administrator” privileges into a separate process space.<span
  style='mso-spacerun:yes'>  </span>Future updates to OpenAFS will incorporate
  the necessary privilege separation, until that time some functions such as the
  Start and Stop Service features of the AFS System Tray tool and the AFS Control
--- 2205,2213 ----
  run with the minimum required privileges.<span style='mso-spacerun:yes'> 
  </span>Even Administrator accounts run applications without the “Administrator”
  access control credentials.<span style='mso-spacerun:yes'>  </span>One side
! effect of this is that existing applications that mix user and system configuration
! capabilities must be re-written to separate those functions that require
! “Administrator” privileges into a separate process space.<span
  style='mso-spacerun:yes'>  </span>Future updates to OpenAFS will incorporate
  the necessary privilege separation, until that time some functions such as the
  Start and Stop Service features of the AFS System Tray tool and the AFS Control
***************
*** 2162,2179 ****
  
  <p class=MsoBodyText>The help files provided with OpenAFS are in .HLP format. <a
  href="http://support.microsoft.com/kb/917607">Windows Vista does not include a
! help engine for this format.</a> <a
! href="http://www.secure-endpoints.com%3e%0d%0aSecure%20Endpoints%20Inc.%3c/a%3e%20is%20funding%20the%20development%20of%20compatible%20HtmlHelp%20(.CHM)%20files.%0d%0a%3c/p%3e%0d%0a%0d%0a%3ch1%3e%3ca%20name="
! Times New Times New Times New Times New Times New Times New Times New Times New
! .. mailto:openafs-bugs@openafs.org?subject="Bug%20Report">openafs-bugs@openafs.org</a>.&nbsp;
  Please include as much information as possible about the issue.&nbsp; If you
  are reporting a crash, please install the debugging symbols by re-running the
! installer.&nbsp; If a dump file is available for the problem,
! %WINDIR%\TEMP\afsd.dmp, include it along with the AFS Client Trace file&nbsp;
! %WINDIR%\TEMP\afsd.log.&nbsp; The AFS Client startup log is %WINDIR%\TEMP\afsd_init.log.&nbsp;
  Send the last continuous block of&nbsp; log information from this file.</p>
  
! <p class=MsoNormal>Configuring DrWatson to generate dump files for crashes:</p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
--- 2215,2597 ----
  
  <p class=MsoBodyText>The help files provided with OpenAFS are in .HLP format. <a
  href="http://support.microsoft.com/kb/917607">Windows Vista does not include a
! help engine for this format.</a> </p>
! 
! <h2><a name="_Toc115416145"></a><a name="_Toc170268867"></a><a
! name="_Toc139993133"></a><a name="_Toc126872210"></a><a name="_Toc115417081"></a><span
! style='mso-bookmark:_Toc115416145'><span style='mso-bookmark:_Toc170268867'>3.43.
! New AFS Share Name Syntax Provides Direct Access to Volumes</span></span></h2>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'>Starting with the
! 1.5.21 release of OpenAFS for Windows, the following syntax can be used to
! access any volume in any cell without requiring the creation of a mount point.</span></p>
! 
! <p class=MsoBodyText style='margin-left:36.0pt'><span style='mso-bookmark:_Toc115416145'>\\AFS\&lt;cell&gt;&lt;mount
! point type&gt;&lt;volume&gt;\</span></p>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'>Where &lt;cell&gt;
! can be either a full cell name or an unambiguous prefix, the &lt;mount point
! type&gt; is ‘#’ for a normal mount point or ‘%’ to force the use of a
! read-write volume, and &lt;volume&gt; is either a volume name or its ID number.</span></p>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'>Examples include:</span></p>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'><span
! style='mso-tab-count:1'>            </span>\\AFS\athena.mit.edu#user.jaltman\</span></p>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'><span
! style='mso-tab-count:1'>            </span>\\AFS\athena%user.jaltman\</span></p>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'><span
! style='mso-tab-count:1'>            </span>\\AFS\athena.mit.edu# 537235559\</span></p>
! 
! <h2><span style='mso-bookmark:_Toc115416145'><a name="_Toc170268868">3.44.
! Differences between Windows and UNIX “</a><span class=SpellE><span
! style='mso-bookmark:_Toc170268868'>fs</span></span><span style='mso-bookmark:
! _Toc170268868'> examine”</span></span></h2>
! 
! <p class=MsoBodyText><span style='mso-bookmark:_Toc115416145'>The OpenAFS for
! Windows version of “<span class=SpellE>fs</span> examine” provide two
! additional lines of output when compared to the UNIX implementation.<span
! style='mso-spacerun:yes'>  </span>These lines include the owner and group
! information for the file as well as the volume status.</span></p>
! 
! <pre><span style='mso-bookmark:_Toc115416145'>[C:\]<span class=SpellE>fs</span> examine \\afs\athena#user.jaltman<o:p></o:p></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'>File \\afs\athena#user.jaltman (537235559.1.1) contained in cell athena.mit.edu<o:p></o:p></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'><b style='mso-bidi-font-weight:normal'>Owner <span
! class=SpellE>jaltman</span> (28180) Group 0<o:p></o:p></b></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'>Volume status for <span class=SpellE>vid</span> = 537235559 named <span
! class=SpellE>user.jaltman</span> is<o:p></o:p></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'>Current disk quota is 1500000<o:p></o:p></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'>Current blocks used are 1244184<o:p></o:p></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'>The partition has 151945877 blocks available out of 511163724<o:p></o:p></span></pre><pre><span
! style='mso-bookmark:_Toc115416145'>Volume is online <b style='mso-bidi-font-weight:
! normal'><o:p></o:p></b></span></pre>
! 
! <h1><span style='mso-bookmark:_Toc115416145'><a name="_Toc170268869">4. How to
! Debug Problems with OpenAFS for Windows:</a></span></h1>
! 
! <p class=MsoNormal>OpenAFS for Windows provides a wide range of tools to assist
! you in debugging problems.&nbsp; The techniques available to you are varied
! because of the wide range of issues that have been discovered over the years.</p>
! 
! <h2><a name="_Toc170268870"></a><a name="_Toc139993134"></a><a
! name="_Toc126872211"></a><a name="_Toc115417082"></a><span style='mso-bookmark:
! _Toc170268870'>4.1. <span class=SpellE><span class=GramE>pioctl</span></span>
! debugging (</span><a href="#_Value:_IoctlDebug"><span style='mso-bookmark:_Toc170268870'><span
! class=SpellE>IoctlDebug</span></span><span style='mso-bookmark:_Toc170268870'></span></a><span
! style='mso-bookmark:_Toc170268870'> registry key)</span></h2>
! 
! <p class=MsoNormal><span class=SpellE>pioctl</span> (path-based <span
! class=SpellE>ioctl</span>) calls are used by various tools to communicate with
! the AFS Client Service.&nbsp; Some of the operations performed include:</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setting/querying
! tokens&nbsp; (tokens.exe, aklog.exe, afscreds.exe)</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setting/querying
! <span class=SpellE>ACLs</span> </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setting/querying
! cache parameters</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>flushing
! files or volumes</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setting/querying
! server preferences</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>querying
! path location</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>checking
! the status of servers and volumes</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>setting/querying
! the <span class=SpellE>sysname</span> list</p>
! 
! <p class=MsoNormal><span class=SpellE>pioctl</span> calls are implemented by
! writing to a special UNC path that is processed by the AFS Client
! Service.&nbsp;&nbsp; If there is a failure to communicate with the AFS Client Service
! via SMB/CIFS, it will be impossible to perform any of the above
! operations.&nbsp;&nbsp; </p>
! 
! <p class=MsoNormal>To assist in debugging these problems, the registry value:</p>
! 
! <p class=preformattedtext>&nbsp; [HKLM\SOFTWARE\OpenAFS\Client]</p>
! 
! <p class=preformattedtext>&nbsp; REG_DWORD:&nbsp; <span class=SpellE>IoctlDebug</span>&nbsp;&nbsp;
! = 0x01</p>
! 
! <p class=MsoNormal>should be set.&nbsp; Then any of the commands that perform <span
! class=SpellE>pioctl</span> calls should be executed from the command
! prompt.&nbsp; With this key set the <span class=SpellE>pioctl</span> library
! will generate debugging output to <span class=SpellE>stderr</span>.&nbsp; The
! output will contain the Win32 API calls executed along with their most
! important parameters and their return code.&nbsp;&nbsp; The MSDN Library and
! the Microsoft <span class=SpellE>KnowledgeBase</span> can be used as a
! reference to help you determine the configuration <span class=SpellE>probem</span>
! with your system.</p>
! 
! <h2><a name="_Toc170268871"></a><a name="_Toc139993135"></a><a
! name="_Toc126872212"></a><a name="_Toc115417083"></a><span style='mso-bookmark:
! _Toc170268871'>4.2. <span class=SpellE>afsd_service</span> initialization log
! (%<span class=SpellE>WinDir%\TEMP\afsd_init.log</span>)</span></h2>
! 
! <p class=MsoNormal>Every time the AFS Client Service starts it appends data
! about its progress and configuration to a file.&nbsp; This file provides
! information crucial to determining why the service cannot start when there are
! problems.&nbsp; When the process terminates due to a panic condition it will write
! to this file the source code file and line number of the error.&nbsp; In many
! cases the panic condition is due to a <span class=SpellE>misconfiguration</span>
! of the machine.&nbsp; In other cases it might be due to a programming error in
! the software.&nbsp; A quick review of the location in the source code will
! quickly reveal the reason for the termination.</p>
! 
! <p class=MsoNormal>The <i><a href="#_Value___:_MaxLogSize"><span class=SpellE>MaxLogSize</span></a></i>
! registry value determines the maximum size of the %WINDIR%\TEMP\<span
! class=SpellE>afsd_init.log</span> file.&nbsp; If the file is larger than this
! value when OpenAFS Client Service starts, the file will be reset to 0
! bytes.&nbsp; If value is set to 0, the file will be allowed to grow
! indefinitely.</p>
! 
! <h2><a name="_Toc170268872"></a><a name="_Toc139993136"></a><a
! name="_Toc126872213"></a><a name="_Toc115417084"></a><span style='mso-bookmark:
! _Toc170268872'>4.3. <span class=SpellE>afsd_service</span> debug logs (<span
! class=SpellE>fs</span> trace {-on, -off, -dump} -&gt;%<span class=SpellE>WinDir%\TEMP\afsd.log</span>)</span></h2>
! 
! <p class=MsoNormal>When attempting to debug the behavior of the SMB/CIFS Server
! and the Cache Manager it is often useful to examine a log of the operations
! being performed.&nbsp; While running the AFS Client Service keeps an in memory
! log of many of its actions.&nbsp;&nbsp; The default number of actions preserved
! at any one time is 5000.&nbsp; This can be adjusted with the <a
! href="#_Value_:_TraceBufferSize">registry value</a>:</p>
! 
! <p class=preformattedtext>&nbsp;
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
! 
! <p class=preformattedtext>&nbsp; REG_DWORD&nbsp; <span class=SpellE>TraceBufferSize</span>
! </p>
! 
! <p class=MsoNormal>A restart of the service is necessary when adjusting this value.&nbsp;&nbsp;
! Execute &quot;<span class=SpellE>fs</span> trace -on&quot; to clear to the log
! and &quot;<span class=SpellE>fs</span> trace -dump&quot; to output the contents
! of the log to the file.</p>
! 
! <h2><a name="_Toc170268873"></a><a name="_Toc139993137"></a><a
! name="_Toc126872214"></a><a name="_Toc115417085"></a><span style='mso-bookmark:
! _Toc170268873'>4.4. Using <span class=SpellE>SysInternal’s</span> <span
! class=SpellE>DbgView</span> and <span class=SpellE>ProcMon</span> or <span
! class=SpellE>FileMon</span> Tools</span></h2>
! 
! <p class=MsoNormal>An <span class=SpellE>alternatve</span> option to the use of
! &quot;<span class=SpellE>fs</span> trace -dump&quot; to capture internal
! OpenAFS Client Service events is to use a tool such as <span class=SpellE>Sysinternal's</span>
! <span class=SpellE>DbgView</span> to capture real-time debugging output.&nbsp;
! When the OpenAFS Client Service starts and Bit 2 of the <a
! href="#_Value__:_TraceOption"><span class=SpellE>TraceOption</span></a> value in
! the registry is set, all trace log events are output using the Windows Debug
! Monitor interface (<span class=SpellE>OutputDebugString</span>).&nbsp; </p>
! 
! <p class=preformattedtext>&nbsp;
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
! 
! <p class=preformattedtext style='text-indent:12.0pt'>REG_DWORD&nbsp;&nbsp; <span
! class=SpellE>TraceOption</span> = 0x04</p>
! 
! <p class=MsoNormal>Use “<span class=SpellE>fs</span> trace –on” and “<span
! class=SpellE>fs</span> trace –off” to toggle the generation of log messages. </p>
! 
! <p class=MsoNormal><a name="_Toc115416150"></a><a name="_Toc126872215"></a><a
! name="_Toc115417086"></a><span class=SpellE><span style='mso-bookmark:_Toc115416150'>Sysinternal’s</span></span><span
! style='mso-bookmark:_Toc115416150'> <span class=SpellE>ProcMon</span> or <span
! class=SpellE>FileMon</span> utilities can be use to monitor the file operations
! requested by applications and their success or failure.&nbsp;&nbsp; </span></p>
! 
! <p class=MsoNormal><span style='mso-bookmark:_Toc115416150'>In <span
! class=SpellE>FileMon</span>, use the Volumes menu to restrict monitoring to <i>Network</i>
! volumes only in order to reduce the output to just the CIFS requests.&nbsp;
! Turn on the <i>Advanced Output</i> option in order to log with finer
! granularity.</span></p>
! 
! <p class=MsoNormal>In <span class=SpellE>ProcMon</span>, set a filter to
! include only events on file paths that refer to the AFS name space. Be sure to
! include both the UNC path as well as any drive letters mapped to AFS. </p>
! 
! <p class=MsoNormal>Turn on the <i>Clock Time</i> and <i>Show Milliseconds</i>
! options in both tools to make it easier to synchronize the application requests
! and the resulting OpenAFS Client Service operations.&nbsp;&nbsp; The captured
! data can be stored to files for inclusion in <a
! href="../relnotes.htm#_5._Reporting_Bugs:">bug reports</a>.</p>
! 
! <h2><a name="_Toc170268874">4.5. Microsoft </a><span class=SpellE><span
! style='mso-bookmark:_Toc170268874'>MiniDumps</span></span><span
! style='mso-bookmark:_Toc170268874'> <br>
! (<span class=SpellE>fs</span> <span class=SpellE>minidump</span> -&gt; %<span
! class=SpellE>WinDir%\TEMP\afsd.dmp</span>)</span></h2>
! 
! <p class=MsoNormal>If the AFS Client Service become unresponsive to any form of
! communication there may be a serious error that can only be debugged by someone
! with access to the source code and a debugger.&nbsp;&nbsp; The &quot;<span
! class=SpellE>fs</span> <span class=SpellE>minidump</span>&quot; command can be
! used to force the generation of a <span class=SpellE>MiniDump</span> file
! containing the state of all of the threads in the AFS Client Service process.</p>
! 
! <h2><a name="_Toc170268875"></a><a name="_Toc139993139"></a><a
! name="_Toc126872216"></a><a name="_Toc115417087"></a><span style='mso-bookmark:
! _Toc170268875'>4.6. Single Sign-on (Integrated Logon) debugging</span></h2>
! 
! <p class=MsoNormal>If you are having trouble with the Integrated Logon
! operations it is often useful to be able to obtain a log of what it is
! attempting to do.&nbsp;&nbsp; Setting Bit 0 of the <a
! href="#_Value__:_TraceOption"><span class=SpellE>TraceOption</span></a>
! registry value:</p>
! 
! <p class=preformattedtext>&nbsp;
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
! 
! <p class=preformattedtext>&nbsp; REG_DWORD&nbsp;&nbsp; <span class=SpellE>TraceOption</span>
! = 0x01</p>
! 
! <p class=MsoNormal>will instruct the Integrated Logon Network Provider and
! Event Handlers to log information to the Windows Event Log: Application under
! the name “AFS Logon&quot;.</p>
! 
! <h2><a name="_Toc170268876"></a><a name="_Toc139993140"></a><a
! name="_Toc126872217"></a><a name="_Toc115417088"></a><span style='mso-bookmark:
! _Toc170268876'>4.7. RX (AFS RPC) debugging (<span class=SpellE>rxdebug</span>)</span></h2>
! 
! <p class=MsoNormal>The rxdebug.exe tool can be used to query a variety of
! information about the AFS services installed on a given machine.&nbsp; The port
! for the AFS Cache Manager is 7001.&nbsp; </p>
! 
! <p class=preformattedtext>Usage: <span class=SpellE>rxdebug</span> -servers
! &lt;server machine&gt; [-port &lt;IP port&gt;] [-<span class=SpellE>nodally</span>]
! </p>
! 
! <p class=preformattedtext style='margin-left:35.45pt;text-indent:35.45pt'>&nbsp;&nbsp;
! [-<span class=SpellE>allconnections</span>] [-<span class=SpellE>rxstats</span>]
! [-<span class=SpellE>onlyserver</span>] [-<span class=SpellE>onlyclient</span>]
! </p>
! 
! <p class=preformattedtext style='margin-left:70.9pt'>&nbsp;&nbsp; [-<span
! class=SpellE>onlyport</span> &lt;show only &lt;port&gt;&gt;] </p>
! 
! <p class=preformattedtext style='margin-left:70.9pt'>&nbsp;&nbsp; [-<span
! class=SpellE>onlyhost</span> &lt;show only &lt;host&gt;&gt;] </p>
! 
! <p class=preformattedtext style='margin-left:70.9pt'>&nbsp;&nbsp; [-<span
! class=SpellE>onlyauth</span> &lt;show only &lt;auth level&gt;&gt;] [-version] </p>
! 
! <p class=preformattedtext style='margin-left:70.9pt'>&nbsp;&nbsp; [-<span
! class=SpellE>noconns</span>] [-peers] [-help]</p>
! 
! <p class=preformattedtext>Where: -<span class=SpellE>nodally</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! don't show dallying <span class=SpellE>conns</span></p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>allconnections</span>&nbsp; don't filter out uninteresting
! connections</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>rxstats</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! show Rx statistics</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>onlyserver</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; only show server <span
! class=SpellE>conns</span></p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>onlyclient</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; only show client <span
! class=SpellE>conns</span></p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! -version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show AFS version id</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>noconns</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! show no connections</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! -peers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; show peers</p>
! 
! <h2><a name="_Toc170268877"></a><a name="_Toc139993141"></a><a
! name="_Toc126872218"></a><a name="_Toc115417089"></a><span style='mso-bookmark:
! _Toc170268877'>4.8. Cache Manager debugging (<span class=SpellE>cmdebug</span>)</span></h2>
! 
! <p class=MsoNormal>The cmdebug.exe tool can be used to query the state of the
! AFS Cache Manager on a given machine.</p>
! 
! <p class=preformattedtext><span lang=FR style='mso-ansi-language:FR'>Usage: <span
! class=SpellE>cmdebug</span> -servers &lt;server machine&gt; [-port &lt;IP
! port&gt;] [-long] <o:p></o:p></span></p>
! 
! <p class=preformattedtext style='margin-left:70.9pt'><span lang=FR
! style='mso-ansi-language:FR'>&nbsp;&nbsp; </span>[-<span class=SpellE>refcounts</span>]
! [-callbacks] [-<span class=SpellE>addrs</span>] [-cache] [-help]</p>
! 
! <p class=preformattedtext>Where: -long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! print all info</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>refcounts</span>&nbsp; print only cache entries with positive
! reference counts</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -callbacks&nbsp;
! print only cache entries with callbacks</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -<span
! class=SpellE>addrs</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print only host
! interfaces</p>
! 
! <p class=preformattedtext>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! -cache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print only cache configuration</p>
! 
! <h2><a name="_Toc170268878"></a><a name="_Toc139993142"></a><a
! name="_Toc126872219"></a><a name="_Toc115417090"></a><span style='mso-bookmark:
! _Toc170268878'>4.9. Persistent Cache consistency check</span></h2>
! 
! <p class=MsoNormal>The persistent cache is stored in a Hidden System file at %<span
! class=SpellE>WinDir%\TEMP\AFSCache</span>.&nbsp; If there is a problem with the
! persistent cache that prevent the AFS Client Service from being able to start a
! validation check on the file can be performed.</p>
! 
! <p class=preformattedtext>&nbsp; afsd_service.exe --validate-cache
! &lt;cache-path&gt;</p>
! 
! <h1><a name="_Toc170268879"></a><a name="_Toc139993143"></a><a
! name="_Toc126872220"></a><a name="_Toc115417113"></a><a name="_Toc115417091"></a><a
! name="_5._Reporting_Bugs:"></a><span style='mso-bookmark:_Toc170268879'>5.
! Reporting Bugs:</span></h1>
! 
! <p class=MsoNormal>Bug reports should be sent to <a
! href="mailto:openafs-bugs@openafs.org?subject=Bug%20Report">openafs-bugs@openafs.org</a>.&nbsp;
  Please include as much information as possible about the issue.&nbsp; If you
  are reporting a crash, please install the debugging symbols by re-running the
! installer.&nbsp; If a dump file is available for the problem, %WINDIR%\TEMP\<span
! class=SpellE>afsd.dmp</span>, include it along with the AFS Client Trace
! file&nbsp; %WINDIR%\TEMP\<span class=SpellE>afsd.log</span>.&nbsp; The AFS
! Client startup log is %WINDIR%\TEMP\<span class=SpellE>afsd_init.log</span>.&nbsp;
  Send the last continuous block of&nbsp; log information from this file.</p>
  
! <p class=MsoNormal>Configuring <span class=SpellE>DrWatson</span> to generate
! dump files for crashes:</p>
  
  <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
***************
*** 2229,2235 ****
  <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>type
! drwatson &lt;enter&gt;. </p>
  
  <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
--- 2647,2653 ----
  <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
  font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>type
! <span class=SpellE>drwatson</span> &lt;enter&gt;. </p>
  
  <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
  style='font-size:9.0pt;font-family:Symbol'>·</span><span style='font-size:7.0pt;
***************
*** 2237,2252 ****
  a crash happens, Dr. Watson generates a dump file and a report in the log file,
  including the address of the crash and the stack dump.</p>
  
! <p class=MsoNormal>Once you have the Dr. Watson's logfile and minidump, zip
! them and attach them to your e-mail.</p>
  
  <p class=MsoNormal>When reporting a error, please be sure to include the
  version of OpenAFS.</p>
  
! <h1><a name="_Toc154229416"></a><a name="_Toc152605095"></a><a
  name="_Toc115416156"></a><a name="_Toc139993144"></a><a name="_Toc126872221"></a><a
  name="_Toc115417114"></a><a name="_Toc115417092"></a><span style='mso-bookmark:
! _Toc154229416'><span style='mso-bookmark:_Toc152605095'><span style='mso-bookmark:
  _Toc115416156'>6. How to Contribute to the Development of OpenAFS for Windows</span></span></span></h1>
  
  <p class=MsoNormal>Contributions to the development of OpenAFS for Windows are
--- 2655,2671 ----
  a crash happens, Dr. Watson generates a dump file and a report in the log file,
  including the address of the crash and the stack dump.</p>
  
! <p class=MsoNormal>Once you have the Dr. Watson's <span class=SpellE>logfile</span>
! and <span class=SpellE>minidump</span>, zip them and attach them to your
! e-mail.</p>
  
  <p class=MsoNormal>When reporting a error, please be sure to include the
  version of OpenAFS.</p>
  
! <h1><a name="_Toc170268880"></a><a name="_Toc152605095"></a><a
  name="_Toc115416156"></a><a name="_Toc139993144"></a><a name="_Toc126872221"></a><a
  name="_Toc115417114"></a><a name="_Toc115417092"></a><span style='mso-bookmark:
! _Toc170268880'><span style='mso-bookmark:_Toc152605095'><span style='mso-bookmark:
  _Toc115416156'>6. How to Contribute to the Development of OpenAFS for Windows</span></span></span></h1>
  
  <p class=MsoNormal>Contributions to the development of OpenAFS for Windows are
***************
*** 2254,2270 ****
  donations, support contracts, donated developer time, and even donated tech
  writer time.</p>
  
! <h2><a name="_Toc154229417"></a><a name="_Toc152605096"></a><a
  name="_Toc115416157"></a><a name="_Toc139993145"></a><a name="_Toc126872222"></a><a
! name="_Toc115417093"></a><span style='mso-bookmark:_Toc154229417'><span
  style='mso-bookmark:_Toc152605096'><span style='mso-bookmark:_Toc115416157'>6.1.
  The USENIX OpenAFS Fund</span></span></span> </h2>
  
  <p class=MsoBodyText><a href="http://www.usenix.org/">USENIX</a>, a 501c3
  non-profit corporation, has formed the USENIX OpenAFS Fund in order to accept
  tax deductible donations on behalf of the OpenAFS Elders. The donated funds
! will be allocated by the OpenAFS Elders to fund OpenAFS development,
! documentation, project management, and maintaining openafs.org. <o:p></o:p></p>
  
  <div>
  
--- 2673,2689 ----
  donations, support contracts, donated developer time, and even donated tech
  writer time.</p>
  
! <h2><a name="_Toc170268881"></a><a name="_Toc152605096"></a><a
  name="_Toc115416157"></a><a name="_Toc139993145"></a><a name="_Toc126872222"></a><a
! name="_Toc115417093"></a><span style='mso-bookmark:_Toc170268881'><span
  style='mso-bookmark:_Toc152605096'><span style='mso-bookmark:_Toc115416157'>6.1.
  The USENIX OpenAFS Fund</span></span></span> </h2>
  
  <p class=MsoBodyText><a href="http://www.usenix.org/">USENIX</a>, a 501c3
  non-profit corporation, has formed the USENIX OpenAFS Fund in order to accept
  tax deductible donations on behalf of the OpenAFS Elders. The donated funds
! will be allocated by the OpenAFS Elders to fund OpenAFS development, documentation,
! project management, and maintaining openafs.org. <o:p></o:p></p>
  
  <div>
  
***************
*** 2286,2309 ****
  
  </div>
  
! <p class=MsoBodyText>Donations can be made by sending a check, drawn on a U.S.
! bank, made out to the USENIX OpenAFS Fund or by making a <a
  href="https://db.usenix.org/cgi-bin/openafs/openafs.cgi">donation online</a>.</p>
  
! <h2><a name="_Toc154229418"></a><a name="_Toc152605097"></a><a
  name="_Toc115417094"></a><a name="_Toc139993146"></a><a name="_Toc126872223"></a><span
! style='mso-bookmark:_Toc154229418'><span style='mso-bookmark:_Toc152605097'><span
  style='mso-bookmark:_Toc115417094'>6.2. Secure Endpoints Inc.</span></span></span>
  </h2>
  
  <p class=MsoBodyText><a href="http://www.secure-endpoints.com/">Secure
  Endpoints Inc.</a> provides development and support services for OpenAFS for
  Windows and <a href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a>.
! &nbsp;Donations provided to Secure Endpoints Inc. for the development of OpenAFS
! are used to cover the OpenAFS gatekeeper responsibilities; providing support to
! the OpenAFS community via the OpenAFS mailing lists; and furthering development
! of desired features that are either too small to be financed by development
! contracts.</p>
  
  <p class=MsoBodyText>Secure Endpoints Inc. accepts software development
  agreements from organizations who wish to fund a well-defined set of bug fixes
--- 2705,2728 ----
  
  </div>
  
! <p class=MsoBodyText>Donations can be made by sending a check, drawn on a U.S. bank,
! made out to the USENIX OpenAFS Fund or by making a <a
  href="https://db.usenix.org/cgi-bin/openafs/openafs.cgi">donation online</a>.</p>
  
! <h2><a name="_Toc170268882"></a><a name="_Toc152605097"></a><a
  name="_Toc115417094"></a><a name="_Toc139993146"></a><a name="_Toc126872223"></a><span
! style='mso-bookmark:_Toc170268882'><span style='mso-bookmark:_Toc152605097'><span
  style='mso-bookmark:_Toc115417094'>6.2. Secure Endpoints Inc.</span></span></span>
  </h2>
  
  <p class=MsoBodyText><a href="http://www.secure-endpoints.com/">Secure
  Endpoints Inc.</a> provides development and support services for OpenAFS for
  Windows and <a href="http://web.mit.edu/kerberos/">MIT Kerberos for Windows</a>.
! &nbsp;Donations provided to Secure Endpoints Inc. for the development of
! OpenAFS are used to cover the OpenAFS gatekeeper responsibilities; providing
! support to the OpenAFS community via the OpenAFS mailing lists; and furthering
! development of desired features that are either too small to be financed by
! development contracts.</p>
  
  <p class=MsoBodyText>Secure Endpoints Inc. accepts software development
  agreements from organizations who wish to fund a well-defined set of bug fixes
***************
*** 2313,2322 ****
  the OpenAFS for Windows and the <a href="http://web.mit.edu/kerberos/">MIT
  Kerberos for Windows</a> products. </p>
  
! <h2><a name="_Toc154229419"></a><a name="_Toc152605098"></a><a
  name="_Toc115417096"></a><a name="_Toc139993147"></a><a name="_Toc126872224"></a><a
  name="_Toc139993148"></a><a name="_Toc126872225"></a><span style='mso-bookmark:
! _Toc154229419'><span style='mso-bookmark:_Toc152605098'><span style='mso-bookmark:
  _Toc115417096'>6.3. Direct contributions of code and/or documentation</span></span></span>
  </h2>
  
--- 2732,2741 ----
  the OpenAFS for Windows and the <a href="http://web.mit.edu/kerberos/">MIT
  Kerberos for Windows</a> products. </p>
  
! <h2><a name="_Toc170268883"></a><a name="_Toc152605098"></a><a
  name="_Toc115417096"></a><a name="_Toc139993147"></a><a name="_Toc126872224"></a><a
  name="_Toc139993148"></a><a name="_Toc126872225"></a><span style='mso-bookmark:
! _Toc170268883'><span style='mso-bookmark:_Toc152605098'><span style='mso-bookmark:
  _Toc115417096'>6.3. Direct contributions of code and/or documentation</span></span></span>
  </h2>
  
***************
*** 2325,2333 ****
  make to OpenAFS.org via <u><span style='color:blue'>openafs-bugs@openafs.org</span></u>.
  &nbsp;Contributions of documentation are highly desired. </p>
  
! <h2><a name="_Toc154229420"></a><a name="_Toc152605099"></a><a
  name="_Toc115417097"></a><a name="_Toc139993149"></a><a name="_Toc126872226"></a><span
! style='mso-bookmark:_Toc154229420'><span style='mso-bookmark:_Toc152605099'><span
  style='mso-bookmark:_Toc115417097'>6.4. OpenAFS for Windows Mailing Lists</span></span></span></h2>
  
  <p class=MsoNormal>If you wish to participate in OpenAFS for Windows
--- 2744,2752 ----
  make to OpenAFS.org via <u><span style='color:blue'>openafs-bugs@openafs.org</span></u>.
  &nbsp;Contributions of documentation are highly desired. </p>
  
! <h2><a name="_Toc170268884"></a><a name="_Toc152605099"></a><a
  name="_Toc115417097"></a><a name="_Toc139993149"></a><a name="_Toc126872226"></a><span
! style='mso-bookmark:_Toc170268884'><span style='mso-bookmark:_Toc152605099'><span
  style='mso-bookmark:_Toc115417097'>6.4. OpenAFS for Windows Mailing Lists</span></span></span></h2>
  
  <p class=MsoNormal>If you wish to participate in OpenAFS for Windows
***************
*** 2346,2366 ****
  <p class=MsoNormal>You must join the mailing lists if you wish to post to the
  list without incurring a moderation delay.</p>
  
! <h1><a name="_Toc154229421"></a><a name="_Toc152605100"></a><a
  name="_Toc139993150"></a><a name="_Toc126872227"></a><a name="_Toc115417115"></a><a
  name="_Toc115417098"></a><a name="_Toc115416158"></a><a
! name="_MSI_Deployment_Guide"></a><span style='mso-bookmark:_Toc154229421'><span
  style='mso-bookmark:_Toc152605100'>7. MSI Deployment Guide</span></span></h1>
  
! <b><span style='font-size:16.0pt;font-family:Albany;mso-fareast-font-family:
  "Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-US;mso-fareast-language:JA;mso-bidi-language:AR-SA'><br clear=all
  style='page-break-before:always'>
! </span></b>
  
! <h2><a name="_Toc154229422"></a><a name="_Toc152605101"></a><a
  name="_Toc115416159"></a><a name="_Toc139993151"></a><a name="_Toc126872228"></a><a
! name="_Toc115417099"></a><span style='mso-bookmark:_Toc154229422'><span
  style='mso-bookmark:_Toc152605101'><span style='mso-bookmark:_Toc115416159'>7.1.
  Introduction</span></span></span></h2>
  
--- 2765,2785 ----
  <p class=MsoNormal>You must join the mailing lists if you wish to post to the
  list without incurring a moderation delay.</p>
  
! <h1><a name="_Toc170268885"></a><a name="_Toc152605100"></a><a
  name="_Toc139993150"></a><a name="_Toc126872227"></a><a name="_Toc115417115"></a><a
  name="_Toc115417098"></a><a name="_Toc115416158"></a><a
! name="_MSI_Deployment_Guide"></a><span style='mso-bookmark:_Toc170268885'><span
  style='mso-bookmark:_Toc152605100'>7. MSI Deployment Guide</span></span></h1>
  
! <i><span style='font-size:16.0pt;font-family:Albany;mso-fareast-font-family:
  "Times New Roman";mso-bidi-font-family:"Times New Roman";mso-ansi-language:
  EN-US;mso-fareast-language:JA;mso-bidi-language:AR-SA'><br clear=all
  style='page-break-before:always'>
! </span></i>
  
! <h2><a name="_Toc170268886"></a><a name="_Toc152605101"></a><a
  name="_Toc115416159"></a><a name="_Toc139993151"></a><a name="_Toc126872228"></a><a
! name="_Toc115417099"></a><span style='mso-bookmark:_Toc170268886'><span
  style='mso-bookmark:_Toc152605101'><span style='mso-bookmark:_Toc115416159'>7.1.
  Introduction</span></span></span></h2>
  
***************
*** 2376,2384 ****
  files through group policy and/or startup scripts so that machines where
  OpenAFS for Windows is already installed will pick up these customizations.</p>
  
! <h3><a name="_Toc154229423"></a><a name="_Toc152605102"></a><a
  name="_Toc115416160"></a><a name="_Toc139993152"></a><a name="_Toc126872229"></a><span
! style='mso-bookmark:_Toc154229423'><span style='mso-bookmark:_Toc152605102'><span
  style='mso-bookmark:_Toc115416160'>7.1.1 Requirements</span></span></span></h3>
  
  <p class=MsoNormal>The information in this document applies to MSI packages
--- 2795,2803 ----
  files through group policy and/or startup scripts so that machines where
  OpenAFS for Windows is already installed will pick up these customizations.</p>
  
! <h3><a name="_Toc170268887"></a><a name="_Toc152605102"></a><a
  name="_Toc115416160"></a><a name="_Toc139993152"></a><a name="_Toc126872229"></a><span
! style='mso-bookmark:_Toc170268887'><span style='mso-bookmark:_Toc152605102'><span
  style='mso-bookmark:_Toc115416160'>7.1.1 Requirements</span></span></span></h3>
  
  <p class=MsoNormal>The information in this document applies to MSI packages
***************
*** 2409,2424 ****
  
  <p class=MsoNormal>The remainder of this document assumes some familiarity with
  authoring transforms.&nbsp; While the MSDN documentation for Windows Installer
! is a bit dense, the guide on MSI transforms found at the second link above is
! recommended reading.&nbsp; MSDN also includes a step-by-step example for
! creating a transform at:</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp; <a
  href="http://msdn.microsoft.com/library/en-us/msi/setup/a_customization_transform_example.asp">http://msdn.microsoft.com/library/en-us/msi/setup/a_customization_transform_example.asp</a></p>
  
! <h3><a name="_Toc154229424"></a><a name="_Toc152605103"></a><a
  name="_Toc115416161"></a><a name="_Toc139993153"></a><a name="_Toc126872230"></a><span
! style='mso-bookmark:_Toc154229424'><span style='mso-bookmark:_Toc152605103'><span
  style='mso-bookmark:_Toc115416161'>7.1.2 Authoring a Transform</span></span></span></h3>
  
  <p class=MsoNormal>Transforms describe a set of modifications to be performed
--- 2828,2843 ----
  
  <p class=MsoNormal>The remainder of this document assumes some familiarity with
  authoring transforms.&nbsp; While the MSDN documentation for Windows Installer
! is a bit dense, the guide on MSI transforms found at the second link above is recommended
! reading.&nbsp; MSDN also includes a step-by-step example for creating a
! transform at:</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp; <a
  href="http://msdn.microsoft.com/library/en-us/msi/setup/a_customization_transform_example.asp">http://msdn.microsoft.com/library/en-us/msi/setup/a_customization_transform_example.asp</a></p>
  
! <h3><a name="_Toc170268888"></a><a name="_Toc152605103"></a><a
  name="_Toc115416161"></a><a name="_Toc139993153"></a><a name="_Toc126872230"></a><span
! style='mso-bookmark:_Toc170268888'><span style='mso-bookmark:_Toc152605103'><span
  style='mso-bookmark:_Toc115416161'>7.1.2 Authoring a Transform</span></span></span></h3>
  
  <p class=MsoNormal>Transforms describe a set of modifications to be performed
***************
*** 2428,2487 ****
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>copy
! openafs.msi openafs-modified.msi</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>2.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>(edit
! the openafs-modified.msi to include the necessary changes)</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>3.<span
! style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>msitran
! -g openafs.msi openafs-modified.msi openafs-transform.mst</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>4.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>(generates
! openafs-transform.mst, which is the transform)</p>
  
! <p class=MsoNormal>Transforms have an extension of .mst.&nbsp; 'msitran' is a
! tool distributed as part of the &quot;Windows Installer&quot; SDK (part of the
! Windows Platform SDK).</p>
  
  <p class=MsoNormal>You can test a transform by:</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>copy
! openafs.msi openafs-test.msi</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>2.<span
! style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>msitran
! -a openafs-transform.mst openafs-test.msi</p>
! 
! <p class=MsoNormal>and then checking the resulting openafs-test.msi to see if
! all changes you have made above to openafs-modified.msi is present in
! openafs-test.msi.&nbsp; 'msitran' will complain if some modification in the
  transform can not be successfully applied.</p>
  
  <p class=MsoNormal>As mentioned above, you can use a tool like ORCA.EXE to edit
! the MSI databases directly when editing openafs-modified.msi.&nbsp; More
! details are given below.</p>
  
! <h2><a name="_Toc154229425"></a><a name="_Toc152605104"></a><a
  name="_Toc115416162"></a><a name="_Toc139993154"></a><a name="_Toc126872231"></a><a
! name="_Toc115417100"></a><span style='mso-bookmark:_Toc154229425'><span
  style='mso-bookmark:_Toc152605104'><span style='mso-bookmark:_Toc115416162'>7.2.
  Configuration Options</span></span></span></h2>
  
  <p class=MsoNormal>The logic necessary to implement many of the settings
! described in <a href="#_Appendix_A:_Registry_Values">Appendix A</a> are present
! in the MSI.&nbsp; Most of these can be controlled by setting the corresponding
! properties to the desired value.&nbsp; Some settings may require modifying
! existing registry entries (though not recommended) or adding new resources
! (like files or registry keys).&nbsp; Instructions for performing these tasks
! are below.</p>
  
! <h3><a name="_Toc154229426"></a><a name="_Toc152605105"></a><a
  name="_Toc115416163"></a><a name="_Toc139993155"></a><a name="_Toc126872232"></a><span
! style='mso-bookmark:_Toc154229426'><span style='mso-bookmark:_Toc152605105'><span
  style='mso-bookmark:_Toc115416163'>7.2.1 Configurable Properties</span></span></span></h3>
  
  <p class=MsoNormal>Most configurable properties correspond to registry keys or
--- 2847,2910 ----
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>copy
! <span class=SpellE>openafs.msi</span> <span class=SpellE>openafs-modified.msi</span></p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>2.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>(edit
! the <span class=SpellE>openafs-modified.msi</span> to include the necessary
! changes)</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>3.<span
! style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>msitran</span> -g <span class=SpellE>openafs.msi</span> <span
! class=SpellE>openafs-modified.msi</span> <span class=SpellE>openafs-transform.mst</span></p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>4.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>(generates
! <span class=SpellE>openafs-transform.mst</span>, which is the transform)</p>
  
! <p class=MsoNormal>Transforms have an extension of .<span class=SpellE>mst</span>.&nbsp;
! '<span class=SpellE>msitran</span>' is a tool distributed as part of the
! &quot;Windows Installer&quot; SDK (part of the Windows Platform SDK).</p>
  
  <p class=MsoNormal>You can test a transform by:</p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span>copy
! <span class=SpellE>openafs.msi</span> <span class=SpellE>openafs-test.msi</span></p>
  
  <p class=preformattedtext style='margin-left:36.0pt;text-indent:-18.0pt'>2.<span
! style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp; </span><span
! class=SpellE>msitran</span> -a <span class=SpellE>openafs-transform.mst</span> <span
! class=SpellE>openafs-test.msi</span></p>
! 
! <p class=MsoNormal>and then checking the resulting <span class=SpellE>openafs-test.msi</span>
! to see if all changes you have made above to <span class=SpellE>openafs-modified.msi</span>
! is present in <span class=SpellE>openafs-test.msi</span>.&nbsp; '<span
! class=SpellE>msitran</span>' will complain if some modification in the
  transform can not be successfully applied.</p>
  
  <p class=MsoNormal>As mentioned above, you can use a tool like ORCA.EXE to edit
! the MSI databases directly when editing <span class=SpellE>openafs-modified.msi</span>.&nbsp;
! More details are given below.</p>
  
! <h2><a name="_Toc170268889"></a><a name="_Toc152605104"></a><a
  name="_Toc115416162"></a><a name="_Toc139993154"></a><a name="_Toc126872231"></a><a
! name="_Toc115417100"></a><span style='mso-bookmark:_Toc170268889'><span
  style='mso-bookmark:_Toc152605104'><span style='mso-bookmark:_Toc115416162'>7.2.
  Configuration Options</span></span></span></h2>
  
  <p class=MsoNormal>The logic necessary to implement many of the settings
! described in <a href="#_Appendix_A:_Registry_Values">Appendix <span
! class=GramE>A</span></a> are present in the MSI.&nbsp; Most of these can be
! controlled by setting the corresponding properties to the desired value.&nbsp;
! Some settings may require modifying existing registry entries (though not
! recommended) or adding new resources (like files or registry keys).&nbsp;
! Instructions for performing these tasks are below.</p>
  
! <h3><a name="_Toc170268890"></a><a name="_Toc152605105"></a><a
  name="_Toc115416163"></a><a name="_Toc139993155"></a><a name="_Toc126872232"></a><span
! style='mso-bookmark:_Toc170268890'><span style='mso-bookmark:_Toc152605105'><span
  style='mso-bookmark:_Toc115416163'>7.2.1 Configurable Properties</span></span></span></h3>
  
  <p class=MsoNormal>Most configurable properties correspond to registry keys or
***************
*** 2492,2501 ****
  not contain these properties and hence will not set the registry keys.&nbsp;
  You will need to add properties as needed to the MSI.</p>
  
! <p class=MsoNormal>When one of the configurable properties is set, the
! installer will use the property value to set the corresponding setting in the
! HKEY_LOCAL_MACHINE registry hive.&nbsp; The HKEY_CURRENT_USER hive is not touched
! by the installer.</p>
  
  <p class=MsoNormal>For each property, the associated registry setting is
  referenced by the same text used in <a href="#_Appendix_A:_Registry_Values">Appendix
--- 2915,2924 ----
  not contain these properties and hence will not set the registry keys.&nbsp;
  You will need to add properties as needed to the MSI.</p>
  
! <p class=MsoNormal>When one of the configurable properties is set, the installer
! will use the property value to set the corresponding setting in the
! HKEY_LOCAL_MACHINE registry hive.&nbsp; The HKEY_CURRENT_USER hive is not
! touched by the installer.</p>
  
  <p class=MsoNormal>For each property, the associated registry setting is
  referenced by the same text used in <a href="#_Appendix_A:_Registry_Values">Appendix
***************
*** 2507,2515 ****
  
  <p class=MsoNormal>Numeric values should be authored as decimal strings.</p>
  
! <h4><a name="_Toc154229427"></a><a name="_Toc152605106"></a><a
  name="_Toc115416164"></a><a name="_Toc139993156"></a><a name="_Toc126872233"></a><span
! style='mso-bookmark:_Toc154229427'><span style='mso-bookmark:_Toc152605106'><span
  style='mso-bookmark:_Toc115416164'>7.2.1.1 Setting Properties</span></span></span></h4>
  
  <p class=MsoNormal>In order to set a property,</p>
--- 2930,2938 ----
  
  <p class=MsoNormal>Numeric values should be authored as decimal strings.</p>
  
! <h4><a name="_Toc170268891"></a><a name="_Toc152605106"></a><a
  name="_Toc115416164"></a><a name="_Toc139993156"></a><a name="_Toc126872233"></a><span
! style='mso-bookmark:_Toc170268891'><span style='mso-bookmark:_Toc152605106'><span
  style='mso-bookmark:_Toc115416164'>7.2.1.1 Setting Properties</span></span></span></h4>
  
  <p class=MsoNormal>In order to set a property,</p>
***************
*** 2536,2616 ****
  </span>If the property does not exist in the property list, right click the
  list and select 'Add Row', type the property name and the desired value.</p>
  
! <h4><a name="_Toc154229428"></a><a name="_Toc152605107"></a><a
  name="_Toc115416165"></a><a name="_Toc139993157"></a><a name="_Toc126872234"></a><span
! style='mso-bookmark:_Toc154229428'><span style='mso-bookmark:_Toc152605107'><span
  style='mso-bookmark:_Toc115416165'>7.2.1.2 OpenAFS for Windows Properties</span></span></span></h4>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc154229429"></a><a name="_Toc152605108"></a><a
!   name="_Toc139993158"></a><a name="_Toc126872235"></a><a name="_Toc115416166"></a><a
!   name="_(Service_parameters):"></a><span style='mso-bookmark:_Toc154229429'><span
!   style='mso-bookmark:_Toc152605108'>(Service parameters):</span></span></h5>
    <p class=listcontents style='margin-left:0pt'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc154229430"></a><a name="_Toc152605109"></a><a
!   name="_Toc139993159"></a><a name="_Toc126872236"></a><a name="_Toc115416167"></a><a
!   name="_(Network_provider):"></a><span style='mso-bookmark:_Toc154229430'><span
!   style='mso-bookmark:_Toc152605109'>(Network provider):</span></span></h5>
    <p class=listcontents style='margin-left:0pt'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc154229431"></a><a name="_Toc152605110"></a><a
!   name="_Toc139993160"></a><a name="_Toc126872237"></a><a name="_Toc115416168"></a><a
!   name="_(OpenAFS_Client):"></a><span style='mso-bookmark:_Toc154229431'><span
!   style='mso-bookmark:_Toc152605110'>(OpenAFS Client):</span></span></h5>
    <p class=listcontents style='margin-left:0pt'>[HKLM\SOFTWARE\OpenAFS\Client]</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc154229432"></a><a name="_Toc152605111"></a><a
  name="_Toc115416169"></a><a name="_Toc139993161"></a><a name="_Toc126872238"></a><span
! style='mso-bookmark:_Toc154229432'><span style='mso-bookmark:_Toc152605111'><span
  style='mso-bookmark:_Toc115416169'>7.2.1.2.1 Registry Properties</span></span></span></h5>
  
! <p class=MsoNormal>These properties are used to set the values of registry entries
! associated with OpenAFS for Windows.</p>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229433"></a><a name="_Toc152605112"></a><a
!   name="_Toc115416170"></a><a name="_Toc139993162"></a><a name="_Toc126872239"></a><span
!   style='mso-bookmark:_Toc154229433'><span style='mso-bookmark:_Toc152605112'><span
    style='mso-bookmark:_Toc115416170'>AFSCACHEPATH</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_CachePath">CachePath</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : string .</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229434"></a><a name="_Toc152605113"></a><a
!   name="_Toc115416171"></a><a name="_Toc139993163"></a><a name="_Toc126872240"></a><span
!   style='mso-bookmark:_Toc154229434'><span style='mso-bookmark:_Toc152605113'><span
    style='mso-bookmark:_Toc115416171'>AFSCACHESIZE</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_CacheSize">CacheSize</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : numeric</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229435"></a><a name="_Toc152605114"></a><a
!   name="_Toc115416172"></a><a name="_Toc139993164"></a><a name="_Toc126872241"></a><span
!   style='mso-bookmark:_Toc154229435'><span style='mso-bookmark:_Toc152605114'><span
    style='mso-bookmark:_Toc115416172'>AFSCELLNAME</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
--- 2959,3041 ----
  </span>If the property does not exist in the property list, right click the
  list and select 'Add Row', type the property name and the desired value.</p>
  
! <h4><a name="_Toc170268892"></a><a name="_Toc152605107"></a><a
  name="_Toc115416165"></a><a name="_Toc139993157"></a><a name="_Toc126872234"></a><span
! style='mso-bookmark:_Toc170268892'><span style='mso-bookmark:_Toc152605107'><span
  style='mso-bookmark:_Toc115416165'>7.2.1.2 OpenAFS for Windows Properties</span></span></span></h4>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc170268893"></a><a name="_Toc152605108"></a><a
!   name="_(Service_parameters):"></a><a name="_Toc115416166"></a><a
!   name="_Toc126872235"></a><a name="_Toc139993158"></a><span style='mso-bookmark:
!   _Toc170268893'><span style='mso-bookmark:_Toc152605108'>(Service parameters):</span></span></h5>
    <p class=listcontents style='margin-left:0pt'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc170268894"></a><a name="_Toc152605109"></a><a
!   name="_(Network_provider):"></a><a name="_Toc115416167"></a><a
!   name="_Toc126872236"></a><a name="_Toc139993159"></a><span style='mso-bookmark:
!   _Toc170268894'><span style='mso-bookmark:_Toc152605109'>(Network provider):</span></span></h5>
    <p class=listcontents style='margin-left:0pt'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc170268895"></a><a name="_Toc152605110"></a><a
!   name="_(OpenAFS_Client):"></a><a name="_Toc115416168"></a><a
!   name="_Toc126872237"></a><a name="_Toc139993160"></a><span style='mso-bookmark:
!   _Toc170268895'><span style='mso-bookmark:_Toc152605110'>(OpenAFS Client):</span></span></h5>
    <p class=listcontents style='margin-left:0pt'>[HKLM\SOFTWARE\OpenAFS\Client]</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc170268896"></a><a name="_Toc152605111"></a><a
  name="_Toc115416169"></a><a name="_Toc139993161"></a><a name="_Toc126872238"></a><span
! style='mso-bookmark:_Toc170268896'><span style='mso-bookmark:_Toc152605111'><span
  style='mso-bookmark:_Toc115416169'>7.2.1.2.1 Registry Properties</span></span></span></h5>
  
! <p class=MsoNormal>These properties are used to set the values of registry
! entries associated with OpenAFS for Windows.</p>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268897"></a><a name="_Toc152605112"></a><a
!   name="_Toc115416170"></a><a name="_Toc126872239"></a><a name="_Toc139993162"></a><span
!   style='mso-bookmark:_Toc170268897'><span style='mso-bookmark:_Toc152605112'><span
    style='mso-bookmark:_Toc115416170'>AFSCACHEPATH</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_CachePath"><span
!   class=SpellE>CachePath</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : string .</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268898"></a><a name="_Toc152605113"></a><a
!   name="_Toc115416171"></a><a name="_Toc126872240"></a><a name="_Toc139993163"></a><span
!   style='mso-bookmark:_Toc170268898'><span style='mso-bookmark:_Toc152605113'><span
    style='mso-bookmark:_Toc115416171'>AFSCACHESIZE</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_CacheSize"><span
!   class=SpellE>CacheSize</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : numeric</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268899"></a><a name="_Toc152605114"></a><a
!   name="_Toc115416172"></a><a name="_Toc126872241"></a><a name="_Toc139993164"></a><span
!   style='mso-bookmark:_Toc170268899'><span style='mso-bookmark:_Toc152605114'><span
    style='mso-bookmark:_Toc115416172'>AFSCELLNAME</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
***************
*** 2620,2656 ****
   </tr>
   <tr style='mso-yfti-irow:3'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229436"></a><a name="_Toc152605115"></a><a
!   name="_Toc115416173"></a><a name="_Toc139993165"></a><a name="_Toc126872242"></a><span
!   style='mso-bookmark:_Toc154229436'><span style='mso-bookmark:_Toc152605115'><span
    style='mso-bookmark:_Toc115416173'>FREELANCEMODE</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_FreelanceClient">FreelanceClient</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229437"></a><a name="_Toc152605116"></a><a
!   name="_Toc115416174"></a><a name="_Toc139993166"></a><a name="_Toc126872243"></a><span
!   style='mso-bookmark:_Toc154229437'><span style='mso-bookmark:_Toc152605116'><span
    style='mso-bookmark:_Toc115416174'>HIDEDOTFILES</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_HideDotFiles">HideDotFiles</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229438"></a><a name="_Toc152605117"></a><a
!   name="_Toc115416175"></a><a name="_Toc139993167"></a><a name="_Toc126872244"></a><span
!   style='mso-bookmark:_Toc154229438'><span style='mso-bookmark:_Toc152605117'><span
    style='mso-bookmark:_Toc115416175'>LOGONOPTIONS</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Network_provider):">(Network provider)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_LogonOptions">LogonOptions</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '0', '1' or '3'</p>
    <p class=MsoNormal>See <a href="#_Appendix_A:_Registry_Values">Appendix A</a>
    <a href="#_A.2.1_Domain_specific_configuration">section 2.1 (Domain specific
--- 3045,3084 ----
   </tr>
   <tr style='mso-yfti-irow:3'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268900"></a><a name="_Toc152605115"></a><a
!   name="_Toc115416173"></a><a name="_Toc126872242"></a><a name="_Toc139993165"></a><span
!   style='mso-bookmark:_Toc170268900'><span style='mso-bookmark:_Toc152605115'><span
    style='mso-bookmark:_Toc115416173'>FREELANCEMODE</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_FreelanceClient"><span
!   class=SpellE>FreelanceClient</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268901"></a><a name="_Toc152605116"></a><a
!   name="_Toc115416174"></a><a name="_Toc126872243"></a><a name="_Toc139993166"></a><span
!   style='mso-bookmark:_Toc170268901'><span style='mso-bookmark:_Toc152605116'><span
    style='mso-bookmark:_Toc115416174'>HIDEDOTFILES</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_HideDotFiles"><span
!   class=SpellE>HideDotFiles</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268902"></a><a name="_Toc152605117"></a><a
!   name="_Toc115416175"></a><a name="_Toc126872244"></a><a name="_Toc139993167"></a><span
!   style='mso-bookmark:_Toc170268902'><span style='mso-bookmark:_Toc152605117'><span
    style='mso-bookmark:_Toc115416175'>LOGONOPTIONS</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Network_provider):">(Network provider)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_LogonOptions"><span
!   class=SpellE>LogonOptions</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '0', '1' or '3'</p>
    <p class=MsoNormal>See <a href="#_Appendix_A:_Registry_Values">Appendix A</a>
    <a href="#_A.2.1_Domain_specific_configuration">section 2.1 (Domain specific
***************
*** 2659,2781 ****
   </tr>
   <tr style='mso-yfti-irow:6'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229439"></a><a name="_Toc152605118"></a><a
!   name="_Toc115416176"></a><a name="_Toc139993168"></a><a name="_Toc126872245"></a><span
!   style='mso-bookmark:_Toc154229439'><span style='mso-bookmark:_Toc152605118'><span
    style='mso-bookmark:_Toc115416176'>MOUNTROOT</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_Mountroot">Mountroot</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : string</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:7'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229440"></a><a name="_Toc152605119"></a><a
!   name="_Toc115416177"></a><a name="_Toc139993169"></a><a name="_Toc126872246"></a><span
!   style='mso-bookmark:_Toc154229440'><span style='mso-bookmark:_Toc152605119'><span
    style='mso-bookmark:_Toc115416177'>NETBIOSNAME</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_NetbiosName">NetbiosName</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : string (at most 15
    characters)</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229441"></a><a name="_Toc152605120"></a><a
!   name="_Toc115416178"></a><a name="_Toc139993170"></a><a name="_Toc126872247"></a><span
!   style='mso-bookmark:_Toc154229441'><span style='mso-bookmark:_Toc152605120'><span
    style='mso-bookmark:_Toc115416178'>NOFINDLANABYNAME</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_NoFindLanaByName">NoFindLanaByName</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229442"></a><a name="_Toc152605121"></a><a
!   name="_Toc115416179"></a><a name="_Toc139993171"></a><a name="_Toc126872248"></a><span
!   style='mso-bookmark:_Toc154229442'><span style='mso-bookmark:_Toc152605121'><span
    style='mso-bookmark:_Toc115416179'>RXMAXMTU</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_RxMaxMTU">RxMaxMTU</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : numeric</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:10'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229443"></a><a name="_Toc152605122"></a><a
!   name="_Toc115416180"></a><a name="_Toc139993172"></a><a name="_Toc126872249"></a><span
!   style='mso-bookmark:_Toc154229443'><span style='mso-bookmark:_Toc152605122'><span
    style='mso-bookmark:_Toc115416180'>SECURITYLEVEL</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_SecurityLevel">SecurityLevel</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229444"></a><a name="_Toc152605123"></a><a
!   name="_Toc115416181"></a><a name="_Toc139993173"></a><a name="_Toc126872250"></a><span
!   style='mso-bookmark:_Toc154229444'><span style='mso-bookmark:_Toc152605123'><span
    style='mso-bookmark:_Toc115416181'>SMBAUTHTYPE</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_smbAuthType">SMBAuthType</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '0','1' or '2'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:12'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229445"></a><a name="_Toc152605124"></a><a
!   name="_Toc115416182"></a><a name="_Toc139993174"></a><a name="_Toc126872251"></a><span
!   style='mso-bookmark:_Toc154229445'><span style='mso-bookmark:_Toc152605124'><span
    style='mso-bookmark:_Toc115416182'>STOREANSIFILENAMES</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(OpenAFS_Client):">(OpenAFS Client)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_StoreAnsiFilenames">StoreAnsiFilenames</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '0' or '1'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:13;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229446"></a><a name="_Toc152605125"></a><a
!   name="_Toc115416183"></a><a name="_Toc139993175"></a><a name="_Toc126872252"></a><span
!   style='mso-bookmark:_Toc154229446'><span style='mso-bookmark:_Toc152605125'><span
    style='mso-bookmark:_Toc115416183'>USEDNS</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_UseDNS">UseDNS</a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc154229447"></a><a name="_Toc152605126"></a><a
  name="_Toc139993176"></a><a name="_Toc126872253"></a><a name="_Toc115416184"></a><a
! name="_7.2.1.2.2_AFSCreds.exe_Properties"></a><span style='mso-bookmark:_Toc154229447'><span
  style='mso-bookmark:_Toc152605126'>7.2.1.2.2 AFSCreds.exe Properties</span></span></h5>
  
  <p class=MsoNormal>These properties are combined to add a command line option
! to the shortcut that will be created in the Start:Programs:OpenAFS and Start:Programs:Startup
! folders (see CREDSSTARTUP). &nbsp;The method of specifying the option was
! chosen for easy integration with the Windows Installer user interface.&nbsp;
! Although other methods can be used to specify options to AFSCREDS.EXE, it is
! advised that they be avoided as transforms including such options may not apply
! to future releases of OpenAFS.</p>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229448"></a><a name="_Toc152605127"></a><a
!   name="_Toc115416185"></a><a name="_Toc139993177"></a><a name="_Toc126872254"></a><span
!   style='mso-bookmark:_Toc154229448'><span style='mso-bookmark:_Toc152605127'><span
    style='mso-bookmark:_Toc115416185'>CREDSSTARTUP</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    <p class=MsoList>Controls whether AFSCreds.exe starts up automatically when
--- 3087,3218 ----
   </tr>
   <tr style='mso-yfti-irow:6'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268903"></a><a name="_Toc152605118"></a><a
!   name="_Toc115416176"></a><a name="_Toc126872245"></a><a name="_Toc139993168"></a><span
!   style='mso-bookmark:_Toc170268903'><span style='mso-bookmark:_Toc152605118'><span
    style='mso-bookmark:_Toc115416176'>MOUNTROOT</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_Mountroot"><span
!   class=SpellE>Mountroot</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : string</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:7'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268904"></a><a name="_Toc152605119"></a><a
!   name="_Toc115416177"></a><a name="_Toc126872246"></a><a name="_Toc139993169"></a><span
!   style='mso-bookmark:_Toc170268904'><span style='mso-bookmark:_Toc152605119'><span
    style='mso-bookmark:_Toc115416177'>NETBIOSNAME</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_NetbiosName"><span
!   class=SpellE>NetbiosName</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : string (at most 15
    characters)</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268905"></a><a name="_Toc152605120"></a><a
!   name="_Toc115416178"></a><a name="_Toc126872247"></a><a name="_Toc139993170"></a><span
!   style='mso-bookmark:_Toc170268905'><span style='mso-bookmark:_Toc152605120'><span
    style='mso-bookmark:_Toc115416178'>NOFINDLANABYNAME</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_NoFindLanaByName"><span
!   class=SpellE>NoFindLanaByName</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268906"></a><a name="_Toc152605121"></a><a
!   name="_Toc115416179"></a><a name="_Toc126872248"></a><a name="_Toc139993171"></a><span
!   style='mso-bookmark:_Toc170268906'><span style='mso-bookmark:_Toc152605121'><span
    style='mso-bookmark:_Toc115416179'>RXMAXMTU</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_RxMaxMTU"><span
!   class=SpellE>RxMaxMTU</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : numeric</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:10'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268907"></a><a name="_Toc152605122"></a><a
!   name="_Toc115416180"></a><a name="_Toc126872249"></a><a name="_Toc139993172"></a><span
!   style='mso-bookmark:_Toc170268907'><span style='mso-bookmark:_Toc152605122'><span
    style='mso-bookmark:_Toc115416180'>SECURITYLEVEL</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_SecurityLevel"><span
!   class=SpellE>SecurityLevel</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268908"></a><a name="_Toc152605123"></a><a
!   name="_Toc115416181"></a><a name="_Toc126872250"></a><a name="_Toc139993173"></a><span
!   style='mso-bookmark:_Toc170268908'><span style='mso-bookmark:_Toc152605123'><span
    style='mso-bookmark:_Toc115416181'>SMBAUTHTYPE</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_smbAuthType"><span
!   class=SpellE>SMBAuthType</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '0','1' or '2'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:12'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268909"></a><a name="_Toc152605124"></a><a
!   name="_Toc115416182"></a><a name="_Toc126872251"></a><a name="_Toc139993174"></a><span
!   style='mso-bookmark:_Toc170268909'><span style='mso-bookmark:_Toc152605124'><span
    style='mso-bookmark:_Toc115416182'>STOREANSIFILENAMES</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(OpenAFS_Client):">(OpenAFS Client)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value___:_StoreAnsiFilenames"><span
!   class=SpellE>StoreAnsiFilenames</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '0' or '1'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:13;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268910"></a><a name="_Toc152605125"></a><a
!   name="_Toc115416183"></a><a name="_Toc126872252"></a><a name="_Toc139993175"></a><span
!   style='mso-bookmark:_Toc170268910'><span style='mso-bookmark:_Toc152605125'><span
    style='mso-bookmark:_Toc115416183'>USEDNS</span></span></span></h6>
    <p class=MsoList>Registry key&nbsp;&nbsp;&nbsp; : <a
    href="#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value : <a href="#_Value_:_UseDNS"><span
!   class=SpellE>UseDNS</span></a></p>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc170268911"></a><a name="_Toc152605126"></a><a
  name="_Toc139993176"></a><a name="_Toc126872253"></a><a name="_Toc115416184"></a><a
! name="_7.2.1.2.2_AFSCreds.exe_Properties"></a><span style='mso-bookmark:_Toc170268911'><span
  style='mso-bookmark:_Toc152605126'>7.2.1.2.2 AFSCreds.exe Properties</span></span></h5>
  
  <p class=MsoNormal>These properties are combined to add a command line option
! to the shortcut that will be created in the <span class=SpellE>Start:Programs:OpenAFS</span>
! and <span class=SpellE>Start:Programs:Startup</span> folders (see
! CREDSSTARTUP). &nbsp;The method of specifying the option was chosen for easy
! integration with the Windows Installer user interface.&nbsp; Although other
! methods can be used to specify options to AFSCREDS.EXE, it is advised that they
! be avoided as transforms including such options may not apply to future
! releases of OpenAFS.</p>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268912"></a><a name="_Toc152605127"></a><a
!   name="_Toc115416185"></a><a name="_Toc126872254"></a><a name="_Toc139993177"></a><span
!   style='mso-bookmark:_Toc170268912'><span style='mso-bookmark:_Toc152605127'><span
    style='mso-bookmark:_Toc115416185'>CREDSSTARTUP</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '1' or '0'</p>
    <p class=MsoList>Controls whether AFSCreds.exe starts up automatically when
***************
*** 2786,2794 ****
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229449"></a><a name="_Toc152605128"></a><a
!   name="_Toc115416186"></a><a name="_Toc139993178"></a><a name="_Toc126872255"></a><span
!   style='mso-bookmark:_Toc154229449'><span style='mso-bookmark:_Toc152605128'><span
    style='mso-bookmark:_Toc115416186'>CREDSAUTOINIT</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-a' or ''</p>
    <p class=MsoList>Enables automatic initialization.</p>
--- 3223,3231 ----
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268913"></a><a name="_Toc152605128"></a><a
!   name="_Toc115416186"></a><a name="_Toc126872255"></a><a name="_Toc139993178"></a><span
!   style='mso-bookmark:_Toc170268913'><span style='mso-bookmark:_Toc152605128'><span
    style='mso-bookmark:_Toc115416186'>CREDSAUTOINIT</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-a' or ''</p>
    <p class=MsoList>Enables automatic initialization.</p>
***************
*** 2796,2804 ****
   </tr>
   <tr style='mso-yfti-irow:2'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229450"></a><a name="_Toc152605129"></a><a
!   name="_Toc115416187"></a><a name="_Toc139993179"></a><a name="_Toc126872256"></a><span
!   style='mso-bookmark:_Toc154229450'><span style='mso-bookmark:_Toc152605129'><span
    style='mso-bookmark:_Toc115416187'>CREDSIPCHDET</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-n' or ''</p>
    <p class=MsoList>Enables IP address change detection.</p>
--- 3233,3241 ----
   </tr>
   <tr style='mso-yfti-irow:2'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268914"></a><a name="_Toc152605129"></a><a
!   name="_Toc115416187"></a><a name="_Toc126872256"></a><a name="_Toc139993179"></a><span
!   style='mso-bookmark:_Toc170268914'><span style='mso-bookmark:_Toc152605129'><span
    style='mso-bookmark:_Toc115416187'>CREDSIPCHDET</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-n' or ''</p>
    <p class=MsoList>Enables IP address change detection.</p>
***************
*** 2806,2814 ****
   </tr>
   <tr style='mso-yfti-irow:3'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229451"></a><a name="_Toc152605130"></a><a
!   name="_Toc115416188"></a><a name="_Toc139993180"></a><a name="_Toc126872257"></a><span
!   style='mso-bookmark:_Toc154229451'><span style='mso-bookmark:_Toc152605130'><span
    style='mso-bookmark:_Toc115416188'>CREDSQUIET</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-q' or ''</p>
    <p class=MsoList>Enables quiet mode.</p>
--- 3243,3251 ----
   </tr>
   <tr style='mso-yfti-irow:3'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268915"></a><a name="_Toc152605130"></a><a
!   name="_Toc115416188"></a><a name="_Toc126872257"></a><a name="_Toc139993180"></a><span
!   style='mso-bookmark:_Toc170268915'><span style='mso-bookmark:_Toc152605130'><span
    style='mso-bookmark:_Toc115416188'>CREDSQUIET</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-q' or ''</p>
    <p class=MsoList>Enables quiet mode.</p>
***************
*** 2816,2824 ****
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229452"></a><a name="_Toc152605131"></a><a
!   name="_Toc115416189"></a><a name="_Toc139993181"></a><a name="_Toc126872258"></a><span
!   style='mso-bookmark:_Toc154229452'><span style='mso-bookmark:_Toc152605131'><span
    style='mso-bookmark:_Toc115416189'>CREDSRENEWDRMAP</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-m' or '’</p>
    <p class=MsoList>Enables renewing drive map at startup.</p>
--- 3253,3261 ----
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268916"></a><a name="_Toc152605131"></a><a
!   name="_Toc115416189"></a><a name="_Toc126872258"></a><a name="_Toc139993181"></a><span
!   style='mso-bookmark:_Toc170268916'><span style='mso-bookmark:_Toc152605131'><span
    style='mso-bookmark:_Toc115416189'>CREDSRENEWDRMAP</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-m' or '’</p>
    <p class=MsoList>Enables renewing drive map at startup.</p>
***************
*** 2826,2834 ****
   </tr>
   <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc154229453"></a><a name="_Toc152605132"></a><a
!   name="_Toc115416190"></a><a name="_Toc139993182"></a><a name="_Toc126872259"></a><span
!   style='mso-bookmark:_Toc154229453'><span style='mso-bookmark:_Toc152605132'><span
    style='mso-bookmark:_Toc115416190'>CREDSSHOW</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-s' or ''</p>
    <p class=MsoList>Enables displaying the credential manager window when
--- 3263,3271 ----
   </tr>
   <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc170268917"></a><a name="_Toc152605132"></a><a
!   name="_Toc115416190"></a><a name="_Toc126872259"></a><a name="_Toc139993182"></a><span
!   style='mso-bookmark:_Toc170268917'><span style='mso-bookmark:_Toc152605132'><span
    style='mso-bookmark:_Toc115416190'>CREDSSHOW</span></span></span></h6>
    <p class=MsoList>Valid values&nbsp;&nbsp;&nbsp; : '-s' or ''</p>
    <p class=MsoList>Enables displaying the credential manager window when
***************
*** 2837,2845 ****
   </tr>
  </table>
  
! <h3><a name="_Toc154229454"></a><a name="_Toc152605133"></a><a
  name="_Toc115416191"></a><a name="_Toc139993183"></a><a name="_Toc126872260"></a><span
! style='mso-bookmark:_Toc154229454'><span style='mso-bookmark:_Toc152605133'><span
  style='mso-bookmark:_Toc115416191'>7.2.2 Existing Registry Entries</span></span></span></h3>
  
  <p class=MsoNormal>You can change existing registry values subject to the
--- 3274,3282 ----
   </tr>
  </table>
  
! <h3><a name="_Toc170268918"></a><a name="_Toc152605133"></a><a
  name="_Toc115416191"></a><a name="_Toc139993183"></a><a name="_Toc126872260"></a><span
! style='mso-bookmark:_Toc170268918'><span style='mso-bookmark:_Toc152605133'><span
  style='mso-bookmark:_Toc115416191'>7.2.2 Existing Registry Entries</span></span></span></h3>
  
  <p class=MsoNormal>You can change existing registry values subject to the
***************
*** 2848,2861 ****
  'Registry' table.&nbsp; If you want to add additional registry keys please
  refer to section 3 (Additional resources).</p>
  
! <h3><a name="_Toc154229455"></a><a name="_Toc152605134"></a><a
  name="_Toc115416192"></a><a name="_Toc139993184"></a><a name="_Toc126872261"></a><span
! style='mso-bookmark:_Toc154229455'><span style='mso-bookmark:_Toc152605134'><span
  style='mso-bookmark:_Toc115416192'>7.2.3 Replacing Configuration Files</span></span></span></h3>
  
! <p class=MsoNormal>The OpenAFS configuration files (CellServDB) can be replaced
! by your own configuration files.&nbsp; These files are contained in separate
! MSI components so that you can disable them individually.</p>
  
  <p class=MsoNormal>The recommended method for replacing these files is to first
  disable the components containing the configuration files that you want to
--- 3285,3298 ----
  'Registry' table.&nbsp; If you want to add additional registry keys please
  refer to section 3 (Additional resources).</p>
  
! <h3><a name="_Toc170268919"></a><a name="_Toc152605134"></a><a
  name="_Toc115416192"></a><a name="_Toc139993184"></a><a name="_Toc126872261"></a><span
! style='mso-bookmark:_Toc170268919'><span style='mso-bookmark:_Toc152605134'><span
  style='mso-bookmark:_Toc115416192'>7.2.3 Replacing Configuration Files</span></span></span></h3>
  
! <p class=MsoNormal>The OpenAFS configuration files (<span class=SpellE>CellServDB</span>)
! can be replaced by your own configuration files.&nbsp; These files are
! contained in separate MSI components so that you can disable them individually.</p>
  
  <p class=MsoNormal>The recommended method for replacing these files is to first
  disable the components containing the configuration files that you want to
***************
*** 2866,2872 ****
  an embedded stream.&nbsp; The method outlined here places the file in the same
  directory as the MSI for deployment.</p>
  
! <p class=MsoNormal>The walkthrough below is to add a custom 'CellServDB' file.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
  margin-left:18.0pt;text-indent:-18.0pt'>1.<span style='font-size:7.0pt;
--- 3303,3310 ----
  an embedded stream.&nbsp; The method outlined here places the file in the same
  directory as the MSI for deployment.</p>
  
! <p class=MsoNormal>The walkthrough below is to add a custom '<span
! class=SpellE>CellServDB</span>' file.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
  margin-left:18.0pt;text-indent:-18.0pt'>1.<span style='font-size:7.0pt;
***************
*** 2884,2890 ****
  locate the component you need to change ( Ctrl-F invokes the 'Find'
  dialog).&nbsp; The component names are listed below in section <a
  href="#_2.3.1_Components_for_Configuration_">7.2.3.1</a>.&nbsp; For this
! example, the component name is 'elf_CellServDB'.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
  margin-left:39.6pt;text-indent:-21.6pt'>1.3.<span style='font-size:7.0pt;
--- 3322,3328 ----
  locate the component you need to change ( Ctrl-F invokes the 'Find'
  dialog).&nbsp; The component names are listed below in section <a
  href="#_2.3.1_Components_for_Configuration_">7.2.3.1</a>.&nbsp; For this
! example, the component name is '<span class=SpellE>elf_CellServDB</span>'.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
  margin-left:39.6pt;text-indent:-21.6pt'>1.3.<span style='font-size:7.0pt;
***************
*** 2893,2904 ****
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
  margin-left:39.6pt;text-indent:-21.6pt'>1.4.<span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp; </span>Enter a condition that evaluates
! to false. I.e. 'DONOTINSTALL'. (Note that an undefined property always
! evaluates to false).</p>
  
! <p class=MsoNormal>Note that you can also use this step to disable other
! configuration files without providing replacements.</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>2.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--- 3331,3342 ----
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
  margin-left:39.6pt;text-indent:-21.6pt'>1.4.<span style='font-size:7.0pt;
! font-family:"Times New Roman"'>&nbsp;&nbsp; </span>Enter a condition that
! evaluates to false. I.e. 'DONOTINSTALL'. (Note that an undefined property
! always evaluates to false).</p>
  
! <p class=MsoNormal>Note that you can also use this step to disable other configuration
! files without providing replacements.</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>2.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
***************
*** 2925,2937 ****
    </td>
    <td width=475 valign=top style='width:356.55pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt;height:23.35pt'>
!   <p class=preformattedtext>cmf_my_CellServDB</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>ComponentID</p>
    </td>
    <td width=475 valign=top style='width:356.55pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
--- 3363,3375 ----
    </td>
    <td width=475 valign=top style='width:356.55pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt;height:23.35pt'>
!   <p class=preformattedtext><span class=SpellE>cmf_my_CellServDB</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>ComponentID</span></p>
    </td>
    <td width=475 valign=top style='width:356.55pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
***************
*** 2947,2953 ****
    <td width=475 valign=top style='width:356.55pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>dirClient</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3'>
--- 3385,3391 ----
    <td width=475 valign=top style='width:356.55pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>dirClient</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3'>
***************
*** 2975,3003 ****
   <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>KeyPath</p>
    </td>
    <td width=475 valign=top style='width:356.55pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>fil_my_CellServDB</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal style='margin-left:35.45pt'>Note that the ComponentId is an
! uppercase GUID.&nbsp; You can generate one using GUIDGEN.EXE or UUIDGEN.EXE,
! both of which are included in the Platform SDK.</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>The Attributes value of 144 is a
! sum of msidbComponentAttributesPermanent (16) and
! msidbComponentAttributesNeverOverwrite (128).&nbsp; This ensures that local
! modifications are not overwritten or lost during an installation or
! uninstallation.&nbsp; These are the same settings used on the default
! configuration files.</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! 'fil_my_CellServDB' is a key into the 'File' table which we will fill later.</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>3.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--- 3413,3443 ----
   <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>KeyPath</span></p>
    </td>
    <td width=475 valign=top style='width:356.55pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>fil_my_CellServDB</span></p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal style='margin-left:35.45pt'>Note that the <span
! class=SpellE>ComponentId</span> is an uppercase GUID.&nbsp; You can generate
! one using GUIDGEN.EXE or UUIDGEN.EXE, both of which are included in the
! Platform SDK.</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>The Attributes value of 144 is a
! sum of <span class=SpellE>msidbComponentAttributesPermanent</span> (16) and <span
! class=SpellE>msidbComponentAttributesNeverOverwrite</span> (128).&nbsp; This
! ensures that local modifications are not overwritten or lost during an
! installation or <span class=SpellE>uninstallation</span>.&nbsp; These are the
! same settings used on the default configuration files.</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! '<span class=SpellE>fil_my_CellServDB</span>' is a key into the 'File' table
! which we will fill later.</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>3.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
***************
*** 3020,3037 ****
    </td>
    <td width=462 valign=top style='width:346.2pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>fea_my_CellServDB</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>Feature_Parent</p>
    </td>
    <td width=462 valign=top style='width:346.2pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>feaClient</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
--- 3460,3477 ----
    </td>
    <td width=462 valign=top style='width:346.2pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>fea_my_CellServDB</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>Feature_Parent</span></p>
    </td>
    <td width=462 valign=top style='width:346.2pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>feaClient</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
***************
*** 3102,3120 ****
   </tr>
  </table>
  
! <p class=MsoNormal style='margin-left:35.45pt'>It is important to create the new
! feature under the 'feaClient' feature, which will ensure that the configuration
! file will be installed when the client binaries are installed.</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>Setting 'Display' to 0 will hide
! this feature from the feature selection dialog during an interactive installation.&nbsp;
! A value of 30 for 'Level' allows this feature to be installed by default (on a
! 'Typical' installation).</p>
! 
! <p class=MsoNormal style='margin-left:35.45pt'>The 'Attributes' value is
! msidbFeatureAttributesDisallowAdvertise (8), which is set on all features in
! the OpenAFS MSI.&nbsp; The OpenAFS MSI is not designed for an advertised
! installation.</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>4.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--- 3542,3561 ----
   </tr>
  </table>
  
! <p class=MsoNormal style='margin-left:35.45pt'>It is important to create the
! new feature under the '<span class=SpellE>feaClient</span>' feature, which will
! ensure that the configuration file will be installed when the client binaries
! are installed.</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>Setting 'Display' to 0 will hide
! this feature from the feature selection dialog during an interactive
! installation.&nbsp; A value of 30 for 'Level' allows this feature to be
! installed by default (on a 'Typical' installation).</p>
! 
! <p class=MsoNormal style='margin-left:35.45pt'>The 'Attributes' value is <span
! class=SpellE>msidbFeatureAttributesDisallowAdvertise</span> (8), which is set
! on all features in the OpenAFS MSI.&nbsp; The OpenAFS MSI is not designed for
! an advertised installation.</p>
  
  <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>4.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
***************
*** 3122,3128 ****
  
  <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>4.1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp; </span>Select
! the 'FeatureComponents' table.</p>
  
  <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>4.2.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp; </span>Add a
--- 3563,3569 ----
  
  <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>4.1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp; </span>Select
! the '<span class=SpellE>FeatureComponents</span>' table.</p>
  
  <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>4.2.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp; </span>Add a
***************
*** 3137,3143 ****
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>fea_my_CellServDB</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
--- 3578,3584 ----
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>fea_my_CellServDB</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
***************
*** 3148,3154 ****
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>cmf_my_CellServDB</p>
    </td>
   </tr>
  </table>
--- 3589,3595 ----
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>cmf_my_CellServDB</span></p>
    </td>
   </tr>
  </table>
***************
*** 3174,3180 ****
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>fil_my_CellServDB</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
--- 3615,3621 ----
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>fil_my_CellServDB</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1'>
***************
*** 3185,3208 ****
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>cmf_my_CellServDB</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>FileName</p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>CellServDB</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>FileSize</p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
--- 3626,3649 ----
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>cmf_my_CellServDB</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>FileName</span></p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>CellServDB</span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>FileSize</span></p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
***************
*** 3237,3247 ****
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  &nbsp;&nbsp;&nbsp; (leave other fields blank)</p>
  
! <p class=MsoNormal style='margin-left:35.45pt'>The 'Attributes' value is
! msidbFileAttributesNonCompressed (8192).&nbsp; This is because we will be
! placing this file in the same directory as the MSI instead of embedding the
! file in it.&nbsp; Transforms do not support updating compressed sources or
! adding new cabinet streams.</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>Finally, the 'Sequence' value of
  1000 will be used later to distinguish the file as being in a separate source
--- 3678,3688 ----
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  &nbsp;&nbsp;&nbsp; (leave other fields blank)</p>
  
! <p class=MsoNormal style='margin-left:35.45pt'>The 'Attributes' value is <span
! class=SpellE>msidbFileAttributesNonCompressed</span> (8192).&nbsp; This is
! because we will be placing this file in the same directory as the MSI instead
! of embedding the file in it.&nbsp; Transforms do not support updating
! compressed sources or adding new cabinet streams.</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>Finally, the 'Sequence' value of
  1000 will be used later to distinguish the file as being in a separate source
***************
*** 3264,3270 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>DiskId</p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
--- 3705,3711 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>DiskId</span></p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
    border-left:none;padding:0pt 5.4pt 0pt 5.4pt'>
***************
*** 3274,3280 ****
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext>LastSequence</p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
--- 3715,3721 ----
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
    border-top:none;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=preformattedtext><span class=SpellE>LastSequence</span></p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border-top:none;border-left:
    none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
***************
*** 3287,3320 ****
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  &nbsp;&nbsp;&nbsp; (leave other fields blank)</p>
  
! <p class=MsoNormal style='margin-left:35.45pt'>The sequence number of 1000 designates
! this as the media source for the newly added file.</p>
  
! <h4><a name="_Toc154229456"></a><a name="_Toc152605135"></a><a
  name="_Toc139993185"></a><a name="_Toc126872262"></a><a name="_Toc115416193"></a><a
! name="_2.3.1_Components_for_Configuration_"></a><span style='mso-bookmark:_Toc154229456'><span
  style='mso-bookmark:_Toc152605135'>7.2.3.1 Components for Configuration Files</span></span></h4>
  
! <p class=preformattedtext style='text-indent:35.45pt'>CellServDB:
! 'cpf_CellServDB' (ID {D5BA4C15-DBEC-4292-91FC-B54C30F24F2A})</p>
  
! <h3><a name="_Toc154229457"></a><a name="_Toc152605136"></a><a
  name="_Toc115416194"></a><a name="_Toc139993186"></a><a name="_Toc126872263"></a><span
! style='mso-bookmark:_Toc154229457'><span style='mso-bookmark:_Toc152605136'><span
  style='mso-bookmark:_Toc115416194'>7.2.4 Adding Domain Specific Registry Keys</span></span></span></h3>
  
  <p class=MsoNormal>Following is an example for adding domain specific registry
  keys.</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp; Refer to <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a> section 2.1 for more
! information.</p>
  
! <p class=MsoNormal>&nbsp;&nbsp;&nbsp; Columns that are unspecified should be
! left empty.</p>
  
! <p class=MsoNormal>&nbsp;&nbsp;&nbsp; We create a new feature and component to hold
! the new registry keys.</p>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
--- 3728,3762 ----
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  &nbsp;&nbsp;&nbsp; (leave other fields blank)</p>
  
! <p class=MsoNormal style='margin-left:35.45pt'>The sequence number of 1000
! designates this as the media source for the newly added file.</p>
  
! <h4><a name="_Toc170268920"></a><a name="_Toc152605135"></a><a
  name="_Toc139993185"></a><a name="_Toc126872262"></a><a name="_Toc115416193"></a><a
! name="_2.3.1_Components_for_Configuration_"></a><span style='mso-bookmark:_Toc170268920'><span
  style='mso-bookmark:_Toc152605135'>7.2.3.1 Components for Configuration Files</span></span></h4>
  
! <p class=preformattedtext style='text-indent:35.45pt'><span class=SpellE>CellServDB</span>:
! '<span class=SpellE>cpf_CellServDB</span>' (ID
! {D5BA4C15-DBEC-4292-91FC-B54C30F24F2A})</p>
  
! <h3><a name="_Toc170268921"></a><a name="_Toc152605136"></a><a
  name="_Toc115416194"></a><a name="_Toc139993186"></a><a name="_Toc126872263"></a><span
! style='mso-bookmark:_Toc170268921'><span style='mso-bookmark:_Toc152605136'><span
  style='mso-bookmark:_Toc115416194'>7.2.4 Adding Domain Specific Registry Keys</span></span></span></h3>
  
  <p class=MsoNormal>Following is an example for adding domain specific registry
  keys.</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp; Refer to <a
! href="#_Appendix_A:_Registry_Values">Appendix <span class=GramE>A</span></a>
! section 2.1 for more information.</p>
  
! <p class=MsoNormal>&nbsp;&nbsp;&nbsp; Columns that are unspecified should be left
! empty.</p>
  
! <p class=MsoNormal>&nbsp;&nbsp;&nbsp; We create a new feature and component to
! hold the new registry keys.</p>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
***************
*** 3328,3344 ****
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'feaDomainKeys'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feature
!   Parent : 'feaClient'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Display&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 30<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 10</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
--- 3770,3786 ----
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : '<span
!   class=SpellE>feaDomainKeys</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feature
!   Parent : '<span class=SpellE>feaClient</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Display&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 30<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 10</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2'>
***************
*** 3351,3370 ****
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   ComponentId&nbsp; : '{4E3FCBF4-8BE7-40B2-A108-C47CF743C627}'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 'TARGETDIR'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   KeyPath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 'reg_domkey0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>&nbsp;&nbsp;&nbsp; 'FeatureComponents' table:</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5'>
--- 3793,3815 ----
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
!   class=SpellE>ComponentId</span>&nbsp; :
!   '{4E3FCBF4-8BE7-40B2-A108-C47CF743C627}'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'TARGETDIR'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
!   class=SpellE>KeyPath</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'reg_domkey0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>&nbsp;&nbsp;&nbsp; '<span class=SpellE>FeatureComponents</span>'
!   table:</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5'>
***************
*** 3372,3381 ****
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'feaDomainKeys'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6'>
--- 3817,3826 ----
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : '<span
!   class=SpellE>feaDomainKeys</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6'>
***************
*** 3395,3404 ****
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   :
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8'>
--- 3840,3848 ----
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8'>
***************
*** 3413,3425 ****
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   :
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '*'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9'>
--- 3857,3868 ----
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '*'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9'>
***************
*** 3434,3446 ****
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   :
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '*'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:10'>
--- 3877,3888 ----
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '*'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:10'>
***************
*** 3455,3477 ****
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'LogonOptions'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 1<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    (new row)<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'reg_domkey4'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 2<br>
--- 3897,3921 ----
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   :
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : '<span class=SpellE>LogonOptions</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 1<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    (new row)<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'reg_domkey4'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 2<br>
***************
*** 3483,3489 ****
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '*'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:12'>
--- 3927,3933 ----
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '*'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:12'>
***************
*** 3498,3512 ****
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   :
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'LogonOptions'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 0<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:13;mso-yfti-lastrow:yes'>
--- 3942,3956 ----
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : '<span class=SpellE>LogonOptions</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 0<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:13;mso-yfti-lastrow:yes'>
***************
*** 3521,3535 ****
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'FailLoginsSilently'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 1<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_DomainKeys'</p>
    </td>
   </tr>
  </table>
--- 3965,3980 ----
    : 2<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   :
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : '<span class=SpellE>FailLoginsSilently</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 1<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_DomainKeys</span>'</p>
    </td>
   </tr>
  </table>
***************
*** 3540,3554 ****
  (enable integrated logon) and 'LOCALHOST' (disable integrated logon and fail
  logins silently).</p>
  
! <h3><a name="_Toc154229458"></a><a name="_Toc152605137"></a><a
  name="_Toc115416195"></a><a name="_Toc139993187"></a><a name="_Toc126872264"></a><span
! style='mso-bookmark:_Toc154229458'><span style='mso-bookmark:_Toc152605137'><span
  style='mso-bookmark:_Toc115416195'>7.2.5 Adding Site Specific Freelance
  Registry Keys</span></span></span></h3>
  
  <p class=MsoNormal>Following is an example for adding site specific Freelance
! registry keys to pre-populate the Mountpoints and Symlinks in the fake root.afs
! volume.</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp; Columns that are unspecified should be
  left empty.</p>
--- 3985,3999 ----
  (enable integrated logon) and 'LOCALHOST' (disable integrated logon and fail
  logins silently).</p>
  
! <h3><a name="_Toc170268922"></a><a name="_Toc152605137"></a><a
  name="_Toc115416195"></a><a name="_Toc139993187"></a><a name="_Toc126872264"></a><span
! style='mso-bookmark:_Toc170268922'><span style='mso-bookmark:_Toc152605137'><span
  style='mso-bookmark:_Toc115416195'>7.2.5 Adding Site Specific Freelance
  Registry Keys</span></span></span></h3>
  
  <p class=MsoNormal>Following is an example for adding site specific Freelance
! registry keys to pre-populate the <span class=SpellE>Mountpoints</span> and
! Symlinks in the fake <span class=SpellE>root.afs</span> volume.</p>
  
  <p class=MsoNormal>&nbsp;&nbsp;&nbsp; Columns that are unspecified should be
  left empty.</p>
***************
*** 3565,3577 ****
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'feaFreelanceKeys'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feature
!   Parent : 'feaClient'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Display&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--- 4010,4022 ----
   </tr>
   <tr style='mso-yfti-irow:1'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : '<span
!   class=SpellE>feaFreelanceKeys</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feature
!   Parent : '<span class=SpellE>feaClient</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Display&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 0<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
***************
*** 3591,3611 ****
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   ComponentId&nbsp; : '{4E3B3CBF4-9AE7-40C3-7B09-C48CF842C583}'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 'TARGETDIR'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   KeyPath&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'reg_freekey0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>&nbsp;&nbsp;&nbsp; 'FeatureComponents' table:</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5'>
--- 4036,4058 ----
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
!   class=SpellE>ComponentId</span>&nbsp; :
!   '{4E3B3CBF4-9AE7-40C3-7B09-C48CF842C583}'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 'TARGETDIR'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Attributes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 4<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span
!   class=SpellE>KeyPath</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   : 'reg_freekey0'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>&nbsp;&nbsp;&nbsp; '<span class=SpellE>FeatureComponents</span>'
!   table:</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5'>
***************
*** 3613,3622 ****
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'feaFreelanceKeys'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6'>
--- 4060,4069 ----
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : '<span
!   class=SpellE>feaFreelanceKeys</span>'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6'>
***************
*** 3638,3644 ****
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 'SOFTWARE\OpenAFS\Client\Freelance'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8'>
--- 4085,4091 ----
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 'SOFTWARE\OpenAFS\Client\Freelance'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8'>
***************
*** 3659,3667 ****
    : '0'<br>
    &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &nbsp;&nbsp; : 'athena.mit.edu#athena.mit.edu:root.cell.'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9'>
--- 4106,4114 ----
    : '0'<br>
    &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &nbsp;&nbsp; : '<span class=SpellE>athena.mit.edu#athena.mit.edu:root.cell</span>.'<br>
!   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Component&nbsp;&nbsp;&nbsp;&nbsp;
!   : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9'>
***************
*** 3680,3690 ****
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '1'<br>
!   &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &nbsp;&nbsp; : '.athena.mit.edu%athena.mit.edu:root.cell.'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:10'>
--- 4127,4136 ----
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : '1'<br>
!   &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &nbsp;&nbsp; : '.<span class=SpellE>athena.mit.edu%athena.mit.edu:root.cell</span>.'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:10'>
***************
*** 3701,3707 ****
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11'>
--- 4147,4153 ----
    Key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11'>
***************
*** 3724,3730 ****
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp; : 'athena:athena.mit.edu.'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
--- 4170,4176 ----
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp; : 'athena:athena.mit.edu.'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
***************
*** 3732,3739 ****
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
!   'reg_freekey5'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 2<br>
--- 4178,4184 ----
    <p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    (new row)<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Registry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 'reg_freekey5'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    Root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    : 2<br>
***************
*** 3747,3765 ****
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp; : '.athena:.athena.mit.edu.'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : 'rcm_FreelanceKeys'</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal>The example adds a read-only mountpoint to the athena.mit.edu
! cell's root.afs volume as well as a read-write mountpoint.&nbsp; Aliases are
! also provided using symlinks.</p>
  
! <h2><a name="_Toc154229459"></a><a name="_Toc152605138"></a><a
  name="_Ref115275867"></a><a name="_Toc139993188"></a><a name="_Toc126872265"></a><a
  name="_Toc115417101"></a><a name="_Toc115416196"></a><span style='mso-bookmark:
! _Toc154229459'><span style='mso-bookmark:_Toc152605138'><span style='mso-bookmark:
  _Ref115275867'>7.3 Additional Resources</span></span></span></h2>
  
  <p class=MsoNormal>If you want to add registry keys or files you need to create
--- 4192,4211 ----
    Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    &nbsp;&nbsp; : '.athena:.athena.mit.edu.'<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   Component&nbsp;&nbsp;&nbsp;&nbsp; : '<span class=SpellE>rcm_FreelanceKeys</span>'</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal>The example adds a read-only <span class=SpellE>mountpoint</span>
! to the athena.mit.edu cell's <span class=SpellE>root.afs</span> volume as well
! as a read-write <span class=SpellE>mountpoint</span>.&nbsp; Aliases are also
! provided using symlinks.</p>
  
! <h2><a name="_Toc170268923"></a><a name="_Toc152605138"></a><a
  name="_Ref115275867"></a><a name="_Toc139993188"></a><a name="_Toc126872265"></a><a
  name="_Toc115417101"></a><a name="_Toc115416196"></a><span style='mso-bookmark:
! _Toc170268923'><span style='mso-bookmark:_Toc152605138'><span style='mso-bookmark:
  _Ref115275867'>7.3 Additional Resources</span></span></span></h2>
  
  <p class=MsoNormal>If you want to add registry keys or files you need to create
***************
*** 3776,3789 ****
  <p class=MsoNormal>A sample walkthrough of adding a new configuration file is
  in section 2.3.</p>
  
! <p class=MsoNormal>Add new features under the 'feaClient' or 'feaServer' as
! appropriate and set the 'Level' column for those features to equal the 'Level'
! for their parent features for consistency.&nbsp; Note that none of the features
! in the OpenAFS for Windows MSI package are designed to be installed to run from
! 'source' or 'advertised'.&nbsp; It is recommended that you set
! 'msidbFeatureAttributesFavorLocal' (0), 'msidbFeatureAttributesFollowParent'
! (2) and 'msidbFeatureAttributesDisallowAdvertise' (8) attributes for new
! features.</p>
  
  <p class=MsoNormal>If you are creating new components, retain the same
  component GUID when creating new transforms against new releases of the OpenAFS
--- 4222,4236 ----
  <p class=MsoNormal>A sample walkthrough of adding a new configuration file is
  in section 2.3.</p>
  
! <p class=MsoNormal>Add new features under the '<span class=SpellE>feaClient</span>'
! or '<span class=SpellE>feaServer</span>' as appropriate and set the 'Level'
! column for those features to equal the 'Level' for their parent features for
! consistency.&nbsp; Note that none of the features in the OpenAFS for Windows
! MSI package are designed to be installed to run from 'source' or
! 'advertised'.&nbsp; It is recommended that you set '<span class=SpellE>msidbFeatureAttributesFavorLocal</span>'
! (0), '<span class=SpellE>msidbFeatureAttributesFollowParent</span>' (2) and '<span
! class=SpellE>msidbFeatureAttributesDisallowAdvertise</span>' (8) attributes for
! new features.</p>
  
  <p class=MsoNormal>If you are creating new components, retain the same
  component GUID when creating new transforms against new releases of the OpenAFS
***************
*** 3792,3810 ****
  <p class=MsoNormal>After making the adjustments to the MSI database using
  ORCA.EXE you can generate a transform with MSITRAN.EXE as follows :</p>
  
! <p class=MsoNormal>(Modified MSI package is 'openafs-en_US_new.msi' and the
! original MSI package is 'openafs-en_US.msi'.&nbsp; Generates transform
! 'openafs-transform.mst')</p>
  
! <p class=MsoNormal>&nbsp;&nbsp;&nbsp; &gt; msitran.exe -g openafs-en_US.msi
! openafs-en_US_new.msi openafs-transform.mst</p>
  
  <p class=MsoNormal>See the Platform SDK documentation for information on
  command line options for MSITRAN.EXE.</p>
  
! <h2><a name="_Toc154229460"></a><a name="_Toc152605139"></a><a
  name="_Toc115416197"></a><a name="_Toc139993189"></a><a name="_Toc126872266"></a><a
! name="_Toc115417102"></a><span style='mso-bookmark:_Toc154229460'><span
  style='mso-bookmark:_Toc152605139'><span style='mso-bookmark:_Toc115416197'>7.4.
  Upgrades</span></span></span></h2>
  
--- 4239,4257 ----
  <p class=MsoNormal>After making the adjustments to the MSI database using
  ORCA.EXE you can generate a transform with MSITRAN.EXE as follows :</p>
  
! <p class=MsoNormal>(Modified MSI package is '<span class=SpellE>openafs-en_US_new.msi</span>'
! and the original MSI package is '<span class=SpellE>openafs-en_US.msi</span>'.&nbsp;
! Generates transform '<span class=SpellE>openafs-transform.mst</span>')</p>
  
! <p class=MsoNormal>&nbsp;&nbsp;&nbsp; &gt; msitran.exe -g <span class=SpellE>openafs-en_US.msi</span>
! <span class=SpellE>openafs-en_US_new.msi</span> <span class=SpellE>openafs-transform.mst</span></p>
  
  <p class=MsoNormal>See the Platform SDK documentation for information on
  command line options for MSITRAN.EXE.</p>
  
! <h2><a name="_Toc170268924"></a><a name="_Toc152605139"></a><a
  name="_Toc115416197"></a><a name="_Toc139993189"></a><a name="_Toc126872266"></a><a
! name="_Toc115417102"></a><span style='mso-bookmark:_Toc170268924'><span
  style='mso-bookmark:_Toc152605139'><span style='mso-bookmark:_Toc115416197'>7.4.
  Upgrades</span></span></span></h2>
  
***************
*** 3825,3831 ****
  
  <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'>2)<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>MIT's Transarc AFS MSI package<br>
  Upgrade code {5332B94F-DE38-4927-9EAB-51F4A64193A7}<br>
  Up to version 3.6.2</p>
  
--- 4272,4278 ----
  
  <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'>2)<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>MIT's <span class=SpellE>Transarc</span> AFS MSI package<br>
  Upgrade code {5332B94F-DE38-4927-9EAB-51F4A64193A7}<br>
  Up to version 3.6.2</p>
  
***************
*** 3837,3871 ****
  <p class=MsoNormal>Note that versions of the OpenAFS NSIS package prior to
  1.3.65 had a bug where it couldn't be uninstalled properly in unattended
  mode.&nbsp; Therefore the MSI package will not try to uninstall an OpenAFS NSIS
! package if running unattended.&nbsp; This means that group policy based
! deployments will fail on machines that have the OpenAFS NSIS package installed.</p>
  
  <p class=MsoNormal>If you have used a different MSI package to install OpenAFS
  and wish to upgrade it you can author rows into the 'Upgrade' table as
  described in the Platform SDK.</p>
  
  <p class=MsoNormal>When performing an upgrade with msiexec.exe execute the MSI
! with the repair options &quot;vomus&quot;.</p>
  
! <h1><a name="_Toc154229461"></a><a name="_Toc152605140"></a><a
  name="_Toc139993190"></a><a name="_Toc126872267"></a><a name="_Toc115417116"></a><a
  name="_Toc115417103"></a><a name="_Toc115416198"></a><a
! name="_Appendix_A:_Registry_Values"></a><span style='mso-bookmark:_Toc154229461'><span
  style='mso-bookmark:_Toc152605140'>Appendix A: Registry Values</span></span></h1>
  
! <h2><a name="_Toc154229462"></a><a name="_Toc152605141"></a><a
  name="_Toc115416199"></a><a name="_Toc139993191"></a><a name="_Toc126872268"></a><a
! name="_Toc115417104"></a><span style='mso-bookmark:_Toc154229462'><span
  style='mso-bookmark:_Toc152605141'><span style='mso-bookmark:_Toc115416199'>A.1.
  Service parameters</span></span></span></h2>
  
  <p class=MsoBodyText>The service parameters primarily affect the behavior of
  the AFS client service (afsd_service.exe).</p>
  
! <h3><a name="_Toc154229463"></a><a name="_Toc152605142"></a><a
  name="_Toc115416200"></a><a name="_Toc139993192"></a><a name="_Toc126872269"></a><span
! style='mso-bookmark:_Toc154229463'><span style='mso-bookmark:_Toc152605142'><span
! style='mso-bookmark:_Toc115416200'>Regkey:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 4284,4320 ----
  <p class=MsoNormal>Note that versions of the OpenAFS NSIS package prior to
  1.3.65 had a bug where it couldn't be uninstalled properly in unattended
  mode.&nbsp; Therefore the MSI package will not try to uninstall an OpenAFS NSIS
! package if running unattended.&nbsp; This means that group policy based deployments
! will fail on machines that have the OpenAFS NSIS package installed.</p>
  
  <p class=MsoNormal>If you have used a different MSI package to install OpenAFS
  and wish to upgrade it you can author rows into the 'Upgrade' table as
  described in the Platform SDK.</p>
  
  <p class=MsoNormal>When performing an upgrade with msiexec.exe execute the MSI
! with the repair options &quot;<span class=SpellE>vomus</span>&quot;.</p>
  
! <h1><a name="_Toc170268925"></a><a name="_Toc152605140"></a><a
  name="_Toc139993190"></a><a name="_Toc126872267"></a><a name="_Toc115417116"></a><a
  name="_Toc115417103"></a><a name="_Toc115416198"></a><a
! name="_Appendix_A:_Registry_Values"></a><span style='mso-bookmark:_Toc170268925'><span
  style='mso-bookmark:_Toc152605140'>Appendix A: Registry Values</span></span></h1>
  
! <h2><a name="_Toc170268926"></a><a name="_Toc152605141"></a><a
  name="_Toc115416199"></a><a name="_Toc139993191"></a><a name="_Toc126872268"></a><a
! name="_Toc115417104"></a><span style='mso-bookmark:_Toc170268926'><span
  style='mso-bookmark:_Toc152605141'><span style='mso-bookmark:_Toc115416199'>A.1.
  Service parameters</span></span></span></h2>
  
  <p class=MsoBodyText>The service parameters primarily affect the behavior of
  the AFS client service (afsd_service.exe).</p>
  
! <h3><a name="_Toc170268927"></a><a name="_Toc152605142"></a><a
  name="_Toc115416200"></a><a name="_Toc139993192"></a><a name="_Toc126872269"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268927'><span style='mso-bookmark:
! _Toc152605142'><span style='mso-bookmark:_Toc115416200'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268927'><span style='mso-bookmark:_Toc152605142'><span
! style='mso-bookmark:_Toc115416200'>:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 3873,3917 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5><a name="_Toc154229464"></a><a name="_Toc152605143"></a><a
!   name="_Toc115416201"></a><a name="_Toc139993193"></a><a name="_Toc126872270"></a><span
!   style='mso-bookmark:_Toc154229464'><span style='mso-bookmark:_Toc152605143'><span
!   style='mso-bookmark:_Toc115416201'>Value: LANadapter</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
!   Variable: LANadapter</p>
!   <p class=MsoBodyText>LAN adapter number to use.&nbsp; This is the lana number
!   of the LAN adapter that the SMB server should bind to.&nbsp; If unspecified
!   or set to -1, a LAN adapter with named 'AFS' or a loopback adapter will be
!   selected.&nbsp; If neither are present, then all available adapters will be
!   bound to.&nbsp; When binding to a non-loopback adapter, the NetBIOS name
!   hostname%-AFS' will be used (where %hostname% is the NetBIOS name of the host
!   truncated to 11 characters). Otherwise, the NetBIOS name will be 'AFS'.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229465"></a><a name="_Toc152605144"></a><a
!   name="_Toc139993194"></a><a name="_Toc126872271"></a><a name="_Toc115416202"></a><a
!   name="_Value___:_CacheSize"></a><span style='mso-bookmark:_Toc154229465'><span
!   style='mso-bookmark:_Toc152605144'>Value: CacheSize</span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 98304 (CM_CONFIGDEFAULT_CACHESIZE)<br>
!   Variable: cm_initParams.cacheSize</p>
    <p class=MsoBodyText>Size of the AFS cache in 1k blocks.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229466"></a><a name="_Toc152605145"></a><a
!   name="_Toc115416203"></a><a name="_Toc139993195"></a><a name="_Toc126872272"></a><span
!   style='mso-bookmark:_Toc154229466'><span style='mso-bookmark:_Toc152605145'><span
!   style='mso-bookmark:_Toc115416203'>Value: ChunkSize</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 17 (CM_CONFIGDEFAULT_CHUNKSIZE)<br>
!   Variable: cm_logChunkSize (cm_chunkSize = 1 &lt;&lt; cm_logChunkSize)</p>
    <p class=MsoBodyText>Size of chunk for reading and writing. Actual chunk size
    is 2^cm_logChunkSize.</p>
    </td>
--- 4322,4369 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5><a name="_Toc170268928"></a><a name="_Toc152605143"></a><a
!   name="_Toc115416201"></a><a name="_Toc126872270"></a><a name="_Toc139993193"></a><span
!   style='mso-bookmark:_Toc170268928'><span style='mso-bookmark:_Toc152605143'><span
!   style='mso-bookmark:_Toc115416201'>Value: <span class=SpellE>LANadapter</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
!   Variable: <span class=SpellE>LANadapter</span></p>
!   <p class=MsoBodyText>LAN adapter number to use.&nbsp; This is the <span
!   class=SpellE>lana</span> number of the LAN adapter that the SMB server should
!   bind to.&nbsp; If unspecified or set to -1, a LAN adapter with named 'AFS' or
!   a loopback adapter will be selected.&nbsp; If neither are present, then all
!   available adapters will be bound to.&nbsp; When binding to a non-loopback
!   adapter, the NetBIOS name hostname%-AFS' will be used (where %hostname% is
!   the NetBIOS name of the host truncated to 11 characters). Otherwise, the
!   NetBIOS name will be 'AFS'.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268929"></a><a name="_Toc152605144"></a><a
!   name="_Value___:_CacheSize"></a><a name="_Toc115416202"></a><a
!   name="_Toc126872271"></a><a name="_Toc139993194"></a><span style='mso-bookmark:
!   _Toc170268929'><span style='mso-bookmark:_Toc152605144'>Value: <span
!   class=SpellE>CacheSize</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 98304 (CM_CONFIGDEFAULT_CACHESIZE)<br>
!   Variable: <span class=SpellE>cm_initParams.cacheSize</span></p>
    <p class=MsoBodyText>Size of the AFS cache in 1k blocks.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268930"></a><a name="_Toc152605145"></a><a
!   name="_Toc115416203"></a><a name="_Toc126872272"></a><a name="_Toc139993195"></a><span
!   style='mso-bookmark:_Toc170268930'><span style='mso-bookmark:_Toc152605145'><span
!   style='mso-bookmark:_Toc115416203'>Value: <span class=SpellE>ChunkSize</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 17 (CM_CONFIGDEFAULT_CHUNKSIZE)<br>
!   Variable: <span class=SpellE>cm_logChunkSize</span> (<span class=SpellE>cm_chunkSize</span>
!   = 1 &lt;&lt; <span class=SpellE>cm_logChunkSize</span>)</p>
    <p class=MsoBodyText>Size of chunk for reading and writing. Actual chunk size
    is 2^cm_logChunkSize.</p>
    </td>
***************
*** 3919,3970 ****
   <tr style='mso-yfti-irow:3;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229467"></a><a name="_Toc152605146"></a><a
!   name="_Toc115416204"></a><a name="_Toc139993196"></a><a name="_Toc126872273"></a><span
!   style='mso-bookmark:_Toc154229467'><span style='mso-bookmark:_Toc152605146'><span
    style='mso-bookmark:_Toc115416204'>Value: Daemons</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 2 (CM_CONFIGDEFAULT_DAEMONS)<br>
!   Variable: numBkgD</p>
!   <p class=MsoBodyText>Number of background daemons (number of threads of
!   cm_BkgDaemon). (see cm_BkgDaemon in cm_daemon.c)</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229468"></a><a name="_Toc152605147"></a><a
!   name="_Toc115416205"></a><a name="_Toc139993197"></a><a name="_Toc126872274"></a><span
!   style='mso-bookmark:_Toc154229468'><span style='mso-bookmark:_Toc152605147'><span
!   style='mso-bookmark:_Toc115416205'>Value: ServerThreads</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 25 (CM_CONFIGDEFAULT_SVTHREADS)<br>
!   Variable: numSvThreads</p>
!   <p class=MsoBodyText>Number of SMB server threads (number of threads of
!   smb_Server). (see smb_Server in smb.c).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229469"></a><a name="_Toc152605148"></a><a
!   name="_Toc115416206"></a><a name="_Value:_Stats"></a><a name="_Toc139993198"></a><a
!   name="_Toc126872275"></a><span style='mso-bookmark:_Toc154229469'><span
    style='mso-bookmark:_Toc152605148'><span style='mso-bookmark:_Toc115416206'>Value:
    Stats</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 10000 (CM_CONFIGDEFAULT_STATS)<br>
!   Variable: cm_initParams.nStatCaches</p>
    <p class=MsoBodyText>Cache configuration.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc154229470"></a><a name="_Toc152605149"></a><a
!   name="_Toc139993199"></a><a name="_Toc126872276"></a><a name="_Toc115416207"></a><a
!   name="_Value_:_LogoffPreserveTokens"></a><span style='mso-bookmark:_Toc154229470'><span
!   style='mso-bookmark:_Toc152605149'>Value: LogoffPreserveTokens</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default : 0</p>
    <p class=MsoBodyText>If enabled (set to 1), the Logoff Event handler will not
--- 4371,4425 ----
   <tr style='mso-yfti-irow:3;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268931"></a><a name="_Toc152605146"></a><a
!   name="_Toc115416204"></a><a name="_Toc126872273"></a><a name="_Toc139993196"></a><span
!   style='mso-bookmark:_Toc170268931'><span style='mso-bookmark:_Toc152605146'><span
    style='mso-bookmark:_Toc115416204'>Value: Daemons</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 2 (CM_CONFIGDEFAULT_DAEMONS)<br>
!   Variable: <span class=SpellE>numBkgD</span></p>
!   <p class=MsoBodyText>Number of background daemons (number of threads of <span
!   class=SpellE>cm_BkgDaemon</span>). (see <span class=SpellE>cm_BkgDaemon</span>
!   in <span class=SpellE>cm_daemon.c</span>)</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268932"></a><a name="_Toc152605147"></a><a
!   name="_Toc115416205"></a><a name="_Toc126872274"></a><a name="_Toc139993197"></a><span
!   style='mso-bookmark:_Toc170268932'><span style='mso-bookmark:_Toc152605147'><span
!   style='mso-bookmark:_Toc115416205'>Value: <span class=SpellE>ServerThreads</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 25 (CM_CONFIGDEFAULT_SVTHREADS)<br>
!   Variable: <span class=SpellE>numSvThreads</span></p>
!   <p class=MsoBodyText>Number of SMB server threads (number of threads of <span
!   class=SpellE>smb_Server</span>). (see <span class=SpellE>smb_Server</span> in
!   <span class=SpellE>smb.c</span>).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268933"></a><a name="_Toc152605148"></a><a
!   name="_Toc115416206"></a><a name="_Toc126872275"></a><a name="_Toc139993198"></a><a
!   name="_Value:_Stats"></a><span style='mso-bookmark:_Toc170268933'><span
    style='mso-bookmark:_Toc152605148'><span style='mso-bookmark:_Toc115416206'>Value:
    Stats</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 10000 (CM_CONFIGDEFAULT_STATS)<br>
!   Variable: <span class=SpellE>cm_initParams.nStatCaches</span></p>
    <p class=MsoBodyText>Cache configuration.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc170268934"></a><a name="_Toc152605149"></a><a
!   name="_Value_:_LogoffPreserveTokens"></a><a name="_Toc115416207"></a><a
!   name="_Toc126872276"></a><a name="_Toc139993199"></a><span style='mso-bookmark:
!   _Toc170268934'><span style='mso-bookmark:_Toc152605149'>Value: <span
!   class=SpellE>LogoffPreserveTokens</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default : 0</p>
    <p class=MsoBodyText>If enabled (set to 1), the Logoff Event handler will not
***************
*** 3975,4020 ****
   <tr style='mso-yfti-irow:7;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229471"></a><a name="_Toc152605150"></a><a
!   name="_Toc115416208"></a><a name="_Toc139993200"></a><a name="_Toc126872277"></a><span
!   style='mso-bookmark:_Toc154229471'><span style='mso-bookmark:_Toc152605150'><span
!   style='mso-bookmark:_Toc115416208'>Value: RootVolume</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
!   Default: &quot;root.afs&quot;<br>
!   Variable: cm_rootVolumeName</p>
    <p class=MsoBodyText>Root volume name.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5><a name="_Toc154229472"></a><a name="_Toc152605151"></a><a
!   name="_Toc139993201"></a><a name="_Toc126872278"></a><a name="_Toc115416209"></a><a
!   name="_Value_:_Mountroot"></a><span style='mso-bookmark:_Toc154229472'><span
!   style='mso-bookmark:_Toc152605151'>Value: MountRoot</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
!   Default: &quot;/afs&quot;<br>
!   Variable: cm_mountRoot</p>
    <p class=MsoBodyText>Name of root mount point.&nbsp; In symlinks, if a path
!   starts with cm_mountRoot, it is assumed that the path is absolute (as opposed
!   to relative) and is adjusted accordingly. Eg: if a path is specified as
!   /afs/athena.mit.edu/foo/bar/baz and cm_mountRoot is &quot;/afs&quot;, then
!   the path is interpreted as \\afs\all\athena.mit.edu\foo\bar\baz.&nbsp; If a
!   path does not start with with cm_mountRoot, the path is assumed to be
!   relative and suffixed to the reference directory (i.e. directory where the
!   symlink exists)</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229473"></a><a name="_Toc152605152"></a><a
!   name="_Toc139993202"></a><a name="_Toc126872279"></a><a name="_Toc115416210"></a><a
!   name="_Value_:_CachePath"></a><span style='mso-bookmark:_Toc154229473'><span
!   style='mso-bookmark:_Toc152605152'>Value: CachePath</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ or REG_EXPAND_SZ<br>
!   Default: &quot;%TEMP%\AFSCache&quot;<br>
!   Variable: cm_CachePath</p>
    <p class=MsoBodyText>Location of on-disk cache file.&nbsp; The default is the
    SYSTEM account's TEMP directory.&nbsp; The attributes assigned to the file
    are HIDDEN and SYSTEM.</p>
--- 4430,4479 ----
   <tr style='mso-yfti-irow:7;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268935"></a><a name="_Toc152605150"></a><a
!   name="_Toc115416208"></a><a name="_Toc126872277"></a><a name="_Toc139993200"></a><span
!   style='mso-bookmark:_Toc170268935'><span style='mso-bookmark:_Toc152605150'><span
!   style='mso-bookmark:_Toc115416208'>Value: <span class=SpellE>RootVolume</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
!   Default: &quot;<span class=SpellE>root.afs</span>&quot;<br>
!   Variable: <span class=SpellE>cm_rootVolumeName</span></p>
    <p class=MsoBodyText>Root volume name.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:8;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5><a name="_Toc170268936"></a><a name="_Toc152605151"></a><a
!   name="_Value_:_Mountroot"></a><a name="_Toc115416209"></a><a
!   name="_Toc126872278"></a><a name="_Toc139993201"></a><span style='mso-bookmark:
!   _Toc170268936'><span style='mso-bookmark:_Toc152605151'>Value: <span
!   class=SpellE>MountRoot</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
!   Default: &quot;/<span class=SpellE>afs</span>&quot;<br>
!   Variable: <span class=SpellE>cm_mountRoot</span></p>
    <p class=MsoBodyText>Name of root mount point.&nbsp; In symlinks, if a path
!   starts with <span class=SpellE>cm_mountRoot</span>, it is assumed that the
!   path is absolute (as opposed to relative) and is adjusted accordingly. <span
!   class=SpellE>Eg</span>: if a path is specified as /<span class=SpellE>afs/athena.mit.edu/foo/bar/baz</span>
!   and <span class=SpellE>cm_mountRoot</span> is &quot;/<span class=SpellE>afs</span>&quot;,
!   then the path is interpreted as \\afs\all\athena.mit.edu\foo\bar\baz.&nbsp;
!   If a path does not start with <span class=SpellE>with</span> <span
!   class=SpellE>cm_mountRoot</span>, the path is assumed to be relative and
!   suffixed to the reference directory (i.e. directory where the <span
!   class=SpellE>symlink</span> exists)</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:9;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268937"></a><a name="_Toc152605152"></a><a
!   name="_Value_:_CachePath"></a><a name="_Toc115416210"></a><a
!   name="_Toc126872279"></a><a name="_Toc139993202"></a><span style='mso-bookmark:
!   _Toc170268937'><span style='mso-bookmark:_Toc152605152'>Value: <span
!   class=SpellE>CachePath</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ or REG_EXPAND_SZ<br>
!   Default: &quot;%TEMP%\<span class=SpellE>AFSCache</span>&quot;<br>
!   Variable: <span class=SpellE>cm_CachePath</span></p>
    <p class=MsoBodyText>Location of on-disk cache file.&nbsp; The default is the
    SYSTEM account's TEMP directory.&nbsp; The attributes assigned to the file
    are HIDDEN and SYSTEM.</p>
***************
*** 4023,4052 ****
   <tr style='mso-yfti-irow:10;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5><a name="_Toc154229474"></a><a name="_Toc152605153"></a><a
!   name="_Toc115416211"></a><a name="_Toc139993203"></a><a name="_Toc126872280"></a><span
!   style='mso-bookmark:_Toc154229474'><span style='mso-bookmark:_Toc152605153'><span
!   style='mso-bookmark:_Toc115416211'>Value: NonPersistentCaching</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD [0..1]<br>
    Default: 0<br>
!   Variable: buf_CacheType</p>
    <p class=MsoBodyText>When this registry value is set to a non-zero value, the
!   CachePath value is ignored and the cache data is stored in the windows paging
!   file.&nbsp; This prevents the use of persistent caching (when available) as
!   well as the ability to alter the size of the cache at runtime using the
!   &quot;fs setcachesize&quot; command.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11;height:125.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:125.5pt'>
!   <h5><a name="_Toc154229475"></a><a name="_Toc152605154"></a><a
!   name="_Toc115416212"></a><a name="_Toc139993204"></a><a name="_Toc126872281"></a><span
!   style='mso-bookmark:_Toc154229475'><span style='mso-bookmark:_Toc152605154'><span
!   style='mso-bookmark:_Toc115416212'>Value: ValidateCache</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD [0..2]<br>
    Default: 1<br>
!   Variable: buf_CacheType</p>
    <p class=MsoBodyText>This value determines if and when persistent cache
    validation is performed.</p>
    <p class=MsoBodyText>0 - Validation is disabled<br>
--- 4482,4512 ----
   <tr style='mso-yfti-irow:10;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5><a name="_Toc170268938"></a><a name="_Toc152605153"></a><a
!   name="_Toc115416211"></a><a name="_Toc126872280"></a><a name="_Toc139993203"></a><span
!   style='mso-bookmark:_Toc170268938'><span style='mso-bookmark:_Toc152605153'><span
!   style='mso-bookmark:_Toc115416211'>Value: <span class=SpellE>NonPersistentCaching</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD [0..1]<br>
    Default: 0<br>
!   Variable: <span class=SpellE>buf_CacheType</span></p>
    <p class=MsoBodyText>When this registry value is set to a non-zero value, the
!   <span class=SpellE>CachePath</span> value is ignored and the cache data is
!   stored in the windows paging file.&nbsp; This prevents the use of persistent
!   caching (when available) as well as the ability to alter the size of the
!   cache at runtime using the &quot;<span class=SpellE>fs</span> <span
!   class=SpellE>setcachesize</span>&quot; command.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:11;height:125.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:125.5pt'>
!   <h5><a name="_Toc170268939"></a><a name="_Toc152605154"></a><a
!   name="_Toc115416212"></a><a name="_Toc126872281"></a><a name="_Toc139993204"></a><span
!   style='mso-bookmark:_Toc170268939'><span style='mso-bookmark:_Toc152605154'><span
!   style='mso-bookmark:_Toc115416212'>Value: <span class=SpellE>ValidateCache</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD [0..2]<br>
    Default: 1<br>
!   Variable: <span class=SpellE>buf_CacheType</span></p>
    <p class=MsoBodyText>This value determines if and when persistent cache
    validation is performed.</p>
    <p class=MsoBodyText>0 - Validation is disabled<br>
***************
*** 4057,4083 ****
   <tr style='mso-yfti-irow:12;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229476"></a><a name="_Toc152605155"></a><a
!   name="_Toc115416213"></a><a name="_Toc139993205"></a><a name="_Toc126872282"></a><span
!   style='mso-bookmark:_Toc154229476'><span style='mso-bookmark:_Toc152605155'><span
!   style='mso-bookmark:_Toc115416213'>Value: TrapOnPanic</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: traceOnPanic</p>
    <p class=MsoBodyText>Issues a breakpoint in the event of a panic.
!   (breakpoint: _asm int 3).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:13;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229477"></a><a name="_Toc152605156"></a><a
!   name="_Toc139993206"></a><a name="_Toc126872283"></a><a name="_Toc115416214"></a><a
!   name="_Value___:_NetbiosName"></a><span style='mso-bookmark:_Toc154229477'><span
!   style='mso-bookmark:_Toc152605156'>Value: NetbiosName</span></span></h5>
    <p class=MsoBodyText>Type: REG_EXPAND_SZ<br>
    Default: &quot;AFS&quot;<br>
!   Variable: cm_NetbiosName</p>
    <p class=MsoBodyText>Specifies the NetBIOS name to be used when binding to a
    Loopback adapter.&nbsp; To provide the old behavior specify a value of&nbsp;
    &quot;%COMPUTERNAME%-AFS&quot;.</p>
--- 4517,4544 ----
   <tr style='mso-yfti-irow:12;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268940"></a><a name="_Toc152605155"></a><a
!   name="_Toc115416213"></a><a name="_Toc126872282"></a><a name="_Toc139993205"></a><span
!   style='mso-bookmark:_Toc170268940'><span style='mso-bookmark:_Toc152605155'><span
!   style='mso-bookmark:_Toc115416213'>Value: <span class=SpellE>TrapOnPanic</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: <span class=SpellE>traceOnPanic</span></p>
    <p class=MsoBodyText>Issues a breakpoint in the event of a panic.
!   (breakpoint: _<span class=SpellE>asm</span> <span class=SpellE>int</span> 3).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:13;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268941"></a><a name="_Toc152605156"></a><a
!   name="_Value___:_NetbiosName"></a><a name="_Toc115416214"></a><a
!   name="_Toc126872283"></a><a name="_Toc139993206"></a><span style='mso-bookmark:
!   _Toc170268941'><span style='mso-bookmark:_Toc152605156'>Value: <span
!   class=SpellE>NetbiosName</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_EXPAND_SZ<br>
    Default: &quot;AFS&quot;<br>
!   Variable: <span class=SpellE>cm_NetbiosName</span></p>
    <p class=MsoBodyText>Specifies the NetBIOS name to be used when binding to a
    Loopback adapter.&nbsp; To provide the old behavior specify a value of&nbsp;
    &quot;%COMPUTERNAME%-AFS&quot;.</p>
***************
*** 4086,4118 ****
   <tr style='mso-yfti-irow:14;height:152.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:152.0pt'>
!   <h5><a name="_Toc154229478"></a><a name="_Toc152605157"></a><a
!   name="_Toc115416215"></a><a name="_Toc139993207"></a><a name="_Toc126872284"></a><span
!   style='mso-bookmark:_Toc154229478'><span style='mso-bookmark:_Toc152605157'><span
!   style='mso-bookmark:_Toc115416215'>Value: IsGateway</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: isGateway</p>
    <p class=MsoBodyText>Select whether or not this AFS client should act as a
    gateway.&nbsp; If set and the NetBIOS name hostname-AFS is bound to a
    physical NIC, other machines in the subnet can access AFS via SMB connections
    to hostname-AFS.</p>
!   <p class=MsoBodyText>When IsGateway is non-zero, the LAN adapter detection
!   code will avoid binding to a loopback adapter.&nbsp; This will ensure that
!   the NetBIOS name will be of the form hostname-AFS instead of the value set by
!   the &quot;NetbiosName&quot; registry value.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:15;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229479"></a><a name="_Toc152605158"></a><a
!   name="_Toc115416216"></a><a name="_Toc139993208"></a><a name="_Toc126872285"></a><span
!   style='mso-bookmark:_Toc154229479'><span style='mso-bookmark:_Toc152605158'><span
!   style='mso-bookmark:_Toc115416216'>Value: ReportSessionStartups</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: reportSessionStartups</p>
    <p class=MsoBodyText>If enabled, all SMB sessions created are recorded in the
    Application event log.&nbsp; This also enables other events such as drive
    mappings or various error types to be logged.</p>
--- 4547,4580 ----
   <tr style='mso-yfti-irow:14;height:152.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:152.0pt'>
!   <h5><a name="_Toc170268942"></a><a name="_Toc152605157"></a><a
!   name="_Toc115416215"></a><a name="_Toc126872284"></a><a name="_Toc139993207"></a><span
!   style='mso-bookmark:_Toc170268942'><span style='mso-bookmark:_Toc152605157'><span
!   style='mso-bookmark:_Toc115416215'>Value: <span class=SpellE>IsGateway</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: <span class=SpellE>isGateway</span></p>
    <p class=MsoBodyText>Select whether or not this AFS client should act as a
    gateway.&nbsp; If set and the NetBIOS name hostname-AFS is bound to a
    physical NIC, other machines in the subnet can access AFS via SMB connections
    to hostname-AFS.</p>
!   <p class=MsoBodyText>When <span class=SpellE>IsGateway</span> is non-zero,
!   the LAN adapter detection code will avoid binding to a loopback
!   adapter.&nbsp; This will ensure that the NetBIOS name will be of the form
!   hostname-AFS instead of the value set by the &quot;<span class=SpellE>NetbiosName</span>&quot;
!   registry value.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:15;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268943"></a><a name="_Toc152605158"></a><a
!   name="_Toc115416216"></a><a name="_Toc126872285"></a><a name="_Toc139993208"></a><span
!   style='mso-bookmark:_Toc170268943'><span style='mso-bookmark:_Toc152605158'><span
!   style='mso-bookmark:_Toc115416216'>Value: <span class=SpellE>ReportSessionStartups</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: <span class=SpellE>reportSessionStartups</span></p>
    <p class=MsoBodyText>If enabled, all SMB sessions created are recorded in the
    Application event log.&nbsp; This also enables other events such as drive
    mappings or various error types to be logged.</p>
***************
*** 4121,4219 ****
   <tr style='mso-yfti-irow:16;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229480"></a><a name="_Toc152605159"></a><a
!   name="_Toc139993209"></a><a name="_Toc126872286"></a><a name="_Toc115416217"></a><a
!   name="_Value_:_TraceBufferSize"></a><span style='mso-bookmark:_Toc154229480'><span
!   style='mso-bookmark:_Toc152605159'>Value: TraceBufferSize</span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 5000 (CM_CONFIGDEFAULT_TRACEBUFSIZE)<br>
!   Variable: traceBufSize</p>
    <p class=MsoBodyText>Number of entries to keep in trace log.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:17;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229481"></a><a name="_Toc152605160"></a><a
!   name="_Toc139993210"></a><a name="_Toc126872287"></a><a name="_Toc115416218"></a><a
!   name="_Value_:_SysName"></a><span style='mso-bookmark:_Toc154229481'><span
!   style='mso-bookmark:_Toc152605160'>Value: SysName</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;x86_win32 i386_w2k i386_nt40&quot; (X86) <br>
    “amd64_win64 x86_win32 i386_w2k” (AMD64)<br>
!   Variable: cm_sysName</p>
!   <p class=MsoBodyText>Provides an initial value for &quot;fs
!   sysname&quot;.&nbsp; The string can contain one or more replacement values
!   for @sys in order of preference separated by whitespace.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:18;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229482"></a><a name="_Toc152605161"></a><a
!   name="_Toc139993211"></a><a name="_Toc126872288"></a><a name="_Toc115416219"></a><a
!   name="_Value_:_SecurityLevel"></a><span style='mso-bookmark:_Toc154229482'><span
!   style='mso-bookmark:_Toc152605161'>Value: SecurityLevel</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: cryptall</p>
    <p class=MsoBodyText>Enables encryption on RX calls.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:19;height:112.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:112.25pt'>
!   <h5><a name="_Toc154229483"></a><a name="_Toc152605162"></a><a
!   name="_Toc139993212"></a><a name="_Toc126872289"></a><a name="_Toc115416220"></a><a
!   name="_Value_:_UseDNS"></a><span style='mso-bookmark:_Toc154229483'><span
!   style='mso-bookmark:_Toc152605162'>Value: UseDNS</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 1<br>
!   Variable: cm_dnsEnabled</p>
!   <p class=MsoBodyText>Enables resolving volservers using AFSDB DNS queries.</p>
    <p class=MsoBodyText>As of 1.3.60, this value is ignored as the DNS query
!   support utilizes the Win32 DNSQuery API which is available on Win2000 and above.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:20;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229484"></a><a name="_Toc152605163"></a><a
!   name="_Toc139993213"></a><a name="_Toc126872290"></a><a name="_Toc115416221"></a><a
!   name="_Value_:_FreelanceClient"></a><span style='mso-bookmark:_Toc154229484'><span
!   style='mso-bookmark:_Toc152605163'>Value: FreelanceClient</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: cm_freelanceEnabled</p>
    <p class=MsoBodyText>Enables freelance client.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:21;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229485"></a><a name="_Toc152605164"></a><a
!   name="_Value:_HideDotFiles"></a><a name="_Toc139993214"></a><a
!   name="_Toc126872291"></a><a name="_Toc115416222"></a><a
!   name="_Value_:_HideDotFiles"></a><span style='mso-bookmark:_Toc154229485'><span
!   style='mso-bookmark:_Toc152605164'>Value: HideDotFiles</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 1<br>
!   Variable: smb_hideDotFiles</p>
!   <p class=MsoBodyText>Enables marking dotfiles with the hidden
!   attribute.&nbsp; Dot files are files whose name starts with a period
!   (excluding &quot;.&quot; and &quot;..&quot;).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:22;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229486"></a><a name="_Toc152605165"></a><a
!   name="_Toc115416223"></a><a name="_Toc139993215"></a><a name="_Toc126872292"></a><span
!   style='mso-bookmark:_Toc154229486'><span style='mso-bookmark:_Toc152605165'><span
!   style='mso-bookmark:_Toc115416223'>Value: MaxMpxRequests</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 50<br>
!   Variable: smb_maxMpxRequests</p>
    <p class=MsoBodyText>Maximum number of multiplexed SMB requests that can be
    made.</p>
    </td>
--- 4583,4688 ----
   <tr style='mso-yfti-irow:16;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268944"></a><a name="_Toc152605159"></a><a
!   name="_Value_:_TraceBufferSize"></a><a name="_Toc115416217"></a><a
!   name="_Toc126872286"></a><a name="_Toc139993209"></a><span style='mso-bookmark:
!   _Toc170268944'><span style='mso-bookmark:_Toc152605159'>Value: <span
!   class=SpellE>TraceBufferSize</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 5000 (CM_CONFIGDEFAULT_TRACEBUFSIZE)<br>
!   Variable: <span class=SpellE>traceBufSize</span></p>
    <p class=MsoBodyText>Number of entries to keep in trace log.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:17;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268945"></a><a name="_Toc152605160"></a><a
!   name="_Value_:_SysName"></a><a name="_Toc115416218"></a><a
!   name="_Toc126872287"></a><a name="_Toc139993210"></a><span style='mso-bookmark:
!   _Toc170268945'><span style='mso-bookmark:_Toc152605160'>Value: <span
!   class=SpellE>SysName</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;x86_win32 i386_w2k i386_nt40&quot; (X86) <br>
    “amd64_win64 x86_win32 i386_w2k” (AMD64)<br>
!   Variable: <span class=SpellE>cm_sysName</span></p>
!   <p class=MsoBodyText>Provides an initial value for &quot;<span class=SpellE>fs</span>
!   <span class=SpellE>sysname</span>&quot;.&nbsp; The string can contain one or
!   more replacement values for @sys in order of preference separated by
!   whitespace.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:18;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268946"></a><a name="_Toc152605161"></a><a
!   name="_Value_:_SecurityLevel"></a><a name="_Toc115416219"></a><a
!   name="_Toc126872288"></a><a name="_Toc139993211"></a><span style='mso-bookmark:
!   _Toc170268946'><span style='mso-bookmark:_Toc152605161'>Value: <span
!   class=SpellE>SecurityLevel</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: <span class=SpellE>cryptall</span></p>
    <p class=MsoBodyText>Enables encryption on RX calls.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:19;height:112.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:112.25pt'>
!   <h5><a name="_Toc170268947"></a><a name="_Toc152605162"></a><a
!   name="_Value_:_UseDNS"></a><a name="_Toc115416220"></a><a name="_Toc126872289"></a><a
!   name="_Toc139993212"></a><span style='mso-bookmark:_Toc170268947'><span
!   style='mso-bookmark:_Toc152605162'>Value: <span class=SpellE>UseDNS</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 1<br>
!   Variable: <span class=SpellE>cm_dnsEnabled</span></p>
!   <p class=MsoBodyText>Enables resolving <span class=SpellE>volservers</span>
!   using AFSDB DNS queries.</p>
    <p class=MsoBodyText>As of 1.3.60, this value is ignored as the DNS query
!   support utilizes the Win32 <span class=SpellE>DNSQuery</span> API which is
!   available on Win2000 and above.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:20;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268948"></a><a name="_Toc152605163"></a><a
!   name="_Value_:_FreelanceClient"></a><a name="_Toc115416221"></a><a
!   name="_Toc126872290"></a><a name="_Toc139993213"></a><span style='mso-bookmark:
!   _Toc170268948'><span style='mso-bookmark:_Toc152605163'>Value: <span
!   class=SpellE>FreelanceClient</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
!   Variable: <span class=SpellE>cm_freelanceEnabled</span></p>
    <p class=MsoBodyText>Enables freelance client.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:21;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268949"></a><a name="_Toc152605164"></a><a
!   name="_Value_:_HideDotFiles"></a><a name="_Toc115416222"></a><a
!   name="_Toc126872291"></a><a name="_Toc139993214"></a><a
!   name="_Value:_HideDotFiles"></a><span style='mso-bookmark:_Toc170268949'><span
!   style='mso-bookmark:_Toc152605164'>Value: <span class=SpellE>HideDotFiles</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 1<br>
!   Variable: <span class=SpellE>smb_hideDotFiles</span></p>
!   <p class=MsoBodyText>Enables marking <span class=SpellE>dotfiles</span> with
!   the hidden attribute.&nbsp; Dot files are files whose name starts with a
!   period (excluding &quot;.&quot; and &quot;..&quot;).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:22;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268950"></a><a name="_Toc152605165"></a><a
!   name="_Toc115416223"></a><a name="_Toc126872292"></a><a name="_Toc139993215"></a><span
!   style='mso-bookmark:_Toc170268950'><span style='mso-bookmark:_Toc152605165'><span
!   style='mso-bookmark:_Toc115416223'>Value: <span class=SpellE>MaxMpxRequests</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 50<br>
!   Variable: <span class=SpellE>smb_maxMpxRequests</span></p>
    <p class=MsoBodyText>Maximum number of multiplexed SMB requests that can be
    made.</p>
    </td>
***************
*** 4221,4274 ****
   <tr style='mso-yfti-irow:23;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229487"></a><a name="_Toc152605166"></a><a
!   name="_Toc115416224"></a><a name="_Toc139993216"></a><a name="_Toc126872293"></a><span
!   style='mso-bookmark:_Toc154229487'><span style='mso-bookmark:_Toc152605166'><span
!   style='mso-bookmark:_Toc115416224'>Value: MaxVCPerServer</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 100<br>
!   Variable: smb_maxVCPerServer</p>
    <p class=MsoBodyText>Maximum number of SMB virtual circuits.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:24;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229488"></a><a name="_Toc152605167"></a><a
!   name="_Toc139993217"></a><a name="_Toc126872294"></a><a name="_Toc115416225"></a><a
!   name="_Value_:_Cell"></a><span style='mso-bookmark:_Toc154229488'><span
    style='mso-bookmark:_Toc152605167'>Value: Cell</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
!   Variable: rootCellName</p>
!   <p class=MsoBodyText>Name of root cell (the cell from which root.afs should
!   be mounted in \\afs\all).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:25;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229489"></a><a name="_Toc152605168"></a><a
!   name="_Toc115416226"></a><a name="_Toc139993218"></a><a name="_Toc126872295"></a><span
!   style='mso-bookmark:_Toc154229489'><span style='mso-bookmark:_Toc152605168'><span
!   style='mso-bookmark:_Toc115416226'>Value: RxNoJumbo</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0,1}<br>
    Default: 0<br>
!   Variable: rx_nojumbo</p>
    <p class=MsoBodyText>If enabled, does not send or indicate that we are able
!   to send or receive RX jumbograms.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:26;height:124.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:124.75pt'>
!   <h5><a name="_Toc154229490"></a><a name="_Toc152605169"></a><a
!   name="_Toc139993219"></a><a name="_Toc126872296"></a><a name="_Toc115416227"></a><a
!   name="_Value_:_RxMaxMTU"></a><span style='mso-bookmark:_Toc154229490'><span
!   style='mso-bookmark:_Toc152605169'>Value: RxMaxMTU</span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
!   Variable: rx_mtu</p>
    <p class=MsoBodyText>If set to anything other than -1, uses that value as the
    maximum MTU supported by the RX interface.</p>
    <p class=MsoBodyText>In order to enable OpenAFS to operate across the Cisco
--- 4690,4744 ----
   <tr style='mso-yfti-irow:23;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268951"></a><a name="_Toc152605166"></a><a
!   name="_Toc115416224"></a><a name="_Toc126872293"></a><a name="_Toc139993216"></a><span
!   style='mso-bookmark:_Toc170268951'><span style='mso-bookmark:_Toc152605166'><span
!   style='mso-bookmark:_Toc115416224'>Value: <span class=SpellE>MaxVCPerServer</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 100<br>
!   Variable: <span class=SpellE>smb_maxVCPerServer</span></p>
    <p class=MsoBodyText>Maximum number of SMB virtual circuits.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:24;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268952"></a><a name="_Toc152605167"></a><a
!   name="_Value_:_Cell"></a><a name="_Toc115416225"></a><a name="_Toc126872294"></a><a
!   name="_Toc139993217"></a><span style='mso-bookmark:_Toc170268952'><span
    style='mso-bookmark:_Toc152605167'>Value: Cell</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
!   Variable: <span class=SpellE>rootCellName</span></p>
!   <p class=MsoBodyText>Name of root cell (the cell from which <span
!   class=SpellE>root.afs</span> should be mounted in \\afs\all).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:25;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170268953"></a><a name="_Toc152605168"></a><a
!   name="_Toc115416226"></a><a name="_Toc126872295"></a><a name="_Toc139993218"></a><span
!   style='mso-bookmark:_Toc170268953'><span style='mso-bookmark:_Toc152605168'><span
!   style='mso-bookmark:_Toc115416226'>Value: <span class=SpellE>RxNoJumbo</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0,1}<br>
    Default: 0<br>
!   Variable: <span class=SpellE>rx_nojumbo</span></p>
    <p class=MsoBodyText>If enabled, does not send or indicate that we are able
!   to send or receive RX <span class=SpellE>jumbograms</span>.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:26;height:124.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:124.75pt'>
!   <h5><a name="_Toc170268954"></a><a name="_Toc152605169"></a><a
!   name="_Value_:_RxMaxMTU"></a><a name="_Toc115416227"></a><a
!   name="_Toc126872296"></a><a name="_Toc139993219"></a><span style='mso-bookmark:
!   _Toc170268954'><span style='mso-bookmark:_Toc152605169'>Value: <span
!   class=SpellE>RxMaxMTU</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
!   Variable: <span class=SpellE>rx_mtu</span></p>
    <p class=MsoBodyText>If set to anything other than -1, uses that value as the
    maximum MTU supported by the RX interface.</p>
    <p class=MsoBodyText>In order to enable OpenAFS to operate across the Cisco
***************
*** 4278,4294 ****
   <tr style='mso-yfti-irow:27;height:151.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:151.75pt'>
!   <h5><a name="_Toc154229491"></a><a name="_Toc152605170"></a><a
!   name="_Toc139993220"></a><a name="_Toc126872297"></a><a name="_Toc115416228"></a><a
!   name="_Value:_ConnDeadTimeout"></a><span style='mso-bookmark:_Toc154229491'><span
!   style='mso-bookmark:_Toc152605170'>Value: ConnDeadTimeout</span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 60 (seconds)<br>
!   Variable: ConnDeadtimeout</p>
    <p class=MsoBodyText>The Connection Dead Time is enforced to be at a minimum
    15 seconds longer than the minimum SMB timeout as specified by
!   [HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters]
!   SessTimeout</p>
    <p class=MsoBodyText>If the minimum SMB timeout is not specified the value is
    45 seconds.&nbsp; See <a
    href="http://support.microsoft.com/support/kb/articles/Q102/0/67.asp">http://support.microsoft.com:80/support/kb/articles/Q102/0/67.asp</a></p>
--- 4748,4765 ----
   <tr style='mso-yfti-irow:27;height:151.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:151.75pt'>
!   <h5><a name="_Toc170268955"></a><a name="_Toc152605170"></a><a
!   name="_Value:_ConnDeadTimeout"></a><a name="_Toc115416228"></a><a
!   name="_Toc126872297"></a><a name="_Toc139993220"></a><span style='mso-bookmark:
!   _Toc170268955'><span style='mso-bookmark:_Toc152605170'>Value: <span
!   class=SpellE>ConnDeadTimeout</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 60 (seconds)<br>
!   Variable: <span class=SpellE>ConnDeadtimeout</span></p>
    <p class=MsoBodyText>The Connection Dead Time is enforced to be at a minimum
    15 seconds longer than the minimum SMB timeout as specified by
!   [HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters] <span
!   class=SpellE>SessTimeout</span></p>
    <p class=MsoBodyText>If the minimum SMB timeout is not specified the value is
    45 seconds.&nbsp; See <a
    href="http://support.microsoft.com/support/kb/articles/Q102/0/67.asp">http://support.microsoft.com:80/support/kb/articles/Q102/0/67.asp</a></p>
***************
*** 4297,4370 ****
   <tr style='mso-yfti-irow:28;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229492"></a><a name="_Toc152605171"></a><a
!   name="_Toc115416229"></a><a name="_Toc139993221"></a><a name="_Toc126872298"></a><span
!   style='mso-bookmark:_Toc154229492'><span style='mso-bookmark:_Toc152605171'><span
!   style='mso-bookmark:_Toc115416229'>Value: HardDeadTimeout</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 120 (seconds)<br>
!   Variable: HardDeadtimeout</p>
    <p class=MsoBodyText>The Hard Dead Time is enforced to be at least double the
!   ConnDeadTimeout.&nbsp; The provides an opportunity for at least one retry.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:29;height:158.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:158.5pt'>
!   <h5><a name="_Toc154229493"></a><a name="_Toc152605172"></a><a
!   name="_Toc139993222"></a><a name="_Toc126872299"></a><a name="_Toc115416230"></a><a
!   name="_Value__:_TraceOption"></a><span style='mso-bookmark:_Toc154229493'><span
!   style='mso-bookmark:_Toc152605172'>Value: TraceOption</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0-15}<br>
    Default: 0</p>
    <p class=MsoBodyText>Enables logging of debug output to the Windows Event
    Log.</p>
    <p class=MsoBodyText>Bit 0 enables logging of &quot;Logon Events&quot;
!   processed by the Network Provider and Winlogon Event Notification
!   Handler.&nbsp; </p>
    <p class=MsoBodyText>Bit 1 enables logging of events captured by the AFS
    Client Service.</p>
!   <p class=MsoBodyText>Bit 2 enables real-time viewing of &quot;fs trace&quot;
!   logging with DbgView or similar tools.</p>
!   <p class=MsoBodyText>Bit 3 enables &quot;fs trace&quot; logging on startup.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:30;height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5><a name="_Toc154229494"></a><a name="_Toc152605173"></a><a
!   name="_Toc115416231"></a><a name="_Toc139993223"></a><a name="_Toc126872300"></a><span
!   style='mso-bookmark:_Toc154229494'><span style='mso-bookmark:_Toc152605173'><span
!   style='mso-bookmark:_Toc115416231'>Value: AllSubmount</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 1</p>
!   <p class=MsoBodyText>Variable: allSubmount (smb.c)</p>
    <p class=MsoBodyText>By setting this value to 0, the
    &quot;\\NetbiosName\all&quot; mount point will not be created.&nbsp; This
!   allows the read-write versions of root.afs to be hidden.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:31;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc154229495"></a><a name="_Toc152605174"></a><a
!   name="_Toc139993224"></a><a name="_Toc126872301"></a><a name="_Toc115416232"></a><a
!   name="_Value___:_NoFindLanaByName"></a><span style='mso-bookmark:_Toc154229495'><span
!   style='mso-bookmark:_Toc152605174'>Value: NoFindLanaByName</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 0</p>
!   <p class=MsoBodyText>Disables the attempt to identity the network adapter to
!   use by looking for an adapter with a display name of &quot;AFS&quot;.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:32;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc154229496"></a><a name="_Toc152605175"></a><a
!   name="_Toc115416233"></a><a name="_Toc139993225"></a><a name="_Toc126872302"></a><span
!   style='mso-bookmark:_Toc154229496'><span style='mso-bookmark:_Toc152605175'><span
!   style='mso-bookmark:_Toc115416233'>Value: MaxCPUs</span></span></span></h5>
!   <p class=MsoBodyText>Type: DWORD {1..32} or {1..64} depending on the architecture<br>
    Default: &lt;no default&gt;</p>
    <p class=MsoBodyText>If this value is specified, afsd_service.exe will
    restrict itself to executing on the specified number of CPUs if there are a
--- 4768,4849 ----
   <tr style='mso-yfti-irow:28;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268956"></a><a name="_Toc152605171"></a><a
!   name="_Toc115416229"></a><a name="_Toc126872298"></a><a name="_Toc139993221"></a><span
!   style='mso-bookmark:_Toc170268956'><span style='mso-bookmark:_Toc152605171'><span
!   style='mso-bookmark:_Toc115416229'>Value: <span class=SpellE>HardDeadTimeout</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 120 (seconds)<br>
!   Variable: <span class=SpellE>HardDeadtimeout</span></p>
    <p class=MsoBodyText>The Hard Dead Time is enforced to be at least double the
!   <span class=SpellE>ConnDeadTimeout</span>.&nbsp; The provides an opportunity
!   for at least one retry.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:29;height:158.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:158.5pt'>
!   <h5><a name="_Toc170268957"></a><a name="_Toc152605172"></a><a
!   name="_Value__:_TraceOption"></a><a name="_Toc115416230"></a><a
!   name="_Toc126872299"></a><a name="_Toc139993222"></a><span style='mso-bookmark:
!   _Toc170268957'><span style='mso-bookmark:_Toc152605172'>Value: <span
!   class=SpellE>TraceOption</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0-15}<br>
    Default: 0</p>
    <p class=MsoBodyText>Enables logging of debug output to the Windows Event
    Log.</p>
    <p class=MsoBodyText>Bit 0 enables logging of &quot;Logon Events&quot;
!   processed by the Network Provider and <span class=SpellE>Winlogon</span>
!   Event Notification Handler.&nbsp; </p>
    <p class=MsoBodyText>Bit 1 enables logging of events captured by the AFS
    Client Service.</p>
!   <p class=MsoBodyText>Bit 2 enables real-time viewing of &quot;<span
!   class=SpellE>fs</span> trace&quot; logging with <span class=SpellE>DbgView</span>
!   or similar tools.</p>
!   <p class=MsoBodyText>Bit 3 enables &quot;<span class=SpellE>fs</span>
!   trace&quot; logging on startup.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:30;height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5><a name="_Toc170268958"></a><a name="_Toc152605173"></a><a
!   name="_Toc115416231"></a><a name="_Toc126872300"></a><a name="_Toc139993223"></a><span
!   style='mso-bookmark:_Toc170268958'><span style='mso-bookmark:_Toc152605173'><span
!   style='mso-bookmark:_Toc115416231'>Value: <span class=SpellE>AllSubmount</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 1</p>
!   <p class=MsoBodyText>Variable: <span class=SpellE>allSubmount</span> (<span
!   class=SpellE>smb.c</span>)</p>
    <p class=MsoBodyText>By setting this value to 0, the
    &quot;\\NetbiosName\all&quot; mount point will not be created.&nbsp; This
!   allows the read-write versions of <span class=SpellE>root.afs</span> to be
!   hidden.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:31;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc170268959"></a><a name="_Toc152605174"></a><a
!   name="_Value___:_NoFindLanaByName"></a><a name="_Toc115416232"></a><a
!   name="_Toc126872301"></a><a name="_Toc139993224"></a><span style='mso-bookmark:
!   _Toc170268959'><span style='mso-bookmark:_Toc152605174'>Value: <span
!   class=SpellE>NoFindLanaByName</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 0</p>
!   <p class=MsoBodyText>Disables the attempt to identity the network adapter to use
!   by looking for an adapter with a display name of &quot;AFS&quot;.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:32;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc170268960"></a><a name="_Toc152605175"></a><a
!   name="_Toc115416233"></a><a name="_Toc126872302"></a><a name="_Toc139993225"></a><span
!   style='mso-bookmark:_Toc170268960'><span style='mso-bookmark:_Toc152605175'><span
!   style='mso-bookmark:_Toc115416233'>Value: <span class=SpellE>MaxCPUs</span></span></span></span></h5>
!   <p class=MsoBodyText>Type: DWORD {1..32} or {1..64} depending on the
!   architecture<br>
    Default: &lt;no default&gt;</p>
    <p class=MsoBodyText>If this value is specified, afsd_service.exe will
    restrict itself to executing on the specified number of CPUs if there are a
***************
*** 4374,4383 ****
   <tr style='mso-yfti-irow:33;height:151.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:151.75pt'>
!   <h5><a name="_Toc154229497"></a><a name="_Toc152605176"></a><a
!   name="_Toc139993226"></a><a name="_Toc126872303"></a><a name="_Toc115416234"></a><a
!   name="_Value___:_smbAuthType"></a><span style='mso-bookmark:_Toc154229497'><span
!   style='mso-bookmark:_Toc152605176'>Value: smbAuthType</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0..2}<br>
    Default: 2</p>
    <p class=MsoBodyText>If this value is specified, it defines the type of SMB
--- 4853,4863 ----
   <tr style='mso-yfti-irow:33;height:151.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:151.75pt'>
!   <h5><a name="_Toc170268961"></a><a name="_Toc152605176"></a><a
!   name="_Value___:_smbAuthType"></a><a name="_Toc115416234"></a><a
!   name="_Toc126872303"></a><a name="_Toc139993226"></a><span style='mso-bookmark:
!   _Toc170268961'><span style='mso-bookmark:_Toc152605176'>Value: <span
!   class=SpellE>smbAuthType</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0..2}<br>
    Default: 2</p>
    <p class=MsoBodyText>If this value is specified, it defines the type of SMB
***************
*** 4392,4416 ****
   <tr style='mso-yfti-irow:34;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229498"></a><a name="_Toc152605177"></a><a
!   name="_Toc139993227"></a><a name="_Toc126872304"></a><a name="_Toc115416235"></a><a
!   name="_Value___:_MaxLogSize"></a><span style='mso-bookmark:_Toc154229498'><span
!   style='mso-bookmark:_Toc152605177'>Value: MaxLogSize</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0 .. MAXDWORD}<br>
    Default: 100K</p>
    <p class=MsoBodyText>This entry determines the maximum size of the
!   %WINDIR%\TEMP\afsd_init.log file.&nbsp; If the file is larger than this value
!   when afsd_service.exe starts the file will be reset to 0 bytes.&nbsp; If this
!   value is 0, it means the file should be allowed to grow indefinitely.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:35;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229499"></a><a name="_Toc152605178"></a><a
!   name="_Toc115416236"></a><a name="_Toc139993228"></a><a name="_Toc126872305"></a><span
!   style='mso-bookmark:_Toc154229499'><span style='mso-bookmark:_Toc152605178'><span
!   style='mso-bookmark:_Toc115416236'>Value: FlushOnHibernate</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0,1}<br>
    Default: 1</p>
    <p class=MsoBodyText>If set, flushes all volumes before the machine goes on
--- 4872,4898 ----
   <tr style='mso-yfti-irow:34;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170268962"></a><a name="_Toc152605177"></a><a
!   name="_Value___:_MaxLogSize"></a><a name="_Toc115416235"></a><a
!   name="_Toc126872304"></a><a name="_Toc139993227"></a><span style='mso-bookmark:
!   _Toc170268962'><span style='mso-bookmark:_Toc152605177'>Value: <span
!   class=SpellE>MaxLogSize</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0 .. MAXDWORD}<br>
    Default: 100K</p>
    <p class=MsoBodyText>This entry determines the maximum size of the
!   %WINDIR%\TEMP\<span class=SpellE>afsd_init.log</span> file.&nbsp; If the file
!   is larger than this value when afsd_service.exe starts the file will be reset
!   to 0 bytes.&nbsp; If this value is 0, it means the file should be allowed to
!   grow indefinitely.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:35;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268963"></a><a name="_Toc152605178"></a><a
!   name="_Toc115416236"></a><a name="_Toc126872305"></a><a name="_Toc139993228"></a><span
!   style='mso-bookmark:_Toc170268963'><span style='mso-bookmark:_Toc152605178'><span
!   style='mso-bookmark:_Toc115416236'>Value: <span class=SpellE>FlushOnHibernate</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0,1}<br>
    Default: 1</p>
    <p class=MsoBodyText>If set, flushes all volumes before the machine goes on
***************
*** 4420,4427 ****
   <tr style='mso-yfti-irow:36;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229500"></a><a name="_Toc152605179"><span
!   style='mso-bookmark:_Toc154229500'>Value: daemonCheckDownInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 180</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
--- 4902,4910 ----
   <tr style='mso-yfti-irow:36;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268964"></a><a name="_Toc152605179"><span
!   style='mso-bookmark:_Toc170268964'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605179'><span style='mso-bookmark:_Toc170268964'>daemonCheckDownInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 180</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
***************
*** 4432,4439 ****
   <tr style='mso-yfti-irow:37;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229501"></a><a name="_Toc152605180"><span
!   style='mso-bookmark:_Toc154229501'>Value: daemonCheckUpInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 600</p>
    <p class=MsoBodyText>This value controls how frequently the AFS cache manager
--- 4915,4923 ----
   <tr style='mso-yfti-irow:37;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268965"></a><a name="_Toc152605180"><span
!   style='mso-bookmark:_Toc170268965'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605180'><span style='mso-bookmark:_Toc170268965'>daemonCheckUpInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 600</p>
    <p class=MsoBodyText>This value controls how frequently the AFS cache manager
***************
*** 4443,4450 ****
   <tr style='mso-yfti-irow:38;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229502"></a><a name="_Toc152605181"><span
!   style='mso-bookmark:_Toc154229502'>Value: daemonCheckVolInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 3600</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
--- 4927,4935 ----
   <tr style='mso-yfti-irow:38;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268966"></a><a name="_Toc152605181"><span
!   style='mso-bookmark:_Toc170268966'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605181'><span style='mso-bookmark:_Toc170268966'>daemonCheckVolInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 3600</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
***************
*** 4455,4473 ****
   <tr style='mso-yfti-irow:39;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229503"></a><a name="_Toc152605182"><span
!   style='mso-bookmark:_Toc154229503'>Value: daemonCheckCBInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 60</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
!   value controls how frequently the AFS cache manager checks for callback invalidation.<o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:40;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229504"></a><a name="_Toc152605183"><span
!   style='mso-bookmark:_Toc154229504'>Value: daemonCheckLockInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 60</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
--- 4940,4961 ----
   <tr style='mso-yfti-irow:39;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268967"></a><a name="_Toc152605182"><span
!   style='mso-bookmark:_Toc170268967'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605182'><span style='mso-bookmark:_Toc170268967'>daemonCheckCBInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 60</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
!   value controls how frequently the AFS cache manager checks for callback
!   invalidation.<o:p></o:p></span></p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:40;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268968"></a><a name="_Toc152605183"><span
!   style='mso-bookmark:_Toc170268968'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605183'><span style='mso-bookmark:_Toc170268968'>daemonCheckLockInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 60</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
***************
*** 4478,4485 ****
   <tr style='mso-yfti-irow:41;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229505"></a><a name="_Toc152605184"><span
!   style='mso-bookmark:_Toc154229505'>Value: daemonTokenCheckInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 180</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
--- 4966,4974 ----
   <tr style='mso-yfti-irow:41;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268969"></a><a name="_Toc152605184"><span
!   style='mso-bookmark:_Toc170268969'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605184'><span style='mso-bookmark:_Toc170268969'>daemonCheckTokenInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (seconds)<br>
    Default: 180</p>
    <p class=MsoBodyText><span style='mso-fareast-font-family:"Times New Roman"'>This
***************
*** 4490,4497 ****
   <tr style='mso-yfti-irow:42;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229506"></a><a name="_Toc152605185"><span
!   style='mso-bookmark:_Toc154229506'>Value: CallBackPort</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 7001</p>
    <p class=MsoBodyText>This value specifies which port number should be used
--- 4979,5000 ----
   <tr style='mso-yfti-irow:42;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268970">Value: </a><span class=SpellE><span
!   style='mso-bookmark:_Toc170268970'>daemonCheckOfflineVolInterval</span></span></h5>
!   <p class=MsoBodyText>Type: DWORD (seconds)<br>
!   Default: 600</p>
!   <p class=MsoBodyText>This value controls how frequently the AFS cache manager
!   checks offline volumes to see if they have come back online.<span
!   style='mso-spacerun:yes'>  </span>At the same time volumes which were
!   determined to be busy have their state reset to online.</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:43;height:65.75pt'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
!   height:65.75pt'>
!   <h5><a name="_Toc170268971"></a><a name="_Toc152605185"><span
!   style='mso-bookmark:_Toc170268971'>Value: </span></a><span class=SpellE><span
!   style='mso-bookmark:_Toc152605185'><span style='mso-bookmark:_Toc170268971'>CallBackPort</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 7001</p>
    <p class=MsoBodyText>This value specifies which port number should be used
***************
*** 4502,4513 ****
    configured.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:43;mso-yfti-lastrow:yes;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229507"></a><a name="_Toc152605186"></a><a
!   name="_Value:_EnableServerLocks"></a><span style='mso-bookmark:_Toc154229507'><span
!   style='mso-bookmark:_Toc152605186'>Value: EnableServerLocks</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1, 2}<br>
    Default: 1</p>
    <p class=MsoBodyText>Determines whether or not the AFS file server is
--- 5005,5016 ----
    configured.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:44;mso-yfti-lastrow:yes;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268972"></a><a name="_Toc152605186"></a><a
!   name="_Value:_EnableServerLocks"></a><span style='mso-bookmark:_Toc170268972'><span
!   style='mso-bookmark:_Toc152605186'>Value: <span class=SpellE>EnableServerLocks</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1, 2}<br>
    Default: 1</p>
    <p class=MsoBodyText>Determines whether or not the AFS file server is
***************
*** 4522,4531 ****
   </tr>
  </table>
  
! <h3><a name="_Toc154229508"></a><a name="_Toc152605187"></a><a
  name="_Toc115416237"></a><a name="_Toc139993229"></a><a name="_Toc126872306"></a><span
! style='mso-bookmark:_Toc154229508'><span style='mso-bookmark:_Toc152605187'><span
! style='mso-bookmark:_Toc115416237'>Regkey:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5025,5036 ----
   </tr>
  </table>
  
! <h3><a name="_Toc170268973"></a><a name="_Toc152605187"></a><a
  name="_Toc115416237"></a><a name="_Toc139993229"></a><a name="_Toc126872306"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268973'><span style='mso-bookmark:
! _Toc152605187'><span style='mso-bookmark:_Toc115416237'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268973'><span style='mso-bookmark:_Toc152605187'><span
! style='mso-bookmark:_Toc115416237'>:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4534,4557 ****
    height:65.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.0pt'>
!   <h5><a name="_Toc154229509"></a><a name="_Toc152605188"></a><a
!   name="_Toc115416238"></a><a name="_Toc139993230"></a><a name="_Toc126872307"></a><span
!   style='mso-bookmark:_Toc154229509'><span style='mso-bookmark:_Toc152605188'><span
    style='mso-bookmark:_Toc115416238'>Value: &lt;Drive Letter:&gt; for example
    &quot;G:&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ</p>
!   <p class=MsoBodyText>Specifies the submount name to be mapped by
!   afsd_service.exe at startup to the provided drive letter.</p>
    <p class=MsoBodyText><b style='mso-bidi-font-weight:normal'><i
    style='mso-bidi-font-style:normal'>This option is deprecated.<o:p></o:p></i></b></p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229510"></a><a name="_Toc152605189"></a><a
  name="_Toc115416239"></a><a name="_Toc139993231"></a><a name="_Toc126872308"></a><span
! style='mso-bookmark:_Toc154229510'><span style='mso-bookmark:_Toc152605189'><span
! style='mso-bookmark:_Toc115416239'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5039,5064 ----
    height:65.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.0pt'>
!   <h5><a name="_Toc170268974"></a><a name="_Toc152605188"></a><a
!   name="_Toc115416238"></a><a name="_Toc126872307"></a><a name="_Toc139993230"></a><span
!   style='mso-bookmark:_Toc170268974'><span style='mso-bookmark:_Toc152605188'><span
    style='mso-bookmark:_Toc115416238'>Value: &lt;Drive Letter:&gt; for example
    &quot;G:&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ</p>
!   <p class=MsoBodyText>Specifies the <span class=SpellE>submount</span> name to
!   be mapped by afsd_service.exe at startup to the provided drive letter.</p>
    <p class=MsoBodyText><b style='mso-bidi-font-weight:normal'><i
    style='mso-bidi-font-style:normal'>This option is deprecated.<o:p></o:p></i></b></p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170268975"></a><a name="_Toc152605189"></a><a
  name="_Toc115416239"></a><a name="_Toc139993231"></a><a name="_Toc126872308"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268975'><span style='mso-bookmark:
! _Toc152605189'><span style='mso-bookmark:_Toc115416239'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268975'><span style='mso-bookmark:_Toc152605189'><span
! style='mso-bookmark:_Toc115416239'>:<br>
  [HKLM\SOFTWARE\OpenAFS\Client]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4559,4582 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc154229511"></a><a name="_Toc152605190"></a><a
!   name="_Toc139993232"></a><a name="_Toc126872309"></a><a name="_Toc115416240"></a><a
!   name="_Value___:_CellServDBDir"></a><span style='mso-bookmark:_Toc154229511'><span
!   style='mso-bookmark:_Toc152605190'>Value: CellServDBDir</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;not defined&gt;</p>
!   <p class=MsoBodyText>Specifies the directory containing the CellServDB
!   file.&nbsp; When this value is not specified, the AFS Client install
!   directory is used.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5><a name="_Toc154229512"></a><a name="_Toc152605191"></a><a
!   name="_Toc139993233"></a><a name="_Toc126872310"></a><a name="_Toc115416241"></a><a
!   name="_Value___:_VerifyServiceSignature"></a><span style='mso-bookmark:_Toc154229512'><span
!   style='mso-bookmark:_Toc152605191'>Value: VerifyServiceSignature</span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x1</p>
    <p class=MsoBodyText>This value can be used to disable the runtime
--- 5066,5091 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc170268976"></a><a name="_Toc152605190"></a><a
!   name="_Value___:_CellServDBDir"></a><a name="_Toc115416240"></a><a
!   name="_Toc126872309"></a><a name="_Toc139993232"></a><span style='mso-bookmark:
!   _Toc170268976'><span style='mso-bookmark:_Toc152605190'>Value: <span
!   class=SpellE>CellServDBDir</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;not defined&gt;</p>
!   <p class=MsoBodyText>Specifies the directory containing the <span
!   class=SpellE>CellServDB</span> file.&nbsp; When this value is not specified,
!   the AFS Client install directory is used.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5><a name="_Toc170268977"></a><a name="_Toc152605191"></a><a
!   name="_Value___:_VerifyServiceSignature"></a><a name="_Toc115416241"></a><a
!   name="_Toc126872310"></a><a name="_Toc139993233"></a><span style='mso-bookmark:
!   _Toc170268977'><span style='mso-bookmark:_Toc152605191'>Value: <span
!   class=SpellE>VerifyServiceSignature</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x1</p>
    <p class=MsoBodyText>This value can be used to disable the runtime
***************
*** 4593,4670 ****
   <tr style='mso-yfti-irow:2;height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc154229513"></a><a name="_Toc152605192"></a><a
!   name="_Toc139993234"></a><a name="_Toc126872311"></a><a name="_Toc115416242"></a><a
!   name="_Value___:_IoctlDebug"></a><span style='mso-bookmark:_Toc154229513'><span
!   style='mso-bookmark:_Toc152605192'>Value: IoctlDebug</span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x0</p>
!   <p class=MsoBodyText>This value can be used to debug the cause of pioctl()
!   failures.&nbsp; Set a non-zero value and the pioctl() library will output
!   status information to stdout.&nbsp; Executing command line tools such as
!   tokens.exe, fs.exe, etc can then be used to determine why the pioctl() call
!   is failing. </p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3;height:330.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:330.75pt'>
!   <h5><a name="_Toc154229514"></a><a name="_Toc152605193"></a><a
!   name="_Toc115416243"></a><a name="_Toc139993235"></a><a name="_Toc126872312"></a><span
!   style='mso-bookmark:_Toc154229514'><span style='mso-bookmark:_Toc152605193'><span
!   style='mso-bookmark:_Toc115416243'>Value: MiniDumpType</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
!   Default: 0x0 (MiniDumpNormal)</p>
!   <p class=MsoBodyText>This value is used to specify the type of minidump
!   generated by afsd_service.exe either when the process crashes or when a user
!   initiated is dump file is generated with the &quot;fs.exe minidump&quot;
!   command.</p>
    <p class=MsoBodyText>Valid values are dependent on the version of DbgHelp.dll
    installed on the machine.&nbsp; See the Microsoft Developer Library for
    further information.</p>
!   <p class=MsoBodyText>MiniDumpNormal = 0x00000000,<br>
!   MiniDumpWithDataSegs = 0x00000001,<br>
!   MiniDumpWithFullMemory = 0x00000002,<br>
!   MiniDumpWithHandleData = 0x00000004,<br>
!   MiniDumpFilterMemory = 0x00000008,<br>
!   MiniDumpScanMemory = 0x00000010,<br>
!   MiniDumpWithUnloadedModules = 0x00000020,<br>
!   MiniDumpWithIndirectlyReferencedMemory = 0x00000040,<br>
!   MiniDumpFilterModulePaths = 0x00000080,<br>
!   MiniDumpWithProcessThreadData = 0x00000100,<br>
!   MiniDumpWithPrivateReadWriteMemory = 0x00000200,<br>
!   MiniDumpWithoutOptionalData = 0x00000400,<br>
!   MiniDumpWithFullMemoryInfo = 0x00000800,<br>
!   MiniDumpWithThreadInfo = 0x00001000,<br>
!   MiniDumpWithCodeSegs = 0x00002000</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes;height:138.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:138.25pt'>
!   <h5><a name="_Toc154229515"></a><a name="_Toc152605194"></a><a
!   name="_Toc139993236"></a><a name="_Toc126872313"></a><a name="_Toc115416244"></a><a
!   name="_Value___:_StoreAnsiFilenames"></a><span style='mso-bookmark:_Toc154229515'><span
!   style='mso-bookmark:_Toc152605194'>Value: StoreAnsiFilenames</span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x0</p>
!   <p class=MsoBodyText>This value can be used to force the AFS Client Service to
!   store filenames using the Windows system's ANSI character set instead of the
!   OEM Code Page character set which has traditionally been used by SMB file
    systems.&nbsp; </p>
    <p class=MsoBodyText>Note: The use of ANSI characters will render access to
!   files with 8-bit OEM file names unaccessible from Windows.&nbsp; This option
!   is of use primarily when you wish to allow file names produced on Windows to
!   be accessible from Latin-1 UNIX systems and vice versa.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229516"></a><a name="_Toc152605195"></a><a
  name="_Toc115416245"></a><a name="_Toc139993237"></a><a name="_Toc126872314"></a><span
! style='mso-bookmark:_Toc154229516'><span style='mso-bookmark:_Toc152605195'><span
! style='mso-bookmark:_Toc115416245'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
--- 5102,5186 ----
   <tr style='mso-yfti-irow:2;height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc170268978"></a><a name="_Toc152605192"></a><a
!   name="_Value___:_IoctlDebug"></a><a name="_Toc115416242"></a><a
!   name="_Toc126872311"></a><a name="_Toc139993234"></a><a
!   name="_Value:_IoctlDebug"></a><span style='mso-bookmark:_Toc170268978'><span
!   style='mso-bookmark:_Toc152605192'>Value: <span class=SpellE>IoctlDebug</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x0</p>
!   <p class=MsoBodyText>This value can be used to debug the cause of <span
!   class=SpellE>pioctl</span>() failures.&nbsp; Set a non-zero value and the <span
!   class=SpellE>pioctl</span>() library will output status information to <span
!   class=SpellE>stdout</span>.&nbsp; Executing command line tools such as
!   tokens.exe, fs.exe, etc can then be used to determine why the <span
!   class=SpellE>pioctl</span>() call is failing. </p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3;height:330.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:330.75pt'>
!   <h5><a name="_Toc170268979"></a><a name="_Toc152605193"></a><a
!   name="_Toc115416243"></a><a name="_Toc126872312"></a><a name="_Toc139993235"></a><span
!   style='mso-bookmark:_Toc170268979'><span style='mso-bookmark:_Toc152605193'><span
!   style='mso-bookmark:_Toc115416243'>Value: <span class=SpellE>MiniDumpType</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
!   Default: 0x0 (<span class=SpellE>MiniDumpNormal</span>)</p>
!   <p class=MsoBodyText>This value is used to specify the type of <span
!   class=SpellE>minidump</span> generated by afsd_service.exe either when the
!   process crashes or when a user initiated is dump file is generated with the
!   &quot;fs.exe <span class=SpellE>minidump</span>&quot; command.</p>
    <p class=MsoBodyText>Valid values are dependent on the version of DbgHelp.dll
    installed on the machine.&nbsp; See the Microsoft Developer Library for
    further information.</p>
!   <p class=MsoBodyText><span class=SpellE>MiniDumpNormal</span> = 0x00000000,<br>
!   <span class=SpellE>MiniDumpWithDataSegs</span> = 0x00000001,<br>
!   <span class=SpellE>MiniDumpWithFullMemory</span> = 0x00000002,<br>
!   <span class=SpellE>MiniDumpWithHandleData</span> = 0x00000004,<br>
!   <span class=SpellE>MiniDumpFilterMemory</span> = 0x00000008,<br>
!   <span class=SpellE>MiniDumpScanMemory</span> = 0x00000010,<br>
!   <span class=SpellE>MiniDumpWithUnloadedModules</span> = 0x00000020,<br>
!   <span class=SpellE>MiniDumpWithIndirectlyReferencedMemory</span> =
!   0x00000040,<br>
!   <span class=SpellE>MiniDumpFilterModulePaths</span> = 0x00000080,<br>
!   <span class=SpellE>MiniDumpWithProcessThreadData</span> = 0x00000100,<br>
!   <span class=SpellE>MiniDumpWithPrivateReadWriteMemory</span> = 0x00000200,<br>
!   <span class=SpellE>MiniDumpWithoutOptionalData</span> = 0x00000400,<br>
!   <span class=SpellE>MiniDumpWithFullMemoryInfo</span> = 0x00000800,<br>
!   <span class=SpellE>MiniDumpWithThreadInfo</span> = 0x00001000,<br>
!   <span class=SpellE>MiniDumpWithCodeSegs</span> = 0x00002000</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes;height:138.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:138.25pt'>
!   <h5><a name="_Toc170268980"></a><a name="_Toc152605194"></a><a
!   name="_Value___:_StoreAnsiFilenames"></a><a name="_Toc115416244"></a><a
!   name="_Toc126872313"></a><a name="_Toc139993236"></a><span style='mso-bookmark:
!   _Toc170268980'><span style='mso-bookmark:_Toc152605194'>Value: <span
!   class=SpellE>StoreAnsiFilenames</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x0</p>
!   <p class=MsoBodyText>This value can be used to force the AFS Client Service
!   to store filenames using the Windows system's ANSI character set instead of
!   the OEM Code Page character set which has traditionally been used by SMB file
    systems.&nbsp; </p>
    <p class=MsoBodyText>Note: The use of ANSI characters will render access to
!   files with 8-bit OEM file names <span class=SpellE>unaccessible</span> from
!   Windows.&nbsp; This option is of use primarily when you wish to allow file
!   names produced on Windows to be accessible from Latin-1 UNIX systems and vice
!   versa.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170268981"></a><a name="_Toc152605195"></a><a
  name="_Toc115416245"></a><a name="_Toc139993237"></a><a name="_Toc126872314"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268981'><span style='mso-bookmark:
! _Toc152605195'><span style='mso-bookmark:_Toc115416245'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268981'><span style='mso-bookmark:_Toc152605195'><span
! style='mso-bookmark:_Toc115416245'>:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\<span class=SpellE>CSCPolicy</span>]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
***************
*** 4672,4681 ****
    height:112.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:112.0pt'>
!   <h5><a name="_Toc154229517"></a><a name="_Toc152605196"></a><a
!   name="_Toc115416246"></a><a name="_Toc139993238"></a><a name="_Toc126872315"></a><span
!   style='mso-bookmark:_Toc154229517'><span style='mso-bookmark:_Toc152605196'><span
!   style='mso-bookmark:_Toc115416246'>Value: &quot;smb/cifs share name&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to map SMB/CIFS shares to Client Side
--- 5188,5198 ----
    height:112.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:112.0pt'>
!   <h5><a name="_Toc170268982"></a><a name="_Toc152605196"></a><a
!   name="_Toc115416246"></a><a name="_Toc126872315"></a><a name="_Toc139993238"></a><span
!   style='mso-bookmark:_Toc170268982'><span style='mso-bookmark:_Toc152605196'><span
!   style='mso-bookmark:_Toc115416246'>Value: &quot;<span class=SpellE>smb/cifs</span>
!   share name&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to map SMB/CIFS shares to Client Side
***************
*** 4687,4696 ****
   </tr>
  </table>
  
! <h3><a name="_Toc154229518"></a><a name="_Toc152605197"></a><a
  name="_Toc139993239"></a><a name="_Toc126872316"></a><a name="_Toc115416247"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie"></a><span style='mso-bookmark:_Toc154229518'><span
! style='mso-bookmark:_Toc152605197'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5204,5214 ----
   </tr>
  </table>
  
! <h3><a name="_Toc170268983"></a><a name="_Toc152605197"></a><a
  name="_Toc139993239"></a><a name="_Toc126872316"></a><a name="_Toc115416247"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie"></a><span class=SpellE><span
! style='mso-bookmark:_Toc170268983'><span style='mso-bookmark:_Toc152605197'>Regkey</span></span></span><span
! style='mso-bookmark:_Toc170268983'><span style='mso-bookmark:_Toc152605197'>:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4699,4724 ****
    height:138.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:138.5pt'>
!   <h5><a name="_Toc154229519"></a><a name="_Toc152605198"></a><a
!   name="_Toc115416248"></a><a name="_Toc139993240"></a><a name="_Toc126872317"></a><span
!   style='mso-bookmark:_Toc154229519'><span style='mso-bookmark:_Toc152605198'><span
    style='mso-bookmark:_Toc115416248'>Value: &quot;numeric value&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to store dot terminated mount point
!   strings for use in constructing the fake root.afs volume when Freelance (dynamic
!   roots) mode is activated.</p>
!   <p class=MsoBodyText>&quot;athena.mit.edu#athena.mit.edu:root.cell.&quot;</p>
!   <p class=MsoBodyText>&quot;.athena.mit.edu%athena.mit.edu:root.cell.&quot;</p>
    <p class=MsoBodyText>These values used to be stored in afs_freelance.ini</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229520"></a><a name="_Toc152605199"></a><a
  name="_Toc139993241"></a><a name="_Toc126872318"></a><a name="_Toc115416249"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_1"></a><span style='mso-bookmark:
! _Toc154229520'><span style='mso-bookmark:_Toc152605199'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5217,5243 ----
    height:138.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:138.5pt'>
!   <h5><a name="_Toc170268984"></a><a name="_Toc152605198"></a><a
!   name="_Toc115416248"></a><a name="_Toc126872317"></a><a name="_Toc139993240"></a><span
!   style='mso-bookmark:_Toc170268984'><span style='mso-bookmark:_Toc152605198'><span
    style='mso-bookmark:_Toc115416248'>Value: &quot;numeric value&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to store dot terminated mount point
!   strings for use in constructing the fake <span class=SpellE>root.afs</span>
!   volume when Freelance (dynamic roots) mode is activated.</p>
!   <p class=MsoBodyText>&quot;<span class=SpellE>athena.mit.edu#athena.mit.edu:root.cell</span>.&quot;</p>
!   <p class=MsoBodyText>&quot;.<span class=SpellE>athena.mit.edu%athena.mit.edu:root.cell</span>.&quot;</p>
    <p class=MsoBodyText>These values used to be stored in afs_freelance.ini</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170268985"></a><a name="_Toc152605199"></a><a
  name="_Toc139993241"></a><a name="_Toc126872318"></a><a name="_Toc115416249"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_1"></a><span class=SpellE><span
! style='mso-bookmark:_Toc170268985'><span style='mso-bookmark:_Toc152605199'>Regkey</span></span></span><span
! style='mso-bookmark:_Toc170268985'><span style='mso-bookmark:_Toc152605199'>:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4727,4754 ****
    height:145.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.0pt'>
!   <h5><a name="_Toc154229521"></a><a name="_Toc152605200"></a><a
!   name="_Toc115416250"></a><a name="_Toc139993242"></a><a name="_Toc126872319"></a><span
!   style='mso-bookmark:_Toc154229521'><span style='mso-bookmark:_Toc152605200'><span
    style='mso-bookmark:_Toc115416250'>Value: &quot;numeric value&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText>This key is used to store a dot terminated symlink
!   strings for use in constructing the fake root.afs volume when Freelance
!   (dynamic roots) mode is activated.</p>
!   <p class=MsoBodyText>&quot;linkname:destination-path.&quot;</p>
    <p class=MsoBodyText>&quot;athena:athena.mit.edu.&quot;</p>
!   <p class=MsoBodyText>&quot;home:athena.mit.edu\user\j\a\jaltman.&quot;</p>
!   <p class=MsoBodyText>&quot;filename:path\file.&quot;</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229522"></a><a name="_Toc152605201"></a><a
  name="_Toc115416251"></a><a name="_Toc139993243"></a><a name="_Toc126872320"></a><span
! style='mso-bookmark:_Toc154229522'><span style='mso-bookmark:_Toc152605201'><span
! style='mso-bookmark:_Toc115416251'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
--- 5246,5276 ----
    height:145.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.0pt'>
!   <h5><a name="_Toc170268986"></a><a name="_Toc152605200"></a><a
!   name="_Toc115416250"></a><a name="_Toc126872319"></a><a name="_Toc139993242"></a><span
!   style='mso-bookmark:_Toc170268986'><span style='mso-bookmark:_Toc152605200'><span
    style='mso-bookmark:_Toc115416250'>Value: &quot;numeric value&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText>This key is used to store a dot terminated <span
!   class=SpellE>symlink</span> strings for use in constructing the fake <span
!   class=SpellE>root.afs</span> volume when Freelance (dynamic roots) mode is
!   activated.</p>
!   <p class=MsoBodyText>&quot;<span class=SpellE>linkname:destination</span>-path.&quot;</p>
    <p class=MsoBodyText>&quot;athena:athena.mit.edu.&quot;</p>
!   <p class=MsoBodyText>&quot;<span class=SpellE>home:athena.mit.edu\user\j\a\jaltman</span>.&quot;</p>
!   <p class=MsoBodyText>&quot;<span class=SpellE>filename:path</span>\file.&quot;</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170268987"></a><a name="_Toc152605201"></a><a
  name="_Toc115416251"></a><a name="_Toc139993243"></a><a name="_Toc126872320"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268987'><span style='mso-bookmark:
! _Toc152605201'><span style='mso-bookmark:_Toc115416251'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268987'><span style='mso-bookmark:_Toc152605201'><span
! style='mso-bookmark:_Toc115416251'>:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\<span class=SpellE>Submounts</span>]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
***************
*** 4756,4784 ****
    height:171.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:171.75pt'>
!   <h5><a name="_Toc154229523"></a><a name="_Toc152605202"></a><a
!   name="_Toc115416252"></a><a name="_Toc139993244"></a><a name="_Toc126872321"></a><span
!   style='mso-bookmark:_Toc154229523'><span style='mso-bookmark:_Toc152605202'><span
!   style='mso-bookmark:_Toc115416252'>Value: &quot;submount name&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_EXPAND_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText>This key is used to store mappings of UNIX style AFS paths
!   to submount names which can be referenced as UNC paths.&nbsp; For example the
!   submount string “/athena.mit.edu/user/j/a/jaltman&quot; can be associated
!   with the submount name &quot;jaltman.home&quot;.&nbsp; This can then be
!   referenced as the UNC path \\AFS\jaltman.home.</p>
    <p class=MsoBodyText>These values used to be stored in afsdsbmt.ini</p>
!   <p class=MsoBodyText>NOTE: Submounts should no longer be used with OpenAFS.
!   Use the Windows Explorer to create drive mappings to AFS UNC paths instead of
!   using the AFS Submount mechanism.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229524"></a><a name="_Toc152605203"></a><a
  name="_Toc139993245"></a><a name="_Toc126872322"></a><a name="_Toc115416253"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_2"></a><span style='mso-bookmark:
! _Toc154229524'><span style='mso-bookmark:_Toc152605203'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5278,5310 ----
    height:171.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:171.75pt'>
!   <h5><a name="_Toc170268988"></a><a name="_Toc152605202"></a><a
!   name="_Toc115416252"></a><a name="_Toc126872321"></a><a name="_Toc139993244"></a><span
!   style='mso-bookmark:_Toc170268988'><span style='mso-bookmark:_Toc152605202'><span
!   style='mso-bookmark:_Toc115416252'>Value: &quot;<span class=SpellE>submount</span>
!   name&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_EXPAND_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText>This key is used to store mappings of UNIX style AFS
!   paths to <span class=SpellE>submount</span> names which can be referenced as
!   UNC paths.&nbsp; For example the <span class=SpellE>submount</span> string “/<span
!   class=SpellE>athena.mit.edu/user/j/a/jaltman</span>&quot; can be associated
!   with the <span class=SpellE>submount</span> name &quot;<span class=SpellE>jaltman.home</span>&quot;.&nbsp;
!   This can then be referenced as the UNC path \\AFS\jaltman.home.</p>
    <p class=MsoBodyText>These values used to be stored in afsdsbmt.ini</p>
!   <p class=MsoBodyText>NOTE: <span class=SpellE>Submounts</span> should no
!   longer be used with OpenAFS. Use the Windows Explorer to create drive
!   mappings to AFS UNC paths instead of using the AFS <span class=SpellE>Submount</span>
!   mechanism.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170268989"></a><a name="_Toc152605203"></a><a
  name="_Toc139993245"></a><a name="_Toc126872322"></a><a name="_Toc115416253"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_2"></a><span class=SpellE><span
! style='mso-bookmark:_Toc170268989'><span style='mso-bookmark:_Toc152605203'>Regkey</span></span></span><span
! style='mso-bookmark:_Toc170268989'><span style='mso-bookmark:_Toc152605203'>:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4787,4796 ****
    height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc154229525"></a><a name="_Toc152605204"></a><a
!   name="_Toc115416254"></a><a name="_Toc139993246"></a><a name="_Toc126872323"></a><span
!   style='mso-bookmark:_Toc154229525'><span style='mso-bookmark:_Toc152605204'><span
!   style='mso-bookmark:_Toc115416254'>Value: &quot;hostname or ip address&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to specify a default set of VLDB server
--- 5313,5323 ----
    height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc170268990"></a><a name="_Toc152605204"></a><a
!   name="_Toc115416254"></a><a name="_Toc126872323"></a><a name="_Toc139993246"></a><span
!   style='mso-bookmark:_Toc170268990'><span style='mso-bookmark:_Toc152605204'><span
!   style='mso-bookmark:_Toc115416254'>Value: &quot;hostname or <span
!   class=SpellE>ip</span> address&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to specify a default set of VLDB server
***************
*** 4802,4811 ****
   </tr>
  </table>
  
! <h3><a name="_Toc154229526"></a><a name="_Toc152605205"></a><a
  name="_Toc115416255"></a><a name="_Toc139993247"></a><a name="_Toc126872324"></a><span
! style='mso-bookmark:_Toc154229526'><span style='mso-bookmark:_Toc152605205'><span
! style='mso-bookmark:_Toc115416255'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5329,5340 ----
   </tr>
  </table>
  
! <h3><a name="_Toc170268991"></a><a name="_Toc152605205"></a><a
  name="_Toc115416255"></a><a name="_Toc139993247"></a><a name="_Toc126872324"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268991'><span style='mso-bookmark:
! _Toc152605205'><span style='mso-bookmark:_Toc115416255'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268991'><span style='mso-bookmark:_Toc152605205'><span
! style='mso-bookmark:_Toc115416255'>:<br>
  [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4814,4823 ****
    height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc154229527"></a><a name="_Toc152605206"></a><a
!   name="_Toc115416256"></a><a name="_Toc139993248"></a><a name="_Toc126872325"></a><span
!   style='mso-bookmark:_Toc154229527'><span style='mso-bookmark:_Toc152605206'><span
!   style='mso-bookmark:_Toc115416256'>Value: &quot;hostname or ip address&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to specify a default set of File server
--- 5343,5353 ----
    height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc170268992"></a><a name="_Toc152605206"></a><a
!   name="_Toc115416256"></a><a name="_Toc126872325"></a><a name="_Toc139993248"></a><span
!   style='mso-bookmark:_Toc170268992'><span style='mso-bookmark:_Toc152605206'><span
!   style='mso-bookmark:_Toc115416256'>Value: &quot;hostname or <span
!   class=SpellE>ip</span> address&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: &lt;none&gt;</p>
    <p class=MsoBodyText>This key is used to specify a default set of File server
***************
*** 4829,4846 ****
   </tr>
  </table>
  
! <h2><a name="_Toc154229528"></a><a name="_Toc152605207"></a><a
  name="_Toc115416257"></a><a name="_Toc139993249"></a><a name="_Toc126872326"></a><a
! name="_Toc115417105"></a><span style='mso-bookmark:_Toc154229528'><span
  style='mso-bookmark:_Toc152605207'><span style='mso-bookmark:_Toc115416257'>A.2.
  Integrated Logon Network provider parameters</span></span></span></h2>
  
  <p class=MsoBodyText>Affects the network provider (afslogon.dll).</p>
  
! <h3><a name="_Toc154229529"></a><a name="_Toc152605208"></a><a
  name="_Toc115416258"></a><a name="_Toc139993250"></a><a name="_Toc126872327"></a><span
! style='mso-bookmark:_Toc154229529'><span style='mso-bookmark:_Toc152605208'><span
! style='mso-bookmark:_Toc115416258'>Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5359,5378 ----
   </tr>
  </table>
  
! <h2><a name="_Toc170268993"></a><a name="_Toc152605207"></a><a
  name="_Toc115416257"></a><a name="_Toc139993249"></a><a name="_Toc126872326"></a><a
! name="_Toc115417105"></a><span style='mso-bookmark:_Toc170268993'><span
  style='mso-bookmark:_Toc152605207'><span style='mso-bookmark:_Toc115416257'>A.2.
  Integrated Logon Network provider parameters</span></span></span></h2>
  
  <p class=MsoBodyText>Affects the network provider (afslogon.dll).</p>
  
! <h3><a name="_Toc170268994"></a><a name="_Toc152605208"></a><a
  name="_Toc115416258"></a><a name="_Toc139993250"></a><a name="_Toc126872327"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268994'><span style='mso-bookmark:
! _Toc152605208'><span style='mso-bookmark:_Toc115416258'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268994'><span style='mso-bookmark:_Toc152605208'><span
! style='mso-bookmark:_Toc115416258'>:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4849,4858 ****
    height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229530"></a><a name="_Toc152605209"></a><a
!   name="_Toc115416259"></a><a name="_Toc139993251"></a><a name="_Toc126872328"></a><span
!   style='mso-bookmark:_Toc154229530'><span style='mso-bookmark:_Toc152605209'><span
!   style='mso-bookmark:_Toc115416259'>Value: FailLoginsSilently</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 0</p>
    <p class=MsoBodyText>Do not display message boxes if the login fails.</p>
--- 5381,5390 ----
    height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268995"></a><a name="_Toc152605209"></a><a
!   name="_Toc115416259"></a><a name="_Toc126872328"></a><a name="_Toc139993251"></a><span
!   style='mso-bookmark:_Toc170268995'><span style='mso-bookmark:_Toc152605209'><span
!   style='mso-bookmark:_Toc115416259'>Value: <span class=SpellE>FailLoginsSilently</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 0</p>
    <p class=MsoBodyText>Do not display message boxes if the login fails.</p>
***************
*** 4860,4869 ****
   </tr>
  </table>
  
! <h3><a name="_Toc154229531"></a><a name="_Toc152605210"></a><a
  name="_Toc115416260"></a><a name="_Toc139993252"></a><a name="_Toc126872329"></a><span
! style='mso-bookmark:_Toc154229531'><span style='mso-bookmark:_Toc152605210'><span
! style='mso-bookmark:_Toc115416260'>Regkey:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5392,5403 ----
   </tr>
  </table>
  
! <h3><a name="_Toc170268996"></a><a name="_Toc152605210"></a><a
  name="_Toc115416260"></a><a name="_Toc139993252"></a><a name="_Toc126872329"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170268996'><span style='mso-bookmark:
! _Toc152605210'><span style='mso-bookmark:_Toc115416260'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170268996'><span style='mso-bookmark:_Toc152605210'><span
! style='mso-bookmark:_Toc115416260'>:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 4871,4880 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229532"></a><a name="_Toc152605211"></a><a
!   name="_Toc115416261"></a><a name="_Toc139993253"></a><a name="_Toc126872330"></a><span
!   style='mso-bookmark:_Toc154229532'><span style='mso-bookmark:_Toc152605211'><span
!   style='mso-bookmark:_Toc115416261'>Value: NoWarnings</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 0</p>
    <p class=MsoBodyText>Disables visible warnings during logon.</p>
--- 5405,5414 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268997"></a><a name="_Toc152605211"></a><a
!   name="_Toc115416261"></a><a name="_Toc126872330"></a><a name="_Toc139993253"></a><span
!   style='mso-bookmark:_Toc170268997'><span style='mso-bookmark:_Toc152605211'><span
!   style='mso-bookmark:_Toc115416261'>Value: <span class=SpellE>NoWarnings</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 0</p>
    <p class=MsoBodyText>Disables visible warnings during logon.</p>
***************
*** 4883,4904 ****
   <tr style='mso-yfti-irow:1;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229533"></a><a name="_Toc152605212"></a><a
!   name="_Toc115416262"></a><a name="_Toc139993254"></a><a name="_Toc126872331"></a><span
!   style='mso-bookmark:_Toc154229533'><span style='mso-bookmark:_Toc152605212'><span
!   style='mso-bookmark:_Toc115416262'>Value: AuthentProviderPath</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    NSIS: %WINDIR%\SYSTEM32\afslogon.dll</p>
    <p class=MsoBodyText>Specifies the install location of the authentication
!   provider dll.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229534"></a><a name="_Toc152605213"></a><a
!   name="_Toc115416263"></a><a name="_Toc139993255"></a><a name="_Toc126872332"></a><span
!   style='mso-bookmark:_Toc154229534'><span style='mso-bookmark:_Toc152605213'><span
    style='mso-bookmark:_Toc115416263'>Value: Class</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    NSIS: 0x02</p>
--- 5417,5438 ----
   <tr style='mso-yfti-irow:1;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268998"></a><a name="_Toc152605212"></a><a
!   name="_Toc115416262"></a><a name="_Toc126872331"></a><a name="_Toc139993254"></a><span
!   style='mso-bookmark:_Toc170268998'><span style='mso-bookmark:_Toc152605212'><span
!   style='mso-bookmark:_Toc115416262'>Value: <span class=SpellE>AuthentProviderPath</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    NSIS: %WINDIR%\SYSTEM32\afslogon.dll</p>
    <p class=MsoBodyText>Specifies the install location of the authentication
!   provider <span class=SpellE>dll</span>.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:2;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170268999"></a><a name="_Toc152605213"></a><a
!   name="_Toc115416263"></a><a name="_Toc126872332"></a><a name="_Toc139993255"></a><span
!   style='mso-bookmark:_Toc170268999'><span style='mso-bookmark:_Toc152605213'><span
    style='mso-bookmark:_Toc115416263'>Value: Class</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    NSIS: 0x02</p>
***************
*** 4908,4917 ****
   <tr style='mso-yfti-irow:3;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229535"></a><a name="_Toc152605214"></a><a
!   name="_Toc115416264"></a><a name="_Toc139993256"></a><a name="_Toc126872333"></a><span
!   style='mso-bookmark:_Toc154229535'><span style='mso-bookmark:_Toc152605214'><span
!   style='mso-bookmark:_Toc115416264'>Value: DependOnGroup</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
    NSIS: PNP_TDI</p>
    <p class=MsoBodyText>Specifies the service groups upon which the AFS Client
--- 5442,5451 ----
   <tr style='mso-yfti-irow:3;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170269000"></a><a name="_Toc152605214"></a><a
!   name="_Toc115416264"></a><a name="_Toc126872333"></a><a name="_Toc139993256"></a><span
!   style='mso-bookmark:_Toc170269000'><span style='mso-bookmark:_Toc152605214'><span
!   style='mso-bookmark:_Toc115416264'>Value: <span class=SpellE>DependOnGroup</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
    NSIS: PNP_TDI</p>
    <p class=MsoBodyText>Specifies the service groups upon which the AFS Client
***************
*** 4923,4958 ****
   <tr style='mso-yfti-irow:4;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229536"></a><a name="_Toc152605215"></a><a
!   name="_Toc115416265"></a><a name="_Toc139993257"></a><a name="_Toc126872334"></a><span
!   style='mso-bookmark:_Toc154229536'><span style='mso-bookmark:_Toc152605215'><span
!   style='mso-bookmark:_Toc115416265'>Value: DependOnService</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
!   NSIS: Tcpip NETBIOS RpcSs</p>
    <p class=MsoBodyText>Specifies a list of services upon which the AFS Client
!   Service depends.&nbsp; Windows should not attempt to start the AFS Client Service
!   until all of the specified services have successfully started.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229537"></a><a name="_Toc152605216"></a><a
!   name="_Toc115416266"></a><a name="_Toc139993258"></a><a name="_Toc126872335"></a><span
!   style='mso-bookmark:_Toc154229537'><span style='mso-bookmark:_Toc152605216'><span
    style='mso-bookmark:_Toc115416266'>Value: Name</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
!   NSIS: &quot;OpenAFSDaemon&quot;</p>
    <p class=MsoBodyText>Specifies the display name of the AFS Client Service</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc154229538"></a><a name="_Toc152605217"></a><a
!   name="_Toc115416267"></a><a name="_Toc139993259"></a><a name="_Toc126872336"></a><span
!   style='mso-bookmark:_Toc154229538'><span style='mso-bookmark:_Toc152605217'><span
!   style='mso-bookmark:_Toc115416267'>Value: ProviderPath</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    NSIS: %WINDIR%\SYSTEM32\afslogon.dll</p>
    <p class=MsoBodyText>Specifies the DLL to use for the network provider</p>
--- 5457,5492 ----
   <tr style='mso-yfti-irow:4;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170269001"></a><a name="_Toc152605215"></a><a
!   name="_Toc115416265"></a><a name="_Toc126872334"></a><a name="_Toc139993257"></a><span
!   style='mso-bookmark:_Toc170269001'><span style='mso-bookmark:_Toc152605215'><span
!   style='mso-bookmark:_Toc115416265'>Value: <span class=SpellE>DependOnService</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
!   NSIS: <span class=SpellE>Tcpip</span> NETBIOS <span class=SpellE>RpcSs</span></p>
    <p class=MsoBodyText>Specifies a list of services upon which the AFS Client
!   Service depends.&nbsp; Windows should not attempt to start the AFS Client
!   Service until all of the specified services have successfully started.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170269002"></a><a name="_Toc152605216"></a><a
!   name="_Toc115416266"></a><a name="_Toc126872335"></a><a name="_Toc139993258"></a><span
!   style='mso-bookmark:_Toc170269002'><span style='mso-bookmark:_Toc152605216'><span
    style='mso-bookmark:_Toc115416266'>Value: Name</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
!   NSIS: &quot;<span class=SpellE>OpenAFSDaemon</span>&quot;</p>
    <p class=MsoBodyText>Specifies the display name of the AFS Client Service</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5><a name="_Toc170269003"></a><a name="_Toc152605217"></a><a
!   name="_Toc115416267"></a><a name="_Toc126872336"></a><a name="_Toc139993259"></a><span
!   style='mso-bookmark:_Toc170269003'><span style='mso-bookmark:_Toc152605217'><span
!   style='mso-bookmark:_Toc115416267'>Value: <span class=SpellE>ProviderPath</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    NSIS: %WINDIR%\SYSTEM32\afslogon.dll</p>
    <p class=MsoBodyText>Specifies the DLL to use for the network provider</p>
***************
*** 4960,5013 ****
   </tr>
  </table>
  
! <h2><a name="_Toc154229539"></a><a name="_Toc152605218"></a><a
  name="_Toc139993260"></a><a name="_Toc126872337"></a><a name="_Toc115417106"></a><a
  name="_Toc115416268"></a><a name="_A.2.1_Domain_specific_configuration"></a><span
! style='mso-bookmark:_Toc154229539'><span style='mso-bookmark:_Toc152605218'>A.2.1
  Domain specific configuration keys for the Network Provider</span></span></h2>
  
  <p class=MsoBodyText>The network provider can be configured to have different
! behavior depending on the domain that the user logs into.&nbsp; These settings are
! only relevant when using integrated login.&nbsp; A domain refers to an Active
! Directory (AD) domain, a trusted Kerberos (non-AD) realm or the local machine
! (i.e. local account logins).&nbsp; The domain name that is used for selecting
! the domain would be the domain that is passed into the NPLogonNotify function
! of the network provider.</p>
  
  <p class=MsoBodyText>Domain specific registry keys are:</p>
  
! <h3><a name="_Toc154229540"></a><a name="_Toc152605219"></a><a
  name="_Toc115416269"></a><a name="_Toc139993261"></a><a name="_Toc126872338"></a><span
! style='mso-bookmark:_Toc154229540'><span style='mso-bookmark:_Toc152605219'><span
  style='mso-bookmark:_Toc115416269'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</span></span></span></h3>
  
  <p class=MsoBodyText>&nbsp; (NP key)</p>
  
! <h3><a name="_Toc154229541"></a><a name="_Toc152605220"></a><a
  name="_Toc115416270"></a><a name="_Toc139993262"></a><a name="_Toc126872339"></a><span
! style='mso-bookmark:_Toc154229541'><span style='mso-bookmark:_Toc152605220'><span
  style='mso-bookmark:_Toc115416270'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</span></span></span></h3>
  
  <p class=MsoBodyText>&nbsp; (Domains key)</p>
  
! <h3><a name="_Toc154229542"></a><a name="_Toc152605221"></a><a
  name="_Toc115416271"></a><a name="_Toc139993263"></a><a name="_Toc126872340"></a><span
! style='mso-bookmark:_Toc154229542'><span style='mso-bookmark:_Toc152605221'><span
  style='mso-bookmark:_Toc115416271'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
  name&quot;]</span></span></span></h3>
  
  <p class=MsoBodyText>&nbsp; (Specific domain key. One per domain.)</p>
  
! <h3><a name="_Toc154229543"></a><a name="_Toc152605222"></a><a
  name="_Toc115416272"></a><a name="_Toc139993264"></a><a name="_Toc126872341"></a><span
! style='mso-bookmark:_Toc154229543'><span style='mso-bookmark:_Toc152605222'><span
  style='mso-bookmark:_Toc115416272'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</span></span></span></h3>
  
! <p class=MsoBodyText>&nbsp; (Localhost key)</p>
  
! <h3><a name="_Toc154229544"></a><a name="_Toc152605223"></a><a
  name="_Toc115416273"></a><a name="_Toc139993265"></a><a name="_Toc126872342"></a><span
! style='mso-bookmark:_Toc154229544'><span style='mso-bookmark:_Toc152605223'><span
  style='mso-bookmark:_Toc115416273'>Example:</span></span></span></h3>
  
  <p class=preformattedtext>&nbsp;HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider</p>
--- 5494,5547 ----
   </tr>
  </table>
  
! <h2><a name="_Toc170269004"></a><a name="_Toc152605218"></a><a
  name="_Toc139993260"></a><a name="_Toc126872337"></a><a name="_Toc115417106"></a><a
  name="_Toc115416268"></a><a name="_A.2.1_Domain_specific_configuration"></a><span
! style='mso-bookmark:_Toc170269004'><span style='mso-bookmark:_Toc152605218'>A.2.1
  Domain specific configuration keys for the Network Provider</span></span></h2>
  
  <p class=MsoBodyText>The network provider can be configured to have different
! behavior depending on the domain that the user logs into.&nbsp; These settings
! are only relevant when using integrated login.&nbsp; A domain refers to an
! Active Directory (AD) domain, a trusted Kerberos (non-AD) realm or the local
! machine (i.e. local account logins).&nbsp; The domain name that is used for
! selecting the domain would be the domain that is passed into the <span
! class=SpellE>NPLogonNotify</span> function of the network provider.</p>
  
  <p class=MsoBodyText>Domain specific registry keys are:</p>
  
! <h3><a name="_Toc170269005"></a><a name="_Toc152605219"></a><a
  name="_Toc115416269"></a><a name="_Toc139993261"></a><a name="_Toc126872338"></a><span
! style='mso-bookmark:_Toc170269005'><span style='mso-bookmark:_Toc152605219'><span
  style='mso-bookmark:_Toc115416269'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</span></span></span></h3>
  
  <p class=MsoBodyText>&nbsp; (NP key)</p>
  
! <h3><a name="_Toc170269006"></a><a name="_Toc152605220"></a><a
  name="_Toc115416270"></a><a name="_Toc139993262"></a><a name="_Toc126872339"></a><span
! style='mso-bookmark:_Toc170269006'><span style='mso-bookmark:_Toc152605220'><span
  style='mso-bookmark:_Toc115416270'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</span></span></span></h3>
  
  <p class=MsoBodyText>&nbsp; (Domains key)</p>
  
! <h3><a name="_Toc170269007"></a><a name="_Toc152605221"></a><a
  name="_Toc115416271"></a><a name="_Toc139993263"></a><a name="_Toc126872340"></a><span
! style='mso-bookmark:_Toc170269007'><span style='mso-bookmark:_Toc152605221'><span
  style='mso-bookmark:_Toc115416271'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
  name&quot;]</span></span></span></h3>
  
  <p class=MsoBodyText>&nbsp; (Specific domain key. One per domain.)</p>
  
! <h3><a name="_Toc170269008"></a><a name="_Toc152605222"></a><a
  name="_Toc115416272"></a><a name="_Toc139993264"></a><a name="_Toc126872341"></a><span
! style='mso-bookmark:_Toc170269008'><span style='mso-bookmark:_Toc152605222'><span
  style='mso-bookmark:_Toc115416272'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</span></span></span></h3>
  
! <p class=MsoBodyText>&nbsp; (<span class=SpellE>Localhost</span> key)</p>
  
! <h3><a name="_Toc170269009"></a><a name="_Toc152605223"></a><a
  name="_Toc115416273"></a><a name="_Toc139993265"></a><a name="_Toc126872342"></a><span
! style='mso-bookmark:_Toc170269009'><span style='mso-bookmark:_Toc152605223'><span
  style='mso-bookmark:_Toc115416273'>Example:</span></span></span></h3>
  
  <p class=preformattedtext>&nbsp;HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider</p>
***************
*** 5026,5039 ****
  values described in 2.1.1.&nbsp; The effective values are chosen as described
  in 2.1.2.</p>
  
! <h3><a name="_Toc154229545"></a><a name="_Toc152605224"></a><a
  name="_Toc115416274"></a><a name="_Toc139993266"></a><a name="_Toc126872343"></a><span
! style='mso-bookmark:_Toc154229545'><span style='mso-bookmark:_Toc152605224'><span
  style='mso-bookmark:_Toc115416274'>A.2.1.1 Domain specific configuration values</span></span></span></h3>
  
! <h4><a name="_Toc154229546"></a><a name="_Toc152605225"></a><a
  name="_Toc115416275"></a><a name="_Toc139993267"></a><a name="_Toc126872344"></a><span
! style='mso-bookmark:_Toc154229546'><span style='mso-bookmark:_Toc152605225'><span
  style='mso-bookmark:_Toc115416275'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
--- 5560,5573 ----
  values described in 2.1.1.&nbsp; The effective values are chosen as described
  in 2.1.2.</p>
  
! <h3><a name="_Toc170269010"></a><a name="_Toc152605224"></a><a
  name="_Toc115416274"></a><a name="_Toc139993266"></a><a name="_Toc126872343"></a><span
! style='mso-bookmark:_Toc170269010'><span style='mso-bookmark:_Toc152605224'><span
  style='mso-bookmark:_Toc115416274'>A.2.1.1 Domain specific configuration values</span></span></span></h3>
  
! <h4><a name="_Toc170269011"></a><a name="_Toc152605225"></a><a
  name="_Toc115416275"></a><a name="_Toc139993267"></a><a name="_Toc126872344"></a><span
! style='mso-bookmark:_Toc170269011'><span style='mso-bookmark:_Toc152605225'><span
  style='mso-bookmark:_Toc115416275'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
***************
*** 5045,5057 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:191.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:191.0pt'>
!   <h5><a name="_Toc154229547"></a><a name="_Toc152605226"></a><a
!   name="_Toc139993268"></a><a name="_Toc126872345"></a><a name="_Toc115416276"></a><a
!   name="_Value___:_LogonOptions"></a><span style='mso-bookmark:_Toc154229547'><span
!   style='mso-bookmark:_Toc152605226'>Value: LogonOptions</span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 0x01</p>
!   <p class=MsoBodyText>NSIS/WiX: depends on user configuration</p>
    <p class=MsoBodyText>0x00 - Integrated Logon is not used<br>
    0x01 - Integrated Logon is used<br>
    0x02 - High Security Mode is used (deprecated)<br>
--- 5579,5593 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:191.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:191.0pt'>
!   <h5><a name="_Toc170269012"></a><a name="_Toc152605226"></a><a
!   name="_Value___:_LogonOptions"></a><a name="_Toc115416276"></a><a
!   name="_Toc126872345"></a><a name="_Toc139993268"></a><span style='mso-bookmark:
!   _Toc170269012'><span style='mso-bookmark:_Toc152605226'>Value: <span
!   class=SpellE>LogonOptions</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 0x01</p>
!   <p class=MsoBodyText>NSIS/<span class=SpellE>WiX</span>: depends on user
!   configuration</p>
    <p class=MsoBodyText>0x00 - Integrated Logon is not used<br>
    0x01 - Integrated Logon is used<br>
    0x02 - High Security Mode is used (deprecated)<br>
***************
*** 5060,5079 ****
    creation of Drive Mappings.&nbsp; This mode should not be used without
    Integrated Logon.</p>
    <p class=MsoBodyText>As of 1.3.65 the SMB server supports SMB authentication.&nbsp;
!   The High Security Mode should not be used when using SMB authentication
!   (SMBAuthType setting is non zero).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229548"></a><a name="_Toc152605227"></a><a
!   name="_Toc115416277"></a><a name="_Toc139993269"></a><a name="_Toc126872346"></a><span
!   style='mso-bookmark:_Toc154229548'><span style='mso-bookmark:_Toc152605227'><span
!   style='mso-bookmark:_Toc115416277'>Value: FailLoginsSilentl</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (1|0)<br>
    Default: 0<br>
!   NSIS/WiX: (not set)</p>
    <p class=MsoBodyText>If true, does not display any visible warnings in the
    event of an error during the integrated login process.</p>
    </td>
--- 5596,5615 ----
    creation of Drive Mappings.&nbsp; This mode should not be used without
    Integrated Logon.</p>
    <p class=MsoBodyText>As of 1.3.65 the SMB server supports SMB authentication.&nbsp;
!   The High Security Mode should not be used when using SMB authentication (<span
!   class=SpellE>SMBAuthType</span> setting is non zero).</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170269013"></a><a name="_Toc152605227"></a><a
!   name="_Toc115416277"></a><a name="_Toc126872346"></a><a name="_Toc139993269"></a><span
!   style='mso-bookmark:_Toc170269013'><span style='mso-bookmark:_Toc152605227'><span
!   style='mso-bookmark:_Toc115416277'>Value: <span class=SpellE>FailLoginsSilentl</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD (1|0)<br>
    Default: 0<br>
!   NSIS/<span class=SpellE>WiX</span>: (not set)</p>
    <p class=MsoBodyText>If true, does not display any visible warnings in the
    event of an error during the integrated login process.</p>
    </td>
***************
*** 5081,5157 ****
   <tr style='mso-yfti-irow:2;height:139.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:139.0pt'>
!   <h5><a name="_Toc154229549"></a><a name="_Toc152605228"></a><a
!   name="_Toc115416278"></a><a name="_Toc139993270"></a><a name="_Toc126872347"></a><span
!   style='mso-bookmark:_Toc154229549'><span style='mso-bookmark:_Toc152605228'><span
!   style='mso-bookmark:_Toc115416278'>Value: LogonScript</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ or REG_EXPAND_SZ<br>
    Default: (null)<br>
!   NSIS/WiX: (only value under NP key) &lt;install path&gt;\afscreds.exe -:%s -x
!   -a -m -n -q</p>
    <p class=MsoBodyText>A logon script that will be scheduled to be run after
    the profile load is complete.&nbsp; If using the REG_EXPAND_SZ type, you can
!   use any system environment variable as &quot;%varname%&quot; which would be
!   expanded at the time the network provider is run.&nbsp; Optionally using a
!   &quot;%s&quot; in the value would result in it being expanded into the AFS
!   SMB username for the session.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3;height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc154229550"></a><a name="_Toc152605229"></a><a
!   name="_Toc115416279"></a><a name="_Toc139993271"></a><a name="_Toc126872348"></a><span
!   style='mso-bookmark:_Toc154229550'><span style='mso-bookmark:_Toc152605229'><span
!   style='mso-bookmark:_Toc115416279'>Value: LoginRetryInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 30<br>
!   NSIS/WiX: (not set)</p>
    <p class=MsoBodyText>If the OpenAFS client service has not started yet, the
!   network provider will wait for a maximum of &quot;LoginRetryInterval&quot;
!   seconds while retrying every &quot;LoginSleepInterval&quot; seconds to check
!   if the service is up.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc154229551"></a><a name="_Toc152605230"></a><a
!   name="_Toc115416280"></a><a name="_Toc139993272"></a><a name="_Toc126872349"></a><span
!   style='mso-bookmark:_Toc154229551'><span style='mso-bookmark:_Toc152605230'><span
!   style='mso-bookmark:_Toc115416280'>Value: LoginSleepInterval</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 5<br>
!   NSIS/WiX: (not set)</p>
!   <p class=MsoBodyText>See description of LoginRetryInterval.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc154229552"></a><a name="_Toc152605231"></a><a
!   name="_Toc139993273"></a><a name="_Toc126872350"></a><a name="_Toc115416281"></a><a
!   name="_Value:_TheseCells"></a><span style='mso-bookmark:_Toc154229552'><span
!   style='mso-bookmark:_Toc152605231'>Value: TheseCells</span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
    NSIS: &lt;not set&gt;</p>
!   <p class=MsoBodyText>When Kerberos v5 is being used, TheseCells provides a
!   list of additional cells for which tokens should be obtained with the default
!   Kerberos v5 principal.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229553"></a><a name="_Toc152605232"></a><a
  name="_Toc115416282"></a><a name="_Toc139993274"></a><a name="_Toc126872351"></a><span
! style='mso-bookmark:_Toc154229553'><span style='mso-bookmark:_Toc152605232'><span
  style='mso-bookmark:_Toc115416282'>A.2.1.2 Selection of effective values for
  domain specific configuration</span></span></span></h3>
  
  <p class=MsoBodyText>During login to domain X, where X is the domain passed
! into NPLogonNotify as lpAuthentInfo-&gt;LogonDomainName or the string
! 'LOCALHOST' if lpAuthentInfo-&gt;LogonDomainName equals the name of the
! computer, the following keys will be looked up.</p>
  
  <p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
--- 5617,5695 ----
   <tr style='mso-yfti-irow:2;height:139.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:139.0pt'>
!   <h5><a name="_Toc170269014"></a><a name="_Toc152605228"></a><a
!   name="_Toc115416278"></a><a name="_Toc126872347"></a><a name="_Toc139993270"></a><span
!   style='mso-bookmark:_Toc170269014'><span style='mso-bookmark:_Toc152605228'><span
!   style='mso-bookmark:_Toc115416278'>Value: <span class=SpellE>LogonScript</span></span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ or REG_EXPAND_SZ<br>
    Default: (null)<br>
!   NSIS/<span class=SpellE>WiX</span>: (only value under NP key) &lt;install
!   path&gt;\afscreds.exe -:%s -x -a -m -n -q</p>
    <p class=MsoBodyText>A logon script that will be scheduled to be run after
    the profile load is complete.&nbsp; If using the REG_EXPAND_SZ type, you can
!   use any system environment variable as &quot;%<span class=SpellE>varname</span>%&quot;
!   which would be expanded at the time the network provider is run.&nbsp;
!   Optionally using a &quot;%s&quot; in the value would result in it being
!   expanded into the AFS SMB username for the session.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:3;height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5><a name="_Toc170269015"></a><a name="_Toc152605229"></a><a
!   name="_Toc115416279"></a><a name="_Toc126872348"></a><a name="_Toc139993271"></a><span
!   style='mso-bookmark:_Toc170269015'><span style='mso-bookmark:_Toc152605229'><span
!   style='mso-bookmark:_Toc115416279'>Value: <span class=SpellE>LoginRetryInterval</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 30<br>
!   NSIS/<span class=SpellE>WiX</span>: (not set)</p>
    <p class=MsoBodyText>If the OpenAFS client service has not started yet, the
!   network provider will wait for a maximum of &quot;<span class=SpellE>LoginRetryInterval</span>&quot;
!   seconds while retrying every &quot;<span class=SpellE>LoginSleepInterval</span>&quot;
!   seconds to check if the service is up.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:4;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5><a name="_Toc170269016"></a><a name="_Toc152605230"></a><a
!   name="_Toc115416280"></a><a name="_Toc126872349"></a><a name="_Toc139993272"></a><span
!   style='mso-bookmark:_Toc170269016'><span style='mso-bookmark:_Toc152605230'><span
!   style='mso-bookmark:_Toc115416280'>Value: <span class=SpellE>LoginSleepInterval</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 5<br>
!   NSIS/<span class=SpellE>WiX</span>: (not set)</p>
!   <p class=MsoBodyText>See description of <span class=SpellE>LoginRetryInterval</span>.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5><a name="_Toc170269017"></a><a name="_Toc152605231"></a><a
!   name="_Value:_TheseCells"></a><a name="_Toc115416281"></a><a
!   name="_Toc126872350"></a><a name="_Toc139993273"></a><span style='mso-bookmark:
!   _Toc170269017'><span style='mso-bookmark:_Toc152605231'>Value: <span
!   class=SpellE>TheseCells</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
    NSIS: &lt;not set&gt;</p>
!   <p class=MsoBodyText>When Kerberos v5 is being used, <span class=SpellE>TheseCells</span>
!   provides a list of additional cells for which tokens should be obtained with
!   the default Kerberos v5 principal.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170269018"></a><a name="_Toc152605232"></a><a
  name="_Toc115416282"></a><a name="_Toc139993274"></a><a name="_Toc126872351"></a><span
! style='mso-bookmark:_Toc170269018'><span style='mso-bookmark:_Toc152605232'><span
  style='mso-bookmark:_Toc115416282'>A.2.1.2 Selection of effective values for
  domain specific configuration</span></span></span></h3>
  
  <p class=MsoBodyText>During login to domain X, where X is the domain passed
! into <span class=SpellE>NPLogonNotify</span> as <span class=SpellE>lpAuthentInfo</span>-&gt;<span
! class=SpellE>LogonDomainName</span> or the string 'LOCALHOST' if <span
! class=SpellE>lpAuthentInfo</span>-&gt;<span class=SpellE>LogonDomainName</span>
! equals the name of the computer, the following keys will be looked up.</p>
  
  <p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
  style='font-size:7.0pt;font-family:"Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
***************
*** 5170,5225 ****
  case will come from the NP key.</p>
  
  <p class=MsoBodyText>If the specific domain key exists, then for each of the
! values metioned in (2), they will be looked up in the specific domain key,
! domains key and the NP key successively until the value is found. The first
! instance of the value found this way will be the effective for the login
! session.&nbsp; If no such instance can be found, the default will be
! used.&nbsp; To re-iterate, a value in a more specific key supercedes a value in
! a less specific key.&nbsp; The exceptions to this rule are stated below.</p>
  
! <h3><a name="_Toc154229554"></a><a name="_Toc152605233"></a><a
  name="_Toc115416283"></a><a name="_Toc139993275"></a><a name="_Toc126872352"></a><span
! style='mso-bookmark:_Toc154229554'><span style='mso-bookmark:_Toc152605233'><span
  style='mso-bookmark:_Toc115416283'>A.2.1.3 Exceptions to A.2.1.2</span></span></span></h3>
  
  <p class=MsoBodyText>To retain backwards compatibility, the following
  exceptions are made to 2.1.2.</p>
  
! <h4><a name="_Toc154229555"></a><a name="_Toc152605234"></a><a
  name="_Toc115416284"></a><a name="_Toc139993276"></a><a name="_Toc126872353"></a><span
! style='mso-bookmark:_Toc154229555'><span style='mso-bookmark:_Toc152605234'><span
! style='mso-bookmark:_Toc115416284'>2.1.3.1 'FailLoginsSilently'</span></span></span></h4>
  
! <p class=MsoBodyText>Historically, the 'FailLoginsSilently' value was in
! HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters key and not
! in the NP key.&nbsp; Therefore, for backwards compatibility, the value in the
! Parameters key will supercede all instances of this value in other keys.&nbsp;
! In the absence of this value in the Parameters key, normal scope rules apply.</p>
  
! <h4><a name="_Toc154229556"></a><a name="_Toc152605235"></a><a
  name="_Toc115416285"></a><a name="_Toc139993277"></a><a name="_Toc126872354"></a><span
! style='mso-bookmark:_Toc154229556'><span style='mso-bookmark:_Toc152605235'><span
! style='mso-bookmark:_Toc115416285'>2.1.3.2 'LogonScript'</span></span></span></h4>
  
! <p class=MsoBodyText>If a 'LogonScript' is not specified in the specific domain
! key nor in the domains key, the value in the NP key will only be checked if the
! effective 'LogonOptions' specify a high security integrated login.&nbsp; If a
! logon script is specified in the specific domain key or the domains key, it
! will be used regardless of the high security setting.&nbsp; Please be aware of
! this when setting this value.</p>
  
! <h2><a name="_Toc154229557"></a><a name="_Toc152605236"></a><a
  name="_Toc115416286"></a><a name="_Toc139993278"></a><a name="_Toc126872355"></a><a
! name="_Toc115417107"></a><span style='mso-bookmark:_Toc154229557'><span
  style='mso-bookmark:_Toc152605236'><span style='mso-bookmark:_Toc115416286'>A.3.
  AFS Credentials System Tray Tool parameters</span></span></span></h2>
  
  <p class=MsoBodyText>Affects the behavior of afscreds.exe</p>
  
! <h3><a name="_Toc154229558"></a><a name="_Toc152605237"></a><a
  name="_Toc115416287"></a><a name="_Toc139993279"></a><a name="_Toc126872356"></a><span
! style='mso-bookmark:_Toc154229558'><span style='mso-bookmark:_Toc152605237'><span
! style='mso-bookmark:_Toc115416287'>Regkey:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5708,5768 ----
  case will come from the NP key.</p>
  
  <p class=MsoBodyText>If the specific domain key exists, then for each of the
! values <span class=SpellE>metioned</span> in (2), they will be looked up in the
! specific domain key, domains key and the NP key successively until the value is
! found. The first instance of the value found this way will be the effective for
! the login session.&nbsp; If no such instance can be found, the default will be
! used.&nbsp; To re-iterate, a value in a more specific key <span class=SpellE>supercedes</span>
! a value in a less specific key.&nbsp; The exceptions to this rule are stated
! below.</p>
  
! <h3><a name="_Toc170269019"></a><a name="_Toc152605233"></a><a
  name="_Toc115416283"></a><a name="_Toc139993275"></a><a name="_Toc126872352"></a><span
! style='mso-bookmark:_Toc170269019'><span style='mso-bookmark:_Toc152605233'><span
  style='mso-bookmark:_Toc115416283'>A.2.1.3 Exceptions to A.2.1.2</span></span></span></h3>
  
  <p class=MsoBodyText>To retain backwards compatibility, the following
  exceptions are made to 2.1.2.</p>
  
! <h4><a name="_Toc170269020"></a><a name="_Toc152605234"></a><a
  name="_Toc115416284"></a><a name="_Toc139993276"></a><a name="_Toc126872353"></a><span
! style='mso-bookmark:_Toc170269020'><span style='mso-bookmark:_Toc152605234'><span
! style='mso-bookmark:_Toc115416284'>2.1.3.1 '<span class=SpellE>FailLoginsSilently</span>'</span></span></span></h4>
  
! <p class=MsoBodyText>Historically, the '<span class=SpellE>FailLoginsSilently</span>'
! value was in HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
! key and not in the NP key.&nbsp; Therefore, for backwards compatibility, the
! value in the Parameters key will <span class=SpellE>supercede</span> all
! instances of this value in other keys.&nbsp; In the absence of this value in
! the Parameters key, normal scope rules apply.</p>
  
! <h4><a name="_Toc170269021"></a><a name="_Toc152605235"></a><a
  name="_Toc115416285"></a><a name="_Toc139993277"></a><a name="_Toc126872354"></a><span
! style='mso-bookmark:_Toc170269021'><span style='mso-bookmark:_Toc152605235'><span
! style='mso-bookmark:_Toc115416285'>2.1.3.2 '<span class=SpellE>LogonScript</span>'</span></span></span></h4>
  
! <p class=MsoBodyText>If a '<span class=SpellE>LogonScript</span>' is not
! specified in the specific domain key nor in the domains key, the value in the
! NP key will only be checked if the effective '<span class=SpellE>LogonOptions</span>'
! specify a high security integrated login.&nbsp; If a logon script is specified
! in the specific domain key or the domains key, it will be used regardless of
! the high security setting.&nbsp; Please be aware of this when setting this
! value.</p>
  
! <h2><a name="_Toc170269022"></a><a name="_Toc152605236"></a><a
  name="_Toc115416286"></a><a name="_Toc139993278"></a><a name="_Toc126872355"></a><a
! name="_Toc115417107"></a><span style='mso-bookmark:_Toc170269022'><span
  style='mso-bookmark:_Toc152605236'><span style='mso-bookmark:_Toc115416286'>A.3.
  AFS Credentials System Tray Tool parameters</span></span></span></h2>
  
  <p class=MsoBodyText>Affects the behavior of afscreds.exe</p>
  
! <h3><a name="_Toc170269023"></a><a name="_Toc152605237"></a><a
  name="_Toc115416287"></a><a name="_Toc139993279"></a><a name="_Toc126872356"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170269023'><span style='mso-bookmark:
! _Toc152605237'><span style='mso-bookmark:_Toc115416287'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170269023'><span style='mso-bookmark:_Toc152605237'><span
! style='mso-bookmark:_Toc115416287'>:<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 5227,5263 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229559"></a><a name="_Toc152605238"></a><a
!   name="_Toc115416288"></a><a name="_Toc139993280"></a><a name="_Toc126872357"></a><span
!   style='mso-bookmark:_Toc154229559'><span style='mso-bookmark:_Toc152605238'><span
    style='mso-bookmark:_Toc115416288'>Value: Gateway</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;&quot;<br>
!   Function: GetGatewayName()</p>
!   <p class=MsoBodyText>If the AFS client is utilizing a gateway to obtain AFS access,
!   the name of the gateway is specified by this value.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229560"></a><a name="_Toc152605239"></a><a
!   name="_Toc115416289"></a><a name="_Toc139993281"></a><a name="_Toc126872358"></a><span
!   style='mso-bookmark:_Toc154229560'><span style='mso-bookmark:_Toc152605239'><span
    style='mso-bookmark:_Toc115416289'>Value: Cell</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
!   Variable: IsServiceConfigured()</p>
    <p class=MsoBodyText>The value Cell is used to determine if the AFS Client
    Service has been properly configured or not.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229561"></a><a name="_Toc152605240"></a><a
  name="_Toc115416290"></a><a name="_Toc139993282"></a><a name="_Toc126872359"></a><span
! style='mso-bookmark:_Toc154229561'><span style='mso-bookmark:_Toc152605240'><span
! style='mso-bookmark:_Toc115416290'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client]<br>
  [HKCU\SOFTWARE\OpenAFS\Client]</span></span></span></h3>
  
--- 5770,5808 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170269024"></a><a name="_Toc152605238"></a><a
!   name="_Toc115416288"></a><a name="_Toc126872357"></a><a name="_Toc139993280"></a><span
!   style='mso-bookmark:_Toc170269024'><span style='mso-bookmark:_Toc152605238'><span
    style='mso-bookmark:_Toc115416288'>Value: Gateway</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;&quot;<br>
!   Function: <span class=SpellE>GetGatewayName</span>()</p>
!   <p class=MsoBodyText>If the AFS client is utilizing a gateway to obtain AFS
!   access, the name of the gateway is specified by this value.</p>
    </td>
   </tr>
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170269025"></a><a name="_Toc152605239"></a><a
!   name="_Toc115416289"></a><a name="_Toc126872358"></a><a name="_Toc139993281"></a><span
!   style='mso-bookmark:_Toc170269025'><span style='mso-bookmark:_Toc152605239'><span
    style='mso-bookmark:_Toc115416289'>Value: Cell</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
!   Variable: <span class=SpellE>IsServiceConfigured</span>()</p>
    <p class=MsoBodyText>The value Cell is used to determine if the AFS Client
    Service has been properly configured or not.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170269026"></a><a name="_Toc152605240"></a><a
  name="_Toc115416290"></a><a name="_Toc139993282"></a><a name="_Toc126872359"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170269026'><span style='mso-bookmark:
! _Toc152605240'><span style='mso-bookmark:_Toc115416290'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170269026'><span style='mso-bookmark:_Toc152605240'><span
! style='mso-bookmark:_Toc115416290'>:<br>
  [HKLM\SOFTWARE\OpenAFS\Client]<br>
  [HKCU\SOFTWARE\OpenAFS\Client]</span></span></span></h3>
  
***************
*** 5266,5283 ****
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:157.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:157.5pt'>
!   <h5><a name="_Toc154229562"></a><a name="_Toc152605241"></a><a
!   name="_Toc115416291"></a><a name="_Toc139993283"></a><a name="_Toc126872360"></a><span
!   style='mso-bookmark:_Toc154229562'><span style='mso-bookmark:_Toc152605241'><span
!   style='mso-bookmark:_Toc115416291'>Value: ShowTrayIcon</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 1<br>
!   Function: InitApp(), Main_OnCheckTerminate()</p>
    <p class=MsoBodyText>This value is used to determine whether or not a
    shortcut should be maintained in the user's Start
    Menu-&gt;Programs-&gt;Startup folder. </p>
!   <p class=MsoBodyText>This value used to be stored at
!   [HKLM\Software\TransarcCorporation\AFS Client\AfsCreds].</p>
    <p class=MsoBodyText>The current user value is checked first; if it does not
    exist the local machine value is checked.</p>
    </td>
--- 5811,5828 ----
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:157.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:157.5pt'>
!   <h5><a name="_Toc170269027"></a><a name="_Toc152605241"></a><a
!   name="_Toc115416291"></a><a name="_Toc126872360"></a><a name="_Toc139993283"></a><span
!   style='mso-bookmark:_Toc170269027'><span style='mso-bookmark:_Toc152605241'><span
!   style='mso-bookmark:_Toc115416291'>Value: <span class=SpellE>ShowTrayIcon</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 1<br>
!   Function: <span class=SpellE>InitApp</span>(), <span class=SpellE>Main_OnCheckTerminate</span>()</p>
    <p class=MsoBodyText>This value is used to determine whether or not a
    shortcut should be maintained in the user's Start
    Menu-&gt;Programs-&gt;Startup folder. </p>
!   <p class=MsoBodyText>This value used to be stored at [HKLM\Software\<span
!   class=SpellE>TransarcCorporation</span>\AFS Client\<span class=SpellE>AfsCreds</span>].</p>
    <p class=MsoBodyText>The current user value is checked first; if it does not
    exist the local machine value is checked.</p>
    </td>
***************
*** 5285,5298 ****
   <tr style='mso-yfti-irow:1;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5><a name="_Toc154229563"></a><a name="_Toc152605242"></a><a
!   name="_Toc115416292"></a><a name="_Value:_EnableKFW"></a><a name=EnableKFW></a><a
!   name="_Toc139993284"></a><a name="_Toc126872361"></a><span style='mso-bookmark:
!   _Toc154229563'><span style='mso-bookmark:_Toc152605242'><span
!   style='mso-bookmark:_Toc115416292'>Value: EnableKFW</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 1<br>
!   Function: KFW_is_available()</p>
    <p class=MsoBodyText>When MIT Kerberos for Windows can be loaded, Kerberos v5
    will be used to obtain AFS credentials.&nbsp; By setting this value to 0, the
    internal Kerberos v4 implementation will be used instead.&nbsp; The current
--- 5830,5843 ----
   <tr style='mso-yfti-irow:1;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5><a name="_Toc170269028"></a><a name="_Toc152605242"></a><a
!   name="_Toc115416292"></a><a name="_Toc126872361"></a><a name="_Toc139993284"></a><a
!   name=EnableKFW></a><a name="_Value:_EnableKFW"></a><span style='mso-bookmark:
!   _Toc170269028'><span style='mso-bookmark:_Toc152605242'><span
!   style='mso-bookmark:_Toc115416292'>Value: <span class=SpellE>EnableKFW</span></span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 1<br>
!   Function: <span class=SpellE>KFW_is_available</span>()</p>
    <p class=MsoBodyText>When MIT Kerberos for Windows can be loaded, Kerberos v5
    will be used to obtain AFS credentials.&nbsp; By setting this value to 0, the
    internal Kerberos v4 implementation will be used instead.&nbsp; The current
***************
*** 5303,5312 ****
   <tr style='mso-yfti-irow:2;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5><a name="_Toc154229564"></a><a name="_Toc152605243"></a><a
!   name="_Value:_Use524"></a><a name=Use524></a><a name="_Toc139993285"></a><a
!   name="_Toc126872362"></a><a name="_Toc115416293"></a><a
!   name="_Value___:_Use524"></a><span style='mso-bookmark:_Toc154229564'><span
    style='mso-bookmark:_Toc152605243'>Value: Use524</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 0<br>
--- 5848,5857 ----
   <tr style='mso-yfti-irow:2;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5><a name="_Toc170269029"></a><a name="_Toc152605243"></a><a
!   name="_Value___:_Use524"></a><a name="_Toc115416293"></a><a
!   name="_Toc126872362"></a><a name="_Toc139993285"></a><a name=Use524></a><a
!   name="_Value:_Use524"></a><span style='mso-bookmark:_Toc170269029'><span
    style='mso-bookmark:_Toc152605243'>Value: Use524</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 0<br>
***************
*** 5321,5333 ****
   <tr style='mso-yfti-irow:3;mso-yfti-lastrow:yes;height:251.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:251.5pt'>
!   <h5><a name="_Toc154229565"></a><a name="_Toc152605244"></a><a
!   name="_Toc139993286"></a><a name="_Toc126872363"></a><a name="_Toc115416294"></a><a
!   name="_Value___:_AfscredsShortcutParams"></a><span style='mso-bookmark:_Toc154229565'><span
!   style='mso-bookmark:_Toc152605244'>Value: AfscredsShortcutParams</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;-A -M -N -Q&quot;<br>
!   Function: Shortcut_FixStartup</p>
    <p class=MsoBodyText>This value specifies the command line options which
    should be set as part of the shortcut to afscreds.exe.&nbsp; afscreds.exe
    rewrites the shortcut each time it exits so as to ensure that the shortcut
--- 5866,5879 ----
   <tr style='mso-yfti-irow:3;mso-yfti-lastrow:yes;height:251.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:251.5pt'>
!   <h5><a name="_Toc170269030"></a><a name="_Toc152605244"></a><a
!   name="_Value___:_AfscredsShortcutParams"></a><a name="_Toc115416294"></a><a
!   name="_Toc126872363"></a><a name="_Toc139993286"></a><span style='mso-bookmark:
!   _Toc170269030'><span style='mso-bookmark:_Toc152605244'>Value: <span
!   class=SpellE>AfscredsShortcutParams</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;-A -M -N -Q&quot;<br>
!   Function: <span class=SpellE>Shortcut_FixStartup</span></p>
    <p class=MsoBodyText>This value specifies the command line options which
    should be set as part of the shortcut to afscreds.exe.&nbsp; afscreds.exe
    rewrites the shortcut each time it exits so as to ensure that the shortcut
***************
*** 5337,5357 ****
    value is checked.</p>
    <p class=MsoBodyText>The following subset of the command line options is
    appropriate for use in this registry setting:</p>
!   <p class=MsoBodyText>-A = autoinit<br>
    -M = renew drive maps<br>
!   -N = ip address change detection<br>
!   -Q = quiet mode.&nbsp; do not display start service dialog if afsd_service is
!   not already running<br>
    -S = show tokens dialog on startup<br>
!   -Z = unmap drives</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229566"></a><a name="_Toc152605245"></a><a
  name="_Toc115416295"></a><a name="_Toc139993287"></a><a name="_Toc126872364"></a><span
! style='mso-bookmark:_Toc154229566'><span style='mso-bookmark:_Toc152605245'><span
! style='mso-bookmark:_Toc115416295'>Regkey:<br>
  [HKCU\SOFTWARE\OpenAFS\Client]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5883,5905 ----
    value is checked.</p>
    <p class=MsoBodyText>The following subset of the command line options is
    appropriate for use in this registry setting:</p>
!   <p class=MsoBodyText>-A = <span class=SpellE>autoinit</span><br>
    -M = renew drive maps<br>
!   -N = <span class=SpellE>ip</span> address change detection<br>
!   -Q = quiet mode.&nbsp; do not display start service dialog if <span
!   class=SpellE>afsd_service</span> is not already running<br>
    -S = show tokens dialog on startup<br>
!   -Z = <span class=SpellE>unmap</span> drives</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170269031"></a><a name="_Toc152605245"></a><a
  name="_Toc115416295"></a><a name="_Toc139993287"></a><a name="_Toc126872364"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170269031'><span style='mso-bookmark:
! _Toc152605245'><span style='mso-bookmark:_Toc115416295'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170269031'><span style='mso-bookmark:_Toc152605245'><span
! style='mso-bookmark:_Toc115416295'>:<br>
  [HKCU\SOFTWARE\OpenAFS\Client]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 5360,5382 ****
    height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc154229567"></a><a name="_Toc152605246"></a><a
!   name="_Toc115416296"></a><a name="_Toc139993288"></a><a name="_Toc126872365"></a><span
!   style='mso-bookmark:_Toc154229567'><span style='mso-bookmark:_Toc152605246'><span
    style='mso-bookmark:_Toc115416296'>Value: Authentication Cell</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
!   Function: Afscreds.exe GetDefaultCell()</p>
    <p class=MsoBodyText>This value allows the user to configure a different cell
    name to be used as the default cell when acquiring tokens in afscreds.exe.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229568"></a><a name="_Toc152605247"></a><a
  name="_Toc115416297"></a><a name="_Toc139993289"></a><a name="_Toc126872366"></a><span
! style='mso-bookmark:_Toc154229568'><span style='mso-bookmark:_Toc152605247'><span
! style='mso-bookmark:_Toc115416297'>Regkey:<br>
  [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5908,5932 ----
    height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5><a name="_Toc170269032"></a><a name="_Toc152605246"></a><a
!   name="_Toc115416296"></a><a name="_Toc126872365"></a><a name="_Toc139993288"></a><span
!   style='mso-bookmark:_Toc170269032'><span style='mso-bookmark:_Toc152605246'><span
    style='mso-bookmark:_Toc115416296'>Value: Authentication Cell</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
!   Function: Afscreds.exe <span class=SpellE>GetDefaultCell</span>()</p>
    <p class=MsoBodyText>This value allows the user to configure a different cell
    name to be used as the default cell when acquiring tokens in afscreds.exe.</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170269033"></a><a name="_Toc152605247"></a><a
  name="_Toc115416297"></a><a name="_Toc139993289"></a><a name="_Toc126872366"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170269033'><span style='mso-bookmark:
! _Toc152605247'><span style='mso-bookmark:_Toc115416297'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170269033'><span style='mso-bookmark:_Toc152605247'><span
! style='mso-bookmark:_Toc115416297'>:<br>
  [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 5385,5409 ****
    height:124.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:124.75pt'>
!   <h5><a name="_Toc154229569"></a><a name="_Toc152605248"></a><a
!   name="_Toc115416298"></a><a name="_Toc139993290"></a><a name="_Toc126872367"></a><span
!   style='mso-bookmark:_Toc154229569'><span style='mso-bookmark:_Toc152605248'><span
!   style='mso-bookmark:_Toc115416298'>Value: &quot;afs cell name&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;<br>
!   Function: LoadRemind(), SaveRemind()</p>
    <p class=MsoBodyText>These values are used to save and restore the state of
    the reminder flag for each cell for which the user has obtained tokens.</p>
!   <p class=MsoBodyText>This value used to be stored at
!   [HKLM\Software\TransarcCorporation\AFS Client\AfsCreds].</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc154229570"></a><a name="_Toc152605249"></a><a
  name="_Toc115416299"></a><a name="_Toc139993291"></a><a name="_Toc126872368"></a><span
! style='mso-bookmark:_Toc154229570'><span style='mso-bookmark:_Toc152605249'><span
! style='mso-bookmark:_Toc115416299'>Regkey:<br>
  [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5935,5962 ----
    height:124.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:124.75pt'>
!   <h5><a name="_Toc170269034"></a><a name="_Toc152605248"></a><a
!   name="_Toc115416298"></a><a name="_Toc126872367"></a><a name="_Toc139993290"></a><span
!   style='mso-bookmark:_Toc170269034'><span style='mso-bookmark:_Toc152605248'><span
!   style='mso-bookmark:_Toc115416298'>Value: &quot;<span class=SpellE>afs</span>
!   cell name&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;<br>
!   Function: <span class=SpellE>LoadRemind</span>(), <span class=SpellE>SaveRemind</span>()</p>
    <p class=MsoBodyText>These values are used to save and restore the state of
    the reminder flag for each cell for which the user has obtained tokens.</p>
!   <p class=MsoBodyText>This value used to be stored at [HKLM\Software\<span
!   class=SpellE>TransarcCorporation</span>\AFS Client\<span class=SpellE>AfsCreds</span>].</p>
    </td>
   </tr>
  </table>
  
! <h3><a name="_Toc170269035"></a><a name="_Toc152605249"></a><a
  name="_Toc115416299"></a><a name="_Toc139993291"></a><a name="_Toc126872368"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170269035'><span style='mso-bookmark:
! _Toc152605249'><span style='mso-bookmark:_Toc115416299'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170269035'><span style='mso-bookmark:_Toc152605249'><span
! style='mso-bookmark:_Toc115416299'>:<br>
  [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 5412,5420 ****
    height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5><a name="_Toc154229571"></a><a name="_Toc152605250"></a><a
!   name="_Toc115416300"></a><a name="_Toc139993292"></a><a name="_Toc126872369"></a><span
!   style='mso-bookmark:_Toc154229571'><span style='mso-bookmark:_Toc152605250'><span
    style='mso-bookmark:_Toc115416300'>Value: &quot;upper case drive letter&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;</p>
--- 5965,5973 ----
    height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5><a name="_Toc170269036"></a><a name="_Toc152605250"></a><a
!   name="_Toc115416300"></a><a name="_Toc126872369"></a><a name="_Toc139993292"></a><span
!   style='mso-bookmark:_Toc170269036'><span style='mso-bookmark:_Toc152605250'><span
    style='mso-bookmark:_Toc115416300'>Value: &quot;upper case drive letter&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;</p>
***************
*** 5425,5434 ****
   </tr>
  </table>
  
! <h3><a name="_Toc154229572"></a><a name="_Toc152605251"></a><a
  name="_Toc115416301"></a><a name="_Toc139993293"></a><a name="_Toc126872370"></a><span
! style='mso-bookmark:_Toc154229572'><span style='mso-bookmark:_Toc152605251'><span
! style='mso-bookmark:_Toc115416301'>Regkey:<br>
  [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
--- 5978,5989 ----
   </tr>
  </table>
  
! <h3><a name="_Toc170269037"></a><a name="_Toc152605251"></a><a
  name="_Toc115416301"></a><a name="_Toc139993293"></a><a name="_Toc126872370"></a><span
! class=SpellE><span style='mso-bookmark:_Toc170269037'><span style='mso-bookmark:
! _Toc152605251'><span style='mso-bookmark:_Toc115416301'>Regkey</span></span></span></span><span
! style='mso-bookmark:_Toc170269037'><span style='mso-bookmark:_Toc152605251'><span
! style='mso-bookmark:_Toc115416301'>:<br>
  [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</span></span></span></h3>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
***************
*** 5437,5445 ****
    height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5><a name="_Toc154229573"></a><a name="_Toc152605252"></a><a
!   name="_Toc115416302"></a><a name="_Toc139993294"></a><a name="_Toc126872371"></a><span
!   style='mso-bookmark:_Toc154229573'><span style='mso-bookmark:_Toc152605252'><span
    style='mso-bookmark:_Toc115416302'>Value: &quot;upper case drive letter&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
--- 5992,6000 ----
    height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5><a name="_Toc170269038"></a><a name="_Toc152605252"></a><a
!   name="_Toc115416302"></a><a name="_Toc126872371"></a><a name="_Toc139993294"></a><span
!   style='mso-bookmark:_Toc170269038'><span style='mso-bookmark:_Toc152605252'><span
    style='mso-bookmark:_Toc115416302'>Value: &quot;upper case drive letter&quot;</span></span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
***************
*** 5450,5470 ****
   </tr>
  </table>
  
! <h2><a name="_Toc154229574"></a><a name="_Toc152605253"></a><a
  name="_Toc115416303"></a><a name="_Toc139993295"></a><a name="_Toc126872372"></a><a
! name="_Toc115417108"></a><span style='mso-bookmark:_Toc154229574'><span
  style='mso-bookmark:_Toc152605253'><span style='mso-bookmark:_Toc115416303'><span
! lang=FR style='mso-ansi-language:FR'>A.4 OpenAFS Client Service Environment
! Variables</span></span></span></span><span lang=FR style='mso-ansi-language:
! FR'><o:p></o:p></span></h2>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc154229575"></a><a name="_Toc152605254"></a><a
!   name="_Toc115416304"></a><a name="_Toc139993296"></a><a name="_Toc126872373"></a><span
!   style='mso-bookmark:_Toc154229575'><span style='mso-bookmark:_Toc152605254'><span
    style='mso-bookmark:_Toc115416304'>Variable: AFS_RPC_ENCRYPT</span></span></span></h5>
    <p class=MsoBodyText>Values:&nbsp;&nbsp; &quot;OFF&quot; disables the use of
    RPC encryption any other value allows RPC encryption to be used<br>
--- 6005,6025 ----
   </tr>
  </table>
  
! <h2><a name="_Toc170269039"></a><a name="_Toc152605253"></a><a
  name="_Toc115416303"></a><a name="_Toc139993295"></a><a name="_Toc126872372"></a><a
! name="_Toc115417108"></a><span style='mso-bookmark:_Toc170269039'><span
  style='mso-bookmark:_Toc152605253'><span style='mso-bookmark:_Toc115416303'><span
! lang=FR style='mso-ansi-language:FR'>A.4 OpenAFS Client Service <span
! class=SpellE>Environment</span> Variables</span></span></span></span><span
! lang=FR style='mso-ansi-language:FR'><o:p></o:p></span></h2>
  
  <table class=MsoNormalTable border=1 cellspacing=3 cellpadding=0
   style='mso-cellspacing:2.2pt;mso-padding-alt:0pt 0pt 0pt 0pt'>
   <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc170269040"></a><a name="_Toc152605254"></a><a
!   name="_Toc115416304"></a><a name="_Toc126872373"></a><a name="_Toc139993296"></a><span
!   style='mso-bookmark:_Toc170269040'><span style='mso-bookmark:_Toc152605254'><span
    style='mso-bookmark:_Toc115416304'>Variable: AFS_RPC_ENCRYPT</span></span></span></h5>
    <p class=MsoBodyText>Values:&nbsp;&nbsp; &quot;OFF&quot; disables the use of
    RPC encryption any other value allows RPC encryption to be used<br>
***************
*** 5473,5488 ****
   </tr>
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc154229576"></a><a name="_Toc152605255"></a><a
!   name="_Toc115416305"></a><a name="_Toc139993297"></a><a name="_Toc126872374"></a><span
!   style='mso-bookmark:_Toc154229576'><span style='mso-bookmark:_Toc152605255'><span
    style='mso-bookmark:_Toc115416305'>Variable: AFS_RPC_PROTSEQ</span></span></span></h5>
    <p class=MsoBodyText>Values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &quot;ncalrpc&quot;&nbsp; - local RPC<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &quot;ncacn_np&quot; - named pipes<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &quot;ncacn_ip_tcp&quot; - tcp/ip<br>
    Default:&nbsp; local RPC</p>
    </td>
   </tr>
--- 6028,6043 ----
   </tr>
   <tr style='mso-yfti-irow:1;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc170269041"></a><a name="_Toc152605255"></a><a
!   name="_Toc115416305"></a><a name="_Toc126872374"></a><a name="_Toc139993297"></a><span
!   style='mso-bookmark:_Toc170269041'><span style='mso-bookmark:_Toc152605255'><span
    style='mso-bookmark:_Toc115416305'>Variable: AFS_RPC_PROTSEQ</span></span></span></h5>
    <p class=MsoBodyText>Values:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &quot;<span class=SpellE>ncalrpc</span>&quot;&nbsp; - local RPC<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &quot;<span class=SpellE>ncacn_np</span>&quot; - named pipes<br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
!   &quot;<span class=SpellE>ncacn_ip_tcp</span>&quot; - <span class=SpellE>tcp/ip</span><br>
    Default:&nbsp; local RPC</p>
    </td>
   </tr>
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.13 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.15
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.13	Wed May 16 18:37:14 2007
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm	Fri Jun 22 10:18:40 2007
***************
*** 10,35 ****
  <meta name=Originator content="Microsoft Word 11">
  <base target=body>
  <link rel=File-List href="toc_files/filelist.xml">
! <title>OpenAFS for Windows 1.5.20 Table of Contents</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Author>Jeffrey Altman</o:Author>
    <o:LastAuthor>Jeffrey Altman</o:LastAuthor>
    <o:Revision>1</o:Revision>
!   <o:TotalTime>6</o:TotalTime>
    <o:Created>2006-11-30T04:12:00Z</o:Created>
    <o:LastSaved>2006-11-30T04:14:00Z</o:LastSaved>
    <o:Pages>1</o:Pages>
!   <o:Words>2846</o:Words>
!   <o:Characters>16223</o:Characters>
    <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>135</o:Lines>
!   <o:Paragraphs>38</o:Paragraphs>
!   <o:CharactersWithSpaces>19031</o:CharactersWithSpaces>
    <o:Version>11.8132</o:Version>
   </o:DocumentProperties>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <w:WordDocument>
    <w:ValidateAgainstSchemas/>
    <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
    <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
--- 10,37 ----
  <meta name=Originator content="Microsoft Word 11">
  <base target=body>
  <link rel=File-List href="toc_files/filelist.xml">
! <title>OpenAFS for Windows 1.5.21 Table of Contents</title>
  <!--[if gte mso 9]><xml>
   <o:DocumentProperties>
    <o:Author>Jeffrey Altman</o:Author>
    <o:LastAuthor>Jeffrey Altman</o:LastAuthor>
    <o:Revision>1</o:Revision>
!   <o:TotalTime>8</o:TotalTime>
    <o:Created>2006-11-30T04:12:00Z</o:Created>
    <o:LastSaved>2006-11-30T04:14:00Z</o:LastSaved>
    <o:Pages>1</o:Pages>
!   <o:Words>6516</o:Words>
!   <o:Characters>37145</o:Characters>
    <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>309</o:Lines>
!   <o:Paragraphs>87</o:Paragraphs>
!   <o:CharactersWithSpaces>43574</o:CharactersWithSpaces>
    <o:Version>11.8132</o:Version>
   </o:DocumentProperties>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <w:WordDocument>
+   <w:Zoom>0</w:Zoom>
+   <w:GrammarState>Clean</w:GrammarState>
    <w:ValidateAgainstSchemas/>
    <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
    <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
***************
*** 227,233 ****
  	mso-bidi-language:#0400;}
  </style>
  <![endif]--><!--[if gte mso 9]><xml>
!  <o:shapedefaults v:ext="edit" spidmax="5122"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <o:shapelayout v:ext="edit">
    <o:idmap v:ext="edit" data="1"/>
--- 229,235 ----
  	mso-bidi-language:#0400;}
  </style>
  <![endif]--><!--[if gte mso 9]><xml>
!  <o:shapedefaults v:ext="edit" spidmax="6146"/>
  </xml><![endif]--><!--[if gte mso 9]><xml>
   <o:shapelayout v:ext="edit">
    <o:idmap v:ext="edit" data="1"/>
***************
*** 248,1406 ****
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229351">1. Installer Options</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229352">2. System Requirements</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229353">2.1 Supported Operating Systems</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229354">2.1.1 Unsupported Operating Systems</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229355">2.2 Disk Space</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229356">2.3 Additional Software Packages</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229357">3. Operational Notes</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229358">3.1. Requirements for Kerberos 5
! Authentication</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229359">3.1.1. Active Directory</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229360">3.1.2. Using the krb524 service</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229361">3.1.3. Network Identity Manager Provider</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229362">3.2. Use of the Microsoft Loopback Adapter by
! the AFS Client Service</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229363">3.3. Using Freelance (Dynamic Root) Mode to
! Improve Mobility</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229364">3.4. Locating AFS Volume Database Servers via
! DNS</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229365">3.5. Obtaining AFS Tokens as a Integrated
! Part of Windows Logon</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229366">3.6. AFS System Tray Command Line Options</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229367">3.7. The “AFS Client Admins” Authorization
! Group</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229368">3.8. OpenAFS support for UNC paths</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229369">3.9. aklog.exe</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229370">3.10. OpenAFS Servers on Windows are
! Unsupported</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229371">3.10.1. OpenAFS Server Installation</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229372">3.10.2. Using the AFS Client Service when the
! Server is installed</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229373">3.11. OpenAFS Debugging Symbol files</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229374">3.12. Large Files (64-bit) Supported</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229375">3.13. Encrypted AFS Network</a> Communication</span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229376">3.14. Authenticated Access to the OpenAFS
! Client Service</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229377">3.15. No More INI Files</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229378">3.16. Microsoft Windows Internet Connection
! Firewall</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229379">3.17. Browsing AFS from the Explorer Shell
! and Office</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229380">3.18. Byte Range Locking</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229381">3.19. Automatic Discarding of AFS Tokens at
! Logoff</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229382">3.20. Windows Terminal Server installations</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229383">3.21. Hidden Dot Files</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229384">3.22. Status Cache Limits</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229385">3.23. NETBIOS over TCP/IP must be enabled</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229386">3.24. OpenAFS binaries are digitally signed</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229387">3.25. Maximum Size of the AFSCache File</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229388">3.26. Filename Character Sets</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229389">3.27. Known Character Set Issues with Roaming
! Profiles</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229390">3.28. The AFSCache File</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229391">3.29. Restricting OpenAFS Client Service
! Start and Stop</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229392">3.30. The @sys Name List</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229393">3.31. Symlinks to AFS UNC paths</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229394">3.32. Cache Manager Debugging Now Supported</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229395">3.33. Windows Logon Caching vs. Kerberos
! Logons</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229396">3.34. Initial Server Preferences</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229397">3.35. File Timestamps</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229398">3.36. Windows RPC client support must be
! installed</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229399">3.37. Generating Minidumps of the OpenAFS
! Client Service</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229400">3.38. AFS Client Universally Unique
! Identifiers</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229401">3.39. Delayed Write Errors with Microsoft
! Office Applications</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229402">3.40. Global Drives (aka Service Drive
  Letters) are no longer supported by Microsoft</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229403">3.41. 64-bit Microsoft Windows Installations</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229404">3.42. Known Issues with Microsoft Windows
! Vista</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229405">4. How to Debug Problems with OpenAFS for
! Windows:</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229406">4.1. pioctl debugging (IoctlDebug registry
! key)</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229407">4.2. afsd_service initialization log
! (%WinDir%\TEMP\afsd_init.log)</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229408">4.3. afsd_service debug logs (fs trace {-on,
  -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229409">4.4. Using SysInternal’s DbgView and FileMon
! Tools</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229410">4.5. Microsoft MiniDumps<span
  style='mso-spacerun:yes'>  </span>(fs minidump -&gt; %WinDir%\TEMP\afsd.dmp)</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229411">4.6. Single Sign-on (Integrated Logon)
! debugging</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229412">4.7. RX (AFS RPC) debugging (rxdebug)</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229413">4.8. Cache Manager debugging (cmdebug)</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229414">4.9. Persistent Cache consistency check</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229415">5. Reporting Bugs:</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229416">6. How to Contribute to the Development of
! OpenAFS for Windows</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229417">6.1. The USENIX OpenAFS Fund</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229418">6.2. Secure Endpoints Inc.</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229419">6.3. Direct contributions of code and/or
! documentation</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229420">6.4. OpenAFS for Windows Mailing Lists</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229421">7. MSI Deployment Guide</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229422">7.1. Introduction</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229423">7.1.1 Requirements</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229424">7.1.2 Authoring a Transform</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229425">7.2. Configuration Options</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229426">7.2.1 Configurable Properties</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229427">7.2.1.1 Setting Properties</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229428">7.2.1.2 OpenAFS for Windows Properties</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229429"><span style='mso-fareast-font-family:"Times New Roman"'>(Service
! parameters):</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229430"><span style='mso-fareast-font-family:"Times New Roman"'>(Network
! provider):</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229431"><span style='mso-fareast-font-family:"Times New Roman"'>(OpenAFS
! Client):</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229432">7.2.1.2.1 Registry Properties</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229433"><span style='mso-fareast-font-family:"Times New Roman"'>AFSCACHEPATH</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229434"><span style='mso-fareast-font-family:"Times New Roman"'>AFSCACHESIZE</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229435"><span style='mso-fareast-font-family:"Times New Roman"'>AFSCELLNAME</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229436"><span style='mso-fareast-font-family:"Times New Roman"'>FREELANCEMODE</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229437"><span style='mso-fareast-font-family:"Times New Roman"'>HIDEDOTFILES</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229438"><span style='mso-fareast-font-family:"Times New Roman"'>LOGONOPTIONS</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229439"><span style='mso-fareast-font-family:"Times New Roman"'>MOUNTROOT</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229440"><span style='mso-fareast-font-family:"Times New Roman"'>NETBIOSNAME</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229441"><span style='mso-fareast-font-family:"Times New Roman"'>NOFINDLANABYNAME</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229442"><span style='mso-fareast-font-family:"Times New Roman"'>RXMAXMTU</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229443"><span style='mso-fareast-font-family:"Times New Roman"'>SECURITYLEVEL</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229444"><span style='mso-fareast-font-family:"Times New Roman"'>SMBAUTHTYPE</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229445"><span style='mso-fareast-font-family:"Times New Roman"'>STOREANSIFILENAMES</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229446"><span style='mso-fareast-font-family:"Times New Roman"'>USEDNS</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229447">7.2.1.2.2 AFSCreds.exe Properties</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229448"><span style='mso-fareast-font-family:"Times New Roman"'>CREDSSTARTUP</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229449"><span style='mso-fareast-font-family:"Times New Roman"'>CREDSAUTOINIT</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229450"><span style='mso-fareast-font-family:"Times New Roman"'>CREDSIPCHDET</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229451"><span style='mso-fareast-font-family:"Times New Roman"'>CREDSQUIET</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229452"><span style='mso-fareast-font-family:"Times New Roman"'>CREDSRENEWDRMAP</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229453"><span style='mso-fareast-font-family:"Times New Roman"'>CREDSSHOW</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229454">7.2.2 Existing Registry Entries</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229455">7.2.3 Replacing Configuration Files</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229456">7.2.3.1 Components for Configuration Files</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229457">7.2.4 Adding Domain Specific Registry Keys</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229458">7.2.5 Adding Site Specific Freelance Registry
! Keys</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229459">7.3 Additional Resources</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229460">7.4. Upgrades</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229461">Appendix A: Registry Values</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229462">A.1. Service parameters</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229463">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229464"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! LANadapter</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229465"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! CacheSize</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229466"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ChunkSize</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229467"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Daemons</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229468"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ServerThreads</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229469"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Stats</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229470"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! LogoffPreserveTokens</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229471"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! RootVolume</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229472"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! MountRoot</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229473"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! CachePath</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229474"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! NonPersistentCaching</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229475"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ValidateCache</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229476"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! TrapOnPanic</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229477"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! NetbiosName</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229478"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! IsGateway</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229479"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ReportSessionStartups</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229480"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! TraceBufferSize</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229481"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! SysName</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229482"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! SecurityLevel</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229483"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! UseDNS</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229484"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! FreelanceClient</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229485"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! HideDotFiles</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229486"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! MaxMpxRequests</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229487"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! MaxVCPerServer</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229488"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Cell</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229489"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! RxNoJumbo</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229490"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! RxMaxMTU</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229491"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ConnDeadTimeout</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229492"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! HardDeadTimeout</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229493"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! TraceOption</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229494"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! AllSubmount</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229495"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! NoFindLanaByName</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229496"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! MaxCPUs</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229497"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! smbAuthType</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229498"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! MaxLogSize</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229499"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! FlushOnHibernate</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229500"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! daemonCheckDownInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229501"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! daemonCheckUpInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229502"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! daemonCheckVolInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229503"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! daemonCheckCBInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229504"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! daemonCheckLockInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229505"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! daemonTokenCheckInterval</span></a></span></span><span style='mso-no-proof:
! yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229506"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! CallBackPort</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229507"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! EnableServerLocks</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229508">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229509"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &lt;Drive Letter:&gt; for example &quot;G:&quot;</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229510">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229511"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! CellServDBDir</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229512"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! VerifyServiceSignature</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229513"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! IoctlDebug</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229514"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! MiniDumpType</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229515"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! StoreAnsiFilenames</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229516">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229517"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;smb/cifs share name&quot;</span></a></span></span><span style='mso-no-proof:
! yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229518">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229519"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;numeric value&quot;</span></a></span></span><span style='mso-no-proof:
! yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229520">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229521"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;numeric value&quot;</span></a></span></span><span style='mso-no-proof:
! yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229522">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229523"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;submount name&quot;</span></a></span></span><span style='mso-no-proof:
! yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229524">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Server
! Preferences\VLDB]</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229525"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;hostname or ip address&quot;</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229526">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Server
! Preferences\File]</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229527"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;hostname or ip address&quot;</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229528">A.2. Integrated Logon Network provider
! parameters</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229529">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229530"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! FailLoginsSilently</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229531">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229532"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! NoWarnings</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229533"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! AuthentProviderPath</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229534"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Class</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229535"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! DependOnGroup</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229536"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! DependOnService</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229537"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Name</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229538"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ProviderPath</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229539">A.2.1 Domain specific configuration keys for
! the Network Provider</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229540">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229541">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229542">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
! name&quot;]</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229543">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229544">Example:</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229545">A.2.1.1 Domain specific configuration values</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229546">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
  name&quot;]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229547"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! LogonOptions</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229548"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! FailLoginsSilentl</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229549"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! LogonScript</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229550"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! LoginRetryInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229551"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! LoginSleepInterval</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229552"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! TheseCells</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229553">A.2.1.2 Selection of effective values for
! domain specific configuration</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229554">A.2.1.3 Exceptions to A.2.1.2</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229555">2.1.3.1 'FailLoginsSilently'</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229556">2.1.3.2 'LogonScript'</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229557">A.3. AFS Credentials System Tray Tool
! parameters</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229558">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229559"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Gateway</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229560"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Cell</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229561">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]
! [HKCU\SOFTWARE\OpenAFS\Client]</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229562"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! ShowTrayIcon</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229563"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! EnableKFW</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229564"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Use524</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229565"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! AfscredsShortcutParams</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229566">Regkey: [HKCU\SOFTWARE\OpenAFS\Client]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229567"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! Authentication Cell</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229568">Regkey:
! [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229569"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;afs cell name&quot;</span></a></span></span><span style='mso-no-proof:
! yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229570">Regkey: [HKCU\SOFTWARE\OpenAFS\Client\Active
! Maps]</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229571"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;upper case drive letter&quot;</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229572">Regkey:
! [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229573"><span style='mso-fareast-font-family:"Times New Roman"'>Value:
! &quot;upper case drive letter&quot;</span></a></span></span><span
! style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229574">A.4 OpenAFS Client Service Environment
! Variables</a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229575"><span style='mso-fareast-font-family:"Times New Roman"'>Variable:
! AFS_RPC_ENCRYPT</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc154229576"><span style='mso-fareast-font-family:"Times New Roman"'>Variable:
! AFS_RPC_PROTSEQ</span></a></span></span><span style='mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoNormal><!--[if supportFields]><span style='mso-element:field-end'></span><![endif]--><o:p>&nbsp;</o:p></p>
  
--- 250,1454 ----
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268813">1. Installer Options</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268814">2. System Requirements</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268815">2.1 Supported Operating Systems</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268816">2.1.1 Unsupported Operating Systems</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268817">2.2 Disk Space</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268818">2.3 Additional Software Packages</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268819">3. Operational Notes</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268820">3.1. Requirements for Kerberos v5
! Authentication</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268821">3.1.1. Active Directory</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268822">3.1.2. Using the krb524 service</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268823">3.1.3. Network Identity Manager Provider</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268824">3.2. Use of the Microsoft Loopback Adapter by
! the AFS Client Service</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268825">3.3. Using Freelance (Dynamic Root) Mode to
! Improve Mobility</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268826">3.4. Locating AFS Volume Database Servers via
! DNS</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268827">3.5. Obtaining AFS Tokens as a Integrated
! Part of Windows Logon</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268828">3.6. AFS System Tray Command Line Options</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268829">3.7. The “AFS Client Admins” Authorization
! Group</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268830">3.8. OpenAFS support for UNC paths</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268831">3.9. aklog.exe</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268832">3.10. OpenAFS Servers on Windows are
! Unsupported</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268833">3.10.1. OpenAFS Server Installation</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268834">3.10.2. Using the AFS Client Service when the
! Server is installed</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268835">3.11. OpenAFS Debugging Symbol files</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268836">3.12. Large Files (64-bit) Supported</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268837">3.13. Encrypted AFS Network Communication</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268838">3.14. Authenticated Access to the OpenAFS
! Client Service</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268839">3.15. No More INI Files</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268840">3.16. Microsoft Windows Internet Connection
! Firewall</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268841">3.17. Browsing AFS from the Explorer Shell
! and Office</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268842">3.18. Byte Range Locking</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268843">3.19. Automatic Discarding of AFS Tokens at
! Logoff</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268844">3.20. Windows Terminal Server installations</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268845">3.21. Hidden Dot Files</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268846">3.22. Status Cache Limits</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268847">3.23. NETBIOS over TCP/IP must be enabled</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268848">3.24. OpenAFS binaries are digitally signed</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268849">3.25. Maximum Size of the AFSCache File</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268850">3.26. Filename Character Sets</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268851">3.27. Known Character Set Issues with Roaming
! Profiles</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268852">3.28. The AFSCache File</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268853">3.29. Restricting OpenAFS Client Service
! Start and Stop</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268854">3.30. The @sys Name List</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268855">3.31. Symlinks to AFS UNC paths</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268856">3.32. Cache Manager Debugging Now Supported</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268857">3.33. Windows Logon Caching vs. Kerberos
! Logons</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268858">3.34. Initial Server Preferences</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268859">3.35. File Timestamps</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268860">3.36. Windows RPC client support must be
! installed</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268861">3.37. Generating Minidumps of the OpenAFS
! Client Service</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268862">3.38. AFS Client Universally Unique
! Identifiers</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268863">3.39. Delayed Write Errors with Microsoft
! Office Applications</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268864">3.40. Global Drives (aka Service Drive
  Letters) are no longer supported by Microsoft</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268865">3.41. 64-bit Microsoft Windows Installations</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268866">3.42. Known Issues with Microsoft Windows
! Vista</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
! class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268867">3.43. New AFS Share Name Syntax Provides
! Direct Access to Volumes</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
! class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268868">3.44. Differences between Windows and UNIX
! “fs examine”</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268869">4. How to Debug Problems with OpenAFS for
! Windows:</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268870">4.1. pioctl debugging (IoctlDebug registry
! key)</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268871">4.2. afsd_service initialization log
! (%WinDir%\TEMP\afsd_init.log)</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268872">4.3. afsd_service debug logs (fs trace {-on,
  -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268873">4.4. Using SysInternal’s DbgView and ProcMon
! or FileMon Tools</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268874">4.5. Microsoft MiniDumps<span
  style='mso-spacerun:yes'>  </span>(fs minidump -&gt; %WinDir%\TEMP\afsd.dmp)</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268875">4.6. Single Sign-on (Integrated Logon)
! debugging</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268876">4.7. RX (AFS RPC) debugging (rxdebug)</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268877">4.8. Cache Manager debugging (cmdebug)</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268878">4.9. Persistent Cache consistency check</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268879">5. Reporting Bugs:</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268880">6. How to Contribute to the Development of
! OpenAFS for Windows</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268881">6.1. The USENIX OpenAFS Fund</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268882">6.2. Secure Endpoints Inc.</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268883">6.3. Direct contributions of code and/or
! documentation</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268884">6.4. OpenAFS for Windows Mailing Lists</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268885">7. MSI Deployment Guide</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268886">7.1. Introduction</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268887">7.1.1 Requirements</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268888">7.1.2 Authoring a Transform</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268889">7.2. Configuration Options</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268890">7.2.1 Configurable Properties</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268891">7.2.1.1 Setting Properties</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268892">7.2.1.2 OpenAFS for Windows Properties</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268893">(Service parameters):</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268894">(Network provider):</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268895">(OpenAFS Client):</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268896">7.2.1.2.1 Registry Properties</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268897">AFSCACHEPATH</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268898">AFSCACHESIZE</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268899">AFSCELLNAME</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268900">FREELANCEMODE</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268901">HIDEDOTFILES</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268902">LOGONOPTIONS</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268903">MOUNTROOT</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268904">NETBIOSNAME</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268905">NOFINDLANABYNAME</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268906">RXMAXMTU</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268907">SECURITYLEVEL</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268908">SMBAUTHTYPE</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268909">STOREANSIFILENAMES</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268910">USEDNS</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268911">7.2.1.2.2 AFSCreds.exe Properties</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268912">CREDSSTARTUP</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268913">CREDSAUTOINIT</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268914">CREDSIPCHDET</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268915">CREDSQUIET</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268916">CREDSRENEWDRMAP</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc6 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268917">CREDSSHOW</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268918">7.2.2 Existing Registry Entries</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268919">7.2.3 Replacing Configuration Files</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268920">7.2.3.1 Components for Configuration Files</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268921">7.2.4 Adding Domain Specific Registry Keys</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268922">7.2.5 Adding Site Specific Freelance Registry
! Keys</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268923">7.3 Additional Resources</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268924">7.4. Upgrades</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc1 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268925">Appendix A: Registry Values</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268926">A.1. Service parameters</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268927">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268928">Value: LANadapter</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268929">Value: CacheSize</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268930">Value: ChunkSize</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268931">Value: Daemons</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268932">Value: ServerThreads</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268933">Value: Stats</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268934">Value: LogoffPreserveTokens</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268935">Value: RootVolume</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268936">Value: MountRoot</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268937">Value: CachePath</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268938">Value: NonPersistentCaching</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268939">Value: ValidateCache</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268940">Value: TrapOnPanic</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268941">Value: NetbiosName</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268942">Value: IsGateway</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268943">Value: ReportSessionStartups</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268944">Value: TraceBufferSize</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268945">Value: SysName</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268946">Value: SecurityLevel</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268947">Value: UseDNS</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268948">Value: FreelanceClient</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268949">Value: HideDotFiles</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268950">Value: MaxMpxRequests</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268951">Value: MaxVCPerServer</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268952">Value: Cell</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268953">Value: RxNoJumbo</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268954">Value: RxMaxMTU</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268955">Value: ConnDeadTimeout</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268956">Value: HardDeadTimeout</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268957">Value: TraceOption</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268958">Value: AllSubmount</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268959">Value: NoFindLanaByName</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268960">Value: MaxCPUs</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268961">Value: smbAuthType</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268962">Value: MaxLogSize</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268963">Value: FlushOnHibernate</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268964">Value: daemonCheckDownInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268965">Value: daemonCheckUpInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268966">Value: daemonCheckVolInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268967">Value: daemonCheckCBInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268968">Value: daemonCheckLockInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268969">Value: daemonCheckTokenInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268970">Value: daemonCheckOfflineVolInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268971">Value: CallBackPort</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
! class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268972">Value: EnableServerLocks</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268973">Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268974">Value: &lt;Drive Letter:&gt; for example
! &quot;G:&quot;</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268975">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268976">Value: CellServDBDir</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268977">Value: VerifyServiceSignature</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268978">Value: IoctlDebug</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268979">Value: MiniDumpType</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268980">Value: StoreAnsiFilenames</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268981">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268982">Value: &quot;smb/cifs share name&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268983">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268984">Value: &quot;numeric value&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268985">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268986">Value: &quot;numeric value&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268987">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268988">Value: &quot;submount name&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268989">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Server
! Preferences\VLDB]</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268990">Value: &quot;hostname or ip address&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268991">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Server
! Preferences\File]</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268992">Value: &quot;hostname or ip address&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268993">A.2. Integrated Logon Network provider
! parameters</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268994">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268995">Value: FailLoginsSilently</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268996">Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268997">Value: NoWarnings</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268998">Value: AuthentProviderPath</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170268999">Value: Class</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269000">Value: DependOnGroup</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269001">Value: DependOnService</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269002">Value: Name</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269003">Value: ProviderPath</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269004">A.2.1 Domain specific configuration keys for
! the Network Provider</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269005">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269006">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269007">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
! name&quot;]</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269008">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269009">Example:</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269010">A.2.1.1 Domain specific configuration values</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269011">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
  name&quot;]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269012">Value: LogonOptions</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269013">Value: FailLoginsSilentl</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269014">Value: LogonScript</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269015">Value: LoginRetryInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269016">Value: LoginSleepInterval</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269017">Value: TheseCells</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269018">A.2.1.2 Selection of effective values for
! domain specific configuration</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269019">A.2.1.3 Exceptions to A.2.1.2</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269020">2.1.3.1 'FailLoginsSilently'</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc4 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269021">2.1.3.2 'LogonScript'</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269022">A.3. AFS Credentials System Tray Tool
! parameters</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269023">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269024">Value: Gateway</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269025">Value: Cell</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269026">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]
! [HKCU\SOFTWARE\OpenAFS\Client]</a></span></span><span style='mso-fareast-font-family:
! "Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269027">Value: ShowTrayIcon</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269028">Value: EnableKFW</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269029">Value: Use524</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269030">Value: AfscredsShortcutParams</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269031">Regkey: [HKCU\SOFTWARE\OpenAFS\Client]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269032">Value: Authentication Cell</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269033">Regkey: [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269034">Value: &quot;afs cell name&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269035">Regkey: [HKCU\SOFTWARE\OpenAFS\Client\Active
! Maps]</a></span></span><span style='mso-fareast-font-family:"Times New Roman";
! mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269036">Value: &quot;upper case drive letter&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc3 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269037">Regkey: [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269038">Value: &quot;upper case drive letter&quot;</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269039"><span lang=FR style='mso-ansi-language:FR'>A.4
! OpenAFS Client Service Environment Variables</span></a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269040">Variable: AFS_RPC_ENCRYPT</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoToc5 style='tab-stops:right dotted 431.5pt'><span
  class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc170269041">Variable: AFS_RPC_PROTSEQ</a></span></span><span
! style='mso-fareast-font-family:"Times New Roman";mso-no-proof:yes'><o:p></o:p></span></p>
  
  <p class=MsoNormal><!--[if supportFields]><span style='mso-element:field-end'></span><![endif]--><o:p>&nbsp;</o:p></p>
  
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/cachmgr.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/fserver1.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/fserver2.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/overview.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/scout1.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/scout2.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/scout3.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/scout4.gif
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/SysAdminGd/vnode.gif
Index: openafs/src/WINNT/install/NSIS/CellServDB
diff -c openafs/src/WINNT/install/NSIS/CellServDB:1.6.4.2 openafs/src/WINNT/install/NSIS/CellServDB:1.6.4.3
*** openafs/src/WINNT/install/NSIS/CellServDB:1.6.4.2	Fri Mar  9 23:55:08 2007
--- openafs/src/WINNT/install/NSIS/CellServDB	Thu Jul  5 19:47:40 2007
***************
*** 1,4 ****
! >grand.central.org      #GCO Public CellServDB 09 Mar 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
--- 1,4 ----
! >grand.central.org      #GCO Public CellServDB 05 Jul 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
***************
*** 18,23 ****
--- 18,26 ----
  129.27.161.7                    #faepafs1.tu-graz.ac.at
  129.27.161.15                   #faepafs2.tu-graz.ac.at
  129.27.161.114                  #faepafs3.tu-graz.ac.at
+ >sums.math.mcgill.ca    #Society of Undergraduate Mathematics Students of McGill Universi
+ 132.216.24.122                  #germain.sums.math.mcgill.ca
+ 132.216.24.125                  #turing.sums.math.mcgill.ca
  >cern.ch                #European Laboratory for Particle Physics, Geneva
  137.138.128.148                 #afsdb1.cern.ch
  137.138.246.50                  #afsdb3.cern.ch
***************
*** 110,115 ****
--- 113,120 ----
  141.35.2.180                    #afs00.rz.uni-jena.de
  141.35.2.181                    #afs01.rz.uni-jena.de
  141.35.2.182                    #afs02.rz.uni-jena.de
+ >impetus.uni-koeln.de   #Univ. of Cologne - Geophysics/Meteorology Inst.
+ 134.95.80.39                    #forano.meteo.uni-koeln.de
  >meteo.uni-koeln.de     #Univ. of Cologne - Inst. for Geophysics & Meteorology
  134.95.144.22                   #afs1.meteo.uni-koeln.de
  134.95.144.24                   #afs2.meteo.uni-koeln.de
***************
*** 161,183 ****
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.194.178                   #cherry.srv.cs.cmu.edu
! 128.2.194.179                   #pumpkin.srv.cs.cmu.edu
! 128.2.194.180                   #strawberry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar Campus Cell
! 204.194.25.7                    #afs1.qatar.cmu.edu
! 204.194.25.8                    #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #Cornell Nanoscale Science and Technology Facility
  128.253.198.9                   #hole.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
--- 166,189 ----
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.201.46                    #strawberry.srv.cs.cmu.edu
! 128.2.201.47                    #pumpkin.srv.cs.cmu.edu
! 128.2.201.48                    #cherry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar
! 86.36.46.6                      #afs1.qatar.cmu.edu
! 86.36.46.7                      #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #CNF
  128.253.198.9                   #hole.cnf.cornell.edu
+ 128.253.198.27                  #smoke.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 285,290 ****
--- 291,300 ----
  128.174.251.8                   #alnitak.acm.uiuc.edu
  128.174.251.9                   #alnilam.acm.uiuc.edu
  128.174.251.10                  #mintaka.acm.uiuc.edu
+ >illigal.uiuc.edu       #Illinois Genetic Algorithms Labaratory
+ 128.174.193.200                 #ial.illigal.uiuc.edu
+ 128.174.193.201                 #cac.illigal.uiuc.edu
+ 128.174.193.202                 #gcs.illigal.uiuc.edu
  >ncsa.uiuc.edu          #University of Illinois
  141.142.3.5                     #congo.ncsa.uiuc.edu
  141.142.3.8                     #nile.ncsa.uiuc.edu
***************
*** 478,486 ****
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 209.234.76.70                   #service-3.tproa.net
! 209.234.76.75                   #service-4.tproa.net
! 209.234.76.76                   #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 488,496 ----
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 72.13.4.23                      #service-3.tproa.net
! 72.13.4.24                      #service-4.tproa.net
! 72.13.4.25                      #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
***************
*** 519,526 ****
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
- 130.237.209.39                  #ezri.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
--- 529,536 ----
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
+ 130.237.209.5                   #afsdb2.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
***************
*** 546,552 ****
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.237.230                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
--- 556,562 ----
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.234.101                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
Index: openafs/src/WINNT/install/NSIS/OpenAFS.nsi
diff -c openafs/src/WINNT/install/NSIS/OpenAFS.nsi:1.88.4.9 openafs/src/WINNT/install/NSIS/OpenAFS.nsi:1.88.4.10
*** openafs/src/WINNT/install/NSIS/OpenAFS.nsi:1.88.4.9	Wed Mar 28 18:30:46 2007
--- openafs/src/WINNT/install/NSIS/OpenAFS.nsi	Fri Jun 22 10:43:15 2007
***************
*** 1664,1669 ****
--- 1664,1670 ----
    Delete "$INSTDIR\Documentation\html\InstallGd\*"
    Delete "$INSTDIR\Documentation\html\ReleaseNotes\*"
    Delete "$INSTDIR\Documentation\html\ReleaseNotes\logo_files\*"
+   Delete "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files\*"
    Delete "$INSTDIR\Documentation\html\SysAdminGd\*"
  
     Delete /REBOOTOK "$INSTDIR\Common\afs_config.exe"
***************
*** 2881,2886 ****
--- 2882,2889 ----
     File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    File "..\..\doc\install\Documentation\en_US\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1033.dll"    "$INSTDIR\Client\Program\afscreds_1033.dll" "$INSTDIR"
***************
*** 2940,2945 ****
--- 2943,2950 ----
     ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\*"
     ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\logo_files\*"
+    ;SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\de_DE\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
    !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1032.dll"                      "$INSTDIR\Client\Program\afscreds_1032.dll" "$INSTDIR"
***************
*** 2999,3004 ****
--- 3004,3011 ----
     ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\es_ES\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1034.dll"     "$INSTDIR\Client\Program\afscreds_1034.dll" "$INSTDIR" 
***************
*** 3058,3063 ****
--- 3065,3072 ----
     ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\ja_JP\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1041.dll"  "$INSTDIR\Client\Program\afscreds_1041.dll" "$INSTDIR"  
***************
*** 3117,3122 ****
--- 3126,3133 ----
     File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\ko_KR\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1042.dll"  "$INSTDIR\Client\Program\afscreds_1042.dll" "$INSTDIR"   
***************
*** 3177,3182 ****
--- 3188,3195 ----
     File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\pt_BR\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL  "${AFS_CLIENT_BUILDDIR}\afscreds_1046.dll"  "$INSTDIR\Client\Program\afscreds_1046.dll" "$INSTDIR"    
***************
*** 3236,3241 ****
--- 3249,3256 ----
     File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\zh_CN\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_2052.dll"   "$INSTDIR\Client\Program\afscreds_2052.dll" "$INSTDIR"     
***************
*** 3295,3300 ****
--- 3310,3317 ----
     File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\*"
     SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\logo_files"
     ;File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\logo_files\*"
+    SetOutPath "$INSTDIR\Documentation\html\ReleaseNotes\relnotes_files"
+    ;File "..\..\doc\install\Documentation\zh_TW\html\ReleaseNotes\relnotes_files\*"
  
     SetOutPath "$INSTDIR\Client\Program"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afscreds_1028.dll"  "$INSTDIR\Client\Program\_1028.dll" "$INSTDIR"      
Index: openafs/src/WINNT/install/wix/CellServDB
diff -c openafs/src/WINNT/install/wix/CellServDB:1.6.4.2 openafs/src/WINNT/install/wix/CellServDB:1.6.4.3
*** openafs/src/WINNT/install/wix/CellServDB:1.6.4.2	Fri Mar  9 23:55:11 2007
--- openafs/src/WINNT/install/wix/CellServDB	Thu Jul  5 19:47:44 2007
***************
*** 1,4 ****
! >grand.central.org      #GCO Public CellServDB 09 Mar 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
--- 1,4 ----
! >grand.central.org      #GCO Public CellServDB 05 Jul 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
***************
*** 18,23 ****
--- 18,26 ----
  129.27.161.7                    #faepafs1.tu-graz.ac.at
  129.27.161.15                   #faepafs2.tu-graz.ac.at
  129.27.161.114                  #faepafs3.tu-graz.ac.at
+ >sums.math.mcgill.ca    #Society of Undergraduate Mathematics Students of McGill Universi
+ 132.216.24.122                  #germain.sums.math.mcgill.ca
+ 132.216.24.125                  #turing.sums.math.mcgill.ca
  >cern.ch                #European Laboratory for Particle Physics, Geneva
  137.138.128.148                 #afsdb1.cern.ch
  137.138.246.50                  #afsdb3.cern.ch
***************
*** 110,115 ****
--- 113,120 ----
  141.35.2.180                    #afs00.rz.uni-jena.de
  141.35.2.181                    #afs01.rz.uni-jena.de
  141.35.2.182                    #afs02.rz.uni-jena.de
+ >impetus.uni-koeln.de   #Univ. of Cologne - Geophysics/Meteorology Inst.
+ 134.95.80.39                    #forano.meteo.uni-koeln.de
  >meteo.uni-koeln.de     #Univ. of Cologne - Inst. for Geophysics & Meteorology
  134.95.144.22                   #afs1.meteo.uni-koeln.de
  134.95.144.24                   #afs2.meteo.uni-koeln.de
***************
*** 161,183 ****
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.194.178                   #cherry.srv.cs.cmu.edu
! 128.2.194.179                   #pumpkin.srv.cs.cmu.edu
! 128.2.194.180                   #strawberry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar Campus Cell
! 204.194.25.7                    #afs1.qatar.cmu.edu
! 204.194.25.8                    #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #Cornell Nanoscale Science and Technology Facility
  128.253.198.9                   #hole.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
--- 166,189 ----
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.201.46                    #strawberry.srv.cs.cmu.edu
! 128.2.201.47                    #pumpkin.srv.cs.cmu.edu
! 128.2.201.48                    #cherry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar
! 86.36.46.6                      #afs1.qatar.cmu.edu
! 86.36.46.7                      #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #CNF
  128.253.198.9                   #hole.cnf.cornell.edu
+ 128.253.198.27                  #smoke.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 285,290 ****
--- 291,300 ----
  128.174.251.8                   #alnitak.acm.uiuc.edu
  128.174.251.9                   #alnilam.acm.uiuc.edu
  128.174.251.10                  #mintaka.acm.uiuc.edu
+ >illigal.uiuc.edu       #Illinois Genetic Algorithms Labaratory
+ 128.174.193.200                 #ial.illigal.uiuc.edu
+ 128.174.193.201                 #cac.illigal.uiuc.edu
+ 128.174.193.202                 #gcs.illigal.uiuc.edu
  >ncsa.uiuc.edu          #University of Illinois
  141.142.3.5                     #congo.ncsa.uiuc.edu
  141.142.3.8                     #nile.ncsa.uiuc.edu
***************
*** 478,486 ****
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 209.234.76.70                   #service-3.tproa.net
! 209.234.76.75                   #service-4.tproa.net
! 209.234.76.76                   #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 488,496 ----
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 72.13.4.23                      #service-3.tproa.net
! 72.13.4.24                      #service-4.tproa.net
! 72.13.4.25                      #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
***************
*** 519,526 ****
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
- 130.237.209.39                  #ezri.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
--- 529,536 ----
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
+ 130.237.209.5                   #afsdb2.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
***************
*** 546,552 ****
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.237.230                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
--- 556,562 ----
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.234.101                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
Index: openafs/src/WINNT/install/wix/feature.wxi
diff -c openafs/src/WINNT/install/wix/feature.wxi:1.14.2.3 openafs/src/WINNT/install/wix/feature.wxi:1.14.2.4
*** openafs/src/WINNT/install/wix/feature.wxi:1.14.2.3	Thu Oct 12 17:19:42 2006
--- openafs/src/WINNT/install/wix/feature.wxi	Fri Jun 22 18:23:02 2007
***************
*** 13,18 ****
--- 13,19 ----
             <ComponentRef Id="cmf_index2_HTM_en_US" />
             <ComponentRef Id="cmp_index_files_en_US" />
             <ComponentRef Id="cmp_logo_files_en_US" />
+            <ComponentRef Id="cmp_relnotes_files_en_US" />
    <?endif?>
  
    <?ifndef BinsOnly ?>
Index: openafs/src/WINNT/install/wix/files.wxi
diff -c openafs/src/WINNT/install/wix/files.wxi:1.22.2.12 openafs/src/WINNT/install/wix/files.wxi:1.22.2.13
*** openafs/src/WINNT/install/wix/files.wxi:1.22.2.12	Thu Apr 26 14:45:16 2007
--- openafs/src/WINNT/install/wix/files.wxi	Fri Jun 22 18:23:02 2007
***************
*** 773,778 ****
--- 773,793 ----
                                      <File Id="filelfimage001_JPG_$(var.Language)" Name="image001.jpg" LongName="image001.jpg" DiskId="1"/>
                                  </Component>
                              </Directory> <!-- logo_files -->
+                             <Directory Id="dirrelnotes_files_$(var.Language)" Name="relnotes" LongName="relnotes_files" src="$(var.SrcDir)\WINNT\doc\install\Documentation\$(var.Language)\html\ReleaseNotes\relnotes_files">
+                                 <Component Id="cmp_relnotes_files_$(var.Language)" Guid="$(var.DocHtmlRelnotesFilesGuid)">
+                                   <File Id="filernfilelist.xml_$(var.Language)" Name="filelist.xml" DiskId="1" /> 
+                                   <File Id="filernimage001.png_$(var.Language)" LongName="image001.png" Name="image001.png" DiskId="1" /> 
+                                   <File Id="filernimage002.jpg_$(var.Language)" LongName="image002.jpg" Name="image002.jpg" DiskId="1" /> 
+                                   <File Id="filernimage003.png_$(var.Language)" LongName="image003.png" Name="image003.png" DiskId="1" /> 
+                                   <File Id="filernimage004.jpg_$(var.Language)" LongName="image004.jpg" Name="image004.jpg" DiskId="1" /> 
+                                   <File Id="filernimage005.png_$(var.Language)" LongName="image005.png" Name="image005.png" DiskId="1" /> 
+                                   <File Id="filernimage006.jpg_$(var.Language)" LongName="image006.jpg" Name="image006.jpg" DiskId="1" /> 
+                                   <File Id="filernimage007.jpg_$(var.Language)" LongName="image007.jpg" Name="image007.jpg" DiskId="1" /> 
+                                   <File Id="filernnetidmgr_afs_cfg.png_$(var.Language)" LongName="netidmgr_afs_cfg.png" Name="nmafscfg.png" DiskId="1" /> 
+                                   <File Id="filernnetidmgr_afs_opt.png_$(var.Language)" LongName="netidmgr_afs_opt.png" Name="nmafsopt.png" DiskId="1" /> 
+                                   <File Id="filernnetidmgr_main.png_$(var.Language)" LongName="netidmgr_main.png" Name="nmmain.png" DiskId="1" /> 
+                                 </Component>
+                             </Directory>
                          </Directory> <!-- Release Notes -->
                      </Directory> <!-- Html -->
              </Directory> <!-- Documentation -->
Index: openafs/src/WINNT/license/main.cpp
diff -c openafs/src/WINNT/license/main.cpp:1.3 openafs/src/WINNT/license/main.cpp:1.3.4.1
*** openafs/src/WINNT/license/main.cpp:1.3	Sat Nov  5 01:48:00 2005
--- openafs/src/WINNT/license/main.cpp	Thu Jul  5 11:55:42 2007
***************
*** 36,49 ****
     size_t cchReq = cchIn * 2 + 1;
     if (pszOut && (cchOut < cchReq))
        {
!       GlobalFree ((HGLOBAL)pszOut);
        pszOut = NULL;
        cchOut = 0;
        }
  
     if (!pszOut)
        {
!       pszOut = (LPTSTR)GlobalAlloc (GMEM_FIXED, cchReq);
        cchOut = cchReq;
        }
  
--- 36,49 ----
     size_t cchReq = cchIn * 2 + 1;
     if (pszOut && (cchOut < cchReq))
        {
!       free(pszOut);
        pszOut = NULL;
        cchOut = 0;
        }
  
     if (!pszOut)
        {
!       pszOut = (LPTSTR)malloc(cchReq);
        cchOut = cchReq;
        }
  
***************
*** 216,245 ****
     DWORD cbSource;
     if ((cbSource = GetFileSize (hFile, NULL)) != 0)
        {
!       LPTSTR abSource = (LPTSTR)GlobalAlloc (GMEM_FIXED, cbSource + 5);
  
        DWORD dwRead;
!       if (!ReadFile (hFile, abSource, cbSource, &dwRead, NULL))
           {
           printf ("failed to read %s; error %lu\n", psz, GetLastError());
           rc = FALSE;
           }
        else
           {
!          abSource[ dwRead ] = 0;
!          DWORD cbTarget = dwRead * 4;
!          LPSTR abTarget = (LPSTR)GlobalAlloc (GMEM_FIXED, cbTarget);
           memset (abTarget, 0x00, cbTarget);
  
           BOOL fDefault = FALSE;
!          WideCharToMultiByte (g::CodePage, 0, (LPCWSTR)abSource, dwRead, abTarget, cbTarget, TEXT(" "), &fDefault);
  
           rc = FormatFile (psz, abTarget);
  
!          GlobalFree ((HGLOBAL)abTarget);
           }
  
!       GlobalFree ((HGLOBAL)abSource);
        }
  
     CloseHandle (hFile);
--- 216,245 ----
     DWORD cbSource;
     if ((cbSource = GetFileSize (hFile, NULL)) != 0)
        {
!       LPTSTR abSource = (LPTSTR)malloc(cbSource + 1);
! 	  memset(abSource, 0x00, cbSource + 1);
  
        DWORD dwRead;
!       if (!ReadFile (hFile, abSource, cbSource, &dwRead, NULL) || cbSource != dwRead)
           {
           printf ("failed to read %s; error %lu\n", psz, GetLastError());
           rc = FALSE;
           }
        else
           {
!          DWORD cbTarget = cbSource * 4;
!          LPSTR abTarget = (LPSTR)malloc(cbTarget);
           memset (abTarget, 0x00, cbTarget);
  
           BOOL fDefault = FALSE;
!          WideCharToMultiByte (g::CodePage, 0, (LPCWSTR)abSource, cbSource, abTarget, cbTarget, TEXT(" "), &fDefault);
  
           rc = FormatFile (psz, abTarget);
  
!          free(abTarget);
           }
  
!       free(abSource);
        }
  
     CloseHandle (hFile);
Index: openafs/src/WINNT/netidmgr_plugin/afsconfigdlg.c
diff -c openafs/src/WINNT/netidmgr_plugin/afsconfigdlg.c:1.1.2.3 openafs/src/WINNT/netidmgr_plugin/afsconfigdlg.c:1.1.2.4
*** openafs/src/WINNT/netidmgr_plugin/afsconfigdlg.c:1.1.2.3	Mon Oct 16 09:55:34 2006
--- openafs/src/WINNT/netidmgr_plugin/afsconfigdlg.c	Sun Jun 17 00:50:29 2007
***************
*** 22,28 ****
   * SOFTWARE.
   */
  
! /* $Id: afsconfigdlg.c,v 1.1.2.3 2006/10/16 13:55:34 jaltman Exp $ */
  
  #include<afscred.h>
  #include<kherror.h>
--- 22,28 ----
   * SOFTWARE.
   */
  
! /* $Id: afsconfigdlg.c,v 1.1.2.4 2007/06/17 04:50:29 jaltman Exp $ */
  
  #include<afscred.h>
  #include<kherror.h>
***************
*** 85,91 ****
              d = (afs_ids_dlg_data *) (LONG_PTR)
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
!             PFREE(d);
          }
          return TRUE;
  
--- 85,94 ----
              d = (afs_ids_dlg_data *) (LONG_PTR)
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
!             if (d != NULL) {
!                 PFREE(d);
!                 SetWindowLongPtr(hwnd, DWLP_USER, 0);
!             }
          }
          return TRUE;
  
***************
*** 94,99 ****
--- 97,105 ----
              d = (afs_ids_dlg_data *) (LONG_PTR)
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
+             if (d == NULL)
+                 return FALSE;
+ 
              if (wParam == MAKEWPARAM(IDC_CFG_OBTAIN, BN_CLICKED)) {
                  d->afs_enabled =
                      (IsDlgButtonChecked(hwnd, IDC_CFG_OBTAIN) ==
***************
*** 110,115 ****
--- 116,124 ----
              d = (afs_ids_dlg_data *) (LONG_PTR)
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
+             if (d == NULL)
+                 return FALSE;
+ 
              if (HIWORD(wParam) == WMCFG_APPLY) {
                  khm_int32 t;
  
***************
*** 154,159 ****
--- 163,173 ----
              rv = afs_dlg_proc(hwnd, uMsg, wParam, 0);
  
              d = (afs_dlg_data *) (LONG_PTR) GetWindowLongPtr(hwnd, DWLP_USER);
+ #ifdef DEBUG
+             assert(d != NULL);
+ #endif
+             if (d == NULL)
+                 return rv;
  
              d->cfg = *((khui_config_init_data *) lParam);
  
***************
*** 187,193 ****
  #ifdef DEBUG
              assert(d && d->ident);
  #endif
!             kcdb_identity_release(d->ident);
  
              return afs_dlg_proc(hwnd, uMsg, wParam, lParam);
          }
--- 201,209 ----
  #ifdef DEBUG
              assert(d && d->ident);
  #endif
!             if (d && d->ident) {
!                 kcdb_identity_release(d->ident);
!             }
  
              return afs_dlg_proc(hwnd, uMsg, wParam, lParam);
          }
***************
*** 199,204 ****
--- 215,223 ----
  
              d = (afs_dlg_data *) (LONG_PTR) GetWindowLongPtr(hwnd, DWLP_USER);
  
+             if (d == NULL)
+                 return TRUE;
+ 
              if (HIWORD(wParam) == WMCFG_APPLY) {
                  afs_cred_write_ident_data(d);
              }
***************
*** 553,561 ****
                  node = (khui_config_node) (DWORD_PTR)
                      GetWindowLongPtr(hwnd, DWLP_USER);
  
!                 khui_cfg_set_flags(node,
!                                    KHUI_CNFLAG_MODIFIED,
!                                    KHUI_CNFLAG_MODIFIED);
              }
              break;
          }
--- 572,582 ----
                  node = (khui_config_node) (DWORD_PTR)
                      GetWindowLongPtr(hwnd, DWLP_USER);
  
!                 if (node != NULL) {
!                     khui_cfg_set_flags(node,
!                                        KHUI_CNFLAG_MODIFIED,
!                                        KHUI_CNFLAG_MODIFIED);
!                 }
              }
              break;
          }
***************
*** 573,578 ****
--- 594,605 ----
                  node = (khui_config_node) (DWORD_PTR)
                      GetWindowLongPtr(hwnd, DWLP_USER);
  
+ #ifdef DEBUG
+                 assert(node != NULL);
+ #endif
+                 if (node == NULL)
+                     break;
+ 
                  kmm_get_plugin_config(AFS_PLUGIN_NAME, KHM_PERM_WRITE,
                                        &csp_afscred);
  
Index: openafs/src/WINNT/netidmgr_plugin/afsfuncs.c
diff -c openafs/src/WINNT/netidmgr_plugin/afsfuncs.c:1.1.2.9 openafs/src/WINNT/netidmgr_plugin/afsfuncs.c:1.1.2.10
*** openafs/src/WINNT/netidmgr_plugin/afsfuncs.c:1.1.2.9	Sat May  5 17:14:48 2007
--- openafs/src/WINNT/netidmgr_plugin/afsfuncs.c	Sun Jun 17 00:50:29 2007
***************
*** 22,28 ****
   * SOFTWARE.
   */
  
! /* $Id: afsfuncs.c,v 1.1.2.9 2007/05/05 21:14:48 jaltman Exp $ */
  
  /* Disable the 'macro redefinition' warning which is getting
     triggerred by a redefinition of the ENCRYPT and DECRYPT macros. */
--- 22,28 ----
   * SOFTWARE.
   */
  
! /* $Id: afsfuncs.c,v 1.1.2.10 2007/06/17 04:50:29 jaltman Exp $ */
  
  /* Disable the 'macro redefinition' warning which is getting
     triggerred by a redefinition of the ENCRYPT and DECRYPT macros. */
***************
*** 521,527 ****
                                       &krb4_credtype_id);
              }
  
!             if (krb4_credtype_id > 0 &&
                  KHM_SUCCEEDED(kcdb_credset_find_filtered(NULL, -1,
                                                           afs_filter_krb4_tkt,
                                                           (void *) cell,
--- 521,527 ----
                                       &krb4_credtype_id);
              }
  
!             if (krb4_credtype_id >= 0 &&
                  KHM_SUCCEEDED(kcdb_credset_find_filtered(NULL, -1,
                                                           afs_filter_krb4_tkt,
                                                           (void *) cell,
Index: openafs/src/WINNT/netidmgr_plugin/afsnewcreds.c
diff -c openafs/src/WINNT/netidmgr_plugin/afsnewcreds.c:1.1.2.4 openafs/src/WINNT/netidmgr_plugin/afsnewcreds.c:1.1.2.5
*** openafs/src/WINNT/netidmgr_plugin/afsnewcreds.c:1.1.2.4	Sat May  5 17:14:48 2007
--- openafs/src/WINNT/netidmgr_plugin/afsnewcreds.c	Sun Jun 17 00:50:29 2007
***************
*** 22,28 ****
   * SOFTWARE.
   */
  
! /* $Id: afsnewcreds.c,v 1.1.2.4 2007/05/05 21:14:48 jaltman Exp $ */
  
  #include<afscred.h>
  #include<commctrl.h>
--- 22,28 ----
   * SOFTWARE.
   */
  
! /* $Id: afsnewcreds.c,v 1.1.2.5 2007/06/17 04:50:29 jaltman Exp $ */
  
  #include<afscred.h>
  #include<commctrl.h>
***************
*** 377,382 ****
--- 377,383 ----
          khm_size cb;
          wchar_t vbuf[1024];
          wchar_t * tbuf = NULL;
+         khm_int32 enabled = 0;
  
          kcdb_identity_create(t, 0, &h_id);
          if (h_id == NULL) {
***************
*** 393,398 ****
--- 394,403 ----
                                        0, &csp_afs)))
              goto _cleanup_loop;
  
+         if (KHM_SUCCEEDED(khc_read_int32(csp_afs, L"AFSEnabled", &enabled)) &&
+             !enabled)
+             goto _cleanup_loop;
+ 
          if (khc_read_multi_string(csp_afs, L"Cells", NULL, &cb)
              != KHM_ERROR_TOO_LONG)
              goto _cleanup_loop;
***************
*** 472,477 ****
--- 477,483 ----
          khm_size cb;
          wchar_t vbuf[1024];
          wchar_t * tbuf = NULL;
+         khm_int32 enabled = 0;
  
          kcdb_identity_create(t, 0, &h_id);
          if (h_id == NULL) {
***************
*** 493,498 ****
--- 499,508 ----
                                        0, &csp_afs)))
              goto _cleanup_loop;
  
+         if (KHM_SUCCEEDED(khc_read_int32(csp_afs, L"AFSEnabled", &enabled)) &&
+             !enabled)
+             goto _cleanup_loop;
+ 
          if (khc_read_multi_string(csp_afs, L"Cells", NULL, &cb)
              != KHM_ERROR_TOO_LONG)
              goto _cleanup_loop;
***************
*** 603,610 ****
          StringCbCopy(r->cell, cb, s);
  
          r->realm = NULL;
!         r->method = 0;
!         r->flags = 0;
  
          if(KHM_SUCCEEDED(khc_open_space(h_cells, s, 
                                          0, &h_cell))) {
--- 613,620 ----
          StringCbCopy(r->cell, cb, s);
  
          r->realm = NULL;
!         r->method = AFS_TOKEN_AUTO;
!         r->flags = DLGROW_FLAG_CONFIG;
  
          if(KHM_SUCCEEDED(khc_open_space(h_cells, s, 
                                          0, &h_cell))) {
***************
*** 852,857 ****
--- 862,870 ----
  
      d = (afs_dlg_data *)(LONG_PTR) GetWindowLongPtr(hwnd, DWLP_USER);
  
+     if (d == NULL)
+         return;
+ 
      ZeroMemory(&ti, sizeof(ti));
      ti.cbSize = sizeof(ti);
      ti.hwnd = hwnd;
***************
*** 890,895 ****
--- 903,911 ----
  
      d = (afs_dlg_data *)(LONG_PTR) GetWindowLongPtr(hwnd, DWLP_USER);
  
+     if (d == NULL)
+         return;
+ 
      if(!d->tooltip_visible)
          return;
  
***************
*** 973,978 ****
--- 989,997 ----
  
      d = (afs_dlg_data *)(LONG_PTR) GetWindowLongPtr(hwnd, DWLP_USER);
  
+     if (d == NULL)
+         return;
+ 
      if (d->nc)
          khui_cw_find_type(d->nc, afs_credtype_id, &nct);
  
***************
*** 1059,1064 ****
--- 1078,1086 ----
  
      d = (afs_dlg_data *)(LONG_PTR) GetWindowLongPtr(hwnd, DWLP_USER);
  
+     if (d == NULL)
+         return;
+ 
      if (d->nc)
          khui_cw_find_type(d->nc, afs_credtype_id, &nct);
      else
***************
*** 1526,1531 ****
--- 1548,1556 ----
              d = (afs_dlg_data *)(LONG_PTR) 
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
+             if (d == NULL)
+                 return TRUE;
+ 
              EnterCriticalSection(&d->cs);
  
              if (d->nc) {
***************
*** 1540,1545 ****
--- 1565,1572 ----
              DeleteCriticalSection(&d->cs);
  
              PFREE(d);
+ 
+             SetWindowLongPtr(hwnd, DWLP_USER, 0);
          }
          return TRUE;
  
***************
*** 1551,1556 ****
--- 1578,1586 ----
              d = (afs_dlg_data *)(LONG_PTR) 
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
+             if (d == NULL)
+                 return FALSE;
+ 
              EnterCriticalSection(&d->cs);
  
              if (d->nc)
***************
*** 1605,1610 ****
--- 1635,1643 ----
              d = (afs_dlg_data *)(LONG_PTR) 
                  GetWindowLongPtr(hwnd, DWLP_USER);
  
+             if (d == NULL)
+                 return TRUE;
+ 
              EnterCriticalSection(&d->cs);
  
              if (d->nc)
***************
*** 1885,1890 ****
--- 1918,1926 ----
                  d = (afs_dlg_data *)(LONG_PTR) 
                      GetWindowLongPtr(hwnd, DWLP_USER);
  
+                 if (d == NULL)
+                     return FALSE;
+ 
                  EnterCriticalSection(&d->cs);
  
                  hw = GetDlgItem(hwnd, IDC_NCAFS_TOKENLIST);
***************
*** 1939,1944 ****
--- 1975,1983 ----
                  d = (afs_dlg_data *)(LONG_PTR) 
                      GetWindowLongPtr(hwnd, DWLP_USER);
  
+                 if (d == NULL)
+                     return FALSE;
+ 
                  EnterCriticalSection(&d->cs);
  
                  pnmi = (LPNMITEMACTIVATE) lpnmh;
***************
*** 2158,2170 ****
                                lru_cell,
                                &cbt);
      } else {
!         cbcell = MAXCELLCHARS * sizeof(wchar_t) * 
!             l->n_rows;
!         if (cbcell > 0) {
              lru_cell = PMALLOC(cbcell);
              ZeroMemory(lru_cell, cbcell);
          } else {
              lru_cell = NULL;
          }
      }
  
--- 2197,2209 ----
                                lru_cell,
                                &cbt);
      } else {
!         cbcell = MAXCELLCHARS * sizeof(wchar_t) * l->n_rows + sizeof(wchar_t);
!         if (l->n_rows > 0) {
              lru_cell = PMALLOC(cbcell);
              ZeroMemory(lru_cell, cbcell);
          } else {
              lru_cell = NULL;
+             cbcell = 0;
          }
      }
  
***************
*** 2182,2202 ****
                                lru_realm,
                                &cbt);
      } else {
!         cbrealm = MAXCELLCHARS * sizeof(wchar_t) * l->n_rows;
!         if (cbrealm > 0) {
              lru_realm = PMALLOC(cbrealm);
              ZeroMemory(lru_realm, cbrealm);
          } else {
              lru_cell = NULL;
          }
      }
  
!     cbidcell = MAXCELLCHARS * sizeof(wchar_t) * l->n_rows;
!     if (cbidcell > 0) {
          id_cell = PMALLOC(cbidcell);
          ZeroMemory(id_cell, cbidcell);
      } else {
          id_cell = NULL;
      }
  
      for(i=0; i < l->n_rows; i++)
--- 2221,2243 ----
                                lru_realm,
                                &cbt);
      } else {
!         cbrealm = MAXCELLCHARS * sizeof(wchar_t) * l->n_rows + sizeof(wchar_t);
!         if (l->n_rows > 0) {
              lru_realm = PMALLOC(cbrealm);
              ZeroMemory(lru_realm, cbrealm);
          } else {
              lru_cell = NULL;
+             cbrealm = 0;
          }
      }
  
!     cbidcell = MAXCELLCHARS * sizeof(wchar_t) * l->n_rows + sizeof(wchar_t);
!     if (l->n_rows > 0) {
          id_cell = PMALLOC(cbidcell);
          ZeroMemory(id_cell, cbidcell);
      } else {
          id_cell = NULL;
+         cbidcell = 0;
      }
  
      for(i=0; i < l->n_rows; i++)
***************
*** 2244,2253 ****
                  khc_close_space(h_acell);
              }
  
!             if (h_cellmap) {
!                 khc_write_string(h_cellmap,
!                                  l->rows[i].cell,
!                                  idname);
              }
          }
  
--- 2285,2296 ----
                  khc_close_space(h_acell);
              }
  
!             if (l->rows[i].flags & DLGROW_FLAG_DONE) {
!                 if (h_cellmap) {
!                     khc_write_string(h_cellmap,
!                                      l->rows[i].cell,
!                                      idname);
!                 }
              }
          }
  
***************
*** 2260,2265 ****
--- 2303,2310 ----
      if (id_cell)
          khc_write_multi_string(h_afs, L"Cells",
                                 id_cell);
+     else
+         khc_write_multi_string(h_afs, L"Cells", L"\0");
  
      if (d->config_dlg) {
          if (d->dirty)
Index: openafs/src/WINNT/netidmgr_plugin/afsnewcreds.h
diff -c openafs/src/WINNT/netidmgr_plugin/afsnewcreds.h:1.1.2.3 openafs/src/WINNT/netidmgr_plugin/afsnewcreds.h:1.1.2.4
*** openafs/src/WINNT/netidmgr_plugin/afsnewcreds.h:1.1.2.3	Mon Oct 16 09:55:35 2006
--- openafs/src/WINNT/netidmgr_plugin/afsnewcreds.h	Sun Jun 17 00:50:29 2007
***************
*** 22,28 ****
   * SOFTWARE.
   */
  
! /* $Id: afsnewcreds.h,v 1.1.2.3 2006/10/16 13:55:35 jaltman Exp $ */
  
  #ifndef __AFS_NEWCREDS_H
  #define __AFS_NEWCREDS_H
--- 22,28 ----
   * SOFTWARE.
   */
  
! /* $Id: afsnewcreds.h,v 1.1.2.4 2007/06/17 04:50:29 jaltman Exp $ */
  
  #ifndef __AFS_NEWCREDS_H
  #define __AFS_NEWCREDS_H
***************
*** 56,61 ****
--- 56,65 ----
  /* tokens for this cell exist and are expired */
  #define DLGROW_FLAG_EXPIRED  0x00000040
  
+ /* this cell was added because it was listed in the identity
+    configuration */
+ #define DLGROW_FLAG_CONFIG   0x00000080
+ 
  /* the subitem indexes for each data field */
  enum afs_ncwnd_subitems {
      NCAFS_IDX_CELL=0,
Index: openafs/src/afs/afs_call.c
diff -c openafs/src/afs/afs_call.c:1.86.4.8 openafs/src/afs/afs_call.c:1.86.4.11
*** openafs/src/afs/afs_call.c:1.86.4.8	Mon May 14 17:37:51 2007
--- openafs/src/afs/afs_call.c	Mon Jun 18 14:18:48 2007
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.86.4.8 2007/05/14 21:37:51 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.86.4.11 2007/06/18 18:18:48 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 457,482 ****
  #endif /* AFS_SGI61_ENV */
  
      AFS_STATCNT(afs_syscall_call);
  #ifdef	AFS_SUN5_ENV
!     if (!afs_suser(CRED()) && (parm != AFSOP_GETMTU)
! 	&& (parm != AFSOP_GETMASK)) {
! 	/* only root can run this code */
! 	return (EACCES);
  #else
!     if (!afs_suser(NULL) && (parm != AFSOP_GETMTU)
! 	&& (parm != AFSOP_GETMASK)) {
  	/* only root can run this code */
  #if defined(KERNEL_HAVE_UERROR)
  	setuerror(EACCES);
! 	return (EACCES);
  #else
! #if defined(AFS_OSF_ENV)
! 	return EACCES;
! #else /* AFS_OSF_ENV */
! 	return EPERM;
! #endif /* AFS_OSF_ENV */
  #endif
  #endif
      }
      AFS_GLOCK();
  #ifdef AFS_DARWIN80_ENV
--- 457,483 ----
  #endif /* AFS_SGI61_ENV */
  
      AFS_STATCNT(afs_syscall_call);
+     if (!afs_suser(
  #ifdef	AFS_SUN5_ENV
! 		   CRED()
  #else
! 		   NULL
! #endif
! 		   ) && (parm != AFSOP_GETMTU) && (parm != AFSOP_GETMASK)) {
  	/* only root can run this code */
+ #if defined(AFS_OSF_ENV) || defined(AFS_SUN5_ENV) || defined(KERNEL_HAVE_UERROR)
  #if defined(KERNEL_HAVE_UERROR)
  	setuerror(EACCES);
! #endif
! 	code = EACCES;
  #else
! 	code = EPERM;
  #endif
+ 	AFS_GLOCK();
+ #ifdef AFS_DARWIN80_ENV
+ 	put_vfs_context();
  #endif
+ 	goto out;
      }
      AFS_GLOCK();
  #ifdef AFS_DARWIN80_ENV
***************
*** 763,769 ****
  	    afs_osi_Sleep(&afs_initState);
  
  #ifdef AFS_DARWIN80_ENV
!     get_vfs_context();
  #endif
  	/* do it by inode */
  #ifdef AFS_SGI62_ENV
--- 764,770 ----
  	    afs_osi_Sleep(&afs_initState);
  
  #ifdef AFS_DARWIN80_ENV
! 	get_vfs_context();
  #endif
  	/* do it by inode */
  #ifdef AFS_SGI62_ENV
***************
*** 771,777 ****
  #endif
  	code = afs_InitCacheFile(NULL, ainode);
  #ifdef AFS_DARWIN80_ENV
!     put_vfs_context();
  #endif
      } else if (parm == AFSOP_ROOTVOLUME) {
  	/* wait for basic init */
--- 772,778 ----
  #endif
  	code = afs_InitCacheFile(NULL, ainode);
  #ifdef AFS_DARWIN80_ENV
! 	put_vfs_context();
  #endif
      } else if (parm == AFSOP_ROOTVOLUME) {
  	/* wait for basic init */
***************
*** 811,817 ****
  	    else if (parm == AFSOP_CELLINFO)
  		code = afs_InitCellInfo(tbuffer);
  #ifdef AFS_DARWIN80_ENV
!     put_vfs_context();
  #endif
  	}
  	osi_FreeSmallSpace(tbuffer);
--- 812,818 ----
  	    else if (parm == AFSOP_CELLINFO)
  		code = afs_InitCellInfo(tbuffer);
  #ifdef AFS_DARWIN80_ENV
! 	    put_vfs_context();
  #endif
  	}
  	osi_FreeSmallSpace(tbuffer);
***************
*** 836,841 ****
--- 837,843 ----
  #if	(!defined(AFS_NONFSTRANS)) || defined(AFS_AIX_IAUTH_ENV)
  	afs_nfsclient_init();
  #endif
+ 	afs_uuid_create(&afs_cb_interface.uuid);
  	printf("found %d non-empty cache files (%d%%).\n",
  	       afs_stats_cmperf.cacheFilesReused,
  	       (100 * afs_stats_cmperf.cacheFilesReused) /
***************
*** 844,849 ****
--- 846,853 ----
      } else if (parm == AFSOP_ADVISEADDR) {
  	/* pass in the host address to the rx package */
  	int rxbind = 0;
+ 	int refresh = 0;
+ 
  	afs_int32 count = parm2;
  	afs_int32 *buffer =
  	    afs_osi_Alloc(sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
***************
*** 853,858 ****
--- 857,870 ----
  	    afs_osi_Alloc(sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
  	int i;
  
+ 	/* This is a refresh */
+ 	if (count & 0x40000000) {
+ 	    count &= ~0x40000000;
+ 	    /* Can't bind after we start. Fix? */
+ 	    count &= ~0x80000000;
+ 	    refresh = 1;
+ 	}
+ 
  	/* Bind, but only if there's only one address configured */ 
  	if ( count & 0x80000000) {
  	    count &= ~0x80000000;
***************
*** 892,907 ****
  	    afs_cb_interface.mtu[i] = (parm5 ? mtubuffer[i] : htonl(1500));
  #endif
  	}
- 	afs_uuid_create(&afs_cb_interface.uuid);
  	rxi_setaddr(buffer[0]);
! 	if (rxbind)
! 	    rx_bindhost = buffer[0];
! 	else
! 	    rx_bindhost = htonl(INADDR_ANY);
  
  	afs_osi_Free(buffer, sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
  	afs_osi_Free(maskbuffer, sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
  	afs_osi_Free(mtubuffer, sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
      }
  #ifdef	AFS_SGI53_ENV
      else if (parm == AFSOP_NFSSTATICADDR) {
--- 904,925 ----
  	    afs_cb_interface.mtu[i] = (parm5 ? mtubuffer[i] : htonl(1500));
  #endif
  	}
  	rxi_setaddr(buffer[0]);
! 	if (!refresh) {
! 	    if (rxbind)
! 		rx_bindhost = buffer[0];
! 	    else
! 		rx_bindhost = htonl(INADDR_ANY);
! 	}
  
  	afs_osi_Free(buffer, sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
  	afs_osi_Free(maskbuffer, sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
  	afs_osi_Free(mtubuffer, sizeof(afs_int32) * AFS_MAX_INTERFACE_ADDR);
+ 
+ 	if (refresh) {
+ 	    afs_CheckServers(1, NULL);     /* check down servers */
+ 	    afs_CheckServers(0, NULL);     /* check down servers */
+ 	}
      }
  #ifdef	AFS_SGI53_ENV
      else if (parm == AFSOP_NFSSTATICADDR) {
***************
*** 1050,1058 ****
  	code = EINVAL;
  
    out:
- #ifdef AFS_DARWIN80_ENV /* to balance the put in afs3_syscall() */
-     get_vfs_context();
- #endif
      AFS_GUNLOCK();
  #ifdef AFS_LINUX20_ENV
      return -code;
--- 1068,1073 ----
Index: openafs/src/afs/afs_memcache.c
diff -c openafs/src/afs/afs_memcache.c:1.22 openafs/src/afs/afs_memcache.c:1.22.4.1
*** openafs/src/afs/afs_memcache.c:1.22	Thu Oct 13 11:12:07 2005
--- openafs/src/afs/afs_memcache.c	Sat Jun 23 11:29:36 2007
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_memcache.c,v 1.22 2005/10/13 15:12:07 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #ifndef AFS_LINUX22_ENV
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_memcache.c,v 1.22.4.1 2007/06/23 15:29:36 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #ifndef AFS_LINUX22_ENV
***************
*** 247,252 ****
--- 247,259 ----
  	char *oldData = mceP->data;
  
  	mceP->data = afs_osi_Alloc(size + offset);
+ 	if (mceP->data == NULL) {	/* no available memory */
+ 	    mceP->data = oldData;	/* revert back change that was made */
+ 	    MReleaseWriteLock(&mceP->afs_memLock);
+ 	    afs_warn("afs: afs_MemWriteBlk mem alloc failure (%d bytes)\n",
+ 		     size + offset);
+ 	    return -ENOMEM;
+ 	}
  
  	/* may overlap, but this is OK */
  	AFS_GUNLOCK();
***************
*** 285,290 ****
--- 292,304 ----
  	char *oldData = mceP->data;
  
  	mceP->data = afs_osi_Alloc(AFS_UIO_RESID(uioP) + AFS_UIO_OFFSET(uioP));
+ 	if (mceP->data == NULL) {	/* no available memory */
+ 	    mceP->data = oldData;	/* revert back change that was made */
+ 	    MReleaseWriteLock(&mceP->afs_memLock);
+ 	    afs_warn("afs: afs_MemWriteBlk mem alloc failure (%d bytes)\n",
+ 		     AFS_UIO_RESID(uioP) + AFS_UIO_OFFSET(uioP));
+ 	    return -ENOMEM;
+ 	}
  
  	AFS_GUNLOCK();
  	memcpy(mceP->data, oldData, mceP->size);
***************
*** 314,322 ****
      MObtainWriteLock(&mceP->afs_memLock, 313);
      /* old directory entry; g.c. */
      if (size == 0 && mceP->dataSize > memCacheBlkSize) {
! 	afs_osi_Free(mceP->data, mceP->dataSize);
  	mceP->data = afs_osi_Alloc(memCacheBlkSize);
! 	mceP->dataSize = memCacheBlkSize;
      }
  
      if (size < mceP->size)
--- 328,344 ----
      MObtainWriteLock(&mceP->afs_memLock, 313);
      /* old directory entry; g.c. */
      if (size == 0 && mceP->dataSize > memCacheBlkSize) {
! 	char *oldData = mceP->data;
  	mceP->data = afs_osi_Alloc(memCacheBlkSize);
! 	if (mceP->data == NULL) {	/* no available memory */
! 	    mceP->data = oldData;
! 	    MReleaseWriteLock(&mceP->afs_memLock);
! 	    afs_warn("afs: afs_MemWriteBlk mem alloc failure (%d bytes)\n",
! 		     memCacheBlkSize);
! 	} else {
! 	    afs_osi_Free(oldData, mceP->dataSize);
! 	    mceP->dataSize = memCacheBlkSize;
! 	}
      }
  
      if (size < mceP->size)
Index: openafs/src/afs/afs_pioctl.c
diff -c openafs/src/afs/afs_pioctl.c:1.110.2.5 openafs/src/afs/afs_pioctl.c:1.110.2.7
*** openafs/src/afs/afs_pioctl.c:1.110.2.5	Mon Jul 31 17:33:28 2006
--- openafs/src/afs/afs_pioctl.c	Sat Jun 23 02:23:12 2007
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_pioctl.c,v 1.110.2.5 2006/07/31 21:33:28 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #ifdef AFS_OBSD_ENV
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_pioctl.c,v 1.110.2.7 2007/06/23 06:23:12 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #ifdef AFS_OBSD_ENV
***************
*** 91,96 ****
--- 91,97 ----
  DECL_PIOCTL(PResidencyCmd);
  DECL_PIOCTL(PCallBackAddr);
  DECL_PIOCTL(PNFSNukeCreds);
+ DECL_PIOCTL(PNewUuid);
  
  /*
   * A macro that says whether we're going to need HandleClientContext().
***************
*** 193,198 ****
--- 194,205 ----
  	PNewAlias,		/* 1 -- create new cell alias */
  	PListAliases,		/* 2 -- list cell aliases */
  	PCallBackAddr,		/* 3 -- request addr for callback rxcon */
+     PBogus,			/* 4 */
+     PBogus,			/* 5 */
+     PBogus,			/* 6 */
+     PBogus,			/* 7 */
+     PBogus,			/* 8 */
+     PNewUuid,                   /* 9 */ 
  };
  
  static int (*(OpioctlSw[])) () = {
***************
*** 3809,3814 ****
--- 3816,3836 ----
      return code;
  }
  
+ DECL_PIOCTL(PNewUuid)
+ {
+     /*AFS_STATCNT(PNewUuid); */
+     if (!afs_resourceinit_flag)	/* afs deamons havn't started yet */
+ 	return EIO;		/* Inappropriate ioctl for device */
+ 
+     if (!afs_osi_suser(acred))
+ 	return EACCES;
+ 
+     ObtainWriteLock(&afs_xinterface, 555);
+     afs_uuid_create(&afs_cb_interface.uuid);
+     ReleaseWriteLock(&afs_xinterface);
+     ForceAllNewConnections();
+ }
+ 
  DECL_PIOCTL(PCallBackAddr)
  {
  #ifndef UKERNEL
Index: openafs/src/afs/afs_prototypes.h
diff -c openafs/src/afs/afs_prototypes.h:1.74.2.6 openafs/src/afs/afs_prototypes.h:1.74.2.7
*** openafs/src/afs/afs_prototypes.h:1.74.2.6	Mon Jan 22 12:20:38 2007
--- openafs/src/afs/afs_prototypes.h	Wed Jun 27 12:30:46 2007
***************
*** 735,740 ****
--- 735,741 ----
  				    afs_int32 acell, u_short aport,
  				    afs_int32 locktype, afsUUID * uuidp,
  				    afs_int32 addr_uniquifier);
+ extern void ForceAllNewConnections(void);
  extern void afs_MarkServerUpOrDown(struct srvAddr *sa, int a_isDown);
  extern void afs_ServerDown(struct srvAddr *sa);
  extern void afs_CountServers(void);
Index: openafs/src/afs/afs_server.c
diff -c openafs/src/afs/afs_server.c:1.43.4.1 openafs/src/afs/afs_server.c:1.43.4.2
*** openafs/src/afs/afs_server.c:1.43.4.1	Thu Nov  9 19:20:19 2006
--- openafs/src/afs/afs_server.c	Tue Jun 12 15:14:07 2007
***************
*** 33,39 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_server.c,v 1.43.4.1 2006/11/10 00:20:19 shadow Exp $");
  
  #include "afs/stds.h"
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
--- 33,39 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_server.c,v 1.43.4.2 2007/06/12 19:14:07 shadow Exp $");
  
  #include "afs/stds.h"
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
***************
*** 488,493 ****
--- 488,529 ----
  }				/*afs_CountServers */
  
  
+ void
+ ForceAllNewConnections()
+ {
+     int srvAddrCount;
+     struct srvAddr **addrs;
+     struct srvAddr *sa;
+     afs_int32 i, j;
+ 
+     ObtainReadLock(&afs_xserver);	/* Necessary? */
+     ObtainReadLock(&afs_xsrvAddr);
+ 
+     srvAddrCount = 0;
+     for (i = 0; i < NSERVERS; i++) {
+ 	for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) {
+ 	    srvAddrCount++;
+ 	}
+     }
+ 
+     addrs = afs_osi_Alloc(srvAddrCount * sizeof(*addrs));
+     j = 0;
+     for (i = 0; i < NSERVERS; i++) {
+ 	for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) {
+ 	    if (j >= srvAddrCount)
+ 		break;
+ 	    addrs[j++] = sa;
+ 	}
+     }
+ 
+     ReleaseReadLock(&afs_xsrvAddr);
+     ReleaseReadLock(&afs_xserver);
+     for (i = 0; i < j; i++) {
+         sa = addrs[i];
+ 	ForceNewConnections(sa);
+     }
+ }
+ 
  /* check down servers (if adown), or running servers (if !adown) */
  void
  afs_CheckServers(int adown, struct cell *acellp)
Index: openafs/src/afs/afs_syscall.c
diff -c openafs/src/afs/afs_syscall.c:1.1.2.4 openafs/src/afs/afs_syscall.c:1.1.2.5
*** openafs/src/afs/afs_syscall.c:1.1.2.4	Wed Oct 11 08:27:18 2006
--- openafs/src/afs/afs_syscall.c	Mon Jun 18 13:06:24 2007
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_syscall.c,v 1.1.2.4 2006/10/11 12:27:18 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_syscall.c,v 1.1.2.5 2007/06/18 17:06:24 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 705,711 ****
      }
  
  #if defined(AFS_DARWIN80_ENV)
!     put_vfs_context();
  #endif
  #ifdef AFS_LINUX20_ENV
      code = -code;
--- 705,712 ----
      }
  
  #if defined(AFS_DARWIN80_ENV)
!     if (uap->syscall != AFSCALL_CALL)
! 	put_vfs_context();
  #endif
  #ifdef AFS_LINUX20_ENV
      code = -code;
Index: openafs/src/afs/AIX/osi_sleep.c
diff -c openafs/src/afs/AIX/osi_sleep.c:1.10 openafs/src/afs/AIX/osi_sleep.c:1.10.14.1
*** openafs/src/afs/AIX/osi_sleep.c:1.10	Tue Jul 15 19:14:17 2003
--- openafs/src/afs/AIX/osi_sleep.c	Mon Jun 25 16:24:10 2007
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/AIX/osi_sleep.c,v 1.10 2003/07/15 23:14:17 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/AIX/osi_sleep.c,v 1.10.14.1 2007/06/25 20:24:10 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 26,32 ****
--- 26,35 ----
  static void
  AfsWaitHack(struct trb *trb)
  {
+ #if 0
+ /* this gets called at interrupt context; let's not tempt fate... */
      AFS_STATCNT(WaitHack);
+ #endif
  
      e_clear_wait(trb->func_data, THREAD_TIMED_OUT);
  }
***************
*** 121,127 ****
  	evp = evp->next;
      }
      if (!newp) {
! 	newp = (afs_event_t *) osi_AllocSmallSpace(sizeof(afs_event_t));
  	afs_evhashcnt++;
  	newp->next = afs_evhasht[hashcode];
  	afs_evhasht[hashcode] = newp;
--- 124,130 ----
  	evp = evp->next;
      }
      if (!newp) {
! 	newp = (afs_event_t *) xmalloc(sizeof(afs_event_t), 5, pinned_heap);
  	afs_evhashcnt++;
  	newp->next = afs_evhasht[hashcode];
  	afs_evhasht[hashcode] = newp;
Index: openafs/src/afs/LINUX/osi_module.c
diff -c openafs/src/afs/LINUX/osi_module.c:1.74.2.6 openafs/src/afs/LINUX/osi_module.c:1.74.2.7
*** openafs/src/afs/LINUX/osi_module.c:1.74.2.6	Thu Feb  8 20:30:17 2007
--- openafs/src/afs/LINUX/osi_module.c	Mon Jul  9 16:00:35 2007
***************
*** 15,21 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.74.2.6 2007/02/09 01:30:17 shadow Exp $");
  
  #include <linux/module.h> /* early to avoid printf->printk mapping */
  #include "afs/sysincludes.h"
--- 15,21 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.74.2.7 2007/07/09 20:00:35 shadow Exp $");
  
  #include <linux/module.h> /* early to avoid printf->printk mapping */
  #include "afs/sysincludes.h"
***************
*** 96,102 ****
      err = afs_init_inodecache();
      if (err)
  	return err;
!     register_filesystem(&afs_fs_type);
      osi_sysctl_init();
  #ifdef LINUX_KEYRING_SUPPORT
      osi_keyring_init();
--- 96,105 ----
      err = afs_init_inodecache();
      if (err)
  	return err;
!     err = register_filesystem(&afs_fs_type);
!     if (err)
!       return err;
! 
      osi_sysctl_init();
  #ifdef LINUX_KEYRING_SUPPORT
      osi_keyring_init();
Index: openafs/src/afs/LINUX/osi_probe.c
diff -c openafs/src/afs/LINUX/osi_probe.c:1.11.2.9 openafs/src/afs/LINUX/osi_probe.c:1.11.2.11
*** openafs/src/afs/LINUX/osi_probe.c:1.11.2.9	Tue Feb 13 17:54:11 2007
--- openafs/src/afs/LINUX/osi_probe.c	Wed Jun 27 17:23:07 2007
***************
*** 512,520 ****
      /* symbol in section to try scanning */
  #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_S390_LINUX20_ENV) || defined(AFS_S390X_LINUX20_ENV)
      (unsigned long)&sys_close,
! #elif defined(AFS_AMD64_LINUX20_ENV)
      /* On this platform, it's in a different section! */
      (unsigned long)&generic_ro_fops,
  #else
      (unsigned long)&init_mm,
  #endif
--- 512,523 ----
      /* symbol in section to try scanning */
  #if defined(AFS_SPARC64_LINUX20_ENV) || defined(AFS_S390_LINUX20_ENV) || defined(AFS_S390X_LINUX20_ENV)
      (unsigned long)&sys_close,
! #elif defined(AFS_AMD64_LINUX26_ENV)
      /* On this platform, it's in a different section! */
      (unsigned long)&generic_ro_fops,
+ #elif defined(AFS_AMD64_LINUX20_ENV)
+     /* On this platform, it's in a different section! */
+     (unsigned long)&tasklist_lock,
  #else
      (unsigned long)&init_mm,
  #endif
***************
*** 535,544 ****
      (unsigned long)(&init_mm),
      0x1fffff,
      0x30000,
! #elif defined(AFS_AMD64_LINUX20_ENV)
      (unsigned long)(&generic_ro_fops) - 0x30000,
      0,
      0x6000,
  #elif defined(AFS_PPC64_LINUX26_ENV)
      (unsigned long)(&do_signal),
      0xfff,
--- 538,551 ----
      (unsigned long)(&init_mm),
      0x1fffff,
      0x30000,
! #elif defined(AFS_AMD64_LINUX26_ENV)
      (unsigned long)(&generic_ro_fops) - 0x30000,
      0,
      0x6000,
+ #elif defined(AFS_AMD64_LINUX20_ENV)
+     (unsigned long)(&tasklist_lock) - 0x30000,
+     0,
+     0x6000,
  #elif defined(AFS_PPC64_LINUX26_ENV)
      (unsigned long)(&do_signal),
      0xfff,
Index: openafs/src/afs/LINUX/osi_sleep.c
diff -c openafs/src/afs/LINUX/osi_sleep.c:1.30.4.2 openafs/src/afs/LINUX/osi_sleep.c:1.30.4.3
*** openafs/src/afs/LINUX/osi_sleep.c:1.30.4.2	Thu Jan  4 16:17:05 2007
--- openafs/src/afs/LINUX/osi_sleep.c	Tue Jun 12 01:44:05 2007
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_sleep.c,v 1.30.4.2 2007/01/04 21:17:05 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_sleep.c,v 1.30.4.3 2007/06/12 05:44:05 rra Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 205,211 ****
--- 205,215 ----
  #if defined(STRUCT_TASK_STRUCT_HAS_TODO)
  	    !current->todo
  #else
+ #if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
              test_ti_thread_flag(current->thread_info, TIF_FREEZE)
+ #else
+             test_ti_thread_flag(task_thread_info(current), TIF_FREEZE)
+ #endif
  #endif
  #endif
  	    )
***************
*** 303,309 ****
--- 307,317 ----
  #if defined(STRUCT_TASK_STRUCT_HAS_TODO)
  	    !current->todo
  #else
+ #if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
              test_ti_thread_flag(current->thread_info, TIF_FREEZE)
+ #else
+             test_ti_thread_flag(task_thread_info(current), TIF_FREEZE)
+ #endif
  #endif
  #endif
  	    )
Index: openafs/src/afs/LINUX/osi_sysctl.c
diff -c openafs/src/afs/LINUX/osi_sysctl.c:1.9.2.2 openafs/src/afs/LINUX/osi_sysctl.c:1.9.2.4
*** openafs/src/afs/LINUX/osi_sysctl.c:1.9.2.2	Thu Feb 22 16:47:26 2007
--- openafs/src/afs/LINUX/osi_sysctl.c	Sat Jun 23 02:33:18 2007
***************
*** 1,7 ****
  /*
   * osi_sysctl.c: Linux sysctl interface to OpenAFS
   *
!  * $Id: osi_sysctl.c,v 1.9.2.2 2007/02/22 21:47:26 shadow Exp $
   *
   * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates)
   */
--- 1,7 ----
  /*
   * osi_sysctl.c: Linux sysctl interface to OpenAFS
   *
!  * $Id: osi_sysctl.c,v 1.9.2.4 2007/06/23 06:33:18 shadow Exp $
   *
   * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates)
   */
***************
*** 35,101 ****
  static struct ctl_table_header *afs_sysctl = NULL;
  
  static ctl_table afs_sysctl_table[] = {
!     {1, "hm_retry_RO",
!      &hm_retry_RO, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {2, "hm_retry_RW",
!      &hm_retry_RW, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {3, "hm_retry_int",
!      &hm_retry_int, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {4, "GCPAGs",
!      &afs_gcpags, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {5, "rx_deadtime",
!      &afs_rx_deadtime, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {6, "bkVolPref",
!      &afs_bkvolpref, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {7, "afs_blocksUsed",
!      &afs_blocksUsed, sizeof(afs_int32), 0444, NULL,
!      &proc_dointvec}
!     ,
!     {8, "afs_blocksUsed_0",
!      &afs_blocksUsed_0, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {9, "afs_blocksUsed_1",
!      &afs_blocksUsed_1, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {10, "afs_blocksUsed_2",
!      &afs_blocksUsed_2, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {11, "afs_pct1",
!      &afs_pct1, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {12, "afs_pct2",
!      &afs_pct2, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {13, "afs_cacheBlocks",
!      &afs_cacheBlocks, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
!     {7, "md5inum",
!      &afs_new_inum, sizeof(afs_int32), 0644, NULL,
!      &proc_dointvec}
!     ,
      {0}
  };
  
  static ctl_table fs_sysctl_table[] = {
!     {1, "afs", NULL, 0, 0555, afs_sysctl_table},
      {0}
  };
  
--- 35,162 ----
  static struct ctl_table_header *afs_sysctl = NULL;
  
  static ctl_table afs_sysctl_table[] = {
!     {
! 	.ctl_name 	= 1, 
! 	.procname 	= "hm_retry_RO",
! 	.data 		= &hm_retry_RO, 
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode     	= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
!         .ctl_name 	= 2, 
!         .procname 	= "hm_retry_RW",
!         .data		= &hm_retry_RW,
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0644,
!      	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 3, 
! 	.procname	= "hm_retry_int",
! 	.data		= &hm_retry_int, 
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 4, 
! 	.procname	= "GCPAGs",
! 	.data		= &afs_gcpags, 
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0644,
! 	.proc_handler 	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 5, 
! 	.procname	= "rx_deadtime",
! 	.data		= &afs_rx_deadtime, 
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 6, 
! 	.procname	= "bkVolPref",
! 	.data		= &afs_bkvolpref, 
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 7, 
! 	.procname	= "afs_blocksUsed",
! 	.data		= &afs_blocksUsed,
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0444,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 8, 
! 	.procname	= "afs_blocksUsed_0",
! 	.data		= &afs_blocksUsed_0,
! 	.maxlen		= sizeof(afs_int32),
! 	.mode		= 0644,
!      	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 9, 
! 	.procname	= "afs_blocksUsed_1",
! 	.data		= &afs_blocksUsed_1, 
! 	.maxlen		= sizeof(afs_int32),
! 	.mode		= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 10, 
! 	.procname	= "afs_blocksUsed_2",
! 	.data		= &afs_blocksUsed_2, 
! 	.maxlen		= sizeof(afs_int32), 
! 	.mode		= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 11, 
! 	.procname	= "afs_pct1",
! 	.data		= &afs_pct1, 
! 	.maxlen		= sizeof(afs_int32),
! 	.mode		= 0644,
! 	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 12, 
! 	.procname	= "afs_pct2",
! 	.data		= &afs_pct2, 
! 	.maxlen		= sizeof(afs_int32),
! 	.mode		= 0644,
!      	.proc_handler   = &proc_dointvec
!     },
!     {
! 	.ctl_name	= 13,
! 	.procname	= "afs_cacheBlocks",
! 	.data		= &afs_cacheBlocks,
! 	.maxlen		= sizeof(afs_int32),
! 	.mode		= 0644,
!     	.proc_handler	= &proc_dointvec
!     },
!     {
! 	.ctl_name	= 14, 
! 	.procname	= "md5inum",
! 	.data		= &afs_new_inum, 
! 	.maxlen		= sizeof(afs_int32),
! 	.mode		= 0644,
!      	.proc_handler	= &proc_dointvec
!     },
      {0}
  };
  
  static ctl_table fs_sysctl_table[] = {
!     {
! 	.ctl_name	= 1, 
! 	.procname	= "afs", 
! 	.mode		= 0555, 
! 	.child		= afs_sysctl_table
!     },
      {0}
  };
  
Index: openafs/src/afs/LINUX/osi_vfsops.c
diff -c openafs/src/afs/LINUX/osi_vfsops.c:1.42.4.14 openafs/src/afs/LINUX/osi_vfsops.c:1.42.4.17
*** openafs/src/afs/LINUX/osi_vfsops.c:1.42.4.14	Thu Feb  8 20:23:40 2007
--- openafs/src/afs/LINUX/osi_vfsops.c	Tue Jun 26 01:42:05 2007
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.42.4.14 2007/02/09 01:23:40 shadow Exp $");
  
  #define __NO_VERSION__		/* don't define kernel_version in module.h */
  #include <linux/module.h> /* early to avoid printf->printk mapping */
--- 16,22 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.42.4.17 2007/06/26 05:42:05 jaltman Exp $");
  
  #define __NO_VERSION__		/* don't define kernel_version in module.h */
  #include <linux/module.h> /* early to avoid printf->printk mapping */
***************
*** 108,113 ****
--- 108,114 ----
  struct backing_dev_info afs_backing_dev_info = {
      .ra_pages		= 0, /* disable readahead, afs does prefetch */
  };
+ #endif
  
  int
  afs_fill_super(struct super_block *sb, void *data, int silent)
***************
*** 298,305 ****
--- 299,308 ----
  {
      struct vcache *vcp = (struct vcache *) foo;
  
+ #if defined(SLAB_CTOR_VERIFY)
      if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) ==
  	SLAB_CTOR_CONSTRUCTOR)
+ #endif
  	inode_init_once(AFSTOV(vcp));
  }
  
***************
*** 322,328 ****
  void
  afs_destroy_inodecache(void)
  {
!     (void) kmem_cache_destroy(afs_inode_cachep);
  }
  #else
  int
--- 325,332 ----
  void
  afs_destroy_inodecache(void)
  {
!     if (afs_inode_cachep)
! 	(void) kmem_cache_destroy(afs_inode_cachep);
  }
  #else
  int
***************
*** 453,458 ****
--- 457,463 ----
    .notify_change =	afs_notify_change,
  #endif
  };
+ #endif
  
  /************** Support routines ************************/
  
Index: openafs/src/afs/LINUX/osi_vnodeops.c
diff -c openafs/src/afs/LINUX/osi_vnodeops.c:1.126.2.16 openafs/src/afs/LINUX/osi_vnodeops.c:1.126.2.17
*** openafs/src/afs/LINUX/osi_vnodeops.c:1.126.2.16	Thu May 17 14:36:02 2007
--- openafs/src/afs/LINUX/osi_vnodeops.c	Tue Jun 12 14:34:18 2007
***************
*** 22,28 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.126.2.16 2007/05/17 18:36:02 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
--- 22,28 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.126.2.17 2007/06/12 18:34:18 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
***************
*** 575,581 ****
--- 575,585 ----
   * afs_StoreAllSegments() with AFS_LASTSTORE
   */
  static int
+ #if defined(FOP_FLUSH_TAKES_FL_OWNER_T)
+ afs_linux_flush(struct file *fp, fl_owner_t id)
+ #else
  afs_linux_flush(struct file *fp)
+ #endif
  {
      struct vrequest treq;
      struct vcache *vcp = VTOAFS(FILE_INODE(fp));
Index: openafs/src/afsd/afsd.c
diff -c openafs/src/afsd/afsd.c:1.60.2.3 openafs/src/afsd/afsd.c:1.60.2.6
*** openafs/src/afsd/afsd.c:1.60.2.3	Thu Feb  8 20:00:18 2007
--- openafs/src/afsd/afsd.c	Tue Jun 26 15:13:37 2007
***************
*** 58,64 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/afsd/afsd.c,v 1.60.2.3 2007/02/09 01:00:18 shadow Exp $");
  
  #define VFS 1
  
--- 58,64 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/afsd/afsd.c,v 1.60.2.6 2007/06/26 19:13:37 shadow Exp $");
  
  #define VFS 1
  
***************
*** 164,169 ****
--- 164,199 ----
  kern_return_t DiskArbDiskAppearedWithMountpointPing_auto(char *, unsigned int,
  							 char *);
  #define DISK_ARB_NETWORK_DISK_FLAG 8
+ 
+ #include <mach/mach_port.h>
+ #include <mach/mach_interface.h>
+ #include <mach/mach_init.h>
+ 
+ #include <CoreFoundation/CoreFoundation.h>
+ 
+ #include <SystemConfiguration/SystemConfiguration.h>
+ #include <SystemConfiguration/SCDynamicStore.h>
+ 
+ #include <IOKit/pwr_mgt/IOPMLib.h>
+ #include <IOKit/IOMessage.h>
+ 
+ #include <dns_sd.h>
+ 
+ typedef struct DNSSDState
+ {
+     DNSServiceRef       service;
+     CFRunLoopSourceRef  source;
+     CFSocketRef         socket;
+ } DNSSDState;
+ 
+ static io_connect_t root_port;
+ static IONotificationPortRef notify;
+ static io_object_t iterator;
+ static CFRunLoopSourceRef source;
+ static DNSSDState dnsstate;
+ 
+ static int event_pid;
+ 
  #endif /* AFS_DARWIN_ENV */
  
  #ifndef MOUNT_AFS
***************
*** 314,319 ****
--- 344,505 ----
  
  static int HandleMTab();
  
+ #ifdef AFS_DARWIN_ENV
+ static void
+ afsd_sleep_callback(void * refCon, io_service_t service, 
+ 		    natural_t messageType, void * messageArgument )
+ {
+     afs_int32 code;
+     
+     switch (messageType) {
+     case kIOMessageCanSystemSleep:
+ 	/* Idle sleep is about to kick in; can 
+ 	   prevent sleep by calling IOCancelPowerChange, otherwise 
+ 	   if we don't ack in 30s the system sleeps anyway */
+ 	
+ 	/* allow it */
+ 	IOAllowPowerChange(root_port, (long)messageArgument);
+ 	break;
+ 	
+     case kIOMessageSystemWillSleep:
+ 	/* The system WILL go to sleep. Ack or suffer delay */
+ 	
+ 	IOAllowPowerChange(root_port, (long)messageArgument);
+ 	break;
+ 	
+     case kIOMessageSystemWillRestart:
+ 	/* The system WILL restart. Ack or suffer delay */
+ 	
+ 	IOAllowPowerChange(root_port, (long)messageArgument);
+ 	break;
+ 	
+     case kIOMessageSystemWillPowerOn:
+     case kIOMessageSystemHasPoweredOn:
+ 	/* coming back from sleep */
+ 	
+ 	IOAllowPowerChange(root_port, (long)messageArgument);
+ 	break;
+ 	
+     default:
+ 	IOAllowPowerChange(root_port, (long)messageArgument);
+ 	break;
+     }
+ }
+ 
+ static void
+ afsd_update_addresses(CFRunLoopTimerRef timer, void *info)
+ {
+     /* parse multihomed address files */
+     afs_int32 addrbuf[MAXIPADDRS], maskbuf[MAXIPADDRS],
+ 	mtubuf[MAXIPADDRS];
+     char reason[1024];
+     afs_int32 code;
+ 
+     code =
+ 	parseNetFiles(addrbuf, maskbuf, mtubuf, MAXIPADDRS, reason,
+ 		      AFSDIR_CLIENT_NETINFO_FILEPATH,
+ 		      AFSDIR_CLIENT_NETRESTRICT_FILEPATH);
+ 
+     if (code > 0) {
+ 	/* Note we're refreshing */
+ 	code = code | 0x40000000;
+ 	call_syscall(AFSOP_ADVISEADDR, code, addrbuf, maskbuf, mtubuf);
+     } else
+ 	printf("ADVISEADDR: Error in specifying interface addresses:%s\n",
+ 	       reason);
+ }
+ 
+ /* This function is called when the system's ip addresses may have changed. */
+ static void
+ afsd_ipaddr_callback (SCDynamicStoreRef store, CFArrayRef changed_keys, void *info)
+ {
+       CFRunLoopTimerRef timer;
+ 
+       timer = CFRunLoopTimerCreate (NULL, CFAbsoluteTimeGetCurrent () + 1.0,
+ 				    0.0, 0, 0, afsd_update_addresses, NULL);
+       CFRunLoopAddTimer (CFRunLoopGetCurrent (), timer,
+ 			 kCFRunLoopDefaultMode);
+       CFRelease (timer);
+ }
+ 
+ static void 
+ afsd_event_cleanup(int signo) {
+     DNSSDState *query = &dnsstate;
+ 
+     CFRunLoopRemoveSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode);
+     CFRelease (source);
+     IODeregisterForSystemPower(iterator);
+     IOServiceClose(root_port);
+     IONotificationPortDestroy(notify);
+ 
+     exit(0);
+ }
+ 
+ /* Adapted from "Living in a Dynamic TCP/IP Environment" technote. */
+ static Boolean
+ afsd_install_events(void)
+ {
+     SCDynamicStoreContext ctx = {0};
+     SCDynamicStoreRef store;
+ 
+     root_port = IORegisterForSystemPower(0,&notify,afsd_sleep_callback,&iterator);
+     
+     if (root_port) {
+ 	CFRunLoopAddSource(CFRunLoopGetCurrent(),
+ 			   IONotificationPortGetRunLoopSource(notify),
+ 			   kCFRunLoopDefaultMode);
+     }
+     
+     
+     store = SCDynamicStoreCreate (NULL,
+ 				  CFSTR ("AddIPAddressListChangeCallbackSCF"),
+ 				  afsd_ipaddr_callback, &ctx);
+     
+     if (store) {
+ 	const void *keys[1];
+ 	
+ 	/* Request IPV4 address change notification */
+ 	keys[0] = (SCDynamicStoreKeyCreateNetworkServiceEntity
+ 		   (NULL, kSCDynamicStoreDomainState,
+ 		    kSCCompAnyRegex, kSCEntNetIPv4));
+ 	
+ #if 0
+ 	/* This should tell us when the hostname(s) change. do we care? */
+ 	keys[N] = SCDynamicStoreKeyCreateHostNames (NULL);
+ #endif
+ 	
+ 	if (keys[0] != NULL) {
+ 	    CFArrayRef pattern_array;
+ 	    
+ 	    pattern_array = CFArrayCreate (NULL, keys, 1,
+ 					   &kCFTypeArrayCallBacks);
+ 	    
+ 	    if (pattern_array != NULL)
+ 	    {
+ 		SCDynamicStoreSetNotificationKeys (store, NULL, pattern_array);
+ 		source = SCDynamicStoreCreateRunLoopSource (NULL, store, 0);
+ 		
+ 		CFRelease (pattern_array);
+ 	    }
+ 	    
+ 	    if (keys[0] != NULL)
+ 		CFRelease (keys[0]);
+ 	}
+ 	
+ 	CFRelease (store); 
+     }
+     
+     if (source != NULL) {
+ 	CFRunLoopAddSource (CFRunLoopGetCurrent(),
+ 			    source, kCFRunLoopDefaultMode);
+     }
+     
+     signal(SIGTERM, afsd_event_cleanup);
+ 
+     CFRunLoopRun();
+ }
+ #endif
+ 
  /* ParseArgs is now obsolete, being handled by cmd */
  
  /*------------------------------------------------------------------------------
***************
*** 1251,1256 ****
--- 1437,1452 ----
      kernelMsg[1] = 0;
      acellName[0] = '\0';
  
+ #ifdef AFS_DARWIN_ENV
+     /* Fork the event handler also. */
+     code = fork();
+     if (code == 0) {
+ 	afsd_install_events();
+ 	exit(1);
+     } else if (code != -1) {
+ 	event_pid = code;
+     }
+ #endif
      while (1) {
  	/* On some platforms you only get 4 args to an AFS call */
  	int sizeArg = ((sizeof acellName) << 16) | (sizeof kernelMsg);
***************
*** 1280,1286 ****
  	    acellName[sizeof(acellName) - 1] = '\0';
  	}
      }
! 
      exit(1);
  }
  #endif
--- 1476,1484 ----
  	    acellName[sizeof(acellName) - 1] = '\0';
  	}
      }
! #ifdef AFS_DARWIN_ENV
!     kill(event_pid, SIGTERM);
! #endif
      exit(1);
  }
  #endif
***************
*** 1758,1767 ****
  	exit(1);
  #endif
      }
- #if 0
-     fputs(AFS_GOVERNMENT_MESSAGE, stdout);
-     fflush(stdout);
- #endif
  
      /*
       * Set up all the kernel processes needed for AFS.
--- 1956,1961 ----
Index: openafs/src/aklog/aklog.h
diff -c openafs/src/aklog/aklog.h:1.5 openafs/src/aklog/aklog.h:1.5.2.1
*** openafs/src/aklog/aklog.h:1.5	Mon Mar 20 12:29:28 2006
--- openafs/src/aklog/aklog.h	Wed Jul 11 00:31:06 2007
***************
*** 1,5 ****
  /* 
!  * $Id: aklog.h,v 1.5 2006/03/20 17:29:28 jaltman Exp $
   *
   * Copyright 1990,1991 by the Massachusetts Institute of Technology
   * For distribution and copying rights, see the file "mit-copyright.h"
--- 1,5 ----
  /* 
!  * $Id: aklog.h,v 1.5.2.1 2007/07/11 04:31:06 shadow Exp $
   *
   * Copyright 1990,1991 by the Massachusetts Institute of Technology
   * For distribution and copying rights, see the file "mit-copyright.h"
***************
*** 9,15 ****
  #define __AKLOG_H__
  
  #if !defined(lint) && !defined(SABER)
! static char *rcsid_aklog_h = "$Id: aklog.h,v 1.5 2006/03/20 17:29:28 jaltman Exp $";
  #endif /* lint || SABER */
  
  #include <krb5.h>
--- 9,15 ----
  #define __AKLOG_H__
  
  #if !defined(lint) && !defined(SABER)
! static char *rcsid_aklog_h = "$Id: aklog.h,v 1.5.2.1 2007/07/11 04:31:06 shadow Exp $";
  #endif /* lint || SABER */
  
  #include <krb5.h>
***************
*** 51,56 ****
--- 51,60 ----
  #define INST_SZ 40
  #endif /* INST_SZ */
  
+ #ifndef u_int32_t
+ #define u_int32_t uint32_t
+ #endif
+ 
  struct ktext {
      unsigned int length;
      unsigned char dat[MAX_KTXT_LEN];
Index: openafs/src/aklog/aklog_main.c
diff -c openafs/src/aklog/aklog_main.c:1.12.2.5 openafs/src/aklog/aklog_main.c:1.12.2.6
*** openafs/src/aklog/aklog_main.c:1.12.2.5	Tue Apr 10 14:39:49 2007
--- openafs/src/aklog/aklog_main.c	Wed Jul 11 00:31:06 2007
***************
*** 1,5 ****
  /* 
!  * $Id: aklog_main.c,v 1.12.2.5 2007/04/10 18:39:49 shadow Exp $
   *
   * Copyright 1990,1991 by the Massachusetts Institute of Technology
   * For distribution and copying rights, see the file "mit-copyright.h"
--- 1,5 ----
  /* 
!  * $Id: aklog_main.c,v 1.12.2.6 2007/07/11 04:31:06 shadow Exp $
   *
   * Copyright 1990,1991 by the Massachusetts Institute of Technology
   * For distribution and copying rights, see the file "mit-copyright.h"
***************
*** 7,13 ****
  
  #if !defined(lint) && !defined(SABER)
  static char *rcsid =
! 	"$Id: aklog_main.c,v 1.12.2.5 2007/04/10 18:39:49 shadow Exp $";
  #endif /* lint || SABER */
  
  #include <afsconfig.h>
--- 7,13 ----
  
  #if !defined(lint) && !defined(SABER)
  static char *rcsid =
! 	"$Id: aklog_main.c,v 1.12.2.6 2007/07/11 04:31:06 shadow Exp $";
  #endif /* lint || SABER */
  
  #include <afsconfig.h>
***************
*** 202,208 ****
  #if !defined(HAVE_KRB5_524_CONVERT_CREDS) && defined(HAVE_KRB524_CONVERT_CREDS_KDC)
  #define krb5_524_convert_creds krb524_convert_creds_kdc
  #elif !defined(HAVE_KRB5_524_CONVERT_CREDS) && !defined(HAVE_KRB524_CONVERT_CREDS_KDC)
! #error "You must have one of krb5_524_convert_creds or krb524_convert_creds_kdc available"
  #endif
  
  #endif /* WINDOWS */
--- 202,208 ----
  #if !defined(HAVE_KRB5_524_CONVERT_CREDS) && defined(HAVE_KRB524_CONVERT_CREDS_KDC)
  #define krb5_524_convert_creds krb524_convert_creds_kdc
  #elif !defined(HAVE_KRB5_524_CONVERT_CREDS) && !defined(HAVE_KRB524_CONVERT_CREDS_KDC)
! #define HAVE_NO_KRB5_524
  #endif
  
  #endif /* WINDOWS */
***************
*** 668,673 ****
--- 668,674 ----
  		   get_cred_keylen(v5cred));
  	    atoken.ticketLen = v5cred->ticket.length;
  	    memcpy(atoken.ticket, v5cred->ticket.data, atoken.ticketLen);
+ #ifndef HAVE_NO_KRB5_524
  	} else {
      	    CREDENTIALS cred;
  
***************
*** 702,707 ****
--- 703,709 ----
  	    memcpy(&atoken.sessionKey, cred.session, 8);
  	    atoken.ticketLen = cred.ticket_st.length;
  	    memcpy(atoken.ticket, cred.ticket_st.dat, atoken.ticketLen);
+ #endif /* HAVE_NO_KRB5_524 */
  	}
  	
  	if (!force &&
***************
*** 1224,1230 ****
  	    "[-d] [[-cell | -c] cell [-k krb_realm]] ",
  	    "[[-p | -path] pathname]\n",
  	    "    [-zsubs] [-hosts] [-noauth] [-noprdb] [-force] [-setpag] \n"
! 	    "    [-linked] [-524]\n");
      fprintf(stderr, "    -d gives debugging information.\n");
      fprintf(stderr, "    krb_realm is the kerberos realm of a cell.\n");
      fprintf(stderr, "    pathname is the name of a directory to which ");
--- 1226,1236 ----
  	    "[-d] [[-cell | -c] cell [-k krb_realm]] ",
  	    "[[-p | -path] pathname]\n",
  	    "    [-zsubs] [-hosts] [-noauth] [-noprdb] [-force] [-setpag] \n"
! 		"    [-linked]"
! #ifndef HAVE_NO_KRB5_524
! 		" [-524]"
! #endif
! 		"\n");
      fprintf(stderr, "    -d gives debugging information.\n");
      fprintf(stderr, "    krb_realm is the kerberos realm of a cell.\n");
      fprintf(stderr, "    pathname is the name of a directory to which ");
***************
*** 1236,1242 ****
--- 1242,1250 ----
      fprintf(stderr, "    -force means replace identical tickets. \n");
      fprintf(stderr, "    -linked means if AFS node is linked, try both. \n");
      fprintf(stderr, "    -setpag set the AFS process authentication group.\n");
+ #ifndef HAVE_NO_KRB5_524
      fprintf(stderr, "    -524 means use the 524 converter instead of V5 directly\n");
+ #endif
      fprintf(stderr, "    No commandline arguments means ");
      fprintf(stderr, "authenticate to the local cell.\n");
      fprintf(stderr, "\n");
***************
*** 1309,1316 ****
--- 1317,1326 ----
  		linked++;
  	else if (strcmp(argv[i], "-force") == 0)
  	    force++;
+ #ifndef HAVE_NO_KRB5_524
  	else if (strcmp(argv[i], "-524") == 0)
  	    do524++;
+ #endif
      else if (strcmp(argv[i], "-setpag") == 0)
  	    afssetpag++;
  	else if (((strcmp(argv[i], "-cell") == 0) ||
Index: openafs/src/auth/NTMakefile
diff -c openafs/src/auth/NTMakefile:1.10.4.1 openafs/src/auth/NTMakefile:1.10.4.2
*** openafs/src/auth/NTMakefile:1.10.4.1	Sun Jul  2 21:06:01 2006
--- openafs/src/auth/NTMakefile	Mon Jul  2 20:35:14 2007
***************
*** 8,13 ****
--- 8,14 ----
  RELDIR=auth
  !INCLUDE ..\config\NTMakefile.$(SYS_NAME)
  !INCLUDE ..\config\NTMakefile.version
+ AFSDEV_AUXCDEFINES = -DAFS_AFSDB_ENV
  
  INCFILEDIR = $(DESTDIR)\include\afs  # header file install directory
  
Index: openafs/src/auth/cellconfig.c
diff -c openafs/src/auth/cellconfig.c:1.47.2.8 openafs/src/auth/cellconfig.c:1.47.2.9
*** openafs/src/auth/cellconfig.c:1.47.2.8	Sat Dec 30 11:58:15 2006
--- openafs/src/auth/cellconfig.c	Mon Jul  2 20:35:14 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/auth/cellconfig.c,v 1.47.2.8 2006/12/30 16:58:15 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <afs/pthread_glock.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/auth/cellconfig.c,v 1.47.2.9 2007/07/03 00:35:14 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <afs/pthread_glock.h>
***************
*** 534,540 ****
      char tbuffer[256], tbuf1[256];
      struct stat tstat;
  
!     /* figure out the cell name */
  #ifdef AFS_NT40_ENV
      i = GetCellNT(adir);
  #else
--- 534,540 ----
      char tbuffer[256], tbuf1[256];
      struct stat tstat;
  
!     /* figure out the local cell name */
  #ifdef AFS_NT40_ENV
      i = GetCellNT(adir);
  #else
Index: openafs/src/bucoord/commands.c
diff -c openafs/src/bucoord/commands.c:1.18.2.3 openafs/src/bucoord/commands.c:1.18.2.4
*** openafs/src/bucoord/commands.c:1.18.2.3	Tue Apr 10 14:39:50 2007
--- openafs/src/bucoord/commands.c	Sat Jun 23 11:14:53 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/commands.c,v 1.18.2.3 2007/04/10 18:39:50 shadow Exp $");
  
  #include <afs/stds.h>
  #if defined(AFS_LINUX24_ENV)
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/commands.c,v 1.18.2.4 2007/06/23 15:14:53 shadow Exp $");
  
  #include <afs/stds.h>
  #if defined(AFS_LINUX24_ENV)
***************
*** 1139,1144 ****
--- 1139,1145 ----
      afs_int32 code;
      int oldFlag;
      afs_int32 fromDate;
+     afs_int32 dumpID = 0;
      char *newExt, *timeString;
      afs_int32 i;
      afs_int32 *ports = NULL;
***************
*** 1233,1245 ****
  
      dontExecute = (as->parms[6].items ? 1 : 0);	/* -n */
  
      /*
       * Perform the call to start the restore.
       */
      code =
  	bc_StartDmpRst(bc_globalConfig, "volume", "restore", volsToRestore,
  		       &destServ, destPartition, fromDate, newExt, oldFlag,
! 		       /*parentDump */ 0, /*dumpLevel */ 0,
  		       bc_Restorer, ports, portCount,
  		       /*dumpSched */ NULL, /*append */ 0, dontExecute);
      if (code)
--- 1234,1253 ----
  
      dontExecute = (as->parms[6].items ? 1 : 0);	/* -n */
  
+     if (as->parms[7].items)
+       {
+ 	dumpID = atoi(as->parms[7].items->data);
+ 	if (dumpID <= 0)
+ 	  dumpID = 0;
+       }
+     
      /*
       * Perform the call to start the restore.
       */
      code =
  	bc_StartDmpRst(bc_globalConfig, "volume", "restore", volsToRestore,
  		       &destServ, destPartition, fromDate, newExt, oldFlag,
! 		       /*parentDump */ dumpID, /*dumpLevel */ 0,
  		       bc_Restorer, ports, portCount,
  		       /*dumpSched */ NULL, /*append */ 0, dontExecute);
      if (code)
Index: openafs/src/bucoord/main.c
diff -c openafs/src/bucoord/main.c:1.16.14.2 openafs/src/bucoord/main.c:1.16.14.3
*** openafs/src/bucoord/main.c:1.16.14.2	Tue Apr 10 14:39:50 2007
--- openafs/src/bucoord/main.c	Sat Jun 23 11:14:53 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/main.c,v 1.16.14.2 2007/04/10 18:39:50 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/main.c,v 1.16.14.3 2007/06/23 15:14:53 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 544,549 ****
--- 544,551 ----
  		"date from which to restore");
      cmd_AddParm(ts, "-portoffset", CMD_LIST, CMD_OPTIONAL, "TC port offsets");
      cmd_AddParm(ts, "-n", CMD_FLAG, CMD_OPTIONAL, "don't really execute it");
+     cmd_AddParm(ts, "-usedump", CMD_SINGLE, CMD_OPTIONAL,
+ 		"specify the dumpID to restore from");
      if (!interact)
  	add_std_args(ts);
  
Index: openafs/src/bucoord/restore.c
diff -c openafs/src/bucoord/restore.c:1.10.6.3 openafs/src/bucoord/restore.c:1.10.6.5
*** openafs/src/bucoord/restore.c:1.10.6.3	Thu May 17 02:14:06 2007
--- openafs/src/bucoord/restore.c	Tue Jun 26 01:42:06 2007
***************
*** 15,21 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/restore.c,v 1.10.6.3 2007/05/17 06:14:06 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 15,21 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/restore.c,v 1.10.6.5 2007/06/26 05:42:06 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 216,241 ****
      for (tvol = dumpTaskPtr->volumes; tvol; tvol = tvol->next) {	/*tvol */
  	strcpy(vname, tvol->name);
  	dumpDescr = &dumpDescr1;
! 	code = bcdb_FindDump(vname, dumpTaskPtr->fromDate, dumpDescr);
! 
! 	if (!BackupName(vname)) {	/* See if backup volume is there */
! 	    strcat(vname, ".backup");
! 	    dumpDescr = &dumpDescr2;
! 	    tcode = code;
  	    code = bcdb_FindDump(vname, dumpTaskPtr->fromDate, dumpDescr);
  
! 	    if (code) {		/* Can't find backup, go with first results */
  		strcpy(vname, tvol->name);
  		dumpDescr = &dumpDescr1;
  		code = tcode;
! 	    } else if (!tcode) {	/* Both found an entry, go with latest result */
  		if (dumpDescr1.created > dumpDescr2.created) {
! 		    strcpy(vname, tvol->name);
! 		    dumpDescr = &dumpDescr1;
! 		    code = tcode;
  		}
  	    }
! 	}
  
  	if (code) {		/* If FindDump took an error */
  	    afs_com_err(whoami, code, "; Can't find any dump for volume %s",
--- 216,267 ----
      for (tvol = dumpTaskPtr->volumes; tvol; tvol = tvol->next) {	/*tvol */
  	strcpy(vname, tvol->name);
  	dumpDescr = &dumpDescr1;
! 	if (dumpTaskPtr->parentDumpID > 0) /* Told which dump to try */
! 	  {
! 	    /* Right now, this assumes that all volumes listed will be
! 	     * from the given dumpID.  FIXME
! 	     */
! 	    code = bcdb_FindDumpByID(dumpTaskPtr->parentDumpID, dumpDescr);
! 	    if (code)
! 	      {
! 		afs_com_err(whoami, "Couldn't look up info for dump %d\n",
! 			dumpTaskPtr->parentDumpID);
! 		continue;
! 	      }
! 	    code = bcdb_FindVolumes(dumpTaskPtr->parentDumpID, vname, volumeEntries,
! 				    last, &next, MAXTAPESATONCE, &vecount);
! 	    if (code)
! 	      {
! 		if (!BackupName(vname))
! 		  {
! 		    strcat(vname, ".backup");
! 		    code = bcdb_FindVolumes(dumpTaskPtr->parentDumpID, vname, volumeEntries,
! 					    last, &next, MAXTAPESATONCE, &vecount);
! 		  }
! 	      }
! 	  }
! 	else
! 	  {
  	    code = bcdb_FindDump(vname, dumpTaskPtr->fromDate, dumpDescr);
+ 	    if (!BackupName(vname)) {	/* See if backup volume is there */
+ 	      strcat(vname, ".backup");
+ 	      dumpDescr = &dumpDescr2;
+ 	      tcode = code;
+ 	      code = bcdb_FindDump(vname, dumpTaskPtr->fromDate, dumpDescr);
  
! 	      if (code) {	/* Can't find backup, go with first results */
  		strcpy(vname, tvol->name);
  		dumpDescr = &dumpDescr1;
  		code = tcode;
! 	      } else if (!tcode) {	/* Both found an entry, go with latest result */
  		if (dumpDescr1.created > dumpDescr2.created) {
! 		  strcpy(vname, tvol->name);
! 		  dumpDescr = &dumpDescr1;
! 		  code = tcode;
  		}
+ 	      }
  	    }
! 	  }
  
  	if (code) {		/* If FindDump took an error */
  	    afs_com_err(whoami, code, "; Can't find any dump for volume %s",
Index: openafs/src/budb/database.c
diff -c openafs/src/budb/database.c:1.7.14.1 openafs/src/budb/database.c:1.7.14.2
*** openafs/src/budb/database.c:1.7.14.1	Thu Feb  8 20:00:19 2007
--- openafs/src/budb/database.c	Fri Jul  6 07:35:24 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/database.c,v 1.7.14.1 2007/02/09 01:00:19 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <winsock2.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/database.c,v 1.7.14.2 2007/07/06 11:35:24 jaltman Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <winsock2.h>
***************
*** 74,84 ****
   */
  
  afs_int32
! dbwrite(ut, pos, buff, len)
!      struct ubik_trans *ut;
!      afs_int32 pos;
!      char *buff;
!      afs_int32 len;
  {
      afs_int32 code = 0;
  
--- 74,80 ----
   */
  
  afs_int32
! dbwrite(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len)
  {
      afs_int32 code = 0;
  
***************
*** 110,120 ****
  /* same thing for read */
  
  afs_int32
! dbread(ut, pos, buff, len)
!      struct ubik_trans *ut;
!      afs_int32 pos;
!      char *buff;
!      afs_int32 len;
  {
      afs_int32 code = 0;
  
--- 106,112 ----
  /* same thing for read */
  
  afs_int32
! dbread(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len)
  {
      afs_int32 code = 0;
  
***************
*** 145,156 ****
  
  /* Same as dbread excepts it does checking */
  afs_int32
! cdbread(ut, type, pos, buff, len)
!      struct ubik_trans *ut;
!      int type;
!      afs_int32 pos;
!      char *buff;
!      afs_int32 len;
  {
      afs_int32 code = 0;
  
--- 137,143 ----
  
  /* Same as dbread excepts it does checking */
  afs_int32
! cdbread(struct ubik_trans *ut, int type, afs_int32 pos, void *buff, afs_int32 len)
  {
      afs_int32 code = 0;
  
Index: openafs/src/budb/database.h
diff -c openafs/src/budb/database.h:1.4 openafs/src/budb/database.h:1.4.14.1
*** openafs/src/budb/database.h:1.4	Sun Dec  7 17:49:19 2003
--- openafs/src/budb/database.h	Fri Jul  6 07:35:24 2007
***************
*** 315,320 ****
  extern afs_uint32 ht_HashEntry();
  extern dbadr ht_LookupBucket();
  
! extern afs_int32 dbwrite(struct ubik_trans *ut, afs_int32 pos, char *buff, afs_int32 len);
  extern void db_panic(char *reason);
  extern void ht_Reset(struct memoryHashTable *mht);
--- 315,322 ----
  extern afs_uint32 ht_HashEntry();
  extern dbadr ht_LookupBucket();
  
! extern afs_int32 dbwrite(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len);
! extern afs_int32 dbread(struct ubik_trans *ut, afs_int32 pos, void *buff, afs_int32 len);
! extern afs_int32 cdbread(struct ubik_trans *ut, int type, afs_int32 pos, void *buff, afs_int32 len);
  extern void db_panic(char *reason);
  extern void ht_Reset(struct memoryHashTable *mht);
Index: openafs/src/budb/ol_verify.c
diff -c openafs/src/budb/ol_verify.c:1.13 openafs/src/budb/ol_verify.c:1.13.14.1
*** openafs/src/budb/ol_verify.c:1.13	Sat Nov 29 17:08:09 2003
--- openafs/src/budb/ol_verify.c	Fri Jul  6 07:40:40 2007
***************
*** 13,19 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/ol_verify.c,v 1.13 2003/11/29 22:08:09 jaltman Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
--- 13,19 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/ol_verify.c,v 1.13.14.1 2007/07/06 11:40:40 jaltman Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
***************
*** 303,311 ****
      return (typeName[index]);
  }
  
! getDumpID(ut, tapePtr, dumpID)
!      struct tape *tapePtr;
!      afs_int32 *dumpID;
  {
      struct dump d;
      afs_int32 code;
--- 303,312 ----
      return (typeName[index]);
  }
  
! int
! getDumpID(struct ubik_trans *ut,
!     struct tape *tapePtr,
!     afs_int32 *dumpID)
  {
      struct dump d;
      afs_int32 code;
***************
*** 314,319 ****
--- 315,321 ----
      code = dbread(ut, ntohl(tapePtr->dump), &d, sizeof(d));
      if (!code)
  	*dumpID = ntohl(d.id);
+     return code;
  }
  
  /* ------------------------------------
Index: openafs/src/cf/linux-test2.m4
diff -c openafs/src/cf/linux-test2.m4:1.12.4.1 openafs/src/cf/linux-test2.m4:1.12.4.2
*** openafs/src/cf/linux-test2.m4:1.12.4.1	Fri Aug  4 11:45:33 2006
--- openafs/src/cf/linux-test2.m4	Tue Jun 12 14:39:41 2007
***************
*** 10,13 ****
--- 10,14 ----
  cp  $tmpldir/osi_vfs.hin $outputdir/osi_vfs.h
  # chmod +x $configdir/make_vnode.pl
  # $configdir/make_vnode.pl -i $LINUX_KERNEL_PATH -t ${tmpldir} -o $outputdir
+   AC_MSG_RESULT(yes)
  ])
Index: openafs/src/cf/linux-test4.m4
diff -c openafs/src/cf/linux-test4.m4:1.29.2.24 openafs/src/cf/linux-test4.m4:1.29.2.26
*** openafs/src/cf/linux-test4.m4:1.29.2.24	Thu May 17 02:36:48 2007
--- openafs/src/cf/linux-test4.m4	Tue Jun 12 14:34:18 2007
***************
*** 444,449 ****
--- 444,461 ----
    AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)])
  
  
+ AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO], [
+   AC_MSG_CHECKING([for thread_info in struct task_struct])
+   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_thread_info], [
+     AC_TRY_KBUILD(
+ [#include <linux/sched.h>],
+ [struct task_struct _tsk;
+ printk("%d\n", _tsk.thread_info);],
+       ac_cv_linux_sched_struct_task_struct_has_thread_info=yes,
+       ac_cv_linux_sched_struct_task_struct_has_thread_info=no)])
+   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_thread_info)])
+ 
+ 
  AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [
    AC_MSG_CHECKING([for alloc_inode in struct super_operations])
    AC_CACHE_VAL([ac_cv_linux_fs_struct_super_has_alloc_inode], [
***************
*** 846,848 ****
--- 858,873 ----
        ac_cv_linux_register_sysctl_table_noflag=no)])
    AC_MSG_RESULT($ac_cv_linux_register_sysctl_table_noflag)])
  
+ AC_DEFUN([LINUX_FOP_F_FLUSH_TAKES_FL_OWNER_T], [
+   AC_MSG_CHECKING([whether file_operations.flush takes a fl_owner_t])
+   AC_CACHE_VAL([ac_cv_linux_func_f_flush_takes_fl_owner_t], [
+     AC_TRY_KBUILD(
+ [#include <linux/fs.h>],
+ [struct inode _inode;
+ struct file _file;
+ fl_owner_t id;
+ (void)_inode.i_fop->flush(&_file, &id);],
+       ac_cv_linux_func_f_flush_takes_fl_owner_t=yes,
+       ac_cv_linux_func_f_flush_takes_fl_owner_t=no)])
+   AC_MSG_RESULT($ac_cv_linux_func_f_flush_takes_fl_owner_t)])
+ 
Index: openafs/src/cf/osconf.m4
diff -c openafs/src/cf/osconf.m4:1.83.2.2 openafs/src/cf/osconf.m4:1.83.2.3
*** openafs/src/cf/osconf.m4:1.83.2.2	Thu Dec 28 17:02:16 2006
--- openafs/src/cf/osconf.m4	Mon Jun 18 14:18:48 2007
***************
*** 475,481 ****
  		;;
  
  	*_darwin_80)
! 		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration"
  		LEX="lex -l"
  		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
--- 475,481 ----
  		;;
  
  	*_darwin_80)
! 		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
  		LEX="lex -l"
  		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
***************
*** 491,497 ****
  		;;
  
  	*_darwin_90)
! 		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration"
  		LEX="lex -l"
  		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
--- 491,497 ----
  		;;
  
  	*_darwin_90)
! 		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
  		LEX="lex -l"
  		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
Index: openafs/src/config/NTMakefile.amd64_w2k
diff -c openafs/src/config/NTMakefile.amd64_w2k:1.24.2.23 openafs/src/config/NTMakefile.amd64_w2k:1.24.2.25
*** openafs/src/config/NTMakefile.amd64_w2k:1.24.2.23	Thu May 17 12:12:52 2007
--- openafs/src/config/NTMakefile.amd64_w2k	Tue Jul 10 16:17:28 2007
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=2000
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 84,90 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=2100
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
***************
*** 208,216 ****
  	-I$(DESTDIR)\include\rx \
  	-DWIN32_LEAN_AND_MEAN \
  	-DSTRICT \
! 	-D_WIN32_IE=0x0500 \
! 	-D_WIN32_WINNT=0x0500 \
!     	-DWINVER=0x0500 \
      	-DREGISTER_POWER_NOTIFICATIONS \
      	-DAFS_AFSDB_ENV \
      	-DAFS_FREELANCE_CLIENT \
--- 208,216 ----
  	-I$(DESTDIR)\include\rx \
  	-DWIN32_LEAN_AND_MEAN \
  	-DSTRICT \
! 	-D_WIN32_IE=0x0502 \
! 	-D_WIN32_WINNT=0x0502 \
!     	-DWINVER=0x0502 \
      	-DREGISTER_POWER_NOTIFICATIONS \
      	-DAFS_AFSDB_ENV \
      	-DAFS_FREELANCE_CLIENT \
***************
*** 357,363 ****
  #################### Link optional build flags set ###########
  
  afslflags = $(afslflags) \
! 	/FIXED:NO /VERBOSE:LIB
  
  !IF ("$(AFSVER_CL)"=="1400")
  afslflags = $(afslflags) /MANIFEST
--- 357,363 ----
  #################### Link optional build flags set ###########
  
  afslflags = $(afslflags) \
! 	/FIXED:NO /VERBOSE:LIB /MACHINE:X64
  
  !IF ("$(AFSVER_CL)"=="1400")
  afslflags = $(afslflags) /MANIFEST
Index: openafs/src/config/NTMakefile.i386_nt40
diff -c openafs/src/config/NTMakefile.i386_nt40:1.84.2.23 openafs/src/config/NTMakefile.i386_nt40:1.84.2.24
*** openafs/src/config/NTMakefile.i386_nt40:1.84.2.23	Thu May 17 12:12:52 2007
--- openafs/src/config/NTMakefile.i386_nt40	Tue Jul 10 16:17:28 2007
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=2000
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 84,90 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=2100
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/config/NTMakefile.i386_w2k
diff -c openafs/src/config/NTMakefile.i386_w2k:1.23.2.23 openafs/src/config/NTMakefile.i386_w2k:1.23.2.24
*** openafs/src/config/NTMakefile.i386_w2k:1.23.2.23	Thu May 17 12:12:52 2007
--- openafs/src/config/NTMakefile.i386_w2k	Tue Jul 10 16:17:28 2007
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=2000
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 84,90 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=2100
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/config/param.ppc64_linux24.h
diff -c openafs/src/config/param.ppc64_linux24.h:1.4.6.2 openafs/src/config/param.ppc64_linux24.h:1.4.6.3
*** openafs/src/config/param.ppc64_linux24.h:1.4.6.2	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.ppc64_linux24.h	Wed Jun  6 13:33:28 2007
***************
*** 75,80 ****
--- 75,86 ----
  #endif
  #endif /* KERNEL */
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* _PARAM_PPC64_LINUX20_H_ */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/param.ppc64_linux26.h
diff -c openafs/src/config/param.ppc64_linux26.h:1.3.6.5 openafs/src/config/param.ppc64_linux26.h:1.3.6.6
*** openafs/src/config/param.ppc64_linux26.h:1.3.6.5	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.ppc64_linux26.h	Wed Jun  6 13:33:28 2007
***************
*** 75,80 ****
--- 75,86 ----
  #endif
  #endif /* KERNEL */
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* _PARAM_PPC64_LINUX20_H_ */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/param.ppc_linux24.h
diff -c openafs/src/config/param.ppc_linux24.h:1.12.6.2 openafs/src/config/param.ppc_linux24.h:1.12.6.3
*** openafs/src/config/param.ppc_linux24.h:1.12.6.2	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.ppc_linux24.h	Wed Jun  6 13:33:28 2007
***************
*** 72,77 ****
--- 72,83 ----
  #endif
  #endif /* KERNEL */
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* AFS_PARAM_H */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/param.ppc_linux26.h
diff -c openafs/src/config/param.ppc_linux26.h:1.3.6.5 openafs/src/config/param.ppc_linux26.h:1.3.6.6
*** openafs/src/config/param.ppc_linux26.h:1.3.6.5	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.ppc_linux26.h	Wed Jun  6 13:33:28 2007
***************
*** 73,78 ****
--- 73,84 ----
  #endif
  #endif /* KERNEL */
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* AFS_PARAM_H */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/param.sparc64_linux24.h
diff -c openafs/src/config/param.sparc64_linux24.h:1.9.6.2 openafs/src/config/param.sparc64_linux24.h:1.9.6.3
*** openafs/src/config/param.sparc64_linux24.h:1.9.6.2	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.sparc64_linux24.h	Wed Jun  6 13:33:28 2007
***************
*** 94,99 ****
--- 94,105 ----
  #endif
  #endif
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* _PARAM_SPARC64_LINUX24_H_ */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/param.sparc64_linux26.h
diff -c openafs/src/config/param.sparc64_linux26.h:1.2.4.5 openafs/src/config/param.sparc64_linux26.h:1.2.4.6
*** openafs/src/config/param.sparc64_linux26.h:1.2.4.5	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.sparc64_linux26.h	Wed Jun  6 13:33:28 2007
***************
*** 94,99 ****
--- 94,105 ----
  #endif
  #endif
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* _PARAM_SPARC64_LINUX26_H_ */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/param.sparc_linux24.h
diff -c openafs/src/config/param.sparc_linux24.h:1.10.6.2 openafs/src/config/param.sparc_linux24.h:1.10.6.3
*** openafs/src/config/param.sparc_linux24.h:1.10.6.2	Thu Nov  9 18:18:45 2006
--- openafs/src/config/param.sparc_linux24.h	Wed Jun  6 13:33:28 2007
***************
*** 98,103 ****
--- 98,109 ----
  #endif
  #endif
  
+ #ifdef __GLIBC__
+ #if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3)
+ #define USE_UCONTEXT
+ #endif
+ #endif
+ 
  #endif /* AFS_PARAM_H */
  
  #else /* !defined(UKERNEL) */
Index: openafs/src/config/venus.h
diff -c openafs/src/config/venus.h:1.12.2.3 openafs/src/config/venus.h:1.12.2.4
*** openafs/src/config/venus.h:1.12.2.3	Mon Jul 31 17:27:40 2006
--- openafs/src/config/venus.h	Tue Jun 12 15:14:11 2007
***************
*** 182,187 ****
--- 182,188 ----
  #define VIOC_GETALIAS		_CVICEIOCTL(2)	/* get alias info */
  #define VIOC_CBADDR		_CVICEIOCTL(3)	/* push callback addr */
  #define VIOC_DISCON		_CVICEIOCTL(5)	/* set/get discon mode */
+ #define VIOC_NEWUUID            _CVICEIOCTL(9)  /* new uuid */
  
  /* OpenAFS-specific 'O' pioctl's */
  #define VIOC_NFS_NUKE_CREDS	_OVICEIOCTL(1)	/* nuke creds for all PAG's */
Index: openafs/src/des/des.c
diff -c openafs/src/des/des.c:1.19 openafs/src/des/des.c:1.19.4.1
*** openafs/src/des/des.c:1.19	Thu Aug 18 00:55:00 2005
--- openafs/src/des/des.c	Tue Jul  3 00:23:12 2007
***************
*** 37,43 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/des/des.c,v 1.19 2005/08/18 04:55:00 shadow Exp $");
  
  #ifndef KERNEL
  #include <stdio.h>
--- 37,43 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/des/des.c,v 1.19.4.1 2007/07/03 04:23:12 shadow Exp $");
  
  #ifndef KERNEL
  #include <stdio.h>
***************
*** 90,96 ****
  #error dunno how to do this machine type, you lose;
  #endif
  #endif
!     afs_uint32 P_temp;
      volatile unsigned char *P_temp_p = (unsigned char *)&P_temp;
  #ifdef BITS16
      sbox_out S_out;
--- 90,96 ----
  #error dunno how to do this machine type, you lose;
  #endif
  #endif
!     volatile afs_uint32 P_temp;
      volatile unsigned char *P_temp_p = (unsigned char *)&P_temp;
  #ifdef BITS16
      sbox_out S_out;
Index: openafs/src/des/des.h
diff -c openafs/src/des/des.h:1.3 openafs/src/des/des.h:1.3.14.1
*** openafs/src/des/des.h:1.3	Tue Jul 15 19:14:59 2003
--- openafs/src/des/des.h	Mon Jul  9 15:15:26 2007
***************
*** 20,26 ****
--- 20,29 ----
  typedef unsigned char des_cblock[8];	/* crypto-block size */
  /* Key schedule */
  typedef struct des_ks_struct {
+     union {
+     afs_uint32 i[2];
      des_cblock _;
+     } _;
  } des_key_schedule[16];
  
  #define DES_KEY_SZ 	(sizeof(des_cblock))
Index: openafs/src/des/pcbc_encrypt.c
diff -c openafs/src/des/pcbc_encrypt.c:1.10 openafs/src/des/pcbc_encrypt.c:1.10.8.1
*** openafs/src/des/pcbc_encrypt.c:1.10	Tue Oct  5 16:40:59 2004
--- openafs/src/des/pcbc_encrypt.c	Mon Jul  9 15:15:26 2007
***************
*** 24,36 ****
  #ifndef KERNEL
  #include <stdio.h>
  #endif
- #include <des.h>
  #include <afsconfig.h>
  #include <afs/param.h>
  #include "des_prototypes.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/des/pcbc_encrypt.c,v 1.10 2004/10/05 20:40:59 rees Exp $");
  
  #include "des_internal.h"
  
--- 24,36 ----
  #ifndef KERNEL
  #include <stdio.h>
  #endif
  #include <afsconfig.h>
  #include <afs/param.h>
+ #include <des.h>
  #include "des_prototypes.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/des/pcbc_encrypt.c,v 1.10.8.1 2007/07/09 19:15:26 shadow Exp $");
  
  #include "des_internal.h"
  
Index: openafs/src/libafs/MakefileProto.SOLARIS.in
diff -c openafs/src/libafs/MakefileProto.SOLARIS.in:1.25.6.2 openafs/src/libafs/MakefileProto.SOLARIS.in:1.25.6.3
*** openafs/src/libafs/MakefileProto.SOLARIS.in:1.25.6.2	Thu Dec 28 17:02:16 2006
--- openafs/src/libafs/MakefileProto.SOLARIS.in	Tue Jun  5 13:11:28 2007
***************
*** 33,39 ****
  KDEFS= -D_KERNEL -DSYSV -dn ${ARCH_DEFS}
  
  <sun4x_57 sun4x_58 sun4x_59 sun4x_510 sun4x_511>
! KDEFS_32 = 
  KDEFS_64 = -xarch=v9 
  
  <sunx86_57 sunx86_58 sunx86_59 sunx86_510 sunx86_511>
--- 33,39 ----
  KDEFS= -D_KERNEL -DSYSV -dn ${ARCH_DEFS}
  
  <sun4x_57 sun4x_58 sun4x_59 sun4x_510 sun4x_511>
! KDEFS_32 = -xarch=v8
  KDEFS_64 = -xarch=v9 
  
  <sunx86_57 sunx86_58 sunx86_59 sunx86_510 sunx86_511>
Index: openafs/src/libafs/afs.ppc_darwin_70.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.10.16 openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.10.17
*** openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.10.16	Fri May 18 01:22:37 2007
--- openafs/src/libafs/afs.ppc_darwin_70.plist.in	Wed Jul 11 00:36:17 2007
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.20</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.20</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kernel.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.21</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.21</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kernel.bsd</key>
Index: openafs/src/libafs/afs.ppc_darwin_80.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.2.4.16 openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.2.4.17
*** openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.2.4.16	Fri May 18 01:22:37 2007
--- openafs/src/libafs/afs.ppc_darwin_80.plist.in	Wed Jul 11 00:36:17 2007
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.20</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.20</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.21</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.21</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/afs.ppc_darwin_90.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.6.16 openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.6.17
*** openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.6.16	Fri May 18 01:22:37 2007
--- openafs/src/libafs/afs.ppc_darwin_90.plist.in	Wed Jul 11 00:36:17 2007
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.20</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.20</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.21</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.21</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/afs.x86_darwin_80.plist.in
diff -c openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.6.16 openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.6.17
*** openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.6.16	Fri May 18 01:22:37 2007
--- openafs/src/libafs/afs.x86_darwin_80.plist.in	Wed Jul 11 00:36:17 2007
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.20</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.20</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.21</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.21</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/afs.x86_darwin_90.plist.in
diff -c openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.6.16 openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.6.17
*** openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.6.16	Fri May 18 01:22:37 2007
--- openafs/src/libafs/afs.x86_darwin_90.plist.in	Wed Jul 11 00:36:17 2007
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.20</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.20</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.21</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.21</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/make_kbuild_makefile.pl
diff -c openafs/src/libafs/make_kbuild_makefile.pl:1.2.6.3 openafs/src/libafs/make_kbuild_makefile.pl:1.2.6.4
*** openafs/src/libafs/make_kbuild_makefile.pl:1.2.6.3	Mon Jul 31 17:27:41 2006
--- openafs/src/libafs/make_kbuild_makefile.pl	Mon Jun  4 23:54:29 2007
***************
*** 82,88 ****
  foreach (keys %all_objs) {
    die "No source known for $_\n" unless exists $deps{$_};
    if($deps{$_} =~ /\.s$/) {
!      ($src = $_) =~ s/\.o$/.s/;
    } else {
       ($src = $_) =~ s/\.o$/.c/;
    }
--- 82,88 ----
  foreach (keys %all_objs) {
    die "No source known for $_\n" unless exists $deps{$_};
    if($deps{$_} =~ /\.s$/) {
!      ($src = $_) =~ s/\.o$/.S/;
    } else {
       ($src = $_) =~ s/\.o$/.c/;
    }
Index: openafs/src/lwp/lwp.c
diff -c openafs/src/lwp/lwp.c:1.34 openafs/src/lwp/lwp.c:1.34.2.1
*** openafs/src/lwp/lwp.c:1.34	Thu Mar  9 01:34:43 2006
--- openafs/src/lwp/lwp.c	Wed Jun  6 13:22:05 2007
***************
*** 17,23 ****
  #include <afsconfig.h>
  #include <afs/param.h>
  
! RCSID("$Header: /cvs/openafs/src/lwp/lwp.c,v 1.34 2006/03/09 06:34:43 shadow Exp $");
  
  #include <stdlib.h>
  #include <stdio.h>
--- 17,23 ----
  #include <afsconfig.h>
  #include <afs/param.h>
  
! RCSID("$Header: /cvs/openafs/src/lwp/lwp.c,v 1.34.2.1 2007/06/06 17:22:05 shadow Exp $");
  
  #include <stdlib.h>
  #include <stdio.h>
***************
*** 33,38 ****
--- 33,39 ----
  #include <sys/pseg.h>
  #include <sys/core.h>
  #pragma alloca
+ int setlim(int limcon, uchar_t hard, int limit);
  #endif
  #ifdef AFS_SGI64_ENV
  extern char *getenv();
Index: openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB
diff -c openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB:1.3.4.2 openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB:1.3.4.3
*** openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB:1.3.4.2	Fri Mar  9 23:55:12 2007
--- openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB	Thu Jul  5 19:47:44 2007
***************
*** 1,4 ****
! >grand.central.org      #GCO Public CellServDB 09 Mar 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
--- 1,4 ----
! >grand.central.org      #GCO Public CellServDB 05 Jul 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
***************
*** 18,23 ****
--- 18,26 ----
  129.27.161.7                    #faepafs1.tu-graz.ac.at
  129.27.161.15                   #faepafs2.tu-graz.ac.at
  129.27.161.114                  #faepafs3.tu-graz.ac.at
+ >sums.math.mcgill.ca    #Society of Undergraduate Mathematics Students of McGill Universi
+ 132.216.24.122                  #germain.sums.math.mcgill.ca
+ 132.216.24.125                  #turing.sums.math.mcgill.ca
  >cern.ch                #European Laboratory for Particle Physics, Geneva
  137.138.128.148                 #afsdb1.cern.ch
  137.138.246.50                  #afsdb3.cern.ch
***************
*** 110,115 ****
--- 113,120 ----
  141.35.2.180                    #afs00.rz.uni-jena.de
  141.35.2.181                    #afs01.rz.uni-jena.de
  141.35.2.182                    #afs02.rz.uni-jena.de
+ >impetus.uni-koeln.de   #Univ. of Cologne - Geophysics/Meteorology Inst.
+ 134.95.80.39                    #forano.meteo.uni-koeln.de
  >meteo.uni-koeln.de     #Univ. of Cologne - Inst. for Geophysics & Meteorology
  134.95.144.22                   #afs1.meteo.uni-koeln.de
  134.95.144.24                   #afs2.meteo.uni-koeln.de
***************
*** 161,183 ****
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.194.178                   #cherry.srv.cs.cmu.edu
! 128.2.194.179                   #pumpkin.srv.cs.cmu.edu
! 128.2.194.180                   #strawberry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar Campus Cell
! 204.194.25.7                    #afs1.qatar.cmu.edu
! 204.194.25.8                    #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #Cornell Nanoscale Science and Technology Facility
  128.253.198.9                   #hole.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
--- 166,189 ----
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.201.46                    #strawberry.srv.cs.cmu.edu
! 128.2.201.47                    #pumpkin.srv.cs.cmu.edu
! 128.2.201.48                    #cherry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar
! 86.36.46.6                      #afs1.qatar.cmu.edu
! 86.36.46.7                      #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #CNF
  128.253.198.9                   #hole.cnf.cornell.edu
+ 128.253.198.27                  #smoke.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 285,290 ****
--- 291,300 ----
  128.174.251.8                   #alnitak.acm.uiuc.edu
  128.174.251.9                   #alnilam.acm.uiuc.edu
  128.174.251.10                  #mintaka.acm.uiuc.edu
+ >illigal.uiuc.edu       #Illinois Genetic Algorithms Labaratory
+ 128.174.193.200                 #ial.illigal.uiuc.edu
+ 128.174.193.201                 #cac.illigal.uiuc.edu
+ 128.174.193.202                 #gcs.illigal.uiuc.edu
  >ncsa.uiuc.edu          #University of Illinois
  141.142.3.5                     #congo.ncsa.uiuc.edu
  141.142.3.8                     #nile.ncsa.uiuc.edu
***************
*** 478,486 ****
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 209.234.76.70                   #service-3.tproa.net
! 209.234.76.75                   #service-4.tproa.net
! 209.234.76.76                   #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 488,496 ----
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 72.13.4.23                      #service-3.tproa.net
! 72.13.4.24                      #service-4.tproa.net
! 72.13.4.25                      #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
***************
*** 519,526 ****
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
- 130.237.209.39                  #ezri.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
--- 529,536 ----
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
+ 130.237.209.5                   #afsdb2.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
***************
*** 546,552 ****
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.237.230                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
--- 556,562 ----
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.234.101                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
Index: openafs/src/packaging/MacOS/CellServDB
diff -c openafs/src/packaging/MacOS/CellServDB:1.3.4.2 openafs/src/packaging/MacOS/CellServDB:1.3.4.3
*** openafs/src/packaging/MacOS/CellServDB:1.3.4.2	Fri Mar  9 23:55:12 2007
--- openafs/src/packaging/MacOS/CellServDB	Thu Jul  5 19:47:44 2007
***************
*** 1,4 ****
! >grand.central.org      #GCO Public CellServDB 09 Mar 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
--- 1,4 ----
! >grand.central.org      #GCO Public CellServDB 05 Jul 2007
  18.92.0.108                     #grand-opening.mit.edu
  128.2.203.61                    #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
***************
*** 18,23 ****
--- 18,26 ----
  129.27.161.7                    #faepafs1.tu-graz.ac.at
  129.27.161.15                   #faepafs2.tu-graz.ac.at
  129.27.161.114                  #faepafs3.tu-graz.ac.at
+ >sums.math.mcgill.ca    #Society of Undergraduate Mathematics Students of McGill Universi
+ 132.216.24.122                  #germain.sums.math.mcgill.ca
+ 132.216.24.125                  #turing.sums.math.mcgill.ca
  >cern.ch                #European Laboratory for Particle Physics, Geneva
  137.138.128.148                 #afsdb1.cern.ch
  137.138.246.50                  #afsdb3.cern.ch
***************
*** 110,115 ****
--- 113,120 ----
  141.35.2.180                    #afs00.rz.uni-jena.de
  141.35.2.181                    #afs01.rz.uni-jena.de
  141.35.2.182                    #afs02.rz.uni-jena.de
+ >impetus.uni-koeln.de   #Univ. of Cologne - Geophysics/Meteorology Inst.
+ 134.95.80.39                    #forano.meteo.uni-koeln.de
  >meteo.uni-koeln.de     #Univ. of Cologne - Inst. for Geophysics & Meteorology
  134.95.144.22                   #afs1.meteo.uni-koeln.de
  134.95.144.24                   #afs2.meteo.uni-koeln.de
***************
*** 161,183 ****
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.194.178                   #cherry.srv.cs.cmu.edu
! 128.2.194.179                   #pumpkin.srv.cs.cmu.edu
! 128.2.194.180                   #strawberry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar Campus Cell
! 204.194.25.7                    #afs1.qatar.cmu.edu
! 204.194.25.8                    #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #Cornell Nanoscale Science and Technology Facility
  128.253.198.9                   #hole.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
--- 166,189 ----
  128.2.40.134                    #afs.chem.cmu.edu
  128.2.40.140                    #afs2.chem.cmu.edu
  >cs.cmu.edu             #Carnegie Mellon University - School of Comp. Sci.
! 128.2.201.46                    #strawberry.srv.cs.cmu.edu
! 128.2.201.47                    #pumpkin.srv.cs.cmu.edu
! 128.2.201.48                    #cherry.srv.cs.cmu.edu
  >ece.cmu.edu            #Carnegie Mellon University - Elec. Comp. Eng. Dept.
  128.2.129.7                     #porok.ece.cmu.edu
  128.2.129.8                     #vicio.ece.cmu.edu
  128.2.129.9                     #e-xing.ece.cmu.edu
  >scotch.ece.cmu.edu     #CMU ECE CALCM research group
  128.2.134.82                    #lagavulin.ece.cmu.edu
! >qatar.cmu.edu          #Carnegie Mellon University - Qatar
! 86.36.46.6                      #afs1.qatar.cmu.edu
! 86.36.46.7                      #afs2.qatar.cmu.edu
  >sbp.ri.cmu.edu         #Carnegie Mellon University - Sensor Based Planning Lab
  128.2.179.12                    #nihao.sbp.ri.cmu.edu
  128.2.179.113                   #youtheman.sbp.ri.cmu.edu
! >cnf.cornell.edu        #CNF
  128.253.198.9                   #hole.cnf.cornell.edu
+ 128.253.198.27                  #smoke.cnf.cornell.edu
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 285,290 ****
--- 291,300 ----
  128.174.251.8                   #alnitak.acm.uiuc.edu
  128.174.251.9                   #alnilam.acm.uiuc.edu
  128.174.251.10                  #mintaka.acm.uiuc.edu
+ >illigal.uiuc.edu       #Illinois Genetic Algorithms Labaratory
+ 128.174.193.200                 #ial.illigal.uiuc.edu
+ 128.174.193.201                 #cac.illigal.uiuc.edu
+ 128.174.193.202                 #gcs.illigal.uiuc.edu
  >ncsa.uiuc.edu          #University of Illinois
  141.142.3.5                     #congo.ncsa.uiuc.edu
  141.142.3.8                     #nile.ncsa.uiuc.edu
***************
*** 478,486 ****
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 209.234.76.70                   #service-3.tproa.net
! 209.234.76.75                   #service-4.tproa.net
! 209.234.76.76                   #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 488,496 ----
  >slackers.net           #The Slackers' Network
  63.201.48.27                    #alexandria.slackers.net
  >tproa.net              #The People's Republic of Ames
! 72.13.4.23                      #service-3.tproa.net
! 72.13.4.24                      #service-4.tproa.net
! 72.13.4.25                      #service-5.tproa.net
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
***************
*** 519,526 ****
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
- 130.237.209.39                  #ezri.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
--- 529,536 ----
  130.237.24.104                  #afs2.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
  130.237.202.3                   #afsdb1.isk.kth.se
+ 130.237.209.5                   #afsdb2.isk.kth.se
  130.237.209.9                   #afsdb3.isk.kth.se
  >it.kth.se              #Royal Institute of Technology, IT
  130.237.212.15                  #ptah.it.kth.se
  130.237.212.16                  #toth.it.kth.se
***************
*** 546,552 ****
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.237.230                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
--- 556,562 ----
  >stacken.kth.se         #Stacken Computer Club
  130.237.234.3                   #milko.stacken.kth.se
  130.237.234.43                  #hot.stacken.kth.se
! 130.237.234.101                 #fishburger.stacken.kth.se
  >syd.kth.se             #Royal Institute of Technology, KTH-Syd
  130.237.83.23                   #afs.haninge.kth.se
  >physto.se              #Physics department Stockholm University
Index: openafs/src/packaging/MacOS/OpenAFS.Info.plist
diff -c openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.10.17 openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.10.18
*** openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.10.17	Fri May 18 01:22:39 2007
--- openafs/src/packaging/MacOS/OpenAFS.Info.plist	Wed Jul 11 00:36:19 2007
***************
*** 3,15 ****
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.5.20</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.20</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
--- 3,15 ----
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.5.21</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.21</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
Index: openafs/src/packaging/MacOS/OpenAFS.info
diff -c openafs/src/packaging/MacOS/OpenAFS.info:1.1.12.16 openafs/src/packaging/MacOS/OpenAFS.info:1.1.12.17
*** openafs/src/packaging/MacOS/OpenAFS.info:1.1.12.16	Fri May 18 01:22:39 2007
--- openafs/src/packaging/MacOS/OpenAFS.info	Wed Jul 11 00:36:19 2007
***************
*** 1,5 ****
  Title OpenAFS
! Version 1.5.20
  Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information.
  DefaultLocation /
  Diskname (null)
--- 1,5 ----
  Title OpenAFS
! Version 1.5.21
  Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information.
  DefaultLocation /
  Diskname (null)
Index: openafs/src/packaging/MacOS/buildpkg.sh
diff -c openafs/src/packaging/MacOS/buildpkg.sh:1.13.2.9 openafs/src/packaging/MacOS/buildpkg.sh:1.13.2.10
*** openafs/src/packaging/MacOS/buildpkg.sh:1.13.2.9	Fri Jan  5 18:31:30 2007
--- openafs/src/packaging/MacOS/buildpkg.sh	Tue Jul  3 10:02:54 2007
***************
*** 122,128 ****
--- 122,132 ----
      else
  	echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
      fi
+     if [ $majorvers -ge 9 ]; then
      echo '-memcache -afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' > $PKGROOT/private/var/db/openafs/etc/config/afsd.options.sample
+     else
+     echo '-afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' > $PKGROOT/private/var/db/openafs/etc/config/afsd.options.sample
+     fi
  
      strip -X -S $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs
  
Index: openafs/src/procmgmt/procmgmt_nt.c
diff -c openafs/src/procmgmt/procmgmt_nt.c:1.7.4.1 openafs/src/procmgmt/procmgmt_nt.c:1.7.4.2
*** openafs/src/procmgmt/procmgmt_nt.c:1.7.4.1	Tue Jan 30 07:07:18 2007
--- openafs/src/procmgmt/procmgmt_nt.c	Fri Jun 29 19:52:54 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/procmgmt/procmgmt_nt.c,v 1.7.4.1 2007/01/30 12:07:18 jaltman Exp $");
  
  #include <afs/stds.h>
  
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/procmgmt/procmgmt_nt.c,v 1.7.4.2 2007/06/29 23:52:54 jaltman Exp $");
  
  #include <afs/stds.h>
  
***************
*** 251,256 ****
--- 251,257 ----
  RemoteSignalListenerThread(LPVOID param)
  {
      HANDLE sigPipeHandle = (HANDLE) param;
+     HMODULE hLib = LoadLibrary("AFSPROCMGMT.DLL");
  
      while (1) {
  	/* wait for pipe client to connect */
***************
*** 296,301 ****
--- 297,303 ----
      }
  
      /* never reached */
+     FreeLibrary(hLib);
      return (0);
  }
  
Index: openafs/src/rx/rx_lwp.c
diff -c openafs/src/rx/rx_lwp.c:1.19 openafs/src/rx/rx_lwp.c:1.19.4.1
*** openafs/src/rx/rx_lwp.c:1.19	Sat Nov  5 01:48:18 2005
--- openafs/src/rx/rx_lwp.c	Thu Jun 14 15:06:25 2007
***************
*** 22,28 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_lwp.c,v 1.19 2005/11/05 06:48:18 jaltman Exp $");
  
  # include <sys/types.h>		/* fd_set on older platforms */
  # include <errno.h>
--- 22,28 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_lwp.c,v 1.19.4.1 2007/06/14 19:06:25 jaltman Exp $");
  
  # include <sys/types.h>		/* fd_set on older platforms */
  # include <errno.h>
***************
*** 445,456 ****
  	    if (!(sfds = IOMGR_AllocFDSet())) {
  		(osi_Msg "rx failed to alloc fd_set: ");
  		perror("rx_sendmsg");
! 		return 3;
  	    }
  	    FD_SET(socket, sfds);
  	}
  #ifdef AFS_NT40_ENV
! 	if (errno)
  #elif defined(AFS_LINUX22_ENV)
  	/* linux unfortunately returns ECONNREFUSED if the target port
  	 * is no longer in use */
--- 445,456 ----
  	    if (!(sfds = IOMGR_AllocFDSet())) {
  		(osi_Msg "rx failed to alloc fd_set: ");
  		perror("rx_sendmsg");
! 		return -1;
  	    }
  	    FD_SET(socket, sfds);
  	}
  #ifdef AFS_NT40_ENV
! 	if (WSAGetLastError())
  #elif defined(AFS_LINUX22_ENV)
  	/* linux unfortunately returns ECONNREFUSED if the target port
  	 * is no longer in use */
***************
*** 463,469 ****
  	{
  	    (osi_Msg "rx failed to send packet: ");
  	    perror("rx_sendmsg");
! 	    return 3;
  	}
  	while ((err = select(socket + 1, 0, sfds, 0, 0)) != 1) {
  	    if (err >= 0 || errno != EINTR)
--- 463,469 ----
  	{
  	    (osi_Msg "rx failed to send packet: ");
  	    perror("rx_sendmsg");
! 	    return -1;
  	}
  	while ((err = select(socket + 1, 0, sfds, 0, 0)) != 1) {
  	    if (err >= 0 || errno != EINTR)
Index: openafs/src/rx/rx_packet.c
diff -c openafs/src/rx/rx_packet.c:1.62.2.6 openafs/src/rx/rx_packet.c:1.62.2.9
*** openafs/src/rx/rx_packet.c:1.62.2.6	Thu Jan 11 22:49:56 2007
--- openafs/src/rx/rx_packet.c	Sat Jun 23 02:23:12 2007
***************
*** 15,21 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_packet.c,v 1.62.2.6 2007/01/12 03:49:56 shadow Exp $");
  
  #ifdef KERNEL
  #if defined(UKERNEL)
--- 15,21 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_packet.c,v 1.62.2.9 2007/06/23 06:23:12 shadow Exp $");
  
  #ifdef KERNEL
  #if defined(UKERNEL)
***************
*** 2226,2250 ****
  	    p->retryTime = p->timeSent;	/* resend it very soon */
  	    clock_Addmsec(&(p->retryTime),
  			  10 + (((afs_uint32) p->backoff) << 8));
! 
! #ifdef AFS_NT40_ENV
! 	    /* Windows is nice -- it can tell us right away that we cannot
! 	     * reach this recipient by returning an WSAEHOSTUNREACH error
! 	     * code.  So, when this happens let's "down" the host NOW so
  	     * we don't sit around waiting for this host to timeout later.
  	     */
! 		if (call && code == -1 && errno == WSAEHOSTUNREACH)
! 			call->lastReceiveTime = 0;
  #endif
! #if defined(KERNEL) && defined(AFS_LINUX20_ENV)
! 	    /* Linux is nice -- it can tell us right away that we cannot
! 	     * reach this recipient by returning an ENETUNREACH error
! 	     * code.  So, when this happens let's "down" the host NOW so
! 	     * we don't sit around waiting for this host to timeout later.
! 	     */
! 	    if (call && code == -ENETUNREACH)
  		call->lastReceiveTime = 0;
- #endif
  	}
  #ifdef KERNEL
  #ifdef RX_KERNEL_TRACE
--- 2226,2248 ----
  	    p->retryTime = p->timeSent;	/* resend it very soon */
  	    clock_Addmsec(&(p->retryTime),
  			  10 + (((afs_uint32) p->backoff) << 8));
! 	    /* Some systems are nice and tell us right away that we cannot
! 	     * reach this recipient by returning an error code. 
! 	     * So, when this happens let's "down" the host NOW so
  	     * we don't sit around waiting for this host to timeout later.
  	     */
! 	    if (call && 
! #ifdef AFS_NT40_ENV
! 		code == -1 && WSAGetLastError() == WSAEHOSTUNREACH
! #elif defined(AFS_LINUX20_ENV) && defined(KERNEL)
! 		code == -ENETUNREACH
! #elif defined(AFS_DARWIN_ENV) && defined(KERNEL)
! 		code == EHOSTUNREACH
! #else
! 		0
  #endif
! 		)
  		call->lastReceiveTime = 0;
  	}
  #ifdef KERNEL
  #ifdef RX_KERNEL_TRACE
***************
*** 2420,2443 ****
  		clock_Addmsec(&(p->retryTime),
  			      10 + (((afs_uint32) p->backoff) << 8));
  	    }
! #ifdef AFS_NT40_ENV
! 	    /* Windows is nice -- it can tell us right away that we cannot
! 	     * reach this recipient by returning an WSAEHOSTUNREACH error
! 	     * code.  So, when this happens let's "down" the host NOW so
  	     * we don't sit around waiting for this host to timeout later.
  	     */
! 	    if (call && code == -1 && errno == WSAEHOSTUNREACH)
! 		call->lastReceiveTime = 0;
  #endif
! #if defined(KERNEL) && defined(AFS_LINUX20_ENV)
! 	    /* Linux is nice -- it can tell us right away that we cannot
! 	     * reach this recipient by returning an ENETUNREACH error
! 	     * code.  So, when this happens let's "down" the host NOW so
! 	     * we don't sit around waiting for this host to timeout later.
! 	     */
! 	    if (call && code == -ENETUNREACH)
  		call->lastReceiveTime = 0;
- #endif
  	}
  #if	defined(AFS_SUN5_ENV) && defined(KERNEL)
  	if (!istack && waslocked)
--- 2418,2440 ----
  		clock_Addmsec(&(p->retryTime),
  			      10 + (((afs_uint32) p->backoff) << 8));
  	    }
! 	    /* Some systems are nice and tell us right away that we cannot
! 	     * reach this recipient by returning an error code. 
! 	     * So, when this happens let's "down" the host NOW so
  	     * we don't sit around waiting for this host to timeout later.
  	     */
! 	    if (call && 
! #ifdef AFS_NT40_ENV
! 		code == -1 && WSAGetLastError() == WSAEHOSTUNREACH
! #elif defined(AFS_LINUX20_ENV) && defined(KERNEL)
! 		code == -ENETUNREACH
! #elif defined(AFS_DARWIN_ENV) && defined(KERNEL)
! 		code == EHOSTUNREACH
! #else
! 		0
  #endif
! 		)
  		call->lastReceiveTime = 0;
  	}
  #if	defined(AFS_SUN5_ENV) && defined(KERNEL)
  	if (!istack && waslocked)
Index: openafs/src/rx/LINUX/rx_kmutex.c
diff -c openafs/src/rx/LINUX/rx_kmutex.c:1.13.2.1 openafs/src/rx/LINUX/rx_kmutex.c:1.13.2.2
*** openafs/src/rx/LINUX/rx_kmutex.c:1.13.2.1	Thu Dec 28 16:30:28 2006
--- openafs/src/rx/LINUX/rx_kmutex.c	Tue Jun 12 01:44:05 2007
***************
*** 17,23 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/LINUX/rx_kmutex.c,v 1.13.2.1 2006/12/28 21:30:28 shadow Exp $");
  
  #include "rx/rx_kcommon.h"
  #include "rx_kmutex.h"
--- 17,23 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/LINUX/rx_kmutex.c,v 1.13.2.2 2007/06/12 05:44:05 rra Exp $");
  
  #include "rx/rx_kcommon.h"
  #include "rx_kmutex.h"
***************
*** 122,128 ****
--- 122,132 ----
  #if defined(STRUCT_TASK_STRUCT_HAS_TODO)
  	    !current->todo
  #else
+ #if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
  	    test_ti_thread_flag(current->thread_info, TIF_FREEZE)
+ #else
+ 	    test_ti_thread_flag(task_thread_info(current), TIF_FREEZE)
+ #endif
  #endif
  #endif
  	    )
Index: openafs/src/rx/LINUX/rx_knet.c
diff -c openafs/src/rx/LINUX/rx_knet.c:1.32.2.4 openafs/src/rx/LINUX/rx_knet.c:1.32.2.5
*** openafs/src/rx/LINUX/rx_knet.c:1.32.2.4	Tue Mar 20 14:47:23 2007
--- openafs/src/rx/LINUX/rx_knet.c	Tue Jun 12 01:44:05 2007
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/LINUX/rx_knet.c,v 1.32.2.4 2007/03/20 18:47:23 shadow Exp $");
  
  #include <linux/version.h>
  #ifdef AFS_LINUX22_ENV
--- 16,22 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/LINUX/rx_knet.c,v 1.32.2.5 2007/06/12 05:44:05 rra Exp $");
  
  #include <linux/version.h>
  #ifdef AFS_LINUX22_ENV
***************
*** 173,179 ****
--- 173,183 ----
  #if defined(STRUCT_TASK_STRUCT_HAS_TODO)
  	    !current->todo
  #else
+ #if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO)
              test_ti_thread_flag(current->thread_info, TIF_FREEZE)
+ #else
+             test_ti_thread_flag(task_thread_info(current), TIF_FREEZE)
+ #endif
  #endif
  #endif
  	    )
Index: openafs/src/rxkad/rxkad_server.c
diff -c openafs/src/rxkad/rxkad_server.c:1.21.2.2 openafs/src/rxkad/rxkad_server.c:1.21.2.3
*** openafs/src/rxkad/rxkad_server.c:1.21.2.2	Sat Nov  4 18:55:22 2006
--- openafs/src/rxkad/rxkad_server.c	Sun Jun 10 10:25:29 2007
***************
*** 15,21 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/rxkad_server.c,v 1.21.2.2 2006/11/04 23:55:22 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 15,21 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/rxkad_server.c,v 1.21.2.3 2007/06/10 14:25:29 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 361,368 ****
  	return RXKADEXPIRED;
      else if (code < -1)
  	return RXKADBADTICKET;
-     else if (code <= 0)
- 	return RXKADBADTICKET;
  
      code = fc_keysched(&sessionkey, sconn->keysched);
      if (code)
--- 361,366 ----
Index: openafs/src/sys/pagsh.c
diff -c openafs/src/sys/pagsh.c:1.9.14.1 openafs/src/sys/pagsh.c:1.9.14.2
*** openafs/src/sys/pagsh.c:1.9.14.1	Wed Jul 19 17:17:18 2006
--- openafs/src/sys/pagsh.c	Tue Jul 10 16:29:34 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/pagsh.c,v 1.9.14.1 2006/07/19 21:17:18 shadow Exp $");
  
  #ifdef	AFS_AIX32_ENV
  #include <signal.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/pagsh.c,v 1.9.14.2 2007/07/10 20:29:34 shadow Exp $");
  
  #ifdef	AFS_AIX32_ENV
  #include <signal.h>
***************
*** 127,144 ****
--- 127,148 ----
      afs_uint32 pag;
      struct stat sbuf;
      char fname[256], *prefix = "/ticket/";
+     char fname5[256], *prefix5 = "FILE:/ticket/krb5cc_";
      int numenv;
      char **newenv, **senv, **denv;
  
      if (stat("/ticket", &sbuf) == -1) {
  	prefix = "/tmp/tkt";
+ 	prefix5 = "FILE:/tmp/krb5cc_";
      }
  
      pag = curpag() & 0xffffffff;
      if (pag == -1) {
  	sprintf(fname, "%s%d", prefix, getuid());
+ 	sprintf(fname5, "%s%d", prefix5, getuid());
      } else {
  	sprintf(fname, "%sp%ld", prefix, pag);
+ 	sprintf(fname5, "%sp%ld", prefix5, pag);
      }
  /*    ktc_set_tkt_string(fname); */
  
***************
*** 147,159 ****
      newenv = (char **)malloc((numenv + 2) * sizeof(char *));
  
      for (senv = environ, denv = newenv; *senv; *senv++) {
! 	if (strncmp(*senv, "KRBTKFILE=", 10) != 0)
  	    *denv++ = *senv;
      }
  
!     *denv = malloc(10 + strlen(fname) + 1);
      strcpy(*denv, "KRBTKFILE=");
      strcat(*denv, fname);
      *++denv = 0;
      environ = newenv;
  }
--- 151,168 ----
      newenv = (char **)malloc((numenv + 2) * sizeof(char *));
  
      for (senv = environ, denv = newenv; *senv; *senv++) {
! 	if (strncmp(*senv, "KRBTKFILE=", 10) != 0 &&
! 		strncmp(*senv, "KRB5CCNAME=", 11) != 0)
  	    *denv++ = *senv;
      }
  
!     *denv = malloc(10+11 + strlen(fname) + strlen(fname5) + 2);
      strcpy(*denv, "KRBTKFILE=");
      strcat(*denv, fname);
+     *(denv+1) = *denv + strlen(*denv) + 1;
+     denv++;
+     strcpy(*denv, "KRB5CCNAME=");
+     strcat(*denv, fname5);
      *++denv = 0;
      environ = newenv;
  }
Index: openafs/src/sys/pioctl_nt.c
diff -c openafs/src/sys/pioctl_nt.c:1.34.4.3 openafs/src/sys/pioctl_nt.c:1.34.4.6
*** openafs/src/sys/pioctl_nt.c:1.34.4.3	Mon Aug 28 13:18:36 2006
--- openafs/src/sys/pioctl_nt.c	Wed Jun 27 23:40:14 2007
***************
*** 35,41 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/pioctl_nt.c,v 1.34.4.3 2006/08/28 17:18:36 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <windows.h>
--- 35,41 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/pioctl_nt.c,v 1.34.4.6 2007/06/28 03:40:14 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <windows.h>
***************
*** 54,59 ****
--- 54,60 ----
  
  #include <cm.h>
  #include <cm_dir.h>
+ #include <cm_server.h>
  #include <cm_cell.h>
  #include <cm_user.h>
  #include <cm_conn.h>
***************
*** 90,95 ****
--- 91,97 ----
      case CM_ERROR_NOACCESS:
  	return EACCES;
      case CM_ERROR_NOSUCHFILE:
+     case CM_ERROR_NOSUCHPATH:
  	return ENOENT;
      case CM_ERROR_INVAL:
  	return EINVAL;
***************
*** 115,120 ****
--- 117,128 ----
  	return EDOM;		/* hack */
      case CM_ERROR_TOOMANYBUFS:
  	return EFBIG;		/* hack */
+     case CM_ERROR_ALLBUSY:
+         return EBUSY;
+     case CM_ERROR_ALLDOWN:
+         return ENOSYS;          /* hack */
+     case CM_ERROR_ALLOFFLINE:
+         return ENXIO;           /* hack */
      default:
  	if (cm_code > 0 && cm_code < EILSEQ)
  	    return cm_code;
***************
*** 991,996 ****
--- 999,1008 ----
  
      MarshallString(&preq, fullPath);
      if (blobp->in_size) {
+         if (blobp->in_size > sizeof(preq.data) - (preq.mp - preq.data)*sizeof(char)) {
+             errno = E2BIG;
+             return -1;
+         }
  	memcpy(preq.mp, blobp->in, blobp->in_size);
  	preq.mp += blobp->in_size;
      }
Index: openafs/src/venus/fs.c
diff -c openafs/src/venus/fs.c:1.30.2.8 openafs/src/venus/fs.c:1.30.2.9
*** openafs/src/venus/fs.c:1.30.2.8	Tue Apr 10 14:39:56 2007
--- openafs/src/venus/fs.c	Tue Jun 12 15:14:12 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/fs.c,v 1.30.2.8 2007/04/10 18:39:56 shadow Exp $");
  
  #include <afs/afs_args.h>
  #include <rx/xdr.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/fs.c,v 1.30.2.9 2007/06/12 19:14:12 shadow Exp $");
  
  #include <afs/afs_args.h>
  #include <rx/xdr.h>
***************
*** 69,75 ****
  static struct ubik_client *uclient;
  
  static int GetClientAddrsCmd(), SetClientAddrsCmd(), FlushMountCmd();
! static int RxStatProcCmd(), RxStatPeerCmd(), GetFidCmd();
  
  extern char *hostutil_GetNameByINet();
  extern struct hostent *hostutil_GetHostByName();
--- 69,75 ----
  static struct ubik_client *uclient;
  
  static int GetClientAddrsCmd(), SetClientAddrsCmd(), FlushMountCmd();
! static int RxStatProcCmd(), RxStatPeerCmd(), GetFidCmd(), NewUuidCmd();
  
  extern char *hostutil_GetNameByINet();
  extern struct hostent *hostutil_GetHostByName();
***************
*** 1245,1250 ****
--- 1245,1268 ----
  }
  
  static int
+ NewUuidCmd(struct cmd_syndesc *as, char *arock)
+ {
+     afs_int32 code;
+     struct ViceIoctl blob;
+ 
+     blob.in_size = 0;
+     blob.out_size = 0;
+     code = pioctl(0, VIOC_NEWUUID, &blob, 1);
+     if (code) {
+ 	Die(errno, 0);
+ 	return 1;
+     }
+ 
+     printf("New uuid generated.\n");
+     return 0;
+ }
+ 
+ static int
  FlushCmd(struct cmd_syndesc *as, char *arock)
  {
      afs_int32 code;
***************
*** 3620,3625 ****
--- 3638,3646 ----
      ts = cmd_CreateSyntax("nukenfscreds", NukeNFSCredsCmd, 0, "nuke credentials for NFS client");
      cmd_AddParm(ts, "-addr", CMD_SINGLE, 0, "host name or address");
  
+     ts = cmd_CreateSyntax("newuuid", NewUuidCmd, 0,
+ 			  "force a new uuid");
+ 
      code = cmd_Dispatch(argc, argv);
      if (rxInitDone)
  	rx_Finalize();
Index: openafs/src/vol/clone.c
diff -c openafs/src/vol/clone.c:1.25 openafs/src/vol/clone.c:1.19.2.6
*** openafs/src/vol/clone.c:1.25	Fri May 18 01:52:37 2007
--- openafs/src/vol/clone.c	Fri May 18 01:53:56 2007
***************
*** 19,25 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/clone.c,v 1.25 2007/05/18 05:52:37 shadow Exp $");
  
  #include <sys/types.h>
  #include <stdio.h>
--- 19,25 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/clone.c,v 1.19.2.6 2007/05/18 05:53:56 shadow Exp $");
  
  #include <sys/types.h>
  #include <stdio.h>
Index: openafs/src/volser/volmain.c
diff -c openafs/src/volser/volmain.c:1.22.2.5 openafs/src/volser/volmain.c:1.22.2.6
*** openafs/src/volser/volmain.c:1.22.2.5	Thu Feb  8 20:00:23 2007
--- openafs/src/volser/volmain.c	Wed Jun 27 22:12:24 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/volmain.c,v 1.22.2.5 2007/02/09 01:00:23 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/volmain.c,v 1.22.2.6 2007/06/28 02:12:24 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
***************
*** 421,426 ****
--- 421,430 ----
  	exit(1);
      }
  #endif
+     /* Open VolserLog and map stdout, stderr into it; VInitVolumePackage can
+        log, so we need to do this here */
+     OpenLog(AFSDIR_SERVER_VOLSERLOG_FILEPATH);
+ 
      VInitVolumePackage(volumeUtility, 0, 0, CONNECT_FS, 0);
      /* For nuke() */
      Lock_Init(&localLock);
***************
*** 470,477 ****
      rx_SetRxDeadTime(420);
      memset(busyFlags, 0, sizeof(busyFlags));
  
-     /* Open FileLog and map stdout, stderr into it */
-     OpenLog(AFSDIR_SERVER_VOLSERLOG_FILEPATH);
      SetupLogSignals();
  
      {
--- 474,479 ----
Index: openafs/src/volser/vsprocs.c
diff -c openafs/src/volser/vsprocs.c:1.38.2.2 openafs/src/volser/vsprocs.c:1.38.2.4
*** openafs/src/volser/vsprocs.c:1.38.2.2	Tue Apr 10 14:39:56 2007
--- openafs/src/volser/vsprocs.c	Mon Jul  2 13:08:03 2007
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vsprocs.c,v 1.38.2.2 2007/04/10 18:39:56 shadow Exp $");
  
  #include <stdio.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vsprocs.c,v 1.38.2.4 2007/07/02 17:08:03 jaltman Exp $");
  
  #include <stdio.h>
  #include <sys/types.h>
***************
*** 2479,2485 ****
  	VPRINT1("Recovery: Creating transaction on clone volume %u ...",
  		cloneVol);
  	code =
! 	    AFSVolTransCreate(fromconn, newVol, afrompart, ITOffline,
  			      &clonetid);
  	if (!code) {
  	    VDONE;
--- 2479,2485 ----
  	VPRINT1("Recovery: Creating transaction on clone volume %u ...",
  		cloneVol);
  	code =
! 	    AFSVolTransCreate(fromconn, cloneVol, afrompart, ITOffline,
  			      &clonetid);
  	if (!code) {
  	    VDONE;
***************
*** 4383,4391 ****
  		same =
  		    VLDB_IsSameAddrs(toserver, entry.serverNumber[index],
  				     &errcode);
! 		EPRINT2(errcode,
! 			"Failed to get info about server's %d address(es) from vlserver (err=%d)\n",
! 			toserver, errcode);
  		if ((!errcode && !same)
  		    || (entry.serverPartition[index] != topart)) {
  		    tempconn =
--- 4383,4392 ----
  		same =
  		    VLDB_IsSameAddrs(toserver, entry.serverNumber[index],
  				     &errcode);
! 		if (errcode)
! 		    EPRINT2(errcode,
! 			    "Failed to get info about server's %d address(es) from vlserver (err=%d)\n",
! 			    toserver, errcode);
  		if ((!errcode && !same)
  		    || (entry.serverPartition[index] != topart)) {
  		    tempconn =
