Index: openafs/src/NTMakefile
diff -c openafs/src/NTMakefile:1.24.2.2 openafs/src/NTMakefile:1.24.2.3
*** openafs/src/NTMakefile:1.24.2.2	Wed May 18 18:57:06 2005
--- openafs/src/NTMakefile	Mon Jul 31 17:51:17 2006
***************
*** 134,140 ****
  	$(NTMAKE)
  	$(CD) ..\..
  
! rxstat: rx
       echo ***** $@
  	$(DOCD) $(SRC)\$@
  	$(CD) $(SRC)\$@
--- 134,147 ----
  	$(NTMAKE)
  	$(CD) ..\..
  
! ubik_headers: rx
!      echo ***** $@
! 	$(DOCD) $(SRC)\ubik
! 	$(CD) $(SRC)\ubik
! 	$(NTMAKE_HEADERS)
! 	$(CD) ..\..
! 
! rxstat: ubik_headers
       echo ***** $@
  	$(DOCD) $(SRC)\$@
  	$(CD) $(SRC)\$@
Index: openafs/src/WINNT/afsd/NTMakefile
diff -c openafs/src/WINNT/afsd/NTMakefile:1.27.2.12 openafs/src/WINNT/afsd/NTMakefile:1.27.2.18
*** openafs/src/WINNT/afsd/NTMakefile:1.27.2.12	Sat Oct 29 16:15:07 2005
--- openafs/src/WINNT/afsd/NTMakefile	Thu Aug 31 07:11:19 2006
***************
*** 223,230 ****
  LOGON_DLLLIBS =\
      $(DESTDIR)\lib\afsauthent.lib \
      $(DESTDIR)\lib\libafsconf.lib \
-     $(DESTDIR)\lib\afsrxkad.lib \
-     $(DESTDIR)\lib\afsdes.lib \
      $(LANAHELPERLIB) \
      $(AFSKFWLIB)
  
--- 223,228 ----
***************
*** 239,245 ****
  	ole32.lib \
  	adsiid.lib \
  	activeds.lib \
!     userenv.lib
  
  $(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
  	$(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
--- 237,244 ----
  	ole32.lib \
  	adsiid.lib \
  	activeds.lib \
! 	user32.lib \
!         userenv.lib
  
  $(LOGON_DLLFILE): $(LOGON_DLLOBJS) $(LOGON_DLLLIBS)
  	$(DLLGUILINK) $(LOGONLINKFLAGS) -def:afslogon.def $(LOGON_DLLSDKLIBS)
***************
*** 321,326 ****
--- 320,326 ----
  	$(DESTDIR)\lib\afs\afscom_err.lib \
  	$(DESTDIR)\lib\afs\afsreg.lib \
  	$(DESTDIR)\lib\afs\afscmd.lib \
+ 	$(DESTDIR)\lib\afs\afsvldb.lib \
  	$(DESTDIR)\lib\afsubik.lib \
  	$(DESTDIR)\lib\afsrxkad.lib \
  	$(DESTDIR)\lib\afsdes.lib \
***************
*** 360,366 ****
  
  # afscpcc.exe
  $(EXEDIR)\afscpcc.exe: $(OUT)\afscpcc.obj $(OUT)\afscpcc.res $(LOGON_DLLLIBS)
! 	$(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib
  	$(EXEPREP)
  
  
--- 360,366 ----
  
  # afscpcc.exe
  $(EXEDIR)\afscpcc.exe: $(OUT)\afscpcc.obj $(OUT)\afscpcc.res $(LOGON_DLLLIBS)
! 	$(EXECONLINK) dnsapi.lib mpr.lib iphlpapi.lib userenv.lib
  	$(EXEPREP)
  
  
***************
*** 389,394 ****
--- 389,396 ----
  	$(DESTDIR)\lib\afs\mtafsint.lib \
  	$(DESTDIR)\lib\libafsconf.lib \
  	$(DESTDIR)\lib\afs\afsreg.lib \
+ 	$(DESTDIR)\lib\afs\afsutil.lib \
+ 	$(DESTDIR)\lib\afspthread.lib \
          $(LANAHELPERLIB)
  
  $(AFSD_EXEFILE): $(OUT)\afsd.obj $(AFSDOBJS) $(OUT)\afsd.res  $(RXOBJS) $(AFSD_EXELIBS)
***************
*** 499,504 ****
--- 501,507 ----
  	$(DEL) afsrpc.h
  	$(DEL) afsrpc_?.*
          $(DEL) afsd_eventmessages.h
+ 	$(DEL) MSG*.bin
  	$(DEL) $(CONF_DLLFILE)
  	$(DEL) $(LOGON_DLLFILE)
  	$(DEL) $(LOG95_DLLFILE)
Index: openafs/src/WINNT/afsd/afscpcc.c
diff -c openafs/src/WINNT/afsd/afscpcc.c:1.1.2.2 openafs/src/WINNT/afsd/afscpcc.c:1.1.2.3
*** openafs/src/WINNT/afsd/afscpcc.c:1.1.2.2	Sun May 29 23:52:52 2005
--- openafs/src/WINNT/afsd/afscpcc.c	Mon Jul 24 10:11:30 2006
***************
*** 1,5 ****
  /*
!  * Copyright 2005, Secure Endpoints Inc.
   * All Rights Reserved.
   * 
   * This software has been released under the terms of the MIT License.  
--- 1,5 ----
  /*
!  * Copyright 2005,2006 Secure Endpoints Inc.
   * All Rights Reserved.
   * 
   * This software has been released under the terms of the MIT License.  
***************
*** 15,21 ****
  
      KFW_initialize();
  
!     return KFW_AFS_copy_system_file_to_default_cache(argv[1]);
  }
  
  
--- 15,21 ----
  
      KFW_initialize();
  
!     return KFW_AFS_copy_file_cache_to_default_cache(argv[1]);
  }
  
  
Index: openafs/src/WINNT/afsd/afsd_init.c
diff -c openafs/src/WINNT/afsd/afsd_init.c:1.40.2.30 openafs/src/WINNT/afsd/afsd_init.c:1.40.2.37
*** openafs/src/WINNT/afsd/afsd_init.c:1.40.2.30	Sun Apr  2 19:56:06 2006
--- openafs/src/WINNT/afsd/afsd_init.c	Sun Oct  8 21:50:25 2006
***************
*** 114,120 ****
      if ( afsi_log_useTimestamp ) {
          GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, t, sizeof(t));
          GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, d, sizeof(d));
!         StringCbPrintfA(u, sizeof(u), "%s %s: %s\n", d, t, s);
          if (afsi_file != INVALID_HANDLE_VALUE)
              WriteFile(afsi_file, u, strlen(u), &zilch, NULL);
  #ifdef NOTSERVICE
--- 114,120 ----
      if ( afsi_log_useTimestamp ) {
          GetTimeFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, t, sizeof(t));
          GetDateFormat(LOCALE_SYSTEM_DEFAULT, 0, NULL, NULL, d, sizeof(d));
!         StringCbPrintfA(u, sizeof(u), "%s %s: %s\r\n", d, t, s);
          if (afsi_file != INVALID_HANDLE_VALUE)
              WriteFile(afsi_file, u, strlen(u), &zilch, NULL);
  #ifdef NOTSERVICE
***************
*** 268,274 ****
      HKEY hkMSV10;
      HKEY hkClient;
      DWORD dwType;
!     DWORD dwSize;
      DWORD dwValue;
      PBYTE pHostNames = NULL, pName = NULL;
      BOOL  bNameFound = FALSE;   
--- 268,274 ----
      HKEY hkMSV10;
      HKEY hkClient;
      DWORD dwType;
!     DWORD dwSize = 0, dwAllocSize = 0;
      DWORD dwValue;
      PBYTE pHostNames = NULL, pName = NULL;
      BOOL  bNameFound = FALSE;   
***************
*** 280,291 ****
                         &hkMSV10) == ERROR_SUCCESS )
      {
  	if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, 
! 			     &dwType, NULL, &dwSize) == ERROR_SUCCESS) {
! 	    dwSize += strlen(cm_NetbiosName) + 1;
! 	    pHostNames = malloc(dwSize);
  	    if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, 
  				 pHostNames, &dwSize) == ERROR_SUCCESS) {
! 		for (pName = pHostNames; *pName ; pName += strlen(pName) + 1)
  		{
  		    if ( !stricmp(pName, cm_NetbiosName) ) {
  			bNameFound = TRUE;
--- 280,295 ----
                         &hkMSV10) == ERROR_SUCCESS )
      {
  	if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, 
! 			     &dwType, NULL, &dwAllocSize) == ERROR_SUCCESS) {
! 	    dwAllocSize += 1 /* in case the source string is not nul terminated */
! 		+ strlen(cm_NetbiosName) + 2;
! 	    pHostNames = malloc(dwAllocSize);
! 	    dwSize = dwAllocSize;
  	    if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, 
  				 pHostNames, &dwSize) == ERROR_SUCCESS) {
! 		for (pName = pHostNames; 
! 		     (pName - pHostNames < dwSize) && *pName; 
! 		     pName += strlen(pName) + 1)
  		{
  		    if ( !stricmp(pName, cm_NetbiosName) ) {
  			bNameFound = TRUE;
***************
*** 299,305 ****
              int size = strlen(cm_NetbiosName) + 2;
              if ( !pHostNames ) {
                  pHostNames = malloc(size);
-                 dwSize = size;
  		pName = pHostNames;
              }
              StringCbCopyA(pName, size, cm_NetbiosName);
--- 303,308 ----
***************
*** 307,313 ****
              *pName = '\0';  /* add a second nul terminator */
  
              dwType = REG_MULTI_SZ;
!             dwSize += strlen(cm_NetbiosName) + 1;
              RegSetValueEx( hkMSV10, "BackConnectionHostNames", 0, dwType, pHostNames, dwSize);
  
              if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, 
--- 310,316 ----
              *pName = '\0';  /* add a second nul terminator */
  
              dwType = REG_MULTI_SZ;
!             dwSize = pName - pHostNames + 1;
              RegSetValueEx( hkMSV10, "BackConnectionHostNames", 0, dwType, pHostNames, dwSize);
  
              if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, 
***************
*** 1184,1189 ****
--- 1187,1199 ----
      return 0;
  }
  
+ int afsd_ShutdownCM(void)
+ {
+     cm_ReleaseSCache(cm_data.rootSCachep);
+ 
+     return 0;
+ }
+ 
  int afsd_InitDaemons(char **reasonP)
  {
      long code;
***************
*** 1194,1204 ****
      /* this should really be in an init daemon from here on down */
  
      if (!cm_freelanceEnabled) {
          osi_Log0(afsd_logp, "Loading Root Volume from cell");
!         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));
          if (code != 0) {
              *reasonP = "can't find root volume in root cell";
              return -1;
--- 1204,1218 ----
      /* this should really be in an init daemon from here on down */
  
      if (!cm_freelanceEnabled) {
+ 	int attempts = 10;
+ 
          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);
          if (code != 0) {
              *reasonP = "can't find root volume in root cell";
              return -1;
Index: openafs/src/WINNT/afsd/afsd_init.h
diff -c openafs/src/WINNT/afsd/afsd_init.h:1.5.2.1 openafs/src/WINNT/afsd/afsd_init.h:1.5.2.2
*** openafs/src/WINNT/afsd/afsd_init.h:1.5.2.1	Wed May 18 18:57:08 2005
--- openafs/src/WINNT/afsd/afsd_init.h	Sun Oct  8 16:35:53 2006
***************
*** 19,24 ****
--- 19,25 ----
  int afsd_InitSMB(char **reasonP);
  #endif /* !DJGPP */
  int afsd_InitDaemons(char **reasonP);
+ int afsd_ShutdownCM(void);
  void afsd_ForceTrace(BOOL flush);
  void afsd_SetUnhandledExceptionFilter();
  
Index: openafs/src/WINNT/afsd/afsd_service.c
diff -c openafs/src/WINNT/afsd/afsd_service.c:1.28.2.17 openafs/src/WINNT/afsd/afsd_service.c:1.28.2.19
*** openafs/src/WINNT/afsd/afsd_service.c:1.28.2.17	Tue Nov  8 22:05:33 2005
--- openafs/src/WINNT/afsd/afsd_service.c	Sun Oct  8 16:35:53 2006
***************
*** 288,294 ****
          /* XXX handle pause & continue */
      case SERVICE_CONTROL_POWEREVENT:                                              
          { 
!             afsi_log("SERVICE_CONTROL_POWEREVENT");
              /*                                                                                
              **	dwEventType of this notification == WPARAM of WM_POWERBROADCAST               
              **	Return NO_ERROR == return TRUE for that message, i.e. accept request          
--- 288,296 ----
          /* XXX handle pause & continue */
      case SERVICE_CONTROL_POWEREVENT:                                              
          { 
! #ifdef DEBUG
! 	    afsi_log("SERVICE_CONTROL_POWEREVENT");
! #endif
              /*                                                                                
              **	dwEventType of this notification == WPARAM of WM_POWERBROADCAST               
              **	Return NO_ERROR == return TRUE for that message, i.e. accept request          
***************
*** 337,347 ****
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMPOWERSTATUSCHANGE:                                                    
!                     afsi_log("SERVICE_CONTROL_APMPOWERSTATUSCHANGE"); 
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMOEMEVENT:                                                             
                      afsi_log("SERVICE_CONTROL_APMOEMEVENT"); 
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMRESUMEAUTOMATIC:                                                      
--- 339,353 ----
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMPOWERSTATUSCHANGE:                                                    
! #ifdef DEBUG
! 		    afsi_log("SERVICE_CONTROL_APMPOWERSTATUSCHANGE");
! #endif
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMOEMEVENT:                                                             
+ #ifdef DEBUG
                      afsi_log("SERVICE_CONTROL_APMOEMEVENT"); 
+ #endif
                      dwRet = NO_ERROR;                       
                      break;                                  
                  case PBT_APMRESUMEAUTOMATIC:                                                      
***************
*** 1339,1345 ****
                                           
      cm_DaemonShutdown();                 
      afsi_log("Daemon shutdown complete");
!                                          
      buf_Shutdown();                      
      afsi_log("Buffer shutdown complete");
                                           
--- 1345,1353 ----
                                           
      cm_DaemonShutdown();                 
      afsi_log("Daemon shutdown complete");
!     
!     afsd_ShutdownCM();
! 
      buf_Shutdown();                      
      afsi_log("Buffer shutdown complete");
                                           
Index: openafs/src/WINNT/afsd/afskfw-int.h
diff -c openafs/src/WINNT/afsd/afskfw-int.h:1.3 openafs/src/WINNT/afsd/afskfw-int.h:1.3.2.1
*** openafs/src/WINNT/afsd/afskfw-int.h:1.3	Thu Jul 22 18:41:27 2004
--- openafs/src/WINNT/afsd/afskfw-int.h	Mon Jul 24 10:11:30 2006
***************
*** 1,5 ****
  /*
!  * Copyright (c) 2003 SkyRope, LLC
   * All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without 
--- 1,6 ----
  /*
! * Copyright (c) 2004, 2005, 2006 Secure Endpoints Inc.
! * Copyright (c) 2003 SkyRope, LLC
   * All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without 
***************
*** 103,108 ****
--- 104,110 ----
  #define KRB5_DEFAULT_LIFE            60*60*10 /* 10 hours */
  #define LSA_CCNAME                   "MSLSA:"
  
+ #ifndef KTC_ERROR
  #define KTC_ERROR      11862784L
  #define KTC_TOOBIG     11862785L
  #define KTC_INVAL      11862786L
***************
*** 111,116 ****
--- 113,119 ----
  #define KTC_NOPIOCTL   11862789L
  #define KTC_NOCELL     11862790L
  #define KTC_NOCM       11862791L
+ #endif
  
  /* User Query data structures and functions */
  
Index: openafs/src/WINNT/afsd/afskfw.c
diff -c openafs/src/WINNT/afsd/afskfw.c:1.8.2.17 openafs/src/WINNT/afsd/afskfw.c:1.8.2.20
*** openafs/src/WINNT/afsd/afskfw.c:1.8.2.17	Wed Nov 30 01:40:53 2005
--- openafs/src/WINNT/afsd/afskfw.c	Wed Jul 26 08:54:36 2006
***************
*** 1,4 ****
--- 1,5 ----
  /*
+  * Copyright (c) 2004, 2005, 2006 Secure Endpoints Inc.
   * Copyright (c) 2003 SkyRope, LLC
   * All rights reserved.
   * 
***************
*** 59,69 ****
  #undef  USE_KRB4
  #include "afskfw-int.h"
  #include "afskfw.h"
  
  #include <osilog.h>
- #include <rxkad_prototypes.h>   /* for life_to_time */
  #include <afs/ptserver.h>
  #include <afs/ptuser.h>
  
  #include <WINNT\afsreg.h>
  
--- 60,73 ----
  #undef  USE_KRB4
  #include "afskfw-int.h"
  #include "afskfw.h"
+ #include <userenv.h>
+ #include <Sddl.h>
+ #include <Aclapi.h>
  
  #include <osilog.h>
  #include <afs/ptserver.h>
  #include <afs/ptuser.h>
+ #include <rx/rxkad.h>
  
  #include <WINNT\afsreg.h>
  
***************
*** 2548,2553 ****
--- 2552,2558 ----
          strncpy(sname, username, PR_MAXNAMELEN);
          sname[PR_MAXNAMELEN-1] = '\0';    
          status = pr_SNameToId (sname, &viceId);
+ 	pr_End();
      }
  
      /*
***************
*** 2587,2594 ****
                  return status;
              if (status = pr_Initialize(1L, confname, aserver->cell))
                  return status;
!             if (status = pr_CreateUser(username, &id))
!                 return status;
  #ifdef AFS_ID_TO_NAME
              strncpy(username_copy, username, BUFSIZ);
              snprintf (username, BUFSIZ, "%s (AFS ID %d)", username_copy, (int) viceId);
--- 2592,2601 ----
                  return status;
              if (status = pr_Initialize(1L, confname, aserver->cell))
                  return status;
!             status = pr_CreateUser(username, &id);
! 	    pr_End();
! 	    if (status)
! 		return status;
  #ifdef AFS_ID_TO_NAME
              strncpy(username_copy, username, BUFSIZ);
              snprintf (username, BUFSIZ, "%s (AFS ID %d)", username_copy, (int) viceId);
***************
*** 2961,2968 ****
              p[len] = '\0';
          }
  
!         ViceIDToUsername(aclient.name, realm_of_user, realm_of_cell, CellName, 
!                          &aclient, &aserver, &atoken);
  
          if ( smbname ) {
              strncpy(aclient.smbname, smbname, sizeof(aclient.smbname));
--- 2968,2977 ----
              p[len] = '\0';
          }
  
! 	GetEnvironmentVariable(DO_NOT_REGISTER_VARNAME, NULL, 0);
! 	if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
! 	    ViceIDToUsername(aclient.name, realm_of_user, realm_of_cell, CellName, 
! 			     &aclient, &aserver, &atoken);
  
          if ( smbname ) {
              strncpy(aclient.smbname, smbname, sizeof(aclient.smbname));
***************
*** 3079,3086 ****
  
      strcpy(aclient.cell, CellName);
  
!     ViceIDToUsername(aclient.name, realm_of_user, realm_of_cell, CellName, 
!                       &aclient, &aserver, &atoken);
  
      if ( smbname ) {
          strncpy(aclient.smbname, smbname, sizeof(aclient.smbname));
--- 3088,3097 ----
  
      strcpy(aclient.cell, CellName);
  
!     GetEnvironmentVariable(DO_NOT_REGISTER_VARNAME, NULL, 0);
!     if (GetLastError() == ERROR_ENVVAR_NOT_FOUND)
! 	ViceIDToUsername(aclient.name, realm_of_user, realm_of_cell, CellName, 
! 			 &aclient, &aserver, &atoken);
  
      if ( smbname ) {
          strncpy(aclient.smbname, smbname, sizeof(aclient.smbname));
***************
*** 3483,3501 ****
      return success;
  }
  
  void
  KFW_AFS_copy_cache_to_system_file(char * user, char * szLogonId)
  {
!     char filename[256];
      DWORD count;
!     char cachename[264] = "FILE:";
      krb5_context		ctx = 0;
      krb5_error_code		code;
      krb5_principal              princ = 0;
      krb5_ccache			cc  = 0;
      krb5_ccache                 ncc = 0;
  
!     if (!pkrb5_init_context)
          return;
  
      count = GetEnvironmentVariable("TEMP", filename, sizeof(filename));
--- 3494,3636 ----
      return success;
  }
  
+ int 
+ KFW_AFS_set_file_cache_dacl(char *filename, HANDLE hUserToken)
+ {
+     // SID_IDENTIFIER_AUTHORITY authority = SECURITY_NT_SID_AUTHORITY;
+     PSID pSystemSID = NULL;
+     DWORD SystemSIDlength = 0, UserSIDlength = 0;
+     PACL ccacheACL = NULL;
+     DWORD ccacheACLlength = 0;
+     PTOKEN_USER pTokenUser = NULL;
+     DWORD retLen;
+     DWORD gle;
+     int ret = 0;  
+ 
+     if (!filename) {
+ 	return 1;
+     }
+ 
+     /* Get System SID */
+     if (!ConvertStringSidToSid("S-1-5-18", &pSystemSID)) {
+ 	ret = 1;
+ 	goto cleanup;
+     }
+ 
+     /* Create ACL */
+     SystemSIDlength = GetLengthSid(pSystemSID);
+     ccacheACLlength = sizeof(ACL) + sizeof(ACCESS_ALLOWED_ACE)
+         + SystemSIDlength - sizeof(DWORD);
+ 
+     if (hUserToken) {
+ 	if (!GetTokenInformation(hUserToken, TokenUser, NULL, 0, &retLen))
+ 	{
+ 	    if ( GetLastError() == ERROR_INSUFFICIENT_BUFFER ) {
+ 		pTokenUser = (PTOKEN_USER) LocalAlloc(LPTR, retLen);
+ 
+ 		GetTokenInformation(hUserToken, TokenUser, pTokenUser, retLen, &retLen);
+ 	    }		 
+ 	}
+ 
+ 	if (pTokenUser) {
+ 	    UserSIDlength = GetLengthSid(pTokenUser->User.Sid);
+ 
+ 	    ccacheACLlength += sizeof(ACCESS_ALLOWED_ACE) + UserSIDlength 
+ 		- sizeof(DWORD);
+ 	}
+     }
+ 
+     ccacheACL = (PACL) LocalAlloc(LPTR, ccacheACLlength);
+     if (!ccacheACL) {
+  	ret = 1;
+  	goto cleanup;
+      }
+     InitializeAcl(ccacheACL, ccacheACLlength, ACL_REVISION);
+     AddAccessAllowedAceEx(ccacheACL, ACL_REVISION, 0,
+                          STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL,
+                          pSystemSID);
+     if (pTokenUser) {
+ 	AddAccessAllowedAceEx(ccacheACL, ACL_REVISION, 0,
+ 			     STANDARD_RIGHTS_ALL | SPECIFIC_RIGHTS_ALL,
+ 			     pTokenUser->User.Sid);
+ 	if (!SetNamedSecurityInfo( filename, SE_FILE_OBJECT,
+ 				   DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION,
+ 				   NULL,
+ 				   NULL, 
+ 				   ccacheACL,
+ 				   NULL)) {
+  	    gle = GetLastError();
+  	    if (gle != ERROR_NO_TOKEN)
+ 		ret = 1;
+ 	}
+ 	if (!SetNamedSecurityInfo( filename, SE_FILE_OBJECT,
+ 				   OWNER_SECURITY_INFORMATION,
+ 				   pTokenUser->User.Sid,
+ 				   NULL, 
+ 				   NULL,
+ 				   NULL)) {
+  	    gle = GetLastError();
+  	    if (gle != ERROR_NO_TOKEN)
+ 		ret = 1;
+ 	}
+     } else {
+ 	if (!SetNamedSecurityInfo( filename, SE_FILE_OBJECT,
+ 				   DACL_SECURITY_INFORMATION | PROTECTED_DACL_SECURITY_INFORMATION,
+ 				   NULL,
+ 				   NULL, 
+ 				   ccacheACL,
+ 				   NULL)) {
+  	    gle = GetLastError();
+  	    if (gle != ERROR_NO_TOKEN)
+ 		ret = 1;
+ 	}
+     }
+ 
+   cleanup:
+     if (pSystemSID)
+ 	LocalFree(pSystemSID);
+     if (pTokenUser)
+ 	LocalFree(pTokenUser);
+     if (ccacheACL)
+ 	LocalFree(ccacheACL);
+     return ret;
+ }
+ 
+ int 
+ KFW_AFS_obtain_user_temp_directory(HANDLE hUserToken, char *newfilename, int size)
+ {
+     int  retval = 0;
+     DWORD dwSize = size-1;	/* leave room for nul */
+     DWORD dwLen  = 0;
+  
+     if (!hUserToken || !newfilename || size <= 0)
+  	return;
+  
+      *newfilename = '\0';
+  
+      dwLen = ExpandEnvironmentStringsForUser(hUserToken, "%TEMP%", newfilename, dwSize);
+      if ( !dwLen || dwLen > dwSize )
+  	dwLen = ExpandEnvironmentStringsForUser(hUserToken, "%TMP%", newfilename, dwSize);
+      if ( !dwLen || dwLen > dwSize )
+  	return 1;
+  
+      newfilename[dwSize] = '\0';
+     return 0;
+ }
+ 
  void
  KFW_AFS_copy_cache_to_system_file(char * user, char * szLogonId)
  {
!     char filename[MAX_PATH] = "";
      DWORD count;
!     char cachename[MAX_PATH + 8] = "FILE:";
      krb5_context		ctx = 0;
      krb5_error_code		code;
      krb5_principal              princ = 0;
      krb5_ccache			cc  = 0;
      krb5_ccache                 ncc = 0;
  
!     if (!pkrb5_init_context || !user || !szLogonId)
          return;
  
      count = GetEnvironmentVariable("TEMP", filename, sizeof(filename));
***************
*** 3528,3533 ****
--- 3663,3671 ----
      code = pkrb5_cc_initialize(ctx, ncc, princ);
      if (code) goto cleanup;
  
+     code = KFW_AFS_set_file_cache_dacl(filename, NULL);
+     if (code) goto cleanup;
+ 
      code = pkrb5_cc_copy_creds(ctx,cc,ncc);
  
    cleanup:
***************
*** 3549,3558 ****
  }
  
  int
! KFW_AFS_copy_system_file_to_default_cache(char * filename)
  {
!     DWORD count;
!     char cachename[264] = "FILE:";
      HANDLE hFile;
      krb5_context		ctx = 0;
      krb5_error_code		code;
--- 3687,3695 ----
  }
  
  int
! KFW_AFS_copy_file_cache_to_default_cache(char * filename)
  {
!     char cachename[MAX_PATH * 8] = "FILE:";
      HANDLE hFile;
      krb5_context		ctx = 0;
      krb5_error_code		code;
***************
*** 3561,3570 ****
      krb5_ccache                 ncc = 0;
      int retval = 1;
  
!     if (!pkrb5_init_context)
          return 1;
  
!     if ( strlen(filename) + 6 > sizeof(cachename) )
          return 1;
  
      strcat(cachename, filename);
--- 3698,3707 ----
      krb5_ccache                 ncc = 0;
      int retval = 1;
  
!     if (!pkrb5_init_context || !filename)
          return 1;
  
!     if ( strlen(filename) + sizeof("FILE:") > sizeof(cachename) )
          return 1;
  
      strcat(cachename, filename);
***************
*** 3609,3611 ****
--- 3746,3899 ----
  
      return 0;
  }
+ 
+ /* We are including this 
+ 
+ /* Ticket lifetime.  This defines the table used to lookup lifetime for the
+    fixed part of rande of the one byte lifetime field.  Values less than 0x80
+    are intrpreted as the number of 5 minute intervals.  Values from 0x80 to
+    0xBF should be looked up in this table.  The value of 0x80 is the same using
+    both methods: 10 and two-thirds hours .  The lifetime of 0xBF is 30 days.
+    The intervening values of have a fixed ratio of roughly 1.06914.  The value
+    oxFF is defined to mean a ticket has no expiration time.  This should be
+    used advisedly since individual servers may impose defacto upperbounds on
+    ticket lifetimes. */
+ 
+ #define TKTLIFENUMFIXED 64
+ #define TKTLIFEMINFIXED 0x80
+ #define TKTLIFEMAXFIXED 0xBF
+ #define TKTLIFENOEXPIRE 0xFF
+ #define MAXTKTLIFETIME	(30*24*3600)	/* 30 days */
+ 
+ static const int tkt_lifetimes[TKTLIFENUMFIXED] = {
+     38400,			/* 10.67 hours, 0.44 days */
+     41055,			/* 11.40 hours, 0.48 days */
+     43894,			/* 12.19 hours, 0.51 days */
+     46929,			/* 13.04 hours, 0.54 days */
+     50174,			/* 13.94 hours, 0.58 days */
+     53643,			/* 14.90 hours, 0.62 days */
+     57352,			/* 15.93 hours, 0.66 days */
+     61318,			/* 17.03 hours, 0.71 days */
+     65558,			/* 18.21 hours, 0.76 days */
+     70091,			/* 19.47 hours, 0.81 days */
+     74937,			/* 20.82 hours, 0.87 days */
+     80119,			/* 22.26 hours, 0.93 days */
+     85658,			/* 23.79 hours, 0.99 days */
+     91581,			/* 25.44 hours, 1.06 days */
+     97914,			/* 27.20 hours, 1.13 days */
+     104684,			/* 29.08 hours, 1.21 days */
+     111922,			/* 31.09 hours, 1.30 days */
+     119661,			/* 33.24 hours, 1.38 days */
+     127935,			/* 35.54 hours, 1.48 days */
+     136781,			/* 37.99 hours, 1.58 days */
+     146239,			/* 40.62 hours, 1.69 days */
+     156350,			/* 43.43 hours, 1.81 days */
+     167161,			/* 46.43 hours, 1.93 days */
+     178720,			/* 49.64 hours, 2.07 days */
+     191077,			/* 53.08 hours, 2.21 days */
+     204289,			/* 56.75 hours, 2.36 days */
+     218415,			/* 60.67 hours, 2.53 days */
+     233517,			/* 64.87 hours, 2.70 days */
+     249664,			/* 69.35 hours, 2.89 days */
+     266926,			/* 74.15 hours, 3.09 days */
+     285383,			/* 79.27 hours, 3.30 days */
+     305116,			/* 84.75 hours, 3.53 days */
+     326213,			/* 90.61 hours, 3.78 days */
+     348769,			/* 96.88 hours, 4.04 days */
+     372885,			/* 103.58 hours, 4.32 days */
+     398668,			/* 110.74 hours, 4.61 days */
+     426234,			/* 118.40 hours, 4.93 days */
+     455705,			/* 126.58 hours, 5.27 days */
+     487215,			/* 135.34 hours, 5.64 days */
+     520904,			/* 144.70 hours, 6.03 days */
+     556921,			/* 154.70 hours, 6.45 days */
+     595430,			/* 165.40 hours, 6.89 days */
+     636601,			/* 176.83 hours, 7.37 days */
+     680618,			/* 189.06 hours, 7.88 days */
+     727680,			/* 202.13 hours, 8.42 days */
+     777995,			/* 216.11 hours, 9.00 days */
+     831789,			/* 231.05 hours, 9.63 days */
+     889303,			/* 247.03 hours, 10.29 days */
+     950794,			/* 264.11 hours, 11.00 days */
+     1016537,			/* 282.37 hours, 11.77 days */
+     1086825,			/* 301.90 hours, 12.58 days */
+     1161973,			/* 322.77 hours, 13.45 days */
+     1242318,			/* 345.09 hours, 14.38 days */
+     1328218,			/* 368.95 hours, 15.37 days */
+     1420057,			/* 394.46 hours, 16.44 days */
+     1518247,			/* 421.74 hours, 17.57 days */
+     1623226,			/* 450.90 hours, 18.79 days */
+     1735464,			/* 482.07 hours, 20.09 days */
+     1855462,			/* 515.41 hours, 21.48 days */
+     1983758,			/* 551.04 hours, 22.96 days */
+     2120925,			/* 589.15 hours, 24.55 days */
+     2267576,			/* 629.88 hours, 26.25 days */
+     2424367,			/* 673.44 hours, 28.06 days */
+     2592000
+ };				/* 720.00 hours, 30.00 days */
+ 
+ /* life_to_time - takes a start time and a Kerberos standard lifetime char and
+  * returns the corresponding end time.  There are four simple cases to be
+  * handled.  The first is a life of 0xff, meaning no expiration, and results in
+  * an end time of 0xffffffff.  The second is when life is less than the values
+  * covered by the table.  In this case, the end time is the start time plus the
+  * number of 5 minute intervals specified by life.  The third case returns
+  * start plus the MAXTKTLIFETIME if life is greater than TKTLIFEMAXFIXED.  The
+  * last case, uses the life value (minus TKTLIFEMINFIXED) as an index into the
+  * table to extract the lifetime in seconds, which is added to start to produce
+  * the end time. */
+ 
+ afs_uint32
+ life_to_time(afs_uint32 start, unsigned char life)
+ {
+     int realLife;
+ 
+     if (life == TKTLIFENOEXPIRE)
+ 	return NEVERDATE;
+     if (life < TKTLIFEMINFIXED)
+ 	return start + life * 5 * 60;
+     if (life > TKTLIFEMAXFIXED)
+ 	return start + MAXTKTLIFETIME;
+     realLife = tkt_lifetimes[life - TKTLIFEMINFIXED];
+     return start + realLife;
+ }
+ 
+ /* time_to_life - takes start and end times for the ticket and returns a
+  * Kerberos standard lifetime char possibily using the tkt_lifetimes table for
+  * lifetimes above 127*5minutes.  First, the special case of (end ==
+  * 0xffffffff) is handled to mean no expiration.  Then negative lifetimes and
+  * those greater than the maximum ticket lifetime are rejected.  Then lifetimes
+  * less than the first table entry are handled by rounding the requested
+  * lifetime *up* to the next 5 minute interval.  The final step is to search
+  * the table for the smallest entry *greater than or equal* to the requested
+  * entry.  The actual code is prepared to handle the case where the table is
+  * unordered but that it an unnecessary frill. */
+ 
+ static unsigned char
+ time_to_life(afs_uint32 start, afs_uint32 end)
+ {
+     int lifetime = end - start;
+     int best, best_i;
+     int i;
+ 
+     if (end == NEVERDATE)
+ 	return TKTLIFENOEXPIRE;
+     if ((lifetime > MAXKTCTICKETLIFETIME) || (lifetime <= 0))
+ 	return 0;
+     if (lifetime < tkt_lifetimes[0])
+ 	return (lifetime + 5 * 60 - 1) / (5 * 60);
+     best_i = -1;
+     best = MAXKTCTICKETLIFETIME;
+     for (i = 0; i < TKTLIFENUMFIXED; i++)
+ 	if (tkt_lifetimes[i] >= lifetime) {
+ 	    int diff = tkt_lifetimes[i] - lifetime;
+ 	    if (diff < best) {
+ 		best = diff;
+ 		best_i = i;
+ 	    }
+ 	}
+     if (best_i < 0)
+ 	return 0;
+     return best_i + TKTLIFEMINFIXED;
+ }
+ 
Index: openafs/src/WINNT/afsd/afskfw.h
diff -c openafs/src/WINNT/afsd/afskfw.h:1.2.2.2 openafs/src/WINNT/afsd/afskfw.h:1.2.2.4
*** openafs/src/WINNT/afsd/afskfw.h:1.2.2.2	Sun May 29 23:52:52 2005
--- openafs/src/WINNT/afsd/afskfw.h	Mon Jul 24 10:11:30 2006
***************
*** 1,5 ****
  /*
!  * Copyright (c) 2003 SkyRope, LLC
   * All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without 
--- 1,6 ----
  /*
! * Copyright (c) 2004, 2005, 2006 Secure Endpoints Inc.
! * Copyright (c) 2003 SkyRope, LLC
   * All rights reserved.
   * 
   * Redistribution and use in source and binary forms, with or without 
***************
*** 62,67 ****
--- 63,72 ----
  int  KFW_AFS_get_cellconfig(char *, struct afsconf_cell *, char *);
  void KFW_import_windows_lsa(void);
  BOOL KFW_AFS_get_lsa_principal(char *, DWORD *);
+ int  KFW_AFS_set_file_cache_dacl(char *filename, HANDLE hUserToken);
+ int  KFW_AFS_obtain_user_temp_directory(HANDLE hUserToken, char *newfilename, int size);
+ int  KFW_AFS_copy_file_cache_to_default_cache(char * filename);
+ 
  
  /* These functions are only to be used in the afslogon.dll */
  void KFW_AFS_copy_cache_to_system_file(char *, char *);
***************
*** 88,93 ****
--- 93,99 ----
  #define PROBE_USERNAME               "OPENAFS-KDC-PROBE"
  #define PROBE_PASSWORD_LEN           16
  
+ #define DO_NOT_REGISTER_VARNAME  "OPENAFS_DO_NOT_REGISTER_AFS_ID"
  #ifdef  __cplusplus
  }
  #endif
Index: openafs/src/WINNT/afsd/afslogon.c
diff -c openafs/src/WINNT/afsd/afslogon.c:1.24.2.20 openafs/src/WINNT/afsd/afslogon.c:1.24.2.24
*** openafs/src/WINNT/afsd/afslogon.c:1.24.2.20	Thu Feb  9 10:29:41 2006
--- openafs/src/WINNT/afsd/afslogon.c	Thu Aug  3 17:50:05 2006
***************
*** 35,41 ****
  
  HANDLE hDLL;
  
- WSADATA WSAjunk;
  #define AFS_LOGON_EVENT_NAME TEXT("AFS Logon")
  
  void DebugEvent0(char *a) 
--- 35,40 ----
***************
*** 79,89 ****
      switch (reason) {
      case DLL_PROCESS_ATTACH:
          /* Initialization Mutex */
!         hInitMutex = CreateMutex(NULL, FALSE, NULL);
          break;
  
      case DLL_PROCESS_DETACH:
!         CloseHandle(hInitMutex);
          break;
  
      case DLL_THREAD_ATTACH:
--- 78,96 ----
      switch (reason) {
      case DLL_PROCESS_ATTACH:
          /* Initialization Mutex */
! 	if (!bInit) {
! 	    hInitMutex = CreateMutex(NULL, FALSE, NULL);
! 	    SetEnvironmentVariable(DO_NOT_REGISTER_VARNAME, "");
! 	}
          break;
  
      case DLL_PROCESS_DETACH:
! 	/* do nothing on unload because we might 
! 	 * be reloaded.
! 	 */
! 	CloseHandle(hInitMutex);
! 	hInitMutex = NULL;
! 	bInit = FALSE;
          break;
  
      case DLL_THREAD_ATTACH:
***************
*** 100,113 ****
  {
      if ( bInit == FALSE ) {
          if ( WaitForSingleObject( hInitMutex, INFINITE ) == WAIT_OBJECT_0 ) {
!             if ( bInit == FALSE ) {
!                 rx_Init(0);
!                 initAFSDirPath();
!                 ka_Init(0);
!                 bInit = TRUE;
!             }
!             ReleaseMutex(hInitMutex);
!         }
      }
  }
  
--- 107,134 ----
  {
      if ( bInit == FALSE ) {
          if ( WaitForSingleObject( hInitMutex, INFINITE ) == WAIT_OBJECT_0 ) {
! 	    /* initAFSDirPath() initializes an array and sets a 
! 	     * flag so that the initialization can only occur
! 	     * once.  No cleanup will be done when the DLL is 
! 	     * unloaded so the initialization will not be 
! 	     * performed again on a subsequent reload
! 	     */
! 	    initAFSDirPath();
! 
! 	    /* ka_Init initializes a number of error tables.
! 	     * and then calls ka_CellConfig() which grabs 
! 	     * an afsconf_dir structure via afsconf_Open().
! 	     * Upon a second attempt to call ka_CellConfig()
! 	     * the structure will be released with afsconf_Close()
! 	     * and then re-opened.  Could this corrupt memory?
! 	     * 
! 	     * We only need this if we are not using KFW.
! 	     */
! 	    if (!KFW_is_available())
! 		ka_Init(0);
! 	    bInit = TRUE;
! 	}
! 	ReleaseMutex(hInitMutex);
      }
  }
  
***************
*** 377,383 ****
              hkDoms = NULL;
          }
      } else
!         DebugEvent("Not opening domain key for [%s]", effDomain);
  
      /* Each individual can either be specified on the domain key, the domains key or in the
         net provider key.  They fail over in that order.  If none is found, we just use the 
--- 398,404 ----
              hkDoms = NULL;
          }
      } else
!         DebugEvent("Not opening domain key");
  
      /* Each individual can either be specified on the domain key, the domains key or in the
         net provider key.  They fail over in that order.  If none is found, we just use the 
***************
*** 649,656 ****
          lpszOutputString[min(uInputString.Length/2,nOutStringLen-1)] = '\0';
          return TRUE;
      }
!     else
!         lpszOutputString[0] = '\0';
      return FALSE;
  }  // UnicodeStringToANSI
  
--- 670,677 ----
          lpszOutputString[min(uInputString.Length/2,nOutStringLen-1)] = '\0';
          return TRUE;
      }
!       
!     lpszOutputString[0] = '\0';
      return FALSE;
  }  // UnicodeStringToANSI
  
***************
*** 729,737 ****
      /* Convert from Unicode to ANSI */
  
      /*TODO: Use SecureZeroMemory to erase passwords */
!     UnicodeStringToANSI(IL->UserName, uname, MAX_USERNAME_LENGTH);
!     UnicodeStringToANSI(IL->Password, password, MAX_PASSWORD_LENGTH);
!     UnicodeStringToANSI(IL->LogonDomainName, logonDomain, MAX_DOMAIN_LENGTH);
  
      /* Make sure AD-DOMANS sent from login that is sent to us is striped */
      ctemp = strchr(uname, '@');
--- 750,759 ----
      /* Convert from Unicode to ANSI */
  
      /*TODO: Use SecureZeroMemory to erase passwords */
!     if (!UnicodeStringToANSI(IL->UserName, uname, MAX_USERNAME_LENGTH) ||
! 	 !UnicodeStringToANSI(IL->Password, password, MAX_PASSWORD_LENGTH) ||
! 	 !UnicodeStringToANSI(IL->LogonDomainName, logonDomain, MAX_DOMAIN_LENGTH))
!  	return 0;
  
      /* Make sure AD-DOMANS sent from login that is sent to us is striped */
      ctemp = strchr(uname, '@');
***************
*** 915,921 ****
      /* remove any kerberos 5 tickets currently held by the SYSTEM account
       * for this user 
       */
!     if ( KFW_is_available() ) {
          sprintf(szLogonId,"%d.%d",lpLogonId->HighPart, lpLogonId->LowPart);
          KFW_AFS_copy_cache_to_system_file(uname, szLogonId);
  
--- 937,943 ----
      /* remove any kerberos 5 tickets currently held by the SYSTEM account
       * for this user 
       */
!     if (ISLOGONINTEGRATED(opt.LogonOption) && KFW_is_available()) {
          sprintf(szLogonId,"%d.%d",lpLogonId->HighPart, lpLogonId->LowPart);
          KFW_AFS_copy_cache_to_system_file(uname, szLogonId);
  
***************
*** 1275,1284 ****
      char szPath[MAX_PATH] = "";
      char szLogonId[128] = "";
      DWORD count;
!     char filename[256];
!     char commandline[512];
      STARTUPINFO startupinfo;
      PROCESS_INFORMATION procinfo;
  
      LUID LogonId = {0, 0};
      PSECURITY_LOGON_SESSION_DATA pLogonSessionData = NULL;
--- 1297,1308 ----
      char szPath[MAX_PATH] = "";
      char szLogonId[128] = "";
      DWORD count;
!     char filename[MAX_PATH] = "";
!     char newfilename[MAX_PATH] = "";
!     char commandline[MAX_PATH+256] = "";
      STARTUPINFO startupinfo;
      PROCESS_INFORMATION procinfo;
+     HANDLE hf = INVALID_HANDLE_VALUE;
  
      LUID LogonId = {0, 0};
      PSECURITY_LOGON_SESSION_DATA pLogonSessionData = NULL;
***************
*** 1308,1321 ****
          GetWindowsDirectory(filename, sizeof(filename));
      }
  
!     if ( strlen(filename) + strlen(szLogonId) + 2 <= sizeof(filename) ) {
!         strcat(filename, "\\");
!         strcat(filename, szLogonId);    
  
!         sprintf(commandline, "afscpcc.exe \"%s\"", filename);
  
!         GetStartupInfo(&startupinfo);
!         if (CreateProcessAsUser( pInfo->hToken,
                               "afscpcc.exe",
                               commandline,
                               NULL,
--- 1332,1387 ----
          GetWindowsDirectory(filename, sizeof(filename));
      }
  
!     count = GetEnvironmentVariable("TEMP", filename, sizeof(filename));
!     if ( count > sizeof(filename) || count == 0 ) {
!         GetWindowsDirectory(filename, sizeof(filename));
!     }
! 
!     if ( strlen(filename) + strlen(szLogonId) + 2 > sizeof(filename) ) {
!         DebugEvent0("KFW_Logon_Event - filename too long");
! 	return;
!     }
! 
!     strcat(filename, "\\");
!     strcat(filename, szLogonId);    
! 
!     hf = CreateFile(filename, FILE_ALL_ACCESS, 0, NULL, OPEN_EXISTING, 
! 		     FILE_ATTRIBUTE_NORMAL, NULL);
!     if (hf == INVALID_HANDLE_VALUE) {
! 	DebugEvent0("KFW_Logon_Event - file cannot be opened");
!  	return;
!     }
!     CloseHandle(hf);
!  
!     if (KFW_AFS_set_file_cache_dacl(filename, pInfo->hToken)) {
! 	DebugEvent0("KFW_Logon_Event - unable to set dacl");
!  	DeleteFile(filename);
!  	return;
!     }
!  
!     if (KFW_AFS_obtain_user_temp_directory(pInfo->hToken, newfilename, sizeof(newfilename))) {
! 	DebugEvent0("KFW_Logon_Event - unable to obtain temp directory");
!  	return;
!     }
! 
!     if ( strlen(newfilename) + strlen(szLogonId) + 2 > sizeof(newfilename) ) {
!         DebugEvent0("KFW_Logon_Event - new filename too long");
! 	return;
!     }
  
!     strcat(newfilename, "\\");
!     strcat(newfilename, szLogonId);    
  
!     if (!MoveFileEx(filename, newfilename, 
! 		     MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH)) {
!         DebugEvent("KFW_Logon_Event - MoveFileEx failed GLE = 0x%x", GetLastError());
! 	return;
!     }
! 
!     sprintf(commandline, "afscpcc.exe \"%s\"", newfilename);
! 
!     GetStartupInfo(&startupinfo);
!     if (CreateProcessAsUser( pInfo->hToken,
                               "afscpcc.exe",
                               commandline,
                               NULL,
***************
*** 1326,1337 ****
                               NULL,
                               &startupinfo,
                               &procinfo)) 
!         {
!             WaitForSingleObject(procinfo.hProcess, 30000);
  
!             CloseHandle(procinfo.hThread);
!             CloseHandle(procinfo.hProcess);
!         }
      }
  
      DeleteFile(filename);
--- 1392,1406 ----
                               NULL,
                               &startupinfo,
                               &procinfo)) 
!     {
! 	DebugEvent("KFW_Logon_Event - CommandLine %s", commandline);
  
! 	WaitForSingleObject(procinfo.hProcess, 30000);
! 
! 	CloseHandle(procinfo.hThread);
! 	CloseHandle(procinfo.hProcess);
!     } else {
! 	DebugEvent0("KFW_Logon_Event - CreateProcessFailed");
      }
  
      DeleteFile(filename);
Index: openafs/src/WINNT/afsd/cm_access.c
diff -c openafs/src/WINNT/afsd/cm_access.c:1.4.2.2 openafs/src/WINNT/afsd/cm_access.c:1.4.2.6
*** openafs/src/WINNT/afsd/cm_access.c:1.4.2.2	Fri Mar 11 01:58:39 2005
--- openafs/src/WINNT/afsd/cm_access.c	Fri Oct  6 12:53:23 2006
***************
*** 119,124 ****
--- 119,125 ----
      long code;
      cm_fid_t tfid;
      cm_scache_t *aclScp;
+     int got_cb = 0;
  
      /* pretty easy: just force a pass through the fetch status code */
          
***************
*** 127,136 ****
      /* first, start by finding out whether we have a directory or something
       * else, so we can find what object's ACL we need.
       */
!     code = cm_SyncOp(scp, NULL, up, reqp, 0, CM_SCACHESYNC_GETSTATUS
!                       | CM_SCACHESYNC_NEEDCALLBACK);
!     if (code) 
!         return code;
          
      if (scp->fileType != CM_SCACHETYPE_DIRECTORY) {
          /* not a dir, use parent dir's acl */
--- 128,141 ----
      /* first, start by finding out whether we have a directory or something
       * else, so we can find what object's ACL we need.
       */
!     if (!cm_HaveCallback(scp)) {
! 	code = cm_SyncOp(scp, NULL, up, reqp, 0, 
! 			 CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
! 	if (code) 
! 	    return code;
! 
! 	got_cb = 1;
!     }
          
      if (scp->fileType != CM_SCACHETYPE_DIRECTORY) {
          /* not a dir, use parent dir's acl */
***************
*** 144,158 ****
              lock_ObtainMutex(&scp->mx);
              return code;
          }       
!                 
!         osi_Log1(afsd_logp, "GetAccess parent %x", aclScp);
!         lock_ObtainMutex(&aclScp->mx);
!         code = cm_GetCallback(aclScp, up, reqp, 1);
!         lock_ReleaseMutex(&aclScp->mx);
          cm_ReleaseSCache(aclScp);
          lock_ObtainMutex(&scp->mx);
!     } else {
!         code = cm_GetCallback(scp, up, reqp, 1);
      }
  
      return code;
--- 149,162 ----
              lock_ObtainMutex(&scp->mx);
              return code;
          }       
!         osi_Log1(afsd_logp, "GetAccess parent scp %x user %x", aclScp, up);
! 	lock_ObtainMutex(&aclScp->mx);
! 	code = cm_GetCallback(aclScp, up, reqp, 1);
! 	lock_ReleaseMutex(&aclScp->mx);
          cm_ReleaseSCache(aclScp);
          lock_ObtainMutex(&scp->mx);
!     } else if (!got_cb) {
! 	code = cm_GetCallback(scp, up, reqp, 1);
      }
  
      return code;
Index: openafs/src/WINNT/afsd/cm_aclent.c
diff -c openafs/src/WINNT/afsd/cm_aclent.c:1.4.2.9 openafs/src/WINNT/afsd/cm_aclent.c:1.4.2.10
*** openafs/src/WINNT/afsd/cm_aclent.c:1.4.2.9	Mon Feb 13 11:33:06 2006
--- openafs/src/WINNT/afsd/cm_aclent.c	Thu May 25 13:18:43 2006
***************
*** 82,88 ****
          if (aclp->userp == userp) {
              if (aclp->tgtLifetime && aclp->tgtLifetime <= osi_Time()) {
                  /* ticket expired */
!                 osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q);
                  CleanupACLEnt(aclp);
  
                  /* move to the tail of the LRU queue */
--- 82,88 ----
          if (aclp->userp == userp) {
              if (aclp->tgtLifetime && aclp->tgtLifetime <= osi_Time()) {
                  /* ticket expired */
!                 osi_QRemoveHT((osi_queue_t **) &cm_data.aclLRUp, (osi_queue_t **) &cm_data.aclLRUEndp, &aclp->q);
                  CleanupACLEnt(aclp);
  
                  /* move to the tail of the LRU queue */
***************
*** 96,102 ****
  			cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
  
  		    /* move to the head of the LRU queue */
! 		    osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q);
  		    osi_QAddH((osi_queue_t **) &cm_data.aclLRUp,
  			       (osi_queue_t **) &cm_data.aclLRUEndp,
  			       &aclp->q);
--- 96,102 ----
  			cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
  
  		    /* move to the head of the LRU queue */
! 		    osi_QRemoveHT((osi_queue_t **) &cm_data.aclLRUp, (osi_queue_t **) &cm_data.aclLRUEndp, &aclp->q);
  		    osi_QAddH((osi_queue_t **) &cm_data.aclLRUp,
  			       (osi_queue_t **) &cm_data.aclLRUEndp,
  			       &aclp->q);
***************
*** 125,131 ****
  
      aclp = cm_data.aclLRUEndp;
      cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
!     osi_QRemove((osi_queue_t **) &cm_data.aclLRUp, &aclp->q);
  
      if (aclp->backp && scp != aclp->backp) {
          ascp = aclp->backp;
--- 125,131 ----
  
      aclp = cm_data.aclLRUEndp;
      cm_data.aclLRUEndp = (cm_aclent_t *) osi_QPrev(&aclp->q);
!     osi_QRemoveHT((osi_queue_t **) &cm_data.aclLRUp, (osi_queue_t **) &cm_data.aclLRUEndp, &aclp->q);
  
      if (aclp->backp && scp != aclp->backp) {
          ascp = aclp->backp;
Index: openafs/src/WINNT/afsd/cm_buf.c
diff -c openafs/src/WINNT/afsd/cm_buf.c:1.13.2.14 openafs/src/WINNT/afsd/cm_buf.c:1.13.2.18
*** openafs/src/WINNT/afsd/cm_buf.c:1.13.2.14	Sat Aug 27 23:30:57 2005
--- openafs/src/WINNT/afsd/cm_buf.c	Tue Oct 10 11:59:41 2006
***************
*** 110,116 ****
      bp = cm_data.buf_allp;
      bp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
!     nAtOnce = (long)sqrt(cm_data.buf_nbuffers);
      while (buf_ShutdownFlag == 0) {
  #ifndef DJGPP
          i = SleepEx(5000, 1);
--- 110,116 ----
      bp = cm_data.buf_allp;
      bp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
!     nAtOnce = cm_data.buf_nbuffers/10;
      while (buf_ShutdownFlag == 0) {
  #ifndef DJGPP
          i = SleepEx(5000, 1);
***************
*** 439,444 ****
--- 439,446 ----
   */
  void buf_WaitIO(cm_scache_t * scp, cm_buf_t *bp)
  {
+     int release = 0;
+ 
      if (scp)
          osi_assert(scp->magic == CM_SCACHE_MAGIC);
      osi_assert(bp->magic == CM_BUF_MAGIC);
***************
*** 462,467 ****
--- 464,472 ----
              bp->waitCount = bp->waitRequests = 1;
          }
          osi_SleepM((long) bp, &bp->mx);
+ 
+ 	smb_UpdateServerPriority();
+ 
          lock_ObtainMutex(&bp->mx);
          osi_Log1(afsd_logp, "buf_WaitIO conflict wait done for 0x%x", bp);
          bp->waitCount--;
***************
*** 472,478 ****
          }
  
          if ( !scp ) {
!             scp = cm_FindSCache(&bp->fid);
          }
          if ( scp ) {
              lock_ObtainMutex(&scp->mx);
--- 477,484 ----
          }
  
          if ( !scp ) {
!             if (scp = cm_FindSCache(&bp->fid))
! 		 release = 1;
          }
          if ( scp ) {
              lock_ObtainMutex(&scp->mx);
***************
*** 492,497 ****
--- 498,506 ----
          osi_Wakeup((long) bp);
      }
      osi_Log1(afsd_logp, "WaitIO finished wait for bp 0x%x", (long) bp);
+ 
+     if (scp && release)
+         cm_ReleaseSCache(scp);
  }
  
  /* code to drop reference count while holding buf_globalLock */
***************
*** 877,883 ****
       */
      lock_ReleaseMutex(&bp->mx);
      *bufpp = bp;
!     osi_Log3(buf_logp, "buf_GetNew returning bp 0x%x for file 0x%x, offset 0x%x",
                bp, (long) scp, offsetp->LowPart);
      return 0;
  }
--- 886,892 ----
       */
      lock_ReleaseMutex(&bp->mx);
      *bufpp = bp;
!     osi_Log3(buf_logp, "buf_GetNew returning bp 0x%x for scp 0x%x, offset 0x%x",
                bp, (long) scp, offsetp->LowPart);
      return 0;
  }
***************
*** 1024,1030 ****
      }
      lock_ReleaseWrite(&buf_globalLock);
  
!     osi_Log3(buf_logp, "buf_Get returning bp 0x%x for file 0x%x, offset 0x%x",
                bp, (long) scp, offsetp->LowPart);
  #ifdef TESTING
      buf_ValidateBufQueues();
--- 1033,1039 ----
      }
      lock_ReleaseWrite(&buf_globalLock);
  
!     osi_Log3(buf_logp, "buf_Get returning bp 0x%x for scp 0x%x, offset 0x%x",
                bp, (long) scp, offsetp->LowPart);
  #ifdef TESTING
      buf_ValidateBufQueues();
Index: openafs/src/WINNT/afsd/cm_callback.c
diff -c openafs/src/WINNT/afsd/cm_callback.c:1.20.2.13 openafs/src/WINNT/afsd/cm_callback.c:1.20.2.15
*** openafs/src/WINNT/afsd/cm_callback.c:1.20.2.13	Sun Jan 15 21:06:59 2006
--- openafs/src/WINNT/afsd/cm_callback.c	Tue Jun 27 17:56:12 2006
***************
*** 1595,1601 ****
                      struct cm_req *reqp, long flags)
  {
      long code;
!     cm_conn_t *connp;
      AFSFetchStatus afsStatus;
      AFSVolSync volSync;
      AFSCallBack callback;
--- 1595,1601 ----
                      struct cm_req *reqp, long flags)
  {
      long code;
!     cm_conn_t *connp = NULL;
      AFSFetchStatus afsStatus;
      AFSVolSync volSync;
      AFSCallBack callback;
***************
*** 1604,1610 ****
      int mustCall;
      long sflags;
      cm_fid_t sfid;
!     struct rx_connection * callp;
  
      osi_Log4(afsd_logp, "GetCallback scp 0x%x cell %d vol %d flags %lX", 
               scp, scp->fid.cell, scp->fid.volume, flags);
--- 1604,1610 ----
      int mustCall;
      long sflags;
      cm_fid_t sfid;
!     struct rx_connection * callp = NULL;
  
      osi_Log4(afsd_logp, "GetCallback scp 0x%x cell %d vol %d flags %lX", 
               scp, scp->fid.cell, scp->fid.volume, flags);
***************
*** 1662,1668 ****
  
          /* otherwise, we have to make an RPC to get the status */
          sflags = CM_SCACHESYNC_FETCHSTATUS | CM_SCACHESYNC_GETCALLBACK;
!         cm_SyncOp(scp, NULL, NULL, NULL, 0, sflags);
          cm_StartCallbackGrantingCall(scp, &cbr);
          sfid = scp->fid;
          lock_ReleaseMutex(&scp->mx);
--- 1662,1668 ----
  
          /* otherwise, we have to make an RPC to get the status */
          sflags = CM_SCACHESYNC_FETCHSTATUS | CM_SCACHESYNC_GETCALLBACK;
!         cm_SyncOp(scp, NULL, userp, reqp, 0, sflags);
          cm_StartCallbackGrantingCall(scp, &cbr);
          sfid = scp->fid;
          lock_ReleaseMutex(&scp->mx);
Index: openafs/src/WINNT/afsd/cm_conn.c
diff -c openafs/src/WINNT/afsd/cm_conn.c:1.25.2.20 openafs/src/WINNT/afsd/cm_conn.c:1.25.2.23
*** openafs/src/WINNT/afsd/cm_conn.c:1.25.2.20	Wed Feb  1 13:03:18 2006
--- openafs/src/WINNT/afsd/cm_conn.c	Mon Oct  2 22:28:43 2006
***************
*** 51,57 ****
  	HKEY parmKey;
          
      if (osi_Once(&once)) {
! 		lock_InitializeRWLock(&cm_connLock, "connection global lock");
  
          /* keisa - read timeout value for lanmanworkstation  service.
           * jaltman - as per 
--- 51,57 ----
  	HKEY parmKey;
          
      if (osi_Once(&once)) {
! 	lock_InitializeRWLock(&cm_connLock, "connection global lock");
  
          /* keisa - read timeout value for lanmanworkstation  service.
           * jaltman - as per 
***************
*** 60,88 ****
           * I believe that the default should not be short.  Instead, we should wait until
           * RX times out before reporting a timeout to the SMB client.
           */
! 		code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LANMAN_WKS_PARAM_KEY,
!                             0, KEY_QUERY_VALUE, &parmKey);
! 		if (code == ERROR_SUCCESS)
          {
! 		    DWORD dummyLen = sizeof(sessTimeout);
! 		    code = RegQueryValueEx(parmKey, LANMAN_WKS_SESSION_TIMEOUT, NULL, NULL, 
!                                    (BYTE *) &sessTimeout, &dummyLen);
! 		    if (code == ERROR_SUCCESS)
              {
-                 afsi_log("lanmanworkstation : SessTimeout %d", sessTimeout);
                  RDRtimeout = sessTimeout;
!                 if ( ConnDeadtimeout < RDRtimeout + 15 ) {
!                     ConnDeadtimeout = RDRtimeout + 15;
!                     afsi_log("ConnDeadTimeout increased to %d", ConnDeadtimeout);
!                 }
!                 if ( HardDeadtimeout < 2 * ConnDeadtimeout ) {
!                     HardDeadtimeout = 2 * ConnDeadtimeout;
!                     afsi_log("HardDeadTimeout increased to %d", HardDeadtimeout);
!                 }
!             }
          }
  
!         osi_EndOnce(&once);
      }
  }
  
--- 60,89 ----
           * I believe that the default should not be short.  Instead, we should wait until
           * RX times out before reporting a timeout to the SMB client.
           */
! 	code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, LANMAN_WKS_PARAM_KEY,
! 			    0, KEY_QUERY_VALUE, &parmKey);
! 	if (code == ERROR_SUCCESS)
          {
! 	    DWORD dummyLen = sizeof(sessTimeout);
! 	    code = RegQueryValueEx(parmKey, LANMAN_WKS_SESSION_TIMEOUT, NULL, NULL, 
! 				   (BYTE *) &sessTimeout, &dummyLen);
! 	    if (code == ERROR_SUCCESS)
              {
                  RDRtimeout = sessTimeout;
! 	    }
          }
  
! 	afsi_log("lanmanworkstation : SessTimeout %d", sessTimeout);
! 	if ( ConnDeadtimeout < RDRtimeout + 15 ) {
! 	    ConnDeadtimeout = RDRtimeout + 15;
! 	    afsi_log("ConnDeadTimeout increased to %d", ConnDeadtimeout);
! 	}
! 	if ( HardDeadtimeout < 2 * ConnDeadtimeout ) {
! 	    HardDeadtimeout = 2 * ConnDeadtimeout;
! 	    afsi_log("HardDeadTimeout increased to %d", HardDeadtimeout);
! 	}
! 
! 	osi_EndOnce(&once);
      }
  }
  
***************
*** 184,190 ****
      if (reqp->flags & CM_REQ_NORETRY)
          goto out;
  
!     /* if timeout - check that it did not exceed the SMB timeout
       * and retry */
      
      /* timeleft - get if from reqp the same way as cmXonnByMServers does */
--- 185,191 ----
      if (reqp->flags & CM_REQ_NORETRY)
          goto out;
  
!     /* if timeout - check that it did not exceed the HardDead timeout
       * and retry */
      
      /* timeleft - get if from reqp the same way as cmXonnByMServers does */
***************
*** 196,202 ****
  #endif
  	    
      /* leave 5 seconds margin for sleep */
!     timeLeft = RDRtimeout - timeUsed;
  
      if (errorCode == CM_ERROR_TIMEDOUT) {
          if (timeLeft > 5 ) {
--- 197,203 ----
  #endif
  	    
      /* leave 5 seconds margin for sleep */
!     timeLeft = HardDeadtimeout - timeUsed;
  
      if (errorCode == CM_ERROR_TIMEDOUT) {
          if (timeLeft > 5 ) {
***************
*** 406,416 ****
  	    cm_scache_t * scp;
  	    osi_Log4(afsd_logp, "cm_Analyze passed VNOVNODE cell %u vol %u vn %u uniq %u.",
  		      fidp->cell, fidp->volume, fidp->vnode, fidp->unique);
  	    scp = cm_FindSCache(fidp);
  	    if (scp) {
! 		cm_scache_t *pscp = cm_FindSCacheParent(scp);
! 		cm_CleanFile(scp, userp, reqp);
! 		cm_ReleaseSCache(scp);
  		if (pscp) {
  		    if (pscp->cbExpires > 0 && pscp->cbServerp != NULL) {
  			lock_ObtainMutex(&pscp->mx);
--- 407,425 ----
  	    cm_scache_t * scp;
  	    osi_Log4(afsd_logp, "cm_Analyze passed VNOVNODE cell %u vol %u vn %u uniq %u.",
  		      fidp->cell, fidp->volume, fidp->vnode, fidp->unique);
+ 
  	    scp = cm_FindSCache(fidp);
  	    if (scp) {
! 		cm_scache_t *pscp = NULL;
! 		
! 		if (scp->fileType != CM_SCACHETYPE_DIRECTORY)
! 		    pscp = cm_FindSCacheParent(scp);
! 
! 		lock_ObtainWrite(&cm_scacheLock);
! 		cm_RecycleSCache(scp, CM_SCACHE_RECYCLEFLAG_DESTROY_BUFFERS);
! 		cm_ReleaseSCacheNoLock(scp);
! 		lock_ReleaseWrite(&cm_scacheLock);
! 
  		if (pscp) {
  		    if (pscp->cbExpires > 0 && pscp->cbServerp != NULL) {
  			lock_ObtainMutex(&pscp->mx);
***************
*** 505,510 ****
--- 514,571 ----
              case VREADONLY         : s = "VREADONLY";          break;
              case EAGAIN            : s = "EAGAIN";             break;
              case EACCES            : s = "EACCES";             break;
+ 	    case ENOENT            : s = "ENOENT";             break;
+             case CM_ERROR_NOSUCHCELL	    : s = "CM_ERROR_NOSUCHCELL";         break; 			
+             case CM_ERROR_NOSUCHVOLUME	    : s = "CM_ERROR_NOSUCHVOLUME";       break; 			
+             case CM_ERROR_TIMEDOUT	    : s = "CM_ERROR_TIMEDOUT";           break; 		
+             case CM_ERROR_RETRY		    : s = "CM_ERROR_RETRY";              break; 
+             case CM_ERROR_NOACCESS	    : s = "CM_ERROR_NOACCESS";           break; 
+             case CM_ERROR_NOSUCHFILE	    : s = "CM_ERROR_NOSUCHFILE";         break; 			
+             case CM_ERROR_STOPNOW	    : s = "CM_ERROR_STOPNOW";            break; 			
+             case CM_ERROR_TOOBIG	    : s = "CM_ERROR_TOOBIG";             break; 				
+             case CM_ERROR_INVAL		    : s = "CM_ERROR_INVAL";              break; 				
+             case CM_ERROR_BADFD		    : s = "CM_ERROR_BADFD";              break; 				
+             case CM_ERROR_BADFDOP	    : s = "CM_ERROR_BADFDOP";            break; 			
+             case CM_ERROR_EXISTS	    : s = "CM_ERROR_EXISTS";             break; 				
+             case CM_ERROR_CROSSDEVLINK	    : s = "CM_ERROR_CROSSDEVLINK";       break; 			
+             case CM_ERROR_BADOP		    : s = "CM_ERROR_BADOP";              break; 				
+             case CM_ERROR_BADPASSWORD       : s = "CM_ERROR_BADPASSWORD";        break;         
+             case CM_ERROR_NOTDIR	    : s = "CM_ERROR_NOTDIR";             break; 				
+             case CM_ERROR_ISDIR		    : s = "CM_ERROR_ISDIR";              break; 				
+             case CM_ERROR_READONLY	    : s = "CM_ERROR_READONLY";           break; 			
+             case CM_ERROR_WOULDBLOCK	    : s = "CM_ERROR_WOULDBLOCK";         break; 			
+             case CM_ERROR_QUOTA		    : s = "CM_ERROR_QUOTA";              break; 				
+             case CM_ERROR_SPACE		    : s = "CM_ERROR_SPACE";              break; 				
+             case CM_ERROR_BADSHARENAME	    : s = "CM_ERROR_BADSHARENAME";       break; 			
+             case CM_ERROR_BADTID	    : s = "CM_ERROR_BADTID";             break; 				
+             case CM_ERROR_UNKNOWN	    : s = "CM_ERROR_UNKNOWN";            break; 			
+             case CM_ERROR_NOMORETOKENS	    : s = "CM_ERROR_NOMORETOKENS";       break; 			
+             case CM_ERROR_NOTEMPTY	    : s = "CM_ERROR_NOTEMPTY";           break; 			
+             case CM_ERROR_USESTD	    : s = "CM_ERROR_USESTD";             break; 				
+             case CM_ERROR_REMOTECONN	    : s = "CM_ERROR_REMOTECONN";         break; 			
+             case CM_ERROR_ATSYS		    : s = "CM_ERROR_ATSYS";              break; 				
+             case CM_ERROR_NOSUCHPATH	    : s = "CM_ERROR_NOSUCHPATH";         break; 			
+             case CM_ERROR_CLOCKSKEW	    : s = "CM_ERROR_CLOCKSKEW";          break; 			
+             case CM_ERROR_BADSMB	    : s = "CM_ERROR_BADSMB";             break; 				
+             case CM_ERROR_ALLBUSY	    : s = "CM_ERROR_ALLBUSY";            break; 			
+             case CM_ERROR_NOFILES	    : s = "CM_ERROR_NOFILES";            break; 			
+             case CM_ERROR_PARTIALWRITE	    : s = "CM_ERROR_PARTIALWRITE";       break; 			
+             case CM_ERROR_NOIPC		    : s = "CM_ERROR_NOIPC";              break; 				
+             case CM_ERROR_BADNTFILENAME	    : s = "CM_ERROR_BADNTFILENAME";      break; 			
+             case CM_ERROR_BUFFERTOOSMALL    : s = "CM_ERROR_BUFFERTOOSMALL";     break; 			
+             case CM_ERROR_RENAME_IDENTICAL  : s = "CM_ERROR_RENAME_IDENTICAL";   break; 		
+             case CM_ERROR_ALLOFFLINE        : s = "CM_ERROR_ALLOFFLINE";         break;          
+             case CM_ERROR_AMBIGUOUS_FILENAME: s = "CM_ERROR_AMBIGUOUS_FILENAME"; break;  
+             case CM_ERROR_BADLOGONTYPE	    : s = "CM_ERROR_BADLOGONTYPE";       break; 	    
+             case CM_ERROR_GSSCONTINUE       : s = "CM_ERROR_GSSCONTINUE";        break;         
+             case CM_ERROR_TIDIPC            : s = "CM_ERROR_TIDIPC";             break;              
+             case CM_ERROR_TOO_MANY_SYMLINKS : s = "CM_ERROR_TOO_MANY_SYMLINKS";  break;   
+             case CM_ERROR_PATH_NOT_COVERED  : s = "CM_ERROR_PATH_NOT_COVERED";   break;    
+             case CM_ERROR_LOCK_CONFLICT     : s = "CM_ERROR_LOCK_CONFLICT";      break;       
+             case CM_ERROR_SHARING_VIOLATION : s = "CM_ERROR_SHARING_VIOLATION";  break;   
+             case CM_ERROR_ALLDOWN           : s = "CM_ERROR_ALLDOWN";            break;             
+             case CM_ERROR_TOOFEWBUFS	    : s = "CM_ERROR_TOOFEWBUFS";         break; 			
+             case CM_ERROR_TOOMANYBUFS	    : s = "CM_ERROR_TOOMANYBUFS";        break; 			
              }
              osi_Log2(afsd_logp, "cm_Analyze: ignoring error code 0x%x (%s)", 
                       errorCode, s);
Index: openafs/src/WINNT/afsd/cm_daemon.c
diff -c openafs/src/WINNT/afsd/cm_daemon.c:1.4.2.10 openafs/src/WINNT/afsd/cm_daemon.c:1.4.2.12
*** openafs/src/WINNT/afsd/cm_daemon.c:1.4.2.10	Sat Jan 21 15:58:39 2006
--- openafs/src/WINNT/afsd/cm_daemon.c	Wed Aug 30 16:20:19 2006
***************
*** 58,64 ****
  	if (Result == NO_ERROR && daemon_ShutdownFlag == 0) {
  	    osi_Log0(afsd_logp, "cm_IpAddrDaemon CheckDownServers");
  	    Sleep(2500);
!             cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, NULL);
  	    smb_CheckVCs();
  	}	
      }
--- 58,65 ----
  	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();
  	}	
      }
***************
*** 141,147 ****
      if (!scm) return FALSE;
  
      /* Open Windows Firewall service */
!     svc = OpenService(scm, "SharedAccess", SERVICE_QUERY_CONFIG);
      if (!svc)
          goto close_scm;
  
--- 142,154 ----
      if (!scm) return FALSE;
  
      /* Open Windows Firewall service */
!     svc = OpenService(scm, "MpsSvc", SERVICE_QUERY_CONFIG);
!     if (!svc) {
! 	afsi_log("MpsSvc Service could not be opened for query: 0x%x", GetLastError());
! 	svc = OpenService(scm, "SharedAccess", SERVICE_QUERY_CONFIG);
! 	if (!svc)
! 	    afsi_log("SharedAccess Service could not be opened for query: 0x%x", GetLastError());
!     }
      if (!svc)
          goto close_scm;
  
***************
*** 159,168 ****
  
      /* Query Windows Firewall service config, this time for real */
      flag = QueryServiceConfig(svc, pConfig, BufSize, &BufSize);
!     if (!flag)
          goto free_pConfig;
  
      /* Is it autostart? */
      if (pConfig->dwStartType < SERVICE_DEMAND_START)
          result = TRUE;
  
--- 166,178 ----
  
      /* Query Windows Firewall service config, this time for real */
      flag = QueryServiceConfig(svc, pConfig, BufSize, &BufSize);
!     if (!flag) {
! 	afsi_log("QueryServiceConfig failed: 0x%x", GetLastError());
          goto free_pConfig;
+     }
  
      /* Is it autostart? */
+     afsi_log("AutoStart 0x%x", pConfig->dwStartType);
      if (pConfig->dwStartType < SERVICE_DEMAND_START)
          result = TRUE;
  
***************
*** 192,197 ****
--- 202,211 ----
      HMODULE hHookDll;
      int configureFirewall = IsWindowsFirewallPresent();
  
+     if (!configureFirewall) {
+ 	afsi_log("No Windows Firewall detected");
+     }
+ 
      /* ping all file servers, up or down, with unauthenticated connection,
       * to find out whether we have all our callbacks from the server still.
       * Also, ping down VLDBs.
***************
*** 243,249 ****
  	    default:
  		afsi_log("Unknown Windows Firewall Configuration error");
  	    }
! 	}
  
          /* find out what time it is */
          now = osi_Time();
--- 257,263 ----
  	    default:
  		afsi_log("Unknown Windows Firewall Configuration error");
  	    }
! 	} 
  
          /* find out what time it is */
          now = osi_Time();
Index: openafs/src/WINNT/afsd/cm_dcache.c
diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.11.2.17 openafs/src/WINNT/afsd/cm_dcache.c:1.11.2.18
*** openafs/src/WINNT/afsd/cm_dcache.c:1.11.2.17	Wed Feb  1 13:03:18 2006
--- openafs/src/WINNT/afsd/cm_dcache.c	Wed Aug  9 22:47:58 2006
***************
*** 944,951 ****
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAdd((osi_queue_t **)&heldBufListp, &qdp->q);
!         if (!heldBufListEndp) heldBufListEndp = qdp;
          /* leave tbp held (from buf_Get) */
  
          if (!reserving) 
--- 944,952 ----
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAddH((osi_queue_t **)&heldBufListp, 
! 		  (osi_queue_t **)&heldBufListEndp, 
! 		  &qdp->q);
          /* leave tbp held (from buf_Get) */
  
          if (!reserving) 
***************
*** 1013,1021 ****
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAdd((osi_queue_t **)&biop->bufListp, &qdp->q);
!         if (!biop->bufListEndp) 
!             biop->bufListEndp = qdp;
          buf_Hold(tbp);
  
          /* from now on, a failure just stops our collection process, but
--- 1014,1022 ----
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAddH((osi_queue_t **)&biop->bufListp, 
! 		  (osi_queue_t **)&biop->bufListEndp, 
! 		  &qdp->q);
          buf_Hold(tbp);
  
          /* from now on, a failure just stops our collection process, but
***************
*** 1032,1037 ****
--- 1033,1041 ----
      for (qdp = heldBufListp; qdp; qdp = tqdp) {
          tqdp = (osi_queueData_t *) osi_QNext(&qdp->q);
          tbp = osi_GetQData(qdp);
+ 	osi_QRemoveHT((osi_queue_t **) &heldBufListp,
+ 		      (osi_queue_t **) &heldBufListEndp,
+ 		      &qdp->q);
          osi_QDFree(qdp);
          buf_Release(tbp);
      }
***************
*** 1084,1089 ****
--- 1088,1096 ----
                  
          /* extract buffer and free queue data */
          bufp = osi_GetQData(qdp);
+ 	osi_QRemoveHT((osi_queue_t **) &biop->bufListp,
+ 		      (osi_queue_t **) &biop->bufListEndp,
+ 		      &qdp->q);
          osi_QDFree(qdp);
  
          /* now, mark I/O as done, unlock the buffer and release it */
Index: openafs/src/WINNT/afsd/cm_dnlc.c
diff -c openafs/src/WINNT/afsd/cm_dnlc.c:1.5.2.3 openafs/src/WINNT/afsd/cm_dnlc.c:1.5.2.4
*** openafs/src/WINNT/afsd/cm_dnlc.c:1.5.2.3	Wed May 18 18:57:08 2005
--- openafs/src/WINNT/afsd/cm_dnlc.c	Wed Sep  6 13:23:56 2006
***************
*** 133,139 ****
  
      if (!cm_useDnlc)
  	return ;
!   
      if ( cm_debugDnlc ) 
  	osi_Log3(afsd_logp,"cm_dnlcEnter dir %x name %s scache %x", 
  	    adp, osi_LogSaveString(afsd_logp,aname), avc);
--- 133,142 ----
  
      if (!cm_useDnlc)
  	return ;
! 
!     if (!strcmp(aname,".") || !strcmp(aname,".."))
! 	return ;
! 
      if ( cm_debugDnlc ) 
  	osi_Log3(afsd_logp,"cm_dnlcEnter dir %x name %s scache %x", 
  	    adp, osi_LogSaveString(afsd_logp,aname), avc);
Index: openafs/src/WINNT/afsd/cm_ioctl.c
diff -c openafs/src/WINNT/afsd/cm_ioctl.c:1.33.2.27 openafs/src/WINNT/afsd/cm_ioctl.c:1.33.2.29
*** openafs/src/WINNT/afsd/cm_ioctl.c:1.33.2.27	Sun Apr  9 03:29:37 2006
--- openafs/src/WINNT/afsd/cm_ioctl.c	Sun Oct  8 16:35:53 2006
***************
*** 83,88 ****
--- 83,95 ----
  {
      long code;
  
+ #ifdef AFS_FREELANCE_CLIENT
+     if ( scp->fid.cell == AFS_FAKE_ROOT_CELL_ID && scp->fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
+ 	cm_noteLocalMountPointChange();
+ 	return 0;
+     }
+ #endif
+ 
      lock_ObtainWrite(&scp->bufCreateLock);
      code = buf_FlushCleanPages(scp, userp, reqp);
          
***************
*** 105,111 ****
  
      /* now flush the file */
      code = cm_FlushFile(pscp, userp, reqp);
!     cm_ReleaseSCache(scp);
  
      return code;
  }
--- 112,118 ----
  
      /* now flush the file */
      code = cm_FlushFile(pscp, userp, reqp);
!     cm_ReleaseSCache(pscp);
  
      return code;
  }
***************
*** 117,122 ****
--- 124,136 ----
      cm_scache_t *scp;
      int i;
  
+ #ifdef AFS_FREELANCE_CLIENT
+     if ( cell == AFS_FAKE_ROOT_CELL_ID && volume == AFS_FAKE_ROOT_VOL_ID ) {
+ 	cm_noteLocalMountPointChange();
+ 	return 0;
+     }
+ #endif
+ 
      lock_ObtainWrite(&cm_scacheLock);
      for (i=0; i<cm_data.hashTableSize; i++) {
          for (scp = cm_data.hashTablep[i]; scp; scp = scp->nextp) {
***************
*** 242,254 ****
                               CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                               userp, sharePath, reqp, &substRootp);
              free(sharePath);
!             if (code) 
                  return code;
  
              code = cm_NameI(substRootp, p, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                               userp, NULL, reqp, scpp);
!             if (code) 
                  return code;
          } else {
              /* otherwise, treat the name as a cellname mounted off the afs root.
               * This requires that we reconstruct the shareName string with 
--- 256,272 ----
                               CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                               userp, sharePath, reqp, &substRootp);
              free(sharePath);
!             if (code) {
! 		osi_Log1(afsd_logp,"cm_ParseIoctlPath [1] code 0x%x", code);
                  return code;
+ 	    }
  
              code = cm_NameI(substRootp, p, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                               userp, NULL, reqp, scpp);
!             if (code) {
! 		osi_Log1(afsd_logp,"cm_ParseIoctlPath [2] code 0x%x", code);
                  return code;
+ 	    }
          } else {
              /* otherwise, treat the name as a cellname mounted off the afs root.
               * This requires that we reconstruct the shareName string with 
***************
*** 270,294 ****
              code = cm_NameI(cm_data.rootSCachep, ioctlp->prefix->data,
                               CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                               userp, shareName, reqp, &substRootp);
!             if (code) 
                  return code;
  
              code = cm_NameI(substRootp, p, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                              userp, NULL, reqp, scpp);
!             if (code) 
                  return code;
          }
      } else {
          code = cm_NameI(cm_data.rootSCachep, ioctlp->prefix->data,
                           CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                           userp, ioctlp->tidPathp, reqp, &substRootp);
!         if (code) 
              return code;
          
          code = cm_NameI(substRootp, relativePath, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                           userp, NULL, reqp, scpp);
!         if (code) 
              return code;
      }
  
      /* # of bytes of path */
--- 288,322 ----
              code = cm_NameI(cm_data.rootSCachep, ioctlp->prefix->data,
                               CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                               userp, shareName, reqp, &substRootp);
!             if (code) {
! 		osi_Log1(afsd_logp,"cm_ParseIoctlPath [3] code 0x%x", code);
                  return code;
+ 	    }
  
              code = cm_NameI(substRootp, p, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                              userp, NULL, reqp, scpp);
!             if (code) {
! 		cm_ReleaseSCache(substRootp);
! 		osi_Log1(afsd_logp,"cm_ParseIoctlPath code [4] 0x%x", code);
                  return code;
+ 	    }
          }
      } else {
          code = cm_NameI(cm_data.rootSCachep, ioctlp->prefix->data,
                           CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                           userp, ioctlp->tidPathp, reqp, &substRootp);
!         if (code) {
! 	    osi_Log1(afsd_logp,"cm_ParseIoctlPath [6] code 0x%x", code);
              return code;
+ 	}
          
          code = cm_NameI(substRootp, relativePath, CM_FLAG_CASEFOLD | CM_FLAG_FOLLOW,
                           userp, NULL, reqp, scpp);
!         if (code) {
! 	    cm_ReleaseSCache(substRootp);
! 	    osi_Log1(afsd_logp,"cm_ParseIoctlPath [7] code 0x%x", code);
              return code;
+ 	}
      }
  
      /* # of bytes of path */
***************
*** 298,304 ****
--- 326,336 ----
      /* This is usually nothing, but for StatMountPoint it is the file name. */
      TranslateExtendedChars(ioctlp->inDatap);
  
+     if (substRootp)
+ 	cm_ReleaseSCache(substRootp);
+ 
      /* and return success */
+     osi_Log1(afsd_logp,"cm_ParseIoctlPath [8] code 0x%x", code);
      return 0;
  }
  
Index: openafs/src/WINNT/afsd/cm_memmap.c
diff -c openafs/src/WINNT/afsd/cm_memmap.c:1.1.2.5 openafs/src/WINNT/afsd/cm_memmap.c:1.1.2.6
*** openafs/src/WINNT/afsd/cm_memmap.c:1.1.2.5	Mon Feb  6 02:07:08 2006
--- openafs/src/WINNT/afsd/cm_memmap.c	Mon Jul 24 10:11:30 2006
***************
*** 161,167 ****
      psa = GlobalAlloc(GMEM_FIXED, sizeof(SECURITY_ATTRIBUTES));
      psa->nLength = sizeof(SECURITY_ATTRIBUTES);
      psa->lpSecurityDescriptor = psd;
!     psa->bInheritHandle = TRUE;
  
      return psa;
  }       
--- 161,167 ----
      psa = GlobalAlloc(GMEM_FIXED, sizeof(SECURITY_ATTRIBUTES));
      psa->nLength = sizeof(SECURITY_ATTRIBUTES);
      psa->lpSecurityDescriptor = psd;
!     psa->bInheritHandle = FALSE;
  
      return psa;
  }       
Index: openafs/src/WINNT/afsd/cm_scache.c
diff -c openafs/src/WINNT/afsd/cm_scache.c:1.14.2.15 openafs/src/WINNT/afsd/cm_scache.c:1.14.2.23
*** openafs/src/WINNT/afsd/cm_scache.c:1.14.2.15	Wed Feb  1 13:03:18 2006
--- openafs/src/WINNT/afsd/cm_scache.c	Sat Oct  7 18:30:08 2006
***************
*** 46,67 ****
  {
      if (scp == cm_data.scacheLRULastp)
          cm_data.scacheLRULastp = (cm_scache_t *) osi_QPrev(&scp->q);
!     osi_QRemove((osi_queue_t **) &cm_data.scacheLRUFirstp, &scp->q);
      osi_QAdd((osi_queue_t **) &cm_data.scacheLRUFirstp, &scp->q);
      if (!cm_data.scacheLRULastp) 
          cm_data.scacheLRULastp = scp;
  }
  
  /* called with cm_scacheLock write-locked; find a vnode to recycle.
   * Can allocate a new one if desperate, or if below quota (cm_data.maxSCaches).
   */
  cm_scache_t *cm_GetNewSCache(void)
  {
      cm_scache_t *scp;
-     int i;
-     cm_scache_t **lscpp;
-     cm_scache_t *tscp;
  
      if (cm_data.currentSCaches >= cm_data.maxSCaches) {
          for (scp = cm_data.scacheLRULastp;
                scp;
--- 46,192 ----
  {
      if (scp == cm_data.scacheLRULastp)
          cm_data.scacheLRULastp = (cm_scache_t *) osi_QPrev(&scp->q);
!     osi_QRemoveHT((osi_queue_t **) &cm_data.scacheLRUFirstp, (osi_queue_t **) &cm_data.scacheLRULastp, &scp->q);
      osi_QAdd((osi_queue_t **) &cm_data.scacheLRUFirstp, &scp->q);
      if (!cm_data.scacheLRULastp) 
          cm_data.scacheLRULastp = scp;
  }
  
+ /* called with cm_scacheLock write-locked; recycles an existing scp. */
+ long cm_RecycleSCache(cm_scache_t *scp, afs_int32 flags)
+ {
+     cm_scache_t **lscpp;
+     cm_scache_t *tscp;
+     int i;
+ 
+     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) {
+ 		*lscpp = scp->nextp;
+ 		scp->flags &= ~CM_SCACHEFLAG_INHASH;
+ 		break;
+ 	    }
+ 	}
+ 	osi_assertx(tscp, "afsd: scache hash screwup");
+     }
+ 
+     if (flags & CM_SCACHE_RECYCLEFLAG_DESTROY_BUFFERS) {
+ 	osi_queueData_t *qdp;
+ 	cm_buf_t *bufp;
+ 
+ 	while(qdp = scp->bufWritesp) {
+             bufp = osi_GetQData(qdp);
+ 	    osi_QRemove((osi_queue_t **) &scp->bufWritesp, &qdp->q);
+ 	    osi_QDFree(qdp);
+ 	    if (bufp) {
+ 		lock_ObtainMutex(&bufp->mx);
+ 		bufp->cmFlags &= ~CM_BUF_CMSTORING;
+ 		bufp->flags &= ~CM_BUF_DIRTY;
+ 		bufp->dataVersion = -1; /* bad */
+ 		bufp->dirtyCounter++;
+ 		if (bufp->flags & CM_BUF_WAITING) {
+ 		    osi_Log2(afsd_logp, "CM RecycleSCache Waking [scp 0x%x] bufp 0x%x", scp, bufp);
+ 		    osi_Wakeup((long) &bufp);
+ 		}
+ 		lock_ReleaseMutex(&bufp->mx);
+ 		buf_Release(bufp);
+ 	    }
+         }
+ 	while(qdp = scp->bufReadsp) {
+             bufp = osi_GetQData(qdp);
+ 	    osi_QRemove((osi_queue_t **) &scp->bufReadsp, &qdp->q);
+ 	    osi_QDFree(qdp);
+ 	    if (bufp) {
+ 		lock_ObtainMutex(&bufp->mx);
+ 		bufp->cmFlags &= ~CM_BUF_CMFETCHING;
+ 		bufp->flags &= ~CM_BUF_DIRTY;
+ 		bufp->dataVersion = -1; /* bad */
+ 		bufp->dirtyCounter++;
+ 		if (bufp->flags & CM_BUF_WAITING) {
+ 		    osi_Log2(afsd_logp, "CM RecycleSCache Waking [scp 0x%x] bufp 0x%x", scp, bufp);
+ 		    osi_Wakeup((long) &bufp);
+ 		}
+ 		lock_ReleaseMutex(&bufp->mx);
+ 		buf_Release(bufp);
+ 	    }
+         }
+     } else {
+ 	/* look for things that shouldn't still be set */
+ 	osi_assert(scp->bufWritesp == NULL);
+ 	osi_assert(scp->bufReadsp == NULL);
+     }
+ 
+     /* invalidate so next merge works fine;
+      * also initialize some flags */
+     scp->flags &= ~(CM_SCACHEFLAG_STATD
+ 		     | CM_SCACHEFLAG_RO
+ 		     | CM_SCACHEFLAG_PURERO
+ 		     | CM_SCACHEFLAG_OVERQUOTA
+ 		     | CM_SCACHEFLAG_OUTOFSPACE);
+     scp->serverModTime = 0;
+     scp->dataVersion = 0;
+     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);
+ 
+     /* discard cached status; if non-zero, Close
+      * tried to store this to server but failed */
+     scp->mask = 0;
+ 
+     /* drop held volume ref */
+     if (scp->volp) {
+ 	cm_PutVolume(scp->volp);
+ 	scp->volp = NULL;
+     }
+ 
+     /* discard symlink info */
+     scp->mountPointStringp[0] = 0;
+     memset(&scp->mountRootFid, 0, sizeof(cm_fid_t));
+     memset(&scp->dotdotFid, 0, sizeof(cm_fid_t));
+ 
+     /* reset locking info */
+     scp->fileLocksH = NULL;
+     scp->fileLocksT = NULL;
+     scp->serverLock = (-1);
+     scp->exclusiveLocks = 0;
+     scp->sharedLocks = 0;
+ 
+     /* not locked, but there can be no references to this guy
+      * while we hold the global refcount lock.
+      */
+     cm_FreeAllACLEnts(scp);
+ 
+     return 0;
+ }
+ 
+ 
  /* called with cm_scacheLock write-locked; find a vnode to recycle.
   * Can allocate a new one if desperate, or if below quota (cm_data.maxSCaches).
   */
  cm_scache_t *cm_GetNewSCache(void)
  {
      cm_scache_t *scp;
  
+   start:
      if (cm_data.currentSCaches >= cm_data.maxSCaches) {
          for (scp = cm_data.scacheLRULastp;
                scp;
***************
*** 72,159 ****
                  
          if (scp) {
              osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.hashTablep);
-             /* we found an entry, so return it */
-             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) {
-                         *lscpp = scp->nextp;
-                         scp->flags &= ~CM_SCACHEFLAG_INHASH;
-                         break;
-                     }
-                 }
-                 osi_assertx(tscp, "afsd: scache hash screwup");
-             }
- 
-             /* look for things that shouldn't still be set */
-             osi_assert(scp->bufWritesp == NULL);
-             osi_assert(scp->bufReadsp == NULL);
- 
-             /* invalidate so next merge works fine;
-             * also initialize some flags */
-             scp->flags &= ~(CM_SCACHEFLAG_STATD
-                              | CM_SCACHEFLAG_RO
-                              | CM_SCACHEFLAG_PURERO
-                              | CM_SCACHEFLAG_OVERQUOTA
-                              | CM_SCACHEFLAG_OUTOFSPACE);
-             scp->serverModTime = 0;
-             scp->dataVersion = 0;
-             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);
- 
-             /* discard cached status; if non-zero, Close
-              * tried to store this to server but failed */
-             scp->mask = 0;
- 
-             /* drop held volume ref */
-             if (scp->volp) {
-                 cm_PutVolume(scp->volp);
-                 scp->volp = NULL;
-             }
- 
-             /* discard symlink info */
-             scp->mountPointStringp[0] = 0;
-             memset(&scp->mountRootFid, 0, sizeof(cm_fid_t));
-             memset(&scp->dotdotFid, 0, sizeof(cm_fid_t));
- 
-             /* reset locking info */
-             scp->fileLocksH = NULL;
-             scp->fileLocksT = NULL;
-             scp->serverLock = (-1);
-             scp->exclusiveLocks = 0;
-             scp->sharedLocks = 0;
- 
-             /* not locked, but there can be no references to this guy
-              * while we hold the global refcount lock.
-              */
-             cm_FreeAllACLEnts(scp);
- 
-             /* 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;
          }
      }
          
--- 197,217 ----
                  
          if (scp) {
              osi_assert(scp >= cm_data.scacheBaseAddress && scp < (cm_scache_t *)cm_data.hashTablep);
  
! 	    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 {
! 		/* We don't like this entry, choose another one. */
! 		goto start;
! 	    }
          }
      }
          
***************
*** 599,613 ****
      parent_fid.unique = scp->parentUnique;
  
      if (cm_FidCmp(&scp->fid, &parent_fid)) {
! 	for (i=0; i<cm_data.hashTableSize; i++) {
! 	    for (pscp = cm_data.hashTablep[i]; pscp; pscp = pscp->nextp) {
! 		if (!cm_FidCmp(&pscp->fid, &parent_fid)) {
! 		    cm_HoldSCacheNoLock(pscp);
! 		    break;
! 		}
  	    }
  	}
      }
      lock_ReleaseWrite(&cm_scacheLock);
  
      return pscp;
--- 657,671 ----
      parent_fid.unique = scp->parentUnique;
  
      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;
  	    }
  	}
      }
+ 
      lock_ReleaseWrite(&cm_scacheLock);
  
      return pscp;
***************
*** 854,860 ****
              if (!cm_HaveCallback(scp)) {
                  osi_Log1(afsd_logp, "CM SyncOp getting callback on scp %x",
                            (long) scp);
!                 if (bufLocked) lock_ReleaseMutex(&bufp->mx);
                  code = cm_GetCallback(scp, up, reqp, 0);
                  if (bufLocked) {
                      lock_ReleaseMutex(&scp->mx);
--- 912,919 ----
              if (!cm_HaveCallback(scp)) {
                  osi_Log1(afsd_logp, "CM SyncOp getting callback on scp %x",
                            (long) scp);
!                 if (bufLocked) 
! 		    lock_ReleaseMutex(&bufp->mx);
                  code = cm_GetCallback(scp, up, reqp, 0);
                  if (bufLocked) {
                      lock_ReleaseMutex(&scp->mx);
***************
*** 881,893 ****
                  /* we don't know the required access rights */
                  if (bufLocked) lock_ReleaseMutex(&bufp->mx);
                  code = cm_GetAccessRights(scp, up, reqp);
-                 if (code) 
-                     return code;
                  if (bufLocked) {
                      lock_ReleaseMutex(&scp->mx);
                      lock_ObtainMutex(&bufp->mx);
                      lock_ObtainMutex(&scp->mx);
                  }
                  continue;
              }
          }
--- 940,952 ----
                  /* we don't know the required access rights */
                  if (bufLocked) lock_ReleaseMutex(&bufp->mx);
                  code = cm_GetAccessRights(scp, up, reqp);
                  if (bufLocked) {
                      lock_ReleaseMutex(&scp->mx);
                      lock_ObtainMutex(&bufp->mx);
                      lock_ObtainMutex(&scp->mx);
                  }
+                 if (code) 
+                     return code;
                  continue;
              }
          }
***************
*** 917,922 ****
--- 976,984 ----
          if (bufLocked) 
              lock_ReleaseMutex(&bufp->mx);
          osi_SleepM((long) &scp->flags, &scp->mx);
+ 
+ 	smb_UpdateServerPriority();
+ 
          if (bufLocked) 
              lock_ObtainMutex(&bufp->mx);
          lock_ObtainMutex(&scp->mx);
***************
*** 1017,1028 ****
          /* ensure that the buffer isn't already in the I/O list */
          for(qdp = scp->bufReadsp; qdp; qdp = (osi_queueData_t *) osi_QNext(&qdp->q)) {
              tbufp = osi_GetQData(qdp);
!             if (tbufp == bufp) break;
          }
!         osi_assert(qdp != NULL);
!         osi_assert(osi_GetQData(qdp) == bufp);
!         osi_QRemove((osi_queue_t **) &scp->bufReadsp, &qdp->q);
!         osi_QDFree(qdp);
          if (bufp) {
              bufp->cmFlags &= ~(CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED);
              if (bufp->flags & CM_BUF_WAITING) {
--- 1079,1091 ----
          /* ensure that the buffer isn't already in the I/O list */
          for(qdp = scp->bufReadsp; qdp; qdp = (osi_queueData_t *) osi_QNext(&qdp->q)) {
              tbufp = osi_GetQData(qdp);
!             if (tbufp == bufp) 
! 		break;
          }
! 	if (qdp) {
! 	    osi_QRemove((osi_queue_t **) &scp->bufReadsp, &qdp->q);
! 	    osi_QDFree(qdp);
! 	}
          if (bufp) {
              bufp->cmFlags &= ~(CM_BUF_CMFETCHING | CM_BUF_CMFULLYFETCHED);
              if (bufp->flags & CM_BUF_WAITING) {
***************
*** 1038,1049 ****
          /* ensure that the buffer isn't already in the I/O list */
          for(qdp = scp->bufWritesp; qdp; qdp = (osi_queueData_t *) osi_QNext(&qdp->q)) {
              tbufp = osi_GetQData(qdp);
!             if (tbufp == bufp) break;
          }
!         osi_assert(qdp != NULL);
!         osi_assert(osi_GetQData(qdp) == bufp);
!         osi_QRemove((osi_queue_t **) &scp->bufWritesp, &qdp->q);
!         osi_QDFree(qdp);
          if (bufp) {
              bufp->cmFlags &= ~CM_BUF_CMSTORING;
              if (bufp->flags & CM_BUF_WAITING) {
--- 1101,1113 ----
          /* ensure that the buffer isn't already in the I/O list */
          for(qdp = scp->bufWritesp; qdp; qdp = (osi_queueData_t *) osi_QNext(&qdp->q)) {
              tbufp = osi_GetQData(qdp);
!             if (tbufp == bufp) 
! 		break;
          }
! 	if (qdp) {
! 	    osi_QRemove((osi_queue_t **) &scp->bufWritesp, &qdp->q);
! 	    osi_QDFree(qdp);
! 	}
          if (bufp) {
              bufp->cmFlags &= ~CM_BUF_CMSTORING;
              if (bufp->flags & CM_BUF_WAITING) {
Index: openafs/src/WINNT/afsd/cm_scache.h
diff -c openafs/src/WINNT/afsd/cm_scache.h:1.4.2.12 openafs/src/WINNT/afsd/cm_scache.h:1.4.2.13
*** openafs/src/WINNT/afsd/cm_scache.h:1.4.2.12	Wed Feb  1 13:03:18 2006
--- openafs/src/WINNT/afsd/cm_scache.h	Sat Jun  3 13:57:12 2006
***************
*** 265,270 ****
--- 265,273 ----
  #define CM_SCACHESYNC_NOWAIT		0x100000/* don't wait for the state,
  						 * just fail */
  
+ /* flags for cm_RecycleSCache	*/
+ #define CM_SCACHE_RECYCLEFLAG_DESTROY_BUFFERS 	0x1
+ 
  /* flags for cm_MergeStatus */
  #define CM_MERGEFLAG_FORCE		1	/* check mtime before merging;
  						 * used to see if we're merging
***************
*** 333,336 ****
--- 336,341 ----
  
  extern long cm_ShutdownSCache(void);
  
+ extern long cm_RecycleSCache(cm_scache_t *scp, afs_int32 flags);
+ 
  #endif /*  __CM_SCACHE_H_ENV__ */
Index: openafs/src/WINNT/afsd/cm_server.c
diff -c openafs/src/WINNT/afsd/cm_server.c:1.13.2.9 openafs/src/WINNT/afsd/cm_server.c:1.13.2.10
*** openafs/src/WINNT/afsd/cm_server.c:1.13.2.9	Fri Feb 17 16:44:39 2006
--- openafs/src/WINNT/afsd/cm_server.c	Tue May  9 01:20:40 2006
***************
*** 29,34 ****
--- 29,48 ----
  
  cm_server_t *cm_allServersp;
  
+ void
+ cm_ForceNewConnectionsAllServers(void)
+ {
+     cm_server_t *tsp;
+ 
+     lock_ObtainRead(&cm_serverLock);
+     for (tsp = cm_allServersp; tsp; tsp = tsp->allNextp) {
+         cm_GetServerNoLock(tsp);
+ 	cm_ForceNewConnections(tsp);
+         cm_PutServerNoLock(tsp);
+     }
+     lock_ReleaseRead(&cm_serverLock);
+ }
+ 
  void cm_CheckServers(long flags, cm_cell_t *cellp)
  {
      /* ping all file servers, up or down, with unauthenticated connection,
Index: openafs/src/WINNT/afsd/cm_server.h
diff -c openafs/src/WINNT/afsd/cm_server.h:1.5.2.6 openafs/src/WINNT/afsd/cm_server.h:1.5.2.7
*** openafs/src/WINNT/afsd/cm_server.h:1.5.2.6	Sun Jan 15 21:06:59 2006
--- openafs/src/WINNT/afsd/cm_server.h	Tue May  9 01:20:40 2006
***************
*** 100,103 ****
--- 100,105 ----
  
  extern void cm_FreeServerList(cm_serverRef_t** list);
  
+ extern void cm_ForceNewConnectionsAllServers(void);
+ 
  #endif /*  __CM_SERVER_H_ENV__ */
Index: openafs/src/WINNT/afsd/cm_utils.c
diff -c openafs/src/WINNT/afsd/cm_utils.c:1.5.14.6 openafs/src/WINNT/afsd/cm_utils.c:1.5.14.7
*** openafs/src/WINNT/afsd/cm_utils.c:1.5.14.6	Mon Nov 21 19:37:48 2005
--- openafs/src/WINNT/afsd/cm_utils.c	Sat Jun  3 13:57:12 2006
***************
*** 246,252 ****
          error = CM_ERROR_EXISTS;
      else if (error == 20) 
          error = CM_ERROR_NOTDIR;
!     else if (error == 2) 
          error = CM_ERROR_NOSUCHFILE;
      else if (error == 11        /* EAGAIN, most servers */
               || error == 35)	/* EAGAIN, Digital UNIX */
--- 246,252 ----
          error = CM_ERROR_EXISTS;
      else if (error == 20) 
          error = CM_ERROR_NOTDIR;
!     else if (error == 2)	/* ENOENT */
          error = CM_ERROR_NOSUCHFILE;
      else if (error == 11        /* EAGAIN, most servers */
               || error == 35)	/* EAGAIN, Digital UNIX */
Index: openafs/src/WINNT/afsd/cm_vnodeops.c
diff -c openafs/src/WINNT/afsd/cm_vnodeops.c:1.19.2.36 openafs/src/WINNT/afsd/cm_vnodeops.c:1.19.2.43
*** openafs/src/WINNT/afsd/cm_vnodeops.c:1.19.2.36	Wed Feb 22 09:29:22 2006
--- openafs/src/WINNT/afsd/cm_vnodeops.c	Wed Oct  4 01:30:45 2006
***************
*** 265,271 ****
  
      code = cm_SyncOp(scp, NULL, userp, reqp, rights,
                        CM_SCACHESYNC_GETSTATUS
!                       | CM_SCACHESYNC_NEEDCALLBACK);
  
      if (code == 0 && 
          ((rights & PRSFS_WRITE) || (rights & PRSFS_READ)) &&
--- 265,272 ----
  
      code = cm_SyncOp(scp, NULL, userp, reqp, rights,
                        CM_SCACHESYNC_GETSTATUS
!                      | CM_SCACHESYNC_NEEDCALLBACK
!                      | CM_SCACHESYNC_LOCK);
  
      if (code == 0 && 
          ((rights & PRSFS_WRITE) || (rights & PRSFS_READ)) &&
***************
*** 315,322 ****
--- 316,330 ----
  		}
  	    }
          }
+ 
+     } else if (code != 0) {
+         goto _done;
      }
  
+     cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_LOCK);
+ 
+  _done:
+ 
      lock_ReleaseMutex(&scp->mx);
  
      return code;
***************
*** 346,352 ****
  
      code = cm_SyncOp(scp, NULL, userp, reqp, rights,
                        CM_SCACHESYNC_GETSTATUS
!                       | CM_SCACHESYNC_NEEDCALLBACK);
  
      /*
       * If the open will fail because the volume is readonly, then we will
--- 354,361 ----
  
      code = cm_SyncOp(scp, NULL, userp, reqp, rights,
                        CM_SCACHESYNC_GETSTATUS
!                      | CM_SCACHESYNC_NEEDCALLBACK
!                      | CM_SCACHESYNC_LOCK);
  
      /*
       * If the open will fail because the volume is readonly, then we will
***************
*** 356,362 ****
       */
      if (code == CM_ERROR_READONLY)
          code = CM_ERROR_NOACCESS;
!     else if (code == 0 &&
               ((rights & PRSFS_WRITE) || (rights & PRSFS_READ)) &&
               scp->fileType == CM_SCACHETYPE_FILE) {
          cm_key_t key;
--- 365,372 ----
       */
      if (code == CM_ERROR_READONLY)
          code = CM_ERROR_NOACCESS;
! 
!     if (code == 0 &&
               ((rights & PRSFS_WRITE) || (rights & PRSFS_READ)) &&
               scp->fileType == CM_SCACHETYPE_FILE) {
          cm_key_t key;
***************
*** 403,410 ****
--- 413,425 ----
  		}
  	    }
          }
+     } else if (code != 0) {
+         goto _done;
      }
  
+     cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_LOCK);
+ 
+  _done:
      lock_ReleaseMutex(&scp->mx);
  
      return code;
***************
*** 1062,1067 ****
--- 1077,1085 ----
              return CM_ERROR_NOSUCHVOLUME;
          rock.fid = dscp->dotdotFid;
          goto haveFid;
+     } else if (strcmp(namep, ".") == 0) {
+ 	rock.fid = dscp->fid;
+ 	goto haveFid;
      }
  
      memset(&rock, 0, sizeof(rock));
***************
*** 1224,1230 ****
      long code;
      char tname[256];
      int sysNameIndex = 0;
!     cm_scache_t *scp = 0;
  
      if ( stricmp(namep,SMB_IOCTL_FILENAME_NOSLASH) == 0 ) {
          if (flags & CM_FLAG_CHECKPATH)
--- 1242,1248 ----
      long code;
      char tname[256];
      int sysNameIndex = 0;
!     cm_scache_t *scp = NULL;
  
      if ( stricmp(namep,SMB_IOCTL_FILENAME_NOSLASH) == 0 ) {
          if (flags & CM_FLAG_CHECKPATH)
***************
*** 1243,1249 ****
              }
              if (scp) {
                  cm_ReleaseSCache(scp);
!                 scp = 0;
              }
          } else {
              return cm_LookupInternal(dscp, namep, flags, userp, reqp, outpScpp);
--- 1261,1267 ----
              }
              if (scp) {
                  cm_ReleaseSCache(scp);
!                 scp = NULL;
              }
          } else {
              return cm_LookupInternal(dscp, namep, flags, userp, reqp, outpScpp);
***************
*** 1312,1317 ****
--- 1330,1342 ----
      cm_SyncOpDone(dscp, NULL, sflags);
      if (code == 0) 
          cm_MergeStatus(dscp, &newDirStatus, &volSync, userp, 0);
+ 	else if (code == CM_ERROR_NOSUCHFILE) {
+ 		/* windows would not have allowed the request to delete the file 
+ 		 * if it did not believe the file existed.  therefore, we must 
+ 		 * have an inconsistent view of the world.
+ 		 */
+ 		dscp->cbServerp = NULL;
+ 	}
      lock_ReleaseMutex(&dscp->mx);
  
      return code;
***************
*** 1504,1510 ****
      tscp = rootSCachep;
      cm_HoldSCache(tscp);
      symlinkCount = 0;
!     dirScp = 0;
  
      while (1) {
          tc = *tp++;
--- 1529,1535 ----
      tscp = rootSCachep;
      cm_HoldSCache(tscp);
      symlinkCount = 0;
!     dirScp = NULL;
  
      while (1) {
          tc = *tp++;
***************
*** 1539,1572 ****
                   * is a symlink, we have more to do.
                   */
                  *cp++ = 0;	/* add null termination */
!                 extraFlag = 0;
!                 if ((flags & CM_FLAG_DIRSEARCH) && tc == 0)
!                     extraFlag = CM_FLAG_NOMOUNTCHASE;
!                 code = cm_Lookup(tscp, component,
!                                   flags | extraFlag,
!                                   userp, reqp, &nscp);
!                 if (code) {
!                     cm_ReleaseSCache(tscp);
!                     if (dirScp)
                          cm_ReleaseSCache(dirScp);
!                     if (psp) 
!                         cm_FreeSpace(psp);
!                     if (code == CM_ERROR_NOSUCHFILE && tscp->fileType == CM_SCACHETYPE_SYMLINK)
!                         return CM_ERROR_NOSUCHPATH;
!                     else
!                         return code;
!                 }
!                 haveComponent = 0;	/* component done */
!                 if (dirScp)
!                     cm_ReleaseSCache(dirScp);
!                 dirScp = tscp;		/* for some symlinks */
!                 tscp = nscp;	        /* already held */
!                 nscp = 0;
!                 if (tc == 0 && !(flags & CM_FLAG_FOLLOW) && phase == 2) {
                      code = 0;
                      if (dirScp) {
                          cm_ReleaseSCache(dirScp);
!                         dirScp = 0;
                      }
                      break;
                  }
--- 1564,1605 ----
                   * is a symlink, we have more to do.
                   */
                  *cp++ = 0;	/* add null termination */
! 		if (!strcmp(".",component)) {
!                     code = 0;
!                     if (dirScp) {
                          cm_ReleaseSCache(dirScp);
!                         dirScp = NULL;
!                     }
!                     break;
! 		}
! 		extraFlag = 0;
! 		if ((flags & CM_FLAG_DIRSEARCH) && tc == 0)
! 		    extraFlag = CM_FLAG_NOMOUNTCHASE;
! 		code = cm_Lookup(tscp, component,
! 				  flags | extraFlag,
! 				  userp, reqp, &nscp);
! 		if (code) {
! 		    cm_ReleaseSCache(tscp);
! 		    if (dirScp)
! 			cm_ReleaseSCache(dirScp);
! 		    if (psp) 
! 			cm_FreeSpace(psp);
! 		    if (code == CM_ERROR_NOSUCHFILE && tscp->fileType == CM_SCACHETYPE_SYMLINK)
! 			return CM_ERROR_NOSUCHPATH;
! 		    else
! 			return code;
! 		}	
! 		haveComponent = 0;	/* component done */
! 		if (dirScp)
! 		    cm_ReleaseSCache(dirScp);
! 		dirScp = tscp;		/* for some symlinks */
! 		tscp = nscp;	        /* already held */
! 		nscp = NULL;
! 		if (tc == 0 && !(flags & CM_FLAG_FOLLOW) && phase == 2) {
                      code = 0;
                      if (dirScp) {
                          cm_ReleaseSCache(dirScp);
!                         dirScp = NULL;
                      }
                      break;
                  }
***************
*** 1581,1590 ****
                  if (code) {
                      lock_ReleaseMutex(&tscp->mx);
                      cm_ReleaseSCache(tscp);
!                     tscp = 0;
                      if (dirScp) {
                          cm_ReleaseSCache(dirScp);
!                         dirScp = 0;
                      }
                      break;
                  }
--- 1614,1623 ----
                  if (code) {
                      lock_ReleaseMutex(&tscp->mx);
                      cm_ReleaseSCache(tscp);
!                     tscp = NULL;
                      if (dirScp) {
                          cm_ReleaseSCache(dirScp);
!                         dirScp = NULL;
                      }
                      break;
                  }
***************
*** 1593,1602 ****
                      lock_ReleaseMutex(&tscp->mx);
                      if (symlinkCount++ >= MAX_SYMLINK_COUNT) {
                          cm_ReleaseSCache(tscp);
!                         tscp = 0;
                          if (dirScp) {
                              cm_ReleaseSCache(dirScp);
!                             dirScp = 0;
                          }
                          if (psp) 
                              cm_FreeSpace(psp);
--- 1626,1635 ----
                      lock_ReleaseMutex(&tscp->mx);
                      if (symlinkCount++ >= MAX_SYMLINK_COUNT) {
                          cm_ReleaseSCache(tscp);
!                         tscp = NULL;
                          if (dirScp) {
                              cm_ReleaseSCache(dirScp);
!                             dirScp = NULL;
                          }
                          if (psp) 
                              cm_FreeSpace(psp);
***************
*** 1610,1619 ****
                      if (code) {
                          /* something went wrong */
                          cm_ReleaseSCache(tscp);
!                         tscp = 0;
                          if (dirScp) {
                              cm_ReleaseSCache(dirScp);
!                             dirScp = 0;
                          }
                          break;
                      }
--- 1643,1652 ----
                      if (code) {
                          /* something went wrong */
                          cm_ReleaseSCache(tscp);
!                         tscp = NULL;
                          if (dirScp) {
                              cm_ReleaseSCache(dirScp);
!                             dirScp = NULL;
                          }
                          break;
                      }
***************
*** 1632,1638 ****
                      tp = psp->data;
                      cm_ReleaseSCache(tscp);
                      tscp = linkScp;
!                     linkScp = 0;
                      /* already held
                       * by AssembleLink
                       * now, if linkScp is null, that's
--- 1665,1671 ----
                      tp = psp->data;
                      cm_ReleaseSCache(tscp);
                      tscp = linkScp;
!                     linkScp = NULL;
                      /* already held
                       * by AssembleLink
                       * now, if linkScp is null, that's
***************
*** 1645,1651 ****
                       */
                      if (tscp == NULL) {
                          tscp = dirScp;
!                         dirScp = 0;
                      }
                  } else {
                      /* not a symlink, we may be done */
--- 1678,1684 ----
                       */
                      if (tscp == NULL) {
                          tscp = dirScp;
!                         dirScp = NULL;
                      }
                  } else {
                      /* not a symlink, we may be done */
***************
*** 1658,1664 ****
                          }
                          if (dirScp) {
                              cm_ReleaseSCache(dirScp);
!                             dirScp = 0;
                          }
                          code = 0;
                          break;
--- 1691,1697 ----
                          }
                          if (dirScp) {
                              cm_ReleaseSCache(dirScp);
!                             dirScp = NULL;
                          }
                          code = 0;
                          break;
***************
*** 1666,1672 ****
                  }
                  if (dirScp) {
                      cm_ReleaseSCache(dirScp);
!                     dirScp = 0;
                  }
              } /* end of a component */
              else 
--- 1699,1705 ----
                  }
                  if (dirScp) {
                      cm_ReleaseSCache(dirScp);
!                     dirScp = NULL;
                  }
              } /* end of a component */
              else 
***************
*** 2281,2292 ****
      lock_ReleaseWrite(&scp->bufCreateLock);
      if (code == 0) {
          lock_ObtainMutex(&scp->mx);
!         scp->flags &= ~(CM_SCACHEFLAG_OVERQUOTA
!                          | CM_SCACHEFLAG_OUTOFSPACE);
          if (scp->mask & (CM_SCACHEMASK_TRUNCPOS
                            | CM_SCACHEMASK_CLIENTMODTIME
                            | CM_SCACHEMASK_LENGTH))
              code = cm_StoreMini(scp, userp, reqp);
          lock_ReleaseMutex(&scp->mx);
      }
      return code;
--- 2314,2330 ----
      lock_ReleaseWrite(&scp->bufCreateLock);
      if (code == 0) {
          lock_ObtainMutex(&scp->mx);
! 
          if (scp->mask & (CM_SCACHEMASK_TRUNCPOS
                            | CM_SCACHEMASK_CLIENTMODTIME
                            | CM_SCACHEMASK_LENGTH))
              code = cm_StoreMini(scp, userp, reqp);
+ 
+         if (scp->flags & (CM_SCACHEFLAG_OVERQUOTA | CM_SCACHEFLAG_OUTOFSPACE)) {
+ 	    code = (scp->flags & CM_SCACHEFLAG_OVERQUOTA) ? CM_ERROR_QUOTA : CM_ERROR_SPACE;
+ 	    scp->flags &= ~(CM_SCACHEFLAG_OVERQUOTA | CM_SCACHEFLAG_OUTOFSPACE);
+ 	}
+ 
          lock_ReleaseMutex(&scp->mx);
      }
      return code;
***************
*** 2690,2696 ****
                  lock_ReleaseMutex(&newDscp->mx);
                  if (code) {
                      /* cleanup first one */
!                     lock_ObtainMutex(&newDscp->mx);
                      cm_SyncOpDone(oldDscp, NULL,
                                     CM_SCACHESYNC_STOREDATA);
                      lock_ReleaseMutex(&oldDscp->mx);
--- 2728,2734 ----
                  lock_ReleaseMutex(&newDscp->mx);
                  if (code) {
                      /* cleanup first one */
!                     lock_ObtainMutex(&oldDscp->mx);
                      cm_SyncOpDone(oldDscp, NULL,
                                     CM_SCACHESYNC_STOREDATA);
                      lock_ReleaseMutex(&oldDscp->mx);
***************
*** 3653,3659 ****
  
              if (scp->fileLocksT == q)
                  scp->fileLocksT = osi_QPrev(q);
!             osi_QRemove(&scp->fileLocksH,q);
  
              if(IS_LOCK_ACCEPTED(fileLock)) {
                  if(fileLock->lockType == LockRead)
--- 3691,3697 ----
  
              if (scp->fileLocksT == q)
                  scp->fileLocksT = osi_QPrev(q);
!             osi_QRemoveHT(&scp->fileLocksH, &scp->fileLocksT, q);
  
              if(IS_LOCK_ACCEPTED(fileLock)) {
                  if(fileLock->lockType == LockRead)
***************
*** 3905,3911 ****
      lock_ObtainWrite(&cm_scacheLock);
      if (scp->fileLocksT == q)
          scp->fileLocksT = osi_QPrev(q);
!     osi_QRemove(&scp->fileLocksH, q);
  
      /*
       * Don't delete it here; let the daemon delete it, to simplify
--- 3943,3949 ----
      lock_ObtainWrite(&cm_scacheLock);
      if (scp->fileLocksT == q)
          scp->fileLocksT = osi_QPrev(q);
!     osi_QRemoveHT(&scp->fileLocksH, &scp->fileLocksT, q);
  
      /*
       * Don't delete it here; let the daemon delete it, to simplify
***************
*** 4513,4519 ****
  	lock_ObtainWrite(&cm_scacheLock);
          if (scp->fileLocksT == &oldFileLock->fileq)
              scp->fileLocksT = osi_QPrev(&oldFileLock->fileq);
!         osi_QRemove(&scp->fileLocksH, &oldFileLock->fileq);
  	lock_ReleaseWrite(&cm_scacheLock);
      } else if (code == 0 && IS_LOCK_WAITLOCK(oldFileLock)) {
          scp->serverLock = newLock;
--- 4551,4557 ----
  	lock_ObtainWrite(&cm_scacheLock);
          if (scp->fileLocksT == &oldFileLock->fileq)
              scp->fileLocksT = osi_QPrev(&oldFileLock->fileq);
!         osi_QRemoveHT(&scp->fileLocksH, &scp->fileLocksT, &oldFileLock->fileq);
  	lock_ReleaseWrite(&cm_scacheLock);
      } else if (code == 0 && IS_LOCK_WAITLOCK(oldFileLock)) {
          scp->serverLock = newLock;
Index: openafs/src/WINNT/afsd/cm_volume.c
diff -c openafs/src/WINNT/afsd/cm_volume.c:1.8.2.6 openafs/src/WINNT/afsd/cm_volume.c:1.8.2.7
*** openafs/src/WINNT/afsd/cm_volume.c:1.8.2.6	Wed Aug 31 20:07:41 2005
--- openafs/src/WINNT/afsd/cm_volume.c	Fri Aug 25 11:25:21 2006
***************
*** 436,442 ****
                          break;
                      }
                  }
!                 osi_panic("Exceeded Max Volumes", __FILE__, __LINE__);
              }
  
              if (volp) {
--- 436,443 ----
                          break;
                      }
                  }
! 		if (!volp)
! 		    osi_panic("Exceeded Max Volumes", __FILE__, __LINE__);
              }
  
              if (volp) {
Index: openafs/src/WINNT/afsd/fs.c
diff -c openafs/src/WINNT/afsd/fs.c:1.16.2.17 openafs/src/WINNT/afsd/fs.c:1.16.2.19
*** openafs/src/WINNT/afsd/fs.c:1.16.2.17	Sun Oct  2 02:08:56 2005
--- openafs/src/WINNT/afsd/fs.c	Tue Sep  5 19:53:12 2006
***************
*** 23,30 ****
--- 23,32 ----
  
  #include <osi.h>
  #include <afsint.h>
+ #include <afs/cellconfig.h>
  #include <afs/ptserver.h>
  #include <afs/ptuser.h>
+ #include <afs/volser.h>
  #include <WINNT\afsreg.h>
  
  #include "fs.h"
***************
*** 46,54 ****
  static char space[MAXSIZE];
  static char tspace[1024];
  
- #ifndef WIN32
  static struct ubik_client *uclient;
- #endif /* not WIN32 */
  
  static int GetClientAddrsCmd(struct cmd_syndesc *asp, char *arock);
  static int SetClientAddrsCmd(struct cmd_syndesc *asp, char *arock);
--- 48,54 ----
***************
*** 62,82 ****
  static int CSCPolicyCmd(struct cmd_syndesc *asp, char *arock);
  static int MiniDumpCmd(struct cmd_syndesc *asp, char *arock);
  
- extern afs_int32 VL_GetEntryByNameO();
- 
  static char pn[] = "fs";
  static int rxInitDone = 0;
  
- struct afsconf_cell {
-     char name[MAXCELLCHARS];
-     short numServers;
-     short flags;
-     struct sockaddr_in hostAddr[MAXCELLHOSTS];
-     char hostName[MAXCELLHOSTS][MAXHOSTCHARS];
-     char *linkedCell;
- };      
- 
- 
  /*
   * Character to use between name and rights in printed representation for
   * DFS ACL's.
--- 62,70 ----
***************
*** 1475,1480 ****
--- 1463,1469 ----
              *(input++) = '\0';
  	code = pioctl(ti->data,VIOCSETVOLSTAT, &blob, 1);
  	if (code) {
+ 	    Die(errno, ti->data);
  	    error = 1;
  	}
      }
***************
*** 1851,1859 ****
  #endif
      char path[1024] = "";
      struct afsconf_cell info;
- #ifndef WIN32
      struct vldbentry vldbEntry;
- #endif
      struct ViceIoctl blob;
      char * parent;
  
--- 1840,1846 ----
***************
*** 1933,1939 ****
      if (code) {
  	return 1;
      }
- #ifndef WIN32
      if (!(as->parms[4].items)) {
        /* not fast, check which cell the mountpoint is being created in */
        code = 0;
--- 1920,1925 ----
***************
*** 1942,1955 ****
  	code = VLDBInit(1, &info);
        if (code == 0) {
  	  /* make the check.  Don't complain if there are problems with init */
! 	  code = ubik_Call(VL_GetEntryByNameO, uclient, 0, volName, &vldbEntry);
  	  if (code == VL_NOENT) {
  	      fprintf(stderr,"%s: warning, volume %s does not exist in cell %s.\n",
  		      pn, volName, cellName ? cellName : space);
  	  }
        }
      }
- #endif /* not WIN32 */
  
      if (as->parms[3].items)	/* if -rw specified */
  	strcpy(space, "%");
--- 1928,1940 ----
  	code = VLDBInit(1, &info);
        if (code == 0) {
  	  /* make the check.  Don't complain if there are problems with init */
! 	  code = ubik_VL_GetEntryByNameO(uclient, 0, volName, &vldbEntry);
  	  if (code == VL_NOENT) {
  	      fprintf(stderr,"%s: warning, volume %s does not exist in cell %s.\n",
  		      pn, volName, cellName ? cellName : space);
  	  }
        }
      }
  
      if (as->parms[3].items)	/* if -rw specified */
  	strcpy(space, "%");
***************
*** 2968,2980 ****
      strcpy(infop->name, cellNamep);
      return 0;
  }
! 
! static int
! VLDBInit(int noAuthFlag, struct afsconf_cell *infop)
! {
!     return 0;
! }
! #else /* not WIN32 */
  static int
  GetCellName(char *cellName, struct afsconf_cell *info)
  {
--- 2953,2959 ----
      strcpy(infop->name, cellNamep);
      return 0;
  }
! #else
  static int
  GetCellName(char *cellName, struct afsconf_cell *info)
  {
***************
*** 2998,3004 ****
  
      return 0;
  }
! 
  
  static int
  VLDBInit(int noAuthFlag, struct afsconf_cell *info)
--- 2977,2983 ----
  
      return 0;
  }
! #endif /* not WIN32 */
  
  static int
  VLDBInit(int noAuthFlag, struct afsconf_cell *info)
***************
*** 3013,3019 ****
      rxInitDone = 1;
      return code;
  }
- #endif /* not WIN32 */
  
  static struct ViceIoctl gblob;
  static int debug = 0;
--- 2992,2997 ----
***************
*** 4560,4569 ****
  
      code = cmd_Dispatch(argc, argv);
  
- #ifndef WIN32
      if (rxInitDone) 
          rx_Finalize();
- #endif /* not WIN32 */
      
      return code;
  }
--- 4538,4545 ----
Index: openafs/src/WINNT/afsd/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.55.2.51 openafs/src/WINNT/afsd/smb.c:1.55.2.62
*** openafs/src/WINNT/afsd/smb.c:1.55.2.51	Mon Apr 10 13:56:30 2006
--- openafs/src/WINNT/afsd/smb.c	Thu Aug  3 19:29:43 2006
***************
*** 143,149 ****
  int smb_useV3;		/* try to negotiate V3 */
  
  #ifndef DJGPP
! static showErrors = 1;
  /* MessageBox or something like it */
  int (_stdcall *smb_MBfunc)(HWND, LPCTSTR, LPCTSTR, UINT) = NULL;
  #endif /* DJGPP */
--- 143,149 ----
  int smb_useV3;		/* try to negotiate V3 */
  
  #ifndef DJGPP
! static showErrors = 0;
  /* MessageBox or something like it */
  int (_stdcall *smb_MBfunc)(HWND, LPCTSTR, LPCTSTR, UINT) = NULL;
  #endif /* DJGPP */
***************
*** 170,175 ****
--- 170,177 ----
  
  smb_waitingLockRequest_t *smb_allWaitingLocks;
  
+ DWORD smb_TlsRequestSlot = -1;
+ 
  /* forward decl */
  void smb_DispatchPacket(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp,
  			NCB *ncbp, raw_write_cont_t *rwcp);
***************
*** 204,209 ****
--- 206,244 ----
  /* Faux server GUID. This is never checked. */
  GUID smb_ServerGUID = { 0x40015cb8, 0x058a, 0x44fc, { 0xae, 0x7e, 0xbb, 0x29, 0x52, 0xee, 0x7e, 0xff }};
  
+ void smb_ResetServerPriority()
+ {
+     void * p = TlsGetValue(smb_TlsRequestSlot);
+     if (p) {
+ 	free(p);
+ 	TlsSetValue(smb_TlsRequestSlot, NULL);
+ 	SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_NORMAL);
+     }
+ }
+ 
+ void smb_SetRequestStartTime()
+ {
+     time_t * tp = malloc(sizeof(time_t));
+     if (tp) {
+ 	*tp = osi_Time();
+ 
+ 	if (!TlsSetValue(smb_TlsRequestSlot, tp))
+ 	    free(tp);
+     }
+ }
+ 
+ void smb_UpdateServerPriority()
+ {
+     time_t *tp = TlsGetValue(smb_TlsRequestSlot);
+ 
+     if (tp) {
+ 	time_t now = osi_Time();
+ 
+ 	/* Give one priority boost for each 15 seconds */
+ 	SetThreadPriority(GetCurrentThread(), (now - *tp) / 15);
+     }
+ }
+ 
  char * myCrt_Dispatch(int i)
  {
      switch (i)
***************
*** 809,815 ****
  	    osi_panic("afsd: invalid smb_vc_t detected in smb_allVCsp", 
  		       __FILE__, __LINE__);
  
!         if (lsn == vcp->lsn && lana == vcp->lana) {
              smb_HoldVCNoLock(vcp);
              break;
          }
--- 844,851 ----
  	    osi_panic("afsd: invalid smb_vc_t detected in smb_allVCsp", 
  		       __FILE__, __LINE__);
  
!         if (lsn == vcp->lsn && lana == vcp->lana &&
! 	    !(vcp->flags & SMB_VCFLAG_ALREADYDEAD)) {
              smb_HoldVCNoLock(vcp);
              break;
          }
***************
*** 966,971 ****
--- 1002,1016 ----
      unsigned short uid;
      smb_vc_t **vcpp;
  
+ 
+     lock_ObtainMutex(&vcp->mx);
+     if (vcp->flags & SMB_VCFLAG_CLEAN_IN_PROGRESS) {
+ 	lock_ReleaseMutex(&vcp->mx);
+ 	osi_Log1(smb_logp, "Clean of dead vcp 0x%x in progress", vcp);
+ 	return;
+     }
+     vcp->flags |= SMB_VCFLAG_CLEAN_IN_PROGRESS;
+     lock_ReleaseMutex(&vcp->mx);
      osi_Log1(smb_logp, "Cleaning up dead vcp 0x%x", vcp);
  
      lock_ObtainWrite(&smb_rctLock);
***************
*** 1407,1415 ****
      smb_vc_t *vcp = NULL;
      smb_ioctl_t *ioctlp;
  
      lock_ObtainWrite(&smb_rctLock);
      osi_assert(fidp->refCount-- > 0);
-     lock_ObtainMutex(&fidp->mx);
      if (fidp->refCount == 0 && (fidp->delete)) {
  	vcp = fidp->vcp;
  	fidp->vcp = NULL;
--- 1452,1460 ----
      smb_vc_t *vcp = NULL;
      smb_ioctl_t *ioctlp;
  
+     lock_ObtainMutex(&fidp->mx);
      lock_ObtainWrite(&smb_rctLock);
      osi_assert(fidp->refCount-- > 0);
      if (fidp->refCount == 0 && (fidp->delete)) {
  	vcp = fidp->vcp;
  	fidp->vcp = NULL;
***************
*** 2501,2512 ****
  		  vcp, vcp->usersp);
  
  	lock_ObtainMutex(&vcp->mx);
! 	vcp->flags |= SMB_VCFLAG_ALREADYDEAD;
! 	lock_ReleaseMutex(&vcp->mx);
! 	lock_ObtainWrite(&smb_globalLock);
! 	dead_sessions[vcp->session] = TRUE;
! 	lock_ReleaseWrite(&smb_globalLock);
! 	smb_CleanupDeadVC(vcp);
      }
  
      if (localNCB)
--- 2546,2563 ----
  		  vcp, vcp->usersp);
  
  	lock_ObtainMutex(&vcp->mx);
! 	if (!(vcp->flags & SMB_VCFLAG_ALREADYDEAD)) {
! 	    osi_Log2(smb_logp, "marking dead vcp 0x%x, user struct 0x%x",
! 		      vcp, vcp->usersp);
! 	    vcp->flags |= SMB_VCFLAG_ALREADYDEAD;
! 	    lock_ReleaseMutex(&vcp->mx);
! 	    lock_ObtainWrite(&smb_globalLock);
! 	    dead_sessions[vcp->session] = TRUE;
! 	    lock_ReleaseWrite(&smb_globalLock);
! 	    smb_CleanupDeadVC(vcp);
! 	} else {
! 	    lock_ReleaseMutex(&vcp->mx);
! 	}
      }
  
      if (localNCB)
***************
*** 4710,4716 ****
       * in a readonly volume doesn't mean it shojuld be marked as RO 
       */
      if (newScp->fileType == CM_SCACHETYPE_DIRECTORY ||
!         newScp->fileType == CM_SCACHETYPE_MOUNTPOINT)
          attrs = SMB_ATTR_DIRECTORY;
      else
          attrs = 0;
--- 4761,4768 ----
       * in a readonly volume doesn't mean it shojuld be marked as RO 
       */
      if (newScp->fileType == CM_SCACHETYPE_DIRECTORY ||
!         newScp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
! 	newScp->fileType == CM_SCACHETYPE_INVALID)
          attrs = SMB_ATTR_DIRECTORY;
      else
          attrs = 0;
***************
*** 5422,5428 ****
      /* now create the hardlink */
      osi_Log1(smb_logp,"  Attempting to create new link [%s]", osi_LogSaveString(smb_logp, newLastNamep));
      code = cm_Link(newDscp, newLastNamep, sscp, 0, userp, &req);
!     osi_Log1(smb_logp,"  Link returns %d", code);
  
      /* Handle Change Notification */
      if (code == 0) {
--- 5474,5480 ----
      /* now create the hardlink */
      osi_Log1(smb_logp,"  Attempting to create new link [%s]", osi_LogSaveString(smb_logp, newLastNamep));
      code = cm_Link(newDscp, newLastNamep, sscp, 0, userp, &req);
!     osi_Log1(smb_logp,"  Link returns 0x%x", code);
  
      /* Handle Change Notification */
      if (code == 0) {
***************
*** 5629,5639 ****
      userp = smb_GetUser(vcp, inp);
  
      lock_ObtainMutex(&fidp->mx);
!     if (fidp->flags & SMB_FID_OPENWRITE)
!         code = cm_FSync(fidp->scp, userp, &req);
!     else 
          code = 0;
!     lock_ReleaseMutex(&fidp->mx);
          
      smb_ReleaseFID(fidp);
          
--- 5681,5696 ----
      userp = smb_GetUser(vcp, inp);
  
      lock_ObtainMutex(&fidp->mx);
!     if (fidp->flags & SMB_FID_OPENWRITE) {
! 	cm_scache_t * scp = fidp->scp;
! 	cm_HoldSCache(scp);
! 	lock_ReleaseMutex(&fidp->mx);
!         code = cm_FSync(scp, userp, &req);
! 	cm_ReleaseSCache(scp);
!     } else {
          code = 0;
! 	lock_ReleaseMutex(&fidp->mx);
!     }
          
      smb_ReleaseFID(fidp);
          
***************
*** 5695,5700 ****
--- 5752,5758 ----
      cm_req_t req;
      cm_scache_t *dscp = fidp->NTopen_dscp;
      char *pathp = fidp->NTopen_pathp;
+     cm_scache_t * scp;
  
      osi_Log3(smb_logp, "smb_CloseFID Closing fidp 0x%x (fid=%d vcp=0x%x)",
               fidp, fidp->fid, vcp);
***************
*** 5731,5763 ****
          lock_ObtainMutex(&fidp->mx);
      }
  
      /* watch for ioctl closes, and read-only opens */
!     if (fidp->scp != NULL &&
          (fidp->flags & (SMB_FID_OPENWRITE | SMB_FID_DELONCLOSE))
           == SMB_FID_OPENWRITE) {
          if (dosTime != 0 && dosTime != -1) {
!             fidp->scp->mask |= CM_SCACHEMASK_CLIENTMODTIME;
              /* This fixes defect 10958 */
              CompensateForSmbClientLastWriteTimeBugs(&dosTime);
              smb_UnixTimeFromDosUTime(&fidp->scp->clientModTime, dosTime);
          }
!         code = cm_FSync(fidp->scp, userp, &req);
      }
      else 
          code = 0;
  
      /* unlock any pending locks */
!     if (!(fidp->flags & SMB_FID_IOCTL) && fidp->scp &&
!         fidp->scp->fileType == CM_SCACHETYPE_FILE) {
          cm_key_t key;
-         cm_scache_t * scp;
          long tcode;
  
!         /* CM_UNLOCK_BY_FID doesn't look at the process ID.  We pass
             in zero. */
          key = cm_GenerateKey(vcp->vcID, 0, fidp->fid);
-         scp = fidp->scp;
-         cm_HoldSCache(scp);
          lock_ObtainMutex(&scp->mx);
  
          tcode = cm_SyncOp(scp, NULL, userp, &req, 0,
--- 5789,5826 ----
          lock_ObtainMutex(&fidp->mx);
      }
  
+     scp = fidp->scp;
+     if (scp)
+ 	cm_HoldSCache(scp);
+ 
      /* watch for ioctl closes, and read-only opens */
!     if (scp != NULL &&
          (fidp->flags & (SMB_FID_OPENWRITE | SMB_FID_DELONCLOSE))
           == SMB_FID_OPENWRITE) {
          if (dosTime != 0 && dosTime != -1) {
!             scp->mask |= CM_SCACHEMASK_CLIENTMODTIME;
              /* This fixes defect 10958 */
              CompensateForSmbClientLastWriteTimeBugs(&dosTime);
              smb_UnixTimeFromDosUTime(&fidp->scp->clientModTime, dosTime);
          }
! 	lock_ReleaseMutex(&fidp->mx);
!         code = cm_FSync(scp, userp, &req);
! 	lock_ObtainMutex(&fidp->mx);
      }
      else 
          code = 0;
  
      /* unlock any pending locks */
!     if (!(fidp->flags & SMB_FID_IOCTL) && scp &&
!         scp->fileType == CM_SCACHETYPE_FILE) {
          cm_key_t key;
          long tcode;
  
! 	lock_ReleaseMutex(&fidp->mx);
! 
! 	/* CM_UNLOCK_BY_FID doesn't look at the process ID.  We pass
             in zero. */
          key = cm_GenerateKey(vcp->vcID, 0, fidp->fid);
          lock_ObtainMutex(&scp->mx);
  
          tcode = cm_SyncOp(scp, NULL, userp, &req, 0,
***************
*** 5778,5791 ****
      post_syncopdone:
  
          lock_ReleaseMutex(&scp->mx);
!         cm_ReleaseSCache(scp);
      }
  
      if (fidp->flags & SMB_FID_DELONCLOSE) {
          char *fullPathp;
  
!         smb_FullName(dscp, fidp->scp, pathp, &fullPathp, userp, &req);
!         if (fidp->scp->fileType == CM_SCACHETYPE_DIRECTORY) {
              code = cm_RemoveDir(dscp, fullPathp, userp, &req);
              if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
                  smb_NotifyChange(FILE_ACTION_REMOVED,
--- 5841,5855 ----
      post_syncopdone:
  
          lock_ReleaseMutex(&scp->mx);
! 	lock_ObtainMutex(&fidp->mx);
      }
  
      if (fidp->flags & SMB_FID_DELONCLOSE) {
          char *fullPathp;
  
! 	lock_ReleaseMutex(&fidp->mx);
!         smb_FullName(dscp, scp, pathp, &fullPathp, userp, &req);
!         if (scp->fileType == CM_SCACHETYPE_DIRECTORY) {
              code = cm_RemoveDir(dscp, fullPathp, userp, &req);
              if (code == 0 && (dscp->flags & CM_SCACHEFLAG_ANYWATCH))
                  smb_NotifyChange(FILE_ACTION_REMOVED,
***************
*** 5799,5804 ****
--- 5863,5869 ----
                                   dscp, fullPathp, NULL, TRUE);
          }
          free(fullPathp);
+ 	lock_ObtainMutex(&fidp->mx);
  	fidp->flags &= ~SMB_FID_DELONCLOSE;
      }
  
***************
*** 5816,5821 ****
--- 5881,5889 ----
      if (dscp)
  	cm_ReleaseSCache(dscp);
  
+     if (scp)
+ 	cm_ReleaseSCache(scp);
+ 
      if (pathp)
  	free(pathp);
  
***************
*** 5892,5897 ****
--- 5960,5966 ----
          if (fidp->curr_chunk == fidp->prev_chunk + 1)
              sequential = 1;
      }
+     lock_ReleaseMutex(&fidp->mx);
  
      /* start by looking up the file's end */
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
***************
*** 5994,6000 ****
  
    done:
      lock_ReleaseMutex(&scp->mx);
-     lock_ReleaseMutex(&fidp->mx);
      if (bufferp) 
          buf_Release(bufferp);
  
--- 6063,6068 ----
***************
*** 6044,6052 ****
      offset = *offsetp;
  
      lock_ObtainMutex(&fidp->mx);
      scp = fidp->scp;
!     lock_ObtainMutex(&scp->mx);
  
      /* start by looking up the file's end */
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
                        CM_SCACHESYNC_NEEDCALLBACK
--- 6112,6131 ----
      offset = *offsetp;
  
      lock_ObtainMutex(&fidp->mx);
+     /* make sure we have a writable FD */
+     if (!(fidp->flags & SMB_FID_OPENWRITE)) {
+ 	osi_Log2(smb_logp, "smb_WriteData fid %d not OPENWRITE flags 0x%x",
+ 		  fidp->fid, fidp->flags);
+ 	lock_ReleaseMutex(&fidp->mx);
+         code = CM_ERROR_BADFDOP;
+         goto done;
+     }
+     
      scp = fidp->scp;
!     cm_HoldSCache(scp);
!     lock_ReleaseMutex(&fidp->mx);
  
+     lock_ObtainMutex(&scp->mx);
      /* start by looking up the file's end */
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
                        CM_SCACHESYNC_NEEDCALLBACK
***************
*** 6055,6067 ****
      if (code) 
          goto done;
          
-     /* make sure we have a writable FD */
-     if (!(fidp->flags & SMB_FID_OPENWRITE)) {
- 	lock_ReleaseMutex(&fidp->mx);
-         code = CM_ERROR_BADFDOP;
-         goto done;
-     }
- 
      /* now we have the entry locked, look up the length */
      fileLength = scp->length;
      minLength = fileLength;
--- 6134,6139 ----
***************
*** 6228,6233 ****
--- 6300,6306 ----
          buf_Release(bufferp);
      }
  
+     lock_ObtainMutex(&fidp->mx);
      if (code == 0 && filter != 0 && (fidp->flags & SMB_FID_NTOPEN)
           && (fidp->NTopen_dscp->flags & CM_SCACHEFLAG_ANYWATCH)) {
          smb_NotifyChange(FILE_ACTION_MODIFIED, filter,
***************
*** 6242,6255 ****
          osi_Log1(smb_logp, "smb_WriteData fid %d calling cm_SyncOp ASYNCSTORE",
                    fidp->fid);
          code2 = cm_SyncOp(scp, NULL, userp, &req, 0, CM_SCACHESYNC_ASYNCSTORE);
!         osi_Log2(smb_logp, "smb_WriteData fid %d calling cm_SyncOp ASYNCSTORE returns %d",
!                   fidp->fid,code2);
          lock_ReleaseMutex(&scp->mx);
          cm_QueueBKGRequest(scp, cm_BkgStore, writeBackOffset.LowPart,
                              writeBackOffset.HighPart, cm_chunkSize, 0, userp);
      }
  
!     osi_Log3(smb_logp, "smb_WriteData fid %d returns %d written %d",
                fidp->fid, code, *writtenp);
      return code;
  }
--- 6315,6330 ----
          osi_Log1(smb_logp, "smb_WriteData fid %d calling cm_SyncOp ASYNCSTORE",
                    fidp->fid);
          code2 = cm_SyncOp(scp, NULL, userp, &req, 0, CM_SCACHESYNC_ASYNCSTORE);
!         osi_Log2(smb_logp, "smb_WriteData fid %d calling cm_SyncOp ASYNCSTORE returns 0x%x",
!                   fidp->fid, code2);
          lock_ReleaseMutex(&scp->mx);
          cm_QueueBKGRequest(scp, cm_BkgStore, writeBackOffset.LowPart,
                              writeBackOffset.HighPart, cm_chunkSize, 0, userp);
      }
  
!     cm_ReleaseSCache(scp);
! 
!     osi_Log3(smb_logp, "smb_WriteData fid %d returns 0x%x written %d bytes",
                fidp->fid, code, *writtenp);
      return code;
  }
***************
*** 7032,7037 ****
--- 7107,7114 ----
  
      lock_ObtainMutex(&fidp->mx);
      scp = fidp->scp;
+     cm_HoldSCache(scp);
+     lock_ReleaseMutex(&fidp->mx);
      lock_ObtainMutex(&scp->mx);
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
                       CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
***************
*** 7050,7057 ****
          smb_SetSMBDataLength(outp, 0);
      }
      lock_ReleaseMutex(&scp->mx);
-     lock_ReleaseMutex(&fidp->mx);
      smb_ReleaseFID(fidp);
      cm_ReleaseUser(userp);
      return code;
  }
--- 7127,7134 ----
          smb_SetSMBDataLength(outp, 0);
      }
      lock_ReleaseMutex(&scp->mx);
      smb_ReleaseFID(fidp);
+     cm_ReleaseSCache(scp);
      cm_ReleaseUser(userp);
      return code;
  }
***************
*** 7556,7561 ****
--- 7633,7641 ----
  	    smb_ReleaseVC(vcp);
  	    vcp = NULL;
  	}
+ 
+ 	smb_ResetServerPriority();
+ 
          code = thrd_WaitForMultipleObjects_Event(numNCBs, NCBreturns[myIdx],
                                                   FALSE, INFINITE);
  
***************
*** 7839,7844 ****
--- 7919,7926 ----
           * then we are in big trouble. This means either :
           *   a) we have the wrong NCB.
           *   b) Netbios screwed up the call.
+ 	 *   c) The VC was already marked dead before we were able to
+ 	 *      process the call
           * Obviously this implies that 
           *   ( LSNs[idx_session] != ncbp->ncb_lsn ||
           *   lanas[idx_session] != ncbp->ncb_lana_num )
***************
*** 7851,7857 ****
              char *ptbuf[1];
  
              sprintf(buf,
!                      "Bad vcp!! : "
                       "LSNs[idx_session]=[%d],"
                       "lanas[idx_session]=[%d],"
                       "ncbp->ncb_lsn=[%d],"
--- 7933,7939 ----
              char *ptbuf[1];
  
              sprintf(buf,
!                      "vcp does not exist!! : "
                       "LSNs[idx_session]=[%d],"
                       "lanas[idx_session]=[%d],"
                       "ncbp->ncb_lsn=[%d],"
***************
*** 7870,7876 ****
              }
  
              /* Also log in the trace log. */
!             osi_Log4(smb_logp, "Server: BAD VCP!"
                        "LSNs[idx_session]=[%d],"
                        "lanas[idx_session]=[%d],"
                        "ncbp->ncb_lsn=[%d],"
--- 7952,7958 ----
              }
  
              /* Also log in the trace log. */
!             osi_Log4(smb_logp, "Server: VCP does not exist!"
                        "LSNs[idx_session]=[%d],"
                        "lanas[idx_session]=[%d],"
                        "ncbp->ncb_lsn=[%d],"
***************
*** 7886,7891 ****
--- 7968,7975 ----
              continue;
          }
  
+ 	smb_SetRequestStartTime();
+ 
          vcp->errorCount = 0;
          bufp = (struct smb_packet *) ncbp->ncb_buffer;
  #ifdef DJGPP
***************
*** 8107,8114 ****
              if (showErrors)
                  code = (*smb_MBfunc)(NULL, tbuffer, "AFS Client Service: Fatal Error",
                                        MB_OK|MB_SERVICE_NOTIFICATION);
!             osi_assert(tbuffer);
!             ExitThread(1);
  #else
              fprintf(stderr, "NCBLISTEN lana=%d failed with code %d\n",
                       ncbp->ncb_lana_num, code);
--- 8191,8197 ----
              if (showErrors)
                  code = (*smb_MBfunc)(NULL, tbuffer, "AFS Client Service: Fatal Error",
                                        MB_OK|MB_SERVICE_NOTIFICATION);
! 	    osi_panic(tbuffer, __FILE__, __LINE__);
  #else
              fprintf(stderr, "NCBLISTEN lana=%d failed with code %d\n",
                       ncbp->ncb_lana_num, code);
***************
*** 8267,8275 ****
              smb_FreePacket(outp);
  
  	    lock_ObtainMutex(&vcp->mx);
! 	    vcp->flags |= SMB_VCFLAG_ALREADYDEAD;
! 	    lock_ReleaseMutex(&vcp->mx);
! 	    smb_CleanupDeadVC(vcp);
          } else {
              /* assert that we do not exceed the maximum number of sessions or NCBs.
               * we should probably want to wait for a session to be freed in case
--- 8350,8367 ----
              smb_FreePacket(outp);
  
  	    lock_ObtainMutex(&vcp->mx);
! 	    if (!(vcp->flags & SMB_VCFLAG_ALREADYDEAD)) {
! 		osi_Log2(smb_logp, "marking dead vcp 0x%x, user struct 0x%x",
! 			  vcp, vcp->usersp);
! 		vcp->flags |= SMB_VCFLAG_ALREADYDEAD;
! 		lock_ReleaseMutex(&vcp->mx);
! 		lock_ObtainWrite(&smb_globalLock);
! 		dead_sessions[vcp->session] = TRUE;
! 		lock_ReleaseWrite(&smb_globalLock);
! 		smb_CleanupDeadVC(vcp);
! 	    } else {
! 		lock_ReleaseMutex(&vcp->mx);
! 	    }
          } else {
              /* assert that we do not exceed the maximum number of sessions or NCBs.
               * we should probably want to wait for a session to be freed in case
***************
*** 8508,8513 ****
--- 8600,8607 ----
      EVENT_HANDLE retHandle;
      char eventName[MAX_PATH];
  
+     smb_TlsRequestSlot = TlsAlloc();
+ 
  #ifndef DJGPP
      smb_MBfunc = aMBfunc;
  #endif /* DJGPP */
***************
*** 9031,9036 ****
--- 9125,9132 ----
          }
      }
      lock_ReleaseWrite(&smb_rctLock);
+ 
+     TlsFree(smb_TlsRequestSlot);
  }
  
  /* Get the UNC \\<servername>\<sharename> prefix. */
Index: openafs/src/WINNT/afsd/smb.h
diff -c openafs/src/WINNT/afsd/smb.h:1.14.2.22 openafs/src/WINNT/afsd/smb.h:1.14.2.24
*** openafs/src/WINNT/afsd/smb.h:1.14.2.22	Sun Apr  9 00:56:39 2006
--- openafs/src/WINNT/afsd/smb.h	Fri May 26 02:38:06 2006
***************
*** 224,229 ****
--- 224,230 ----
  #define SMB_VCFLAG_ALREADYDEAD	0x20	/* do not get tokens from this vc */
  #define SMB_VCFLAG_SESSX_RCVD	0x40	/* we received at least one session setups on this vc */
  #define SMB_VCFLAG_AUTH_IN_PROGRESS 0x80 /* a SMB NT extended authentication is in progress */
+ #define SMB_VCFLAG_CLEAN_IN_PROGRESS 0x100
  
  /* one per user session */
  typedef struct smb_user {
***************
*** 695,700 ****
--- 696,705 ----
  
  extern DWORD smb_ServerExceptionFilter(void);
  
+ extern void smb_UpdateServerPriority(void);
+ extern void smb_SetRequestStartTime(void);
+ extern void smb_ResetServerPriority(void);
+ 
  /* include other include files */
  #include "smb3.h"
  #include "smb_ioctl.h"
Index: openafs/src/WINNT/afsd/smb3.c
diff -c openafs/src/WINNT/afsd/smb3.c:1.42.2.44 openafs/src/WINNT/afsd/smb3.c:1.42.2.53
*** openafs/src/WINNT/afsd/smb3.c:1.42.2.44	Fri Feb  3 18:05:28 2006
--- openafs/src/WINNT/afsd/smb3.c	Wed Aug 30 01:45:12 2006
***************
*** 879,890 ****
          lock_ReleaseMutex(&unp->mx);
  
          uidp = smb_FindUID(vcp, newUid, SMB_FLAG_CREATE);
!         lock_ObtainMutex(&uidp->mx);
!         uidp->unp = unp;
!         osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d],TicketKTCName[%s]",(int)vcp,vcp->lana,vcp->lsn,newUid,osi_LogSaveString(smb_logp, usern));
!         osi_Log4(smb_logp,"smb_ReceiveV3SessionSetupX MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d]",vcp,vcp->lana,vcp->lsn,newUid);
!         lock_ReleaseMutex(&uidp->mx);
!         smb_ReleaseUID(uidp);
      }
  
      /* Return UID to the client */
--- 879,892 ----
          lock_ReleaseMutex(&unp->mx);
  
          uidp = smb_FindUID(vcp, newUid, SMB_FLAG_CREATE);
! 	if (uidp) {
! 	    lock_ObtainMutex(&uidp->mx);
! 	    uidp->unp = unp;
! 	    osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d],TicketKTCName[%s]",(int)vcp,vcp->lana,vcp->lsn,newUid,osi_LogSaveString(smb_logp, usern));
! 	    osi_Log4(smb_logp,"smb_ReceiveV3SessionSetupX MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d]",vcp,vcp->lana,vcp->lsn,newUid);
! 	    lock_ReleaseMutex(&uidp->mx);
! 	    smb_ReleaseUID(uidp);
! 	}
      }
  
      /* Return UID to the client */
***************
*** 1029,1034 ****
--- 1031,1038 ----
      tidp = smb_FindTID(vcp, newTid, SMB_FLAG_CREATE);
  
      if (!ipc) {
+ 	if (!strcmp(shareName, "*."))
+ 	    strcpy(shareName, "all");
          uidp = smb_FindUID(vcp, ((smb_t *)inp)->uid, 0);
  	shareFound = smb_FindShare(vcp, uidp, shareName, &sharePath);
          if (uidp)
***************
*** 1599,1605 ****
          for (i=0; i < nRegShares && cshare < nSharesRet; i++) {
              len = sizeof(thisShare);
              rv = RegEnumValue(hkSubmount, i, thisShare, &len, NULL, NULL, NULL, NULL);
!             if (rv == ERROR_SUCCESS && strlen(thisShare) && (!allSubmount || stricmp(thisShare,"all"))) {
                  strncpy(shares[cshare].shi1_netname, thisShare, sizeof(shares->shi1_netname)-1);
                  shares[cshare].shi1_netname[sizeof(shares->shi1_netname)-1] = 0; /* unfortunate truncation */
                  shares[cshare].shi1_remark = cstrp - outp->datap;
--- 1603,1610 ----
          for (i=0; i < nRegShares && cshare < nSharesRet; i++) {
              len = sizeof(thisShare);
              rv = RegEnumValue(hkSubmount, i, thisShare, &len, NULL, NULL, NULL, NULL);
!             if (rv == ERROR_SUCCESS && strlen(thisShare) && 
! 		(!allSubmount || (stricmp(thisShare,"all") && strcmp(thisShare,"*.")))) {
                  strncpy(shares[cshare].shi1_netname, thisShare, sizeof(shares->shi1_netname)-1);
                  shares[cshare].shi1_netname[sizeof(shares->shi1_netname)-1] = 0; /* unfortunate truncation */
                  shares[cshare].shi1_remark = cstrp - outp->datap;
***************
*** 1685,1691 ****
  
      outp = smb_GetTran2ResponsePacket(vcp, p, op, totalParam, totalData);
  
!     if(!stricmp(shareName,"all")) {
          rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, 0,
                            KEY_QUERY_VALUE, &hkParam);
          if (rv == ERROR_SUCCESS) {
--- 1690,1696 ----
  
      outp = smb_GetTran2ResponsePacket(vcp, p, op, totalParam, totalData);
  
!     if(!stricmp(shareName,"all") || !strcmp(shareName,"*.")) {
          rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY, 0,
                            KEY_QUERY_VALUE, &hkParam);
          if (rv == ERROR_SUCCESS) {
***************
*** 2456,2468 ****
      switch (p->parmsp[0]) {
      case 1: responseSize = sizeof(qi.u.allocInfo); break;
      case 2: responseSize = sizeof(qi.u.volumeInfo); break;
      case 0x102: responseSize = sizeof(qi.u.FSvolumeInfo); break;
      case 0x103: responseSize = sizeof(qi.u.FSsizeInfo); break;
      case 0x104: responseSize = sizeof(qi.u.FSdeviceInfo); break;
      case 0x105: responseSize = sizeof(qi.u.FSattributeInfo); break;
      case 0x200: /* CIFS Unix Info */
      case 0x301: /* Mac FS Info */
!     default: return CM_ERROR_INVAL;
      }
  
      outp = smb_GetTran2ResponsePacket(vcp, p, op, 0, responseSize);
--- 2461,2475 ----
      switch (p->parmsp[0]) {
      case 1: responseSize = sizeof(qi.u.allocInfo); break;
      case 2: responseSize = sizeof(qi.u.volumeInfo); break;
+     	break;
      case 0x102: responseSize = sizeof(qi.u.FSvolumeInfo); break;
      case 0x103: responseSize = sizeof(qi.u.FSsizeInfo); break;
      case 0x104: responseSize = sizeof(qi.u.FSdeviceInfo); break;
      case 0x105: responseSize = sizeof(qi.u.FSattributeInfo); break;
      case 0x200: /* CIFS Unix Info */
      case 0x301: /* Mac FS Info */
!     default: 
! 	return CM_ERROR_INVAL;
      }
  
      outp = smb_GetTran2ResponsePacket(vcp, p, op, 0, responseSize);
***************
*** 2636,2641 ****
--- 2643,2649 ----
      cm_scache_t *scp, *dscp;
      long code = 0;
      char *op;
+     char *pathp;
      char *tidPathp;
      char *lastComp;
      cm_req_t req;
***************
*** 2663,2670 ****
          smb_SendTran2Error(vcp, p, opx, CM_ERROR_INVAL);
          return 0;
      }
      osi_Log2(smb_logp, "T2 QPathInfo type 0x%x path %s", infoLevel,
!               osi_LogSaveString(smb_logp, (char *)(&p->parmsp[3])));
  
      outp = smb_GetTran2ResponsePacket(vcp, p, opx, 2, nbytesRequired);
  
--- 2671,2682 ----
          smb_SendTran2Error(vcp, p, opx, CM_ERROR_INVAL);
          return 0;
      }
+ 
+     pathp = (char *)(&p->parmsp[3]);
+     if (smb_StoreAnsiFilenames)
+ 	OemToChar(pathp,pathp);
      osi_Log2(smb_logp, "T2 QPathInfo type 0x%x path %s", infoLevel,
!               osi_LogSaveString(smb_logp, pathp));
  
      outp = smb_GetTran2ResponsePacket(vcp, p, opx, 2, nbytesRequired);
  
***************
*** 2715,2722 ****
       */
      if (infoLevel == SMB_QUERY_FILE_BASIC_INFO) {
          spacep = cm_GetSpace();
!         smb_StripLastComponent(spacep->data, &lastComp,
!                                 (char *)(&p->parmsp[3]));
  #ifndef SPECIAL_FOLDERS
          /* Make sure that lastComp is not NULL */
          if (lastComp) {
--- 2727,2733 ----
       */
      if (infoLevel == SMB_QUERY_FILE_BASIC_INFO) {
          spacep = cm_GetSpace();
!         smb_StripLastComponent(spacep->data, &lastComp, pathp);
  #ifndef SPECIAL_FOLDERS
          /* Make sure that lastComp is not NULL */
          if (lastComp) {
***************
*** 2761,2767 ****
      }
  
      /* now do namei and stat, and copy out the info */
!     code = cm_NameI(cm_data.rootSCachep, (char *)(&p->parmsp[3]),
                       CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD, userp, tidPathp, &req, &scp);
  
      if (code) {
--- 2772,2778 ----
      }
  
      /* now do namei and stat, and copy out the info */
!     code = cm_NameI(cm_data.rootSCachep, pathp,
                       CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD, userp, tidPathp, &req, &scp);
  
      if (code) {
***************
*** 2796,2802 ****
      op = outp->datap;
      /* for info level 108, figure out short name */
      if (infoLevel == 0x108) {
!         code = cm_GetShortName((char *)(&p->parmsp[3]), userp, &req,
                                  tidPathp, scp->fid.vnode, shortName,
                                  (size_t *) &len);
          if (code) {
--- 2807,2813 ----
      op = outp->datap;
      /* for info level 108, figure out short name */
      if (infoLevel == 0x108) {
!         code = cm_GetShortName(pathp, userp, &req,
                                  tidPathp, scp->fid.vnode, shortName,
                                  (size_t *) &len);
          if (code) {
***************
*** 2833,2842 ****
      else if (infoLevel == SMB_QUERY_FILE_STANDARD_INFO) {
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* alloc size */
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* EOF */
!         *((u_long *)op) = scp->linkCount; op += 4;
!         *op++ = 0;
          *op++ = 0;
-         *op++ = (scp->fileType == CM_SCACHETYPE_DIRECTORY ? 1 : 0);
          *op++ = 0;
      }
      else if (infoLevel == SMB_QUERY_FILE_EA_INFO) {
--- 2844,2855 ----
      else if (infoLevel == SMB_QUERY_FILE_STANDARD_INFO) {
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* alloc size */
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* EOF */
!         *((u_long *)op) = scp->linkCount; op += 4;	/* Link count */
!         *op++ = 0;					/* Delete Pending */
!         *op++ = ((scp->fileType == CM_SCACHETYPE_DIRECTORY || 
! 		  scp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
! 		  scp->fileType == CM_SCACHETYPE_INVALID) ? 1 : 0);
          *op++ = 0;
          *op++ = 0;
      }
      else if (infoLevel == SMB_QUERY_FILE_EA_INFO) {
***************
*** 2877,2882 ****
--- 2890,2896 ----
      unsigned short infoLevel;
      int nbytesRequired;
      unsigned short fid;
+     int delonclose = 0;
      cm_user_t *userp;
      smb_fid_t *fidp;
      cm_scache_t *scp;
***************
*** 2927,2933 ****
--- 2941,2951 ----
      	goto done;
      }   
  
+     lock_ObtainMutex(&fidp->mx);
+     delonclose = fidp->flags & SMB_FID_DELONCLOSE;
      scp = fidp->scp;
+     cm_HoldSCache(scp);
+     lock_ReleaseMutex(&fidp->mx);
      lock_ObtainMutex(&scp->mx);
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
                        CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
***************
*** 2951,2961 ****
      else if (infoLevel == SMB_QUERY_FILE_STANDARD_INFO) {
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* alloc size */
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* EOF */
!         *((u_long *)op) = scp->linkCount; op += 4;
! 	lock_ObtainMutex(&fidp->mx);
!         *op++ = ((fidp->flags & SMB_FID_DELONCLOSE) ? 1 : 0);
! 	lock_ReleaseMutex(&fidp->mx);
!         *op++ = (scp->fileType == CM_SCACHETYPE_DIRECTORY ? 1 : 0);
          *op++ = 0;
          *op++ = 0;
      }
--- 2969,2979 ----
      else if (infoLevel == SMB_QUERY_FILE_STANDARD_INFO) {
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* alloc size */
          *((LARGE_INTEGER *)op) = scp->length; op += 8;	/* EOF */
!         *((u_long *)op) = scp->linkCount; op += 4;	/* Link count */
!         *op++ = (delonclose ? 1 : 0);			/* Delete Pending */
!         *op++ = ((scp->fileType == CM_SCACHETYPE_DIRECTORY || 
! 		  scp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
! 		  scp->fileType == CM_SCACHETYPE_INVALID)? 1 : 0);
          *op++ = 0;
          *op++ = 0;
      }
***************
*** 2966,2975 ****
--- 2984,2997 ----
          unsigned long len;
          char *name;
  
+ 	lock_ReleaseMutex(&scp->mx);
+ 	lock_ObtainMutex(&fidp->mx);
+ 	lock_ObtainMutex(&scp->mx);
          if (fidp->NTopen_wholepathp)
              name = fidp->NTopen_wholepathp;
          else
              name = "\\";	/* probably can't happen */
+ 	lock_ReleaseMutex(&fidp->mx);
          len = strlen(name);
          outp->totalData = (len*2) + 4;	/* this is actually what we want to return */
          *((u_long *)op) = len * 2; op += 4;
***************
*** 2979,2984 ****
--- 3001,3007 ----
      /* send and free the packets */
    done:
      lock_ReleaseMutex(&scp->mx);
+     cm_ReleaseSCache(scp);
      cm_ReleaseUser(userp);
      smb_ReleaseFID(fidp);
      if (code == 0) 
***************
*** 3012,3018 ****
      }
  
      infoLevel = p->parmsp[1];
!     osi_Log2(smb_logp,"ReceiveTran2SetFileInfo type=[%x] fid=[%x]", infoLevel, fid);
      if (infoLevel > 0x104 || infoLevel < 0x101) {
          osi_Log2(smb_logp, "Bad Tran2 op 0x%x infolevel 0x%x",
                    p->opcode, infoLevel);
--- 3035,3041 ----
      }
  
      infoLevel = p->parmsp[1];
!     osi_Log2(smb_logp,"ReceiveTran2SetFileInfo type 0x%x fid %d", infoLevel, fid);
      if (infoLevel > 0x104 || infoLevel < 0x101) {
          osi_Log2(smb_logp, "Bad Tran2 op 0x%x infolevel 0x%x",
                    p->opcode, infoLevel);
***************
*** 3035,3040 ****
--- 3058,3066 ----
          smb_SendTran2Error(vcp, p, op, CM_ERROR_NOACCESS);
          return 0;
      }
+ 
+     scp = fidp->scp;
+     cm_HoldSCache(scp);
      lock_ReleaseMutex(&fidp->mx);
  
      osi_Log1(smb_logp, "T2 SFileInfo type 0x%x", infoLevel);
***************
*** 3051,3058 ****
      	goto done;
      }   
  
-     scp = fidp->scp;
- 
      if (infoLevel == SMB_QUERY_FILE_BASIC_INFO) {
          FILETIME lastMod;
          unsigned int attribute;
--- 3077,3082 ----
***************
*** 3065,3075 ****
          code = cm_SyncOp(scp, NULL, userp, &req, 0,
                            CM_SCACHESYNC_GETSTATUS
                           | CM_SCACHESYNC_NEEDCALLBACK);
          if (code) {
-             lock_ReleaseMutex(&scp->mx);
              goto done;
          }
  
          /* prepare for setattr call */
          attr.mask = 0;
  
--- 3089,3102 ----
          code = cm_SyncOp(scp, NULL, userp, &req, 0,
                            CM_SCACHESYNC_GETSTATUS
                           | CM_SCACHESYNC_NEEDCALLBACK);
+ 	lock_ReleaseMutex(&scp->mx);
          if (code) {
              goto done;
          }
  
+ 	lock_ObtainMutex(&fidp->mx);
+ 	lock_ObtainMutex(&scp->mx);
+ 
          /* prepare for setattr call */
          attr.mask = 0;
  
***************
*** 3082,3090 ****
               lastMod.dwLowDateTime != -1 && lastMod.dwHighDateTime != -1) {
              attr.mask |= CM_ATTRMASK_CLIENTMODTIME;
              smb_UnixTimeFromLargeSearchTime(&attr.clientModTime, &lastMod);
- 	    lock_ObtainMutex(&fidp->mx);
              fidp->flags |= SMB_FID_MTIMESETDONE;
- 	    lock_ReleaseMutex(&fidp->mx);
          }
  		
          attribute = *((u_long *)(p->datap + 32));
--- 3109,3115 ----
***************
*** 3103,3108 ****
--- 3128,3134 ----
              }
          }
          lock_ReleaseMutex(&scp->mx);
+ 	lock_ReleaseMutex(&fidp->mx);
  
          /* call setattr */
          if (attr.mask)
***************
*** 3138,3143 ****
--- 3164,3170 ----
      }       
  
    done:
+     cm_ReleaseSCache(scp);
      cm_ReleaseUser(userp);
      smb_ReleaseFID(fidp);
      if (code == 0) 
***************
*** 3242,3248 ****
          requestFileName[0] == '\\' &&
          !_strnicmp(cm_NetbiosName,&requestFileName[1],nbnLen) &&
          requestFileName[nbnLen+1] == '\\' &&
!         !_strnicmp("all",&requestFileName[nbnLen+2],3)) 
      {
          USHORT * sp;
          struct smb_v2_referral * v2ref;
--- 3269,3276 ----
          requestFileName[0] == '\\' &&
          !_strnicmp(cm_NetbiosName,&requestFileName[1],nbnLen) &&
          requestFileName[nbnLen+1] == '\\' &&
!         (!_strnicmp("all",&requestFileName[nbnLen+2],3) ||
! 	 !_strnicmp("*.",&requestFileName[nbnLen+2],2)))
      {
          USHORT * sp;
          struct smb_v2_referral * v2ref;
***************
*** 3922,3927 ****
--- 3950,3961 ----
      osi_Log3(smb_logp, "...T2 search op %d, id %d, nextCookie 0x%x",
                p->opcode, dsp->cookie, nextCookie);
  
+     if (infoLevel > 0x104) {
+ 	osi_Log1(smb_logp, "Unsupported InfoLevel 0x%x", infoLevel);
+         smb_ReleaseDirSearch(dsp);
+ 	return CM_ERROR_INVAL;
+     }
+ 
      if (infoLevel >= 0x101)
          searchFlags &= ~4;	/* no resume keys */
  
***************
*** 4886,4891 ****
--- 4920,4927 ----
  	smb_ReleaseFID(fidp);
          return CM_ERROR_BADFD;
      }
+     scp = fidp->scp;
+     cm_HoldSCache(scp);
      lock_ReleaseMutex(&fidp->mx);
  
      /* set inp->fid so that later read calls in same msg can find fid */
***************
*** 4893,4899 ****
  
      userp = smb_GetUser(vcp, inp);
  
-     scp = fidp->scp;
  
      lock_ObtainMutex(&scp->mx);
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
--- 4929,4934 ----
***************
*** 5092,5097 ****
--- 5127,5133 ----
  
    doneSync:
      lock_ReleaseMutex(&scp->mx);
+     cm_ReleaseSCache(scp);
      cm_ReleaseUser(userp);
      smb_ReleaseFID(fidp);
  
***************
*** 5123,5139 ****
  	smb_ReleaseFID(fidp);
          return CM_ERROR_BADFD;
      }
      lock_ReleaseMutex(&fidp->mx);
          
      userp = smb_GetUser(vcp, inp);
          
-     scp = fidp->scp;
-         
      /* otherwise, stat the file */
      lock_ObtainMutex(&scp->mx);
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
                       CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
!     if (code) goto done;
  
      /* decode times.  We need a search time, but the response to this
       * call provides the date first, not the time, as returned in the
--- 5159,5176 ----
  	smb_ReleaseFID(fidp);
          return CM_ERROR_BADFD;
      }
+     scp = fidp->scp;
+     cm_HoldSCache(scp);
      lock_ReleaseMutex(&fidp->mx);
          
      userp = smb_GetUser(vcp, inp);
          
      /* otherwise, stat the file */
      lock_ObtainMutex(&scp->mx);
      code = cm_SyncOp(scp, NULL, userp, &req, 0,
                       CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS);
!     if (code)
! 	goto done;
  
      /* decode times.  We need a search time, but the response to this
       * call provides the date first, not the time, as returned in the
***************
*** 5162,5167 ****
--- 5199,5205 ----
  
    done:
      lock_ReleaseMutex(&scp->mx);
+     cm_ReleaseSCache(scp);
      cm_ReleaseUser(userp);
      smb_ReleaseFID(fidp);
      return code;
***************
*** 5194,5205 ****
  	smb_ReleaseFID(fidp);
          return CM_ERROR_BADFD;
      }
      lock_ReleaseMutex(&fidp->mx);
          
      userp = smb_GetUser(vcp, inp);
          
-     scp = fidp->scp;
-         
      /* now prepare to call cm_setattr.  This message only sets various times,
       * and AFS only implements mtime, and we'll set the mtime if that's
       * requested.  The others we'll ignore.
--- 5232,5243 ----
  	smb_ReleaseFID(fidp);
          return CM_ERROR_BADFD;
      }
+     scp = fidp->scp;
+     cm_HoldSCache(scp);
      lock_ReleaseMutex(&fidp->mx);
          
      userp = smb_GetUser(vcp, inp);
          
      /* now prepare to call cm_setattr.  This message only sets various times,
       * and AFS only implements mtime, and we'll set the mtime if that's
       * requested.  The others we'll ignore.
***************
*** 5219,5226 ****
              osi_Log1(smb_logp, "**smb_UnixTimeFromSearchTime failed searchTime=%ld", searchTime);
          }
      }
!     else code = 0;
  
      cm_ReleaseUser(userp);
      smb_ReleaseFID(fidp);
      return code;
--- 5257,5266 ----
              osi_Log1(smb_logp, "**smb_UnixTimeFromSearchTime failed searchTime=%ld", searchTime);
          }
      }
!     else 
! 	code = 0;
  
+     cm_ReleaseSCache(scp);
      cm_ReleaseUser(userp);
      smb_ReleaseFID(fidp);
      return code;
***************
*** 5567,5572 ****
--- 5607,5613 ----
      if (shareAccess & FILE_SHARE_WRITE)
          fidflags |= SMB_FID_SHARE_WRITE;
  
+     osi_Log1(smb_logp, "NTCreateX fidflags 0x%x", fidflags);
      code = 0;
  
      /* For an exclusive create, we want to do a case sensitive match for the last component. */
***************
*** 6094,6100 ****
      smb_SetSMBParm(outp, parmSlot, 0); parmSlot++;	/* filetype */
      smb_SetSMBParm(outp, parmSlot, 0); parmSlot++;	/* dev state */
      smb_SetSMBParmByte(outp, parmSlot,
!                         scp->fileType == CM_SCACHETYPE_DIRECTORY); /* is a dir? */
      lock_ReleaseMutex(&scp->mx);
      smb_SetSMBDataLength(outp, 0);
  
--- 6135,6143 ----
      smb_SetSMBParm(outp, parmSlot, 0); parmSlot++;	/* filetype */
      smb_SetSMBParm(outp, parmSlot, 0); parmSlot++;	/* dev state */
      smb_SetSMBParmByte(outp, parmSlot,
!                         (scp->fileType == CM_SCACHETYPE_DIRECTORY ||
! 			 scp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
! 			 scp->fileType == CM_SCACHETYPE_INVALID) ? 1 : 0); /* is a dir? */
      lock_ReleaseMutex(&scp->mx);
      smb_SetSMBDataLength(outp, 0);
  
***************
*** 6720,6726 ****
          *((LARGE_INTEGER *)outData) = scp->length; outData += 8; /* EOF */
          *((USHORT *)outData) = 0; outData += 2;	/* filetype */
          *((USHORT *)outData) = 0; outData += 2;	/* dev state */
!         *((USHORT *)outData) = (scp->fileType == CM_SCACHETYPE_DIRECTORY);
          outData += 2;	/* is a dir? */
          lock_ReleaseMutex(&scp->mx);
      } else {
--- 6763,6771 ----
          *((LARGE_INTEGER *)outData) = scp->length; outData += 8; /* EOF */
          *((USHORT *)outData) = 0; outData += 2;	/* filetype */
          *((USHORT *)outData) = 0; outData += 2;	/* dev state */
!         *((USHORT *)outData) = ((scp->fileType == CM_SCACHETYPE_DIRECTORY ||
! 				scp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
! 				scp->fileType == CM_SCACHETYPE_INVALID) ? 1 : 0);
          outData += 2;	/* is a dir? */
          lock_ReleaseMutex(&scp->mx);
      } else {
***************
*** 6768,6774 ****
          *((LARGE_INTEGER *)outData) = scp->length; outData += 8; /* EOF */
          *((USHORT *)outData) = 0; outData += 2;	/* filetype */
          *((USHORT *)outData) = 0; outData += 2;	/* dev state */
!         *((USHORT *)outData) = (scp->fileType == CM_SCACHETYPE_DIRECTORY);
          outData += 1;	/* is a dir? */
          memset(outData,0,24); outData += 24; /* Volume ID and file ID */
          *((ULONG *)outData) = 0x001f01ffL; outData += 4; /* Maxmimal access rights */
--- 6813,6821 ----
          *((LARGE_INTEGER *)outData) = scp->length; outData += 8; /* EOF */
          *((USHORT *)outData) = 0; outData += 2;	/* filetype */
          *((USHORT *)outData) = 0; outData += 2;	/* dev state */
!         *((USHORT *)outData) = ((scp->fileType == CM_SCACHETYPE_DIRECTORY ||
! 				scp->fileType == CM_SCACHETYPE_MOUNTPOINT ||
! 				scp->fileType == CM_SCACHETYPE_INVALID) ? 1 : 0);
          outData += 1;	/* is a dir? */
          memset(outData,0,24); outData += 24; /* Volume ID and file ID */
          *((ULONG *)outData) = 0x001f01ffL; outData += 4; /* Maxmimal access rights */
Index: openafs/src/WINNT/afsd/smb3.h
diff -c openafs/src/WINNT/afsd/smb3.h:1.7.2.4 openafs/src/WINNT/afsd/smb3.h:1.7.2.5
*** openafs/src/WINNT/afsd/smb3.h:1.7.2.4	Thu Jan 19 18:08:46 2006
--- openafs/src/WINNT/afsd/smb3.h	Thu Apr 27 11:55:40 2006
***************
*** 44,83 ****
      union {
  #pragma pack(push, 2)
          struct {
!             long FSID;			/* file system ID */
!             long sectorsPerAllocUnit;
!             long totalAllocUnits;		/* on the disk */
!             long availAllocUnits;		/* free blocks */
              unsigned short bytesPerSector;	/* bytes per sector */
          } allocInfo;
  #pragma pack(pop)
          struct {
!             long vsn;	        /* volume serial number */
              char vnCount;	/* count of chars in label, incl null */
              char label[12];	/* pad out with nulls */
          } volumeInfo;
          struct {
!             FILETIME vct;	/* volume creation time */
!             long vsn;	        /* volume serial number */
!             long vnCount;	/* length of volume label in bytes */
!             char res[2];	/* reserved */
!             char label[10];	/* volume label */
          } FSvolumeInfo;
          struct {
              osi_hyper_t totalAllocUnits;	/* on the disk */
              osi_hyper_t availAllocUnits;	/* free blocks */
!             long sectorsPerAllocUnit;
!             long bytesPerSector;		/* bytes per sector */
          } FSsizeInfo;
          struct {
!             long devType;	/* device type */
!             long characteristics;
          } FSdeviceInfo;
          struct {
!             long attributes;
!             long maxCompLength;	/* max path component length */
!             long FSnameLength;	/* length of file system name */
!             char FSname[12];
          } FSattributeInfo;
      } u;
  } smb_tran2QFSInfo_t;
--- 44,83 ----
      union {
  #pragma pack(push, 2)
          struct {
!             unsigned long FSID;			/* file system ID */
!             unsigned long sectorsPerAllocUnit;
!             unsigned long totalAllocUnits;	/* on the disk */
!             unsigned long availAllocUnits;	/* free blocks */
              unsigned short bytesPerSector;	/* bytes per sector */
          } allocInfo;
  #pragma pack(pop)
          struct {
!             unsigned long vsn;	/* volume serial number */
              char vnCount;	/* count of chars in label, incl null */
              char label[12];	/* pad out with nulls */
          } volumeInfo;
          struct {
!             FILETIME vct;		/* volume creation time */
!             unsigned long vsn;	        /* volume serial number */
!             unsigned long vnCount;	/* length of volume label in bytes */
!             char res[2];		/* reserved */
!             char label[10];		/* volume label */
          } FSvolumeInfo;
          struct {
              osi_hyper_t totalAllocUnits;	/* on the disk */
              osi_hyper_t availAllocUnits;	/* free blocks */
!             unsigned long sectorsPerAllocUnit;
!             unsigned long bytesPerSector;	/* bytes per sector */
          } FSsizeInfo;
          struct {
!             unsigned long devType;		/* device type */
!             unsigned long characteristics;
          } FSdeviceInfo;
          struct {
!             unsigned long attributes;
!             unsigned long maxCompLength;	/* max path component length */
!             unsigned long FSnameLength;		/* length of file system name */
!             unsigned char FSname[12];
          } FSattributeInfo;
      } u;
  } smb_tran2QFSInfo_t;
Index: openafs/src/WINNT/afssvrmgr/NTMakefile
diff -c openafs/src/WINNT/afssvrmgr/NTMakefile:1.4.2.5 openafs/src/WINNT/afssvrmgr/NTMakefile:1.4.2.6
*** openafs/src/WINNT/afssvrmgr/NTMakefile:1.4.2.5	Wed May 18 18:22:41 2005
--- openafs/src/WINNT/afssvrmgr/NTMakefile	Mon Jul 24 10:11:34 2006
***************
*** 90,96 ****
  
  VCLIBS =\
  	comctl32.lib \
! 	shell32.lib
  
  EXELIBS = \
  	$(DESTDIR)\lib\afsauthent.lib \
--- 90,97 ----
  
  VCLIBS =\
  	comctl32.lib \
! 	shell32.lib \
! 	userenv.lib
  
  EXELIBS = \
  	$(DESTDIR)\lib\afsauthent.lib \
Index: openafs/src/WINNT/aklog/aklog.c
diff -c openafs/src/WINNT/aklog/aklog.c:1.5.2.12 openafs/src/WINNT/aklog/aklog.c:1.5.2.13
*** openafs/src/WINNT/aklog/aklog.c:1.5.2.12	Fri Jul 15 08:11:02 2005
--- openafs/src/WINNT/aklog/aklog.c	Fri May 19 23:15:58 2006
***************
*** 199,208 ****
      strcpy(lastcell, aserver->cell);
  
      if (!pr_Initialize (0, confname, aserver->cell)) {
!         char sname[PR_MAXNAMELEN];
          strncpy(sname, username, PR_MAXNAMELEN);
          sname[PR_MAXNAMELEN-1] = '\0';
!         *status = pr_SNameToId (sname, &viceId);
      }
  
      if (dflag)
--- 199,213 ----
      strcpy(lastcell, aserver->cell);
  
      if (!pr_Initialize (0, confname, aserver->cell)) {
!         char sname[PR_MAXNAMELEN], *at;
! 
          strncpy(sname, username, PR_MAXNAMELEN);
          sname[PR_MAXNAMELEN-1] = '\0';
! 
! 	at = strchr(sname, '@');
! 	if (at && !stricmp(at+1, realm_of_cell))
! 	    *at = '\0';
! 	*status = pr_SNameToId (sname, &viceId);
      }
  
      if (dflag)
Index: openafs/src/WINNT/client_config/NTMakefile
diff -c openafs/src/WINNT/client_config/NTMakefile:1.10 openafs/src/WINNT/client_config/NTMakefile:1.10.2.1
*** openafs/src/WINNT/client_config/NTMakefile:1.10	Thu Jul 15 01:22:14 2004
--- openafs/src/WINNT/client_config/NTMakefile	Tue Oct 10 11:47:50 2006
***************
*** 179,184 ****
--- 179,185 ----
  clean::
  	$(DEL) $(COPYHEADERS)
  	$(CD) lang
+ 	$(DEL) AFS_component_version_number.h
  	if exist $(NTLANG) $(NTLANG) en_US $(MAKECMD) /nologo /e /f NTMakefile clean
  	if exist $(NTLANG) $(NTLANG) ja_JP $(MAKECMD) /nologo /e /f NTMakefile clean
  	if exist $(NTLANG) $(NTLANG) ko_KR $(MAKECMD) /nologo /e /f NTMakefile clean
Index: openafs/src/WINNT/client_cpa/NTMakefile
diff -c openafs/src/WINNT/client_cpa/NTMakefile:1.5 openafs/src/WINNT/client_cpa/NTMakefile:1.5.2.1
*** openafs/src/WINNT/client_cpa/NTMakefile:1.5	Fri Nov 21 02:59:56 2003
--- openafs/src/WINNT/client_cpa/NTMakefile	Tue Oct 10 11:47:51 2006
***************
*** 49,54 ****
--- 49,55 ----
  
  clean::
  	$(CD) lang
+ 	$(DEL) AFS_component_version_number.h
  	if exist $(NTLANG) $(NTLANG) en_US $(MAKECMD) /nologo /f NTMakefile clean
  	if exist $(NTLANG) $(NTLANG) ja_JP $(MAKECMD) /nologo /f NTMakefile clean
  	if exist $(NTLANG) $(NTLANG) ko_KR $(MAKECMD) /nologo /f NTMakefile clean
Index: openafs/src/WINNT/client_cpa/lang/NTMakefile
diff -c openafs/src/WINNT/client_cpa/lang/NTMakefile:1.5 openafs/src/WINNT/client_cpa/lang/NTMakefile:1.5.2.1
*** openafs/src/WINNT/client_cpa/lang/NTMakefile:1.5	Fri Nov 21 02:59:57 2003
--- openafs/src/WINNT/client_cpa/lang/NTMakefile	Mon Aug 28 00:29:35 2006
***************
*** 48,54 ****
  install : $(DLLFILE)
  
  clean ::
! 	$(DEL) *.res RC* RD* $(DLLFILE)
  
  ############################################################################
  #
--- 48,58 ----
  install : $(DLLFILE)
  
  clean ::
! 	$(DEL) $(RESFILE)
! 	$(DEL) RC* 
! 	$(DEL) RD* 
! 	$(DEL) $(DLLFILE) 
! 	$(DEL) AFS_component_version_number.h
  
  ############################################################################
  #
Index: openafs/src/WINNT/client_creds/NTMakefile
diff -c openafs/src/WINNT/client_creds/NTMakefile:1.11.2.4 openafs/src/WINNT/client_creds/NTMakefile:1.11.2.5
*** openafs/src/WINNT/client_creds/NTMakefile:1.11.2.4	Fri Mar 11 02:00:24 2005
--- openafs/src/WINNT/client_creds/NTMakefile	Mon Jul 24 10:11:34 2006
***************
*** 53,65 ****
      $(OUT)\RegistrySupport.obj 
  
  VCLIBS =\
!     iphlpapi.lib \
  	comctl32.lib \
  	shell32.lib \
  	uuid.lib \
  	ole32.lib \
  	mpr.lib \
!     netapi32.lib 
  
  EXELIBS = \
  	$(DESTDIR)\lib\afs\afspioctl.lib \
--- 53,66 ----
      $(OUT)\RegistrySupport.obj 
  
  VCLIBS =\
!     	iphlpapi.lib \
  	comctl32.lib \
  	shell32.lib \
  	uuid.lib \
  	ole32.lib \
  	mpr.lib \
! 	userenv.lib \
!     	netapi32.lib 
  
  EXELIBS = \
  	$(DESTDIR)\lib\afs\afspioctl.lib \
Index: openafs/src/WINNT/client_creds/window.cpp
diff -c openafs/src/WINNT/client_creds/window.cpp:1.11.2.5 openafs/src/WINNT/client_creds/window.cpp:1.11.2.6
*** openafs/src/WINNT/client_creds/window.cpp:1.11.2.5	Sat Oct  1 00:52:04 2005
--- openafs/src/WINNT/client_creds/window.cpp	Tue Oct 10 11:52:54 2006
***************
*** 207,226 ****
                    {
                        if (StartService (hService, 0, 0))
                            TestAndDoMapShare(SERVICE_START_PENDING);
! 		                  if ( KFW_is_available() && KFW_AFS_wait_for_service_start() ) {
  #ifdef USE_MS2MIT
!                               KFW_import_windows_lsa();
  #endif /* USE_MS2MIT */
! 			                  KFW_AFS_renew_tokens_for_all_cells();
! 						  }
  
                        CloseServiceHandle (hService);
                    }
  
                    CloseServiceHandle (hManager);
                }
!               KFW_AFS_wait_for_service_start();
!               ObtainTokensFromUserIfNeeded(g.hMain);
            }
            break;
        }
--- 207,226 ----
                    {
                        if (StartService (hService, 0, 0))
                            TestAndDoMapShare(SERVICE_START_PENDING);
! 		      if ( KFW_is_available() && KFW_AFS_wait_for_service_start() ) {
  #ifdef USE_MS2MIT
! 			  KFW_import_windows_lsa();
  #endif /* USE_MS2MIT */
! 			  KFW_AFS_renew_tokens_for_all_cells();
! 		      }
  
                        CloseServiceHandle (hService);
                    }
  
                    CloseServiceHandle (hManager);
                }
!               if (KFW_AFS_wait_for_service_start())
! 		  ObtainTokensFromUserIfNeeded(g.hMain);
            }
            break;
        }
Index: openafs/src/WINNT/client_exp/NTMakefile
diff -c openafs/src/WINNT/client_exp/NTMakefile:1.7.2.1 openafs/src/WINNT/client_exp/NTMakefile:1.7.2.3
*** openafs/src/WINNT/client_exp/NTMakefile:1.7.2.1	Sun Jan 30 23:05:03 2005
--- openafs/src/WINNT/client_exp/NTMakefile	Tue Oct 10 11:47:51 2006
***************
*** 128,134 ****
--- 128,136 ----
  # Local clean target; augments predefined clean target
  
  clean::
+ 	$(DEL) *.pdb
  	$(CD) lang
+ 	$(DEL) AFS_component_version_number.h
  	if exist $(NTLANG) $(NTLANG) en_US $(MAKECMD) /nologo /f NTMakefile clean
  	if exist $(NTLANG) $(NTLANG) ja_JP $(MAKECMD) /nologo /f NTMakefile clean
  	if exist $(NTLANG) $(NTLANG) ko_KR $(MAKECMD) /nologo /f NTMakefile clean
Index: openafs/src/WINNT/client_exp/afs_shl_ext.cpp
diff -c openafs/src/WINNT/client_exp/afs_shl_ext.cpp:1.5.2.1 openafs/src/WINNT/client_exp/afs_shl_ext.cpp:1.5.2.2
*** openafs/src/WINNT/client_exp/afs_shl_ext.cpp:1.5.2.1	Sun Oct  2 10:47:20 2005
--- openafs/src/WINNT/client_exp/afs_shl_ext.cpp	Mon Aug 28 01:09:18 2006
***************
*** 60,66 ****
  BOOL CAfsShlExt::InitInstance()
  {
  	// Load our translated resources
! 	TaLocale_LoadCorrespondingModule (m_hInstance);
  
  	// Register all OLE server (factories) as running.  This enables the
  	//  OLE libraries to create objects from other applications.
--- 60,66 ----
  BOOL CAfsShlExt::InitInstance()
  {
  	// Load our translated resources
! 	TaLocale_LoadCorrespondingModuleByName (m_hInstance, TEXT("afs_shl_ext.dll"));
  
  	// Register all OLE server (factories) as running.  This enables the
  	//  OLE libraries to create objects from other applications.
Index: openafs/src/WINNT/client_exp/lang/NTMakefile
diff -c openafs/src/WINNT/client_exp/lang/NTMakefile:1.5 openafs/src/WINNT/client_exp/lang/NTMakefile:1.5.2.2
*** openafs/src/WINNT/client_exp/lang/NTMakefile:1.5	Fri Nov 21 02:59:59 2003
--- openafs/src/WINNT/client_exp/lang/NTMakefile	Mon Aug 28 00:29:36 2006
***************
*** 48,54 ****
  install : $(DLLFILE)
  
  clean ::
! 	$(DEL) $(OUT)\*.res RC* RD* $(DLLFILE)
  
  ############################################################################
  #
--- 48,58 ----
  install : $(DLLFILE)
  
  clean ::
! 	$(DEL) $(RESFILE) 
!         $(DEL) RC* 
!         $(DEL) RD* 
!         $(DEL) $(DLLFILE) 
! 	$(DEL) AFS_component_version_number.h
  
  ############################################################################
  #
Index: openafs/src/WINNT/client_osi/libosi.def
diff -c openafs/src/WINNT/client_osi/libosi.def:1.3 openafs/src/WINNT/client_osi/libosi.def:1.3.2.1
*** openafs/src/WINNT/client_osi/libosi.def:1.3	Thu Feb 26 14:22:49 2004
--- openafs/src/WINNT/client_osi/libosi.def	Thu May 25 13:18:48 2006
***************
*** 65,71 ****
  	osi_LogPrint		@58
  	osi_LogSaveString	@59
  	osi_InitPanic		@60
! 	osi_InitTraceOption @61
  	osi_LogEvent0		@62
  	osi_LogEvent		@63
!     osi_HexifyString    @64
--- 65,72 ----
  	osi_LogPrint		@58
  	osi_LogSaveString	@59
  	osi_InitPanic		@60
! 	osi_InitTraceOption     @61
  	osi_LogEvent0		@62
  	osi_LogEvent		@63
!         osi_HexifyString        @64
!         osi_QRemoveHT           @65
Index: openafs/src/WINNT/client_osi/osibasel.c
diff -c openafs/src/WINNT/client_osi/osibasel.c:1.2.2.1 openafs/src/WINNT/client_osi/osibasel.c:1.2.2.2
*** openafs/src/WINNT/client_osi/osibasel.c:1.2.2.1	Sat Aug 27 23:33:24 2005
--- openafs/src/WINNT/client_osi/osibasel.c	Mon Oct  2 22:46:38 2006
***************
*** 55,60 ****
--- 55,62 ----
  		lockp->flags |= OSI_LOCKFLAG_EXCL;
  	}
  
+         lockp->tid = thrd_Current();
+ 
  	LeaveCriticalSection(csp);
  }
  
***************
*** 83,89 ****
  		/* if we're here, all clear to set the lock */
  		lockp->readers++;
  	}
! 	LeaveCriticalSection(csp);
  }
  
  void lock_ReleaseRead(osi_rwlock_t *lockp)
--- 85,92 ----
  		/* if we're here, all clear to set the lock */
  		lockp->readers++;
  	}
! 
!         LeaveCriticalSection(csp);
  }
  
  void lock_ReleaseRead(osi_rwlock_t *lockp)
***************
*** 128,133 ****
--- 131,138 ----
  
  	osi_assertx(lockp->flags & OSI_LOCKFLAG_EXCL, "write lock not held");
  	
+         lockp->tid = 0;
+ 
  	lockp->flags &= ~OSI_LOCKFLAG_EXCL;
  	if (!osi_TEmpty(&lockp->d.turn)) {
  		osi_TSignalForMLs(&lockp->d.turn, 0, csp);
***************
*** 158,163 ****
--- 163,170 ----
  	lockp->flags &= ~OSI_LOCKFLAG_EXCL;
          lockp->readers++;
  
+         lockp->tid = 0;
+ 
  	if (!osi_TEmpty(&lockp->d.turn)) {
  		osi_TSignalForMLs(&lockp->d.turn, /* still have readers */ 1, csp);
  	}
***************
*** 274,280 ****
  		i = 1;
  	}
  
! 	LeaveCriticalSection(csp);
  
  	return i;
  }
--- 281,290 ----
  		i = 1;
  	}
  
! 	if (i)
! 	    lockp->tid = thrd_Current();
! 
!         LeaveCriticalSection(csp);
  
  	return i;
  }
***************
*** 301,306 ****
--- 311,319 ----
  		i = 1;
  	}
  
+         if (i)
+ 	    lockp->tid = thrd_Current();
+ 
  	LeaveCriticalSection(csp);
  
  	return i;
***************
*** 435,440 ****
--- 448,454 ----
  	mp->flags = 0;
  	mp->atomicIndex = osi_MUTEXHASH(mp);
  	mp->readers = 0;
+         mp->tid = 0;
          osi_TInit(&mp->d.turn);
  	return;
  }
Index: openafs/src/WINNT/client_osi/osibasel.h
diff -c openafs/src/WINNT/client_osi/osibasel.h:1.2.2.1 openafs/src/WINNT/client_osi/osibasel.h:1.2.2.2
*** openafs/src/WINNT/client_osi/osibasel.h:1.2.2.1	Sat Aug 27 23:33:24 2005
--- openafs/src/WINNT/client_osi/osibasel.h	Mon Oct  2 22:46:38 2006
***************
*** 56,61 ****
--- 56,62 ----
  	char type;			/* for all types; type 0 uses atomic count */
  	char flags;			/* flags for base type */
          unsigned short atomicIndex;	/* index into hash table for low-level sync */
+         DWORD tid;			/* writer's tid */
          unsigned short waiters;		/* waiters */
  	unsigned short readers;		/* readers */
  	union {
Index: openafs/src/WINNT/client_osi/osilog.c
diff -c openafs/src/WINNT/client_osi/osilog.c:1.8.2.2 openafs/src/WINNT/client_osi/osilog.c:1.8.2.3
*** openafs/src/WINNT/client_osi/osilog.c:1.8.2.2	Fri Aug 26 09:48:48 2005
--- openafs/src/WINNT/client_osi/osilog.c	Fri Oct  6 12:24:55 2006
***************
*** 253,259 ****
  			lep->parms[0], lep->parms[1],
  			lep->parms[2], lep->parms[3]);
  		snprintf(wholemsg, sizeof(wholemsg),
! 			 "time %d.%06d, tid %d %s\n",
  			lep->micros / 1000000,
  			lep->micros % 1000000,
  			lep->tid, msg);
--- 253,259 ----
  			lep->parms[0], lep->parms[1],
  			lep->parms[2], lep->parms[3]);
  		snprintf(wholemsg, sizeof(wholemsg),
! 			 "time %d.%06d, tid %d %s\r\n",
  			lep->micros / 1000000,
  			lep->micros % 1000000,
  			lep->tid, msg);
Index: openafs/src/WINNT/client_osi/osiqueue.c
diff -c openafs/src/WINNT/client_osi/osiqueue.c:1.3 openafs/src/WINNT/client_osi/osiqueue.c:1.3.2.1
*** openafs/src/WINNT/client_osi/osiqueue.c:1.3	Sun Mar  9 20:59:15 2003
--- openafs/src/WINNT/client_osi/osiqueue.c	Thu May 25 13:18:48 2006
***************
*** 93,111 ****
  
  void osi_QRemove(osi_queue_t **headpp, osi_queue_t *eltp)
  {
! 	osi_queue_t *np;	/* next dude */
  
! 	np = eltp->nextp;	/* useful for both paths */
  
! 	if (eltp == *headpp) {
! 		/* we're the first element in the list */
! 		*headpp = np;
! 		if (np) np->prevp = NULL;
! 	}
! 	else {
! 		eltp->prevp->nextp = np;
! 		if (np) np->prevp = eltp->prevp;
! 	}
  }
  
  void osi_InitQueue(void)
--- 93,145 ----
  
  void osi_QRemove(osi_queue_t **headpp, osi_queue_t *eltp)
  {
!     osi_queue_t *np = eltp->nextp;	/* next dude */
!     osi_queue_t *pp = eltp->prevp;	/* prev dude */
  
!     if (eltp == *headpp) {
! 	/* we're the first element in the list */
! 	*headpp = np;
! 	if (np) 
! 	    np->prevp = NULL;
!     }
!     else {
! 	pp->nextp = np;
! 	if (np) 
! 	    np->prevp = pp;
!     }
!     eltp->prevp = NULL;
!     eltp->nextp = NULL;
! }
  
! void osi_QRemoveHT(osi_queue_t **headpp, osi_queue_t **tailpp, osi_queue_t *eltp)
! {
!     osi_queue_t *np = eltp->nextp;	/* next dude */
!     osi_queue_t *pp = eltp->prevp;	/* prev dude */
! 
!     if (eltp == *headpp && eltp == *tailpp) 
!     {
!     	*headpp = *tailpp = NULL;
!     }
!     else if (eltp == *headpp) {
! 	/* we're the first element in the list */
! 	*headpp = np;
! 	if (np) 
! 	    np->prevp = NULL;
!     }	
!     else if (eltp == *tailpp) {
! 	/* we're the last element in the list */
! 	*tailpp = pp;
! 	if (pp) 
! 	    pp->nextp = NULL;
!     }	
!     else {
! 	if (pp)
! 		pp->nextp = np;
! 	if (np)
! 		np->prevp = pp;
!     }
!     eltp->prevp = NULL; 
!     eltp->nextp = NULL;
  }
  
  void osi_InitQueue(void)
Index: openafs/src/WINNT/client_osi/osiqueue.h
diff -c openafs/src/WINNT/client_osi/osiqueue.h:1.2 openafs/src/WINNT/client_osi/osiqueue.h:1.2.2.1
*** openafs/src/WINNT/client_osi/osiqueue.h:1.2	Sun Mar  9 20:59:15 2003
--- openafs/src/WINNT/client_osi/osiqueue.h	Thu May 25 13:18:48 2006
***************
*** 59,64 ****
--- 59,69 ----
   */
  extern void osi_QRemove(osi_queue_t **headpp, osi_queue_t *eltp);
  
+ /* remove an element from a queue with both head and tail pointers; 
+  * takes address of head and tail lists, and element to remove as parameters.
+  */
+ extern void osi_QRemoveHT(osi_queue_t **headpp, osi_queue_t **tailpp, osi_queue_t *eltp);
+ 
  /* initialize the queue package */
  extern void osi_InitQueue(void);
  
Index: openafs/src/WINNT/client_osi/osisleep.c
diff -c openafs/src/WINNT/client_osi/osisleep.c:1.2 openafs/src/WINNT/client_osi/osisleep.c:1.2.2.2
*** openafs/src/WINNT/client_osi/osisleep.c:1.2	Sun Mar  9 20:59:15 2003
--- openafs/src/WINNT/client_osi/osisleep.c	Thu May 25 13:40:59 2006
***************
*** 56,61 ****
--- 56,62 ----
   * should be ignored.
   */
  static osi_sleepInfo_t *osi_sleepers[OSI_SLEEPHASHSIZE];
+ static osi_sleepInfo_t *osi_sleepersEnd[OSI_SLEEPHASHSIZE];
  
  /* allocate space for lock operations */
  osi_lockOps_t *osi_lockOps[OSI_NLOCKTYPES];
***************
*** 109,115 ****
  	if (ap->states & OSI_SLEEPINFO_INHASH) {
  		ap->states &= ~OSI_SLEEPINFO_INHASH;
  		idx = osi_SLEEPHASH(ap->value);
! 		osi_QRemove((osi_queue_t **) &osi_sleepers[idx], &ap->q);
  	}
  
  	if (ap->states & OSI_SLEEPINFO_DELETED) {
--- 110,116 ----
  	if (ap->states & OSI_SLEEPINFO_INHASH) {
  		ap->states &= ~OSI_SLEEPINFO_INHASH;
  		idx = osi_SLEEPHASH(ap->value);
! 		osi_QRemoveHT((osi_queue_t **) &osi_sleepers[idx], (osi_queue_t **) &osi_sleepersEnd[idx], &ap->q);
  	}
  
  	if (ap->states & OSI_SLEEPINFO_DELETED) {
***************
*** 226,231 ****
--- 227,233 ----
  	for(i=0;i<OSI_SLEEPHASHSIZE; i++) {
  		InitializeCriticalSection(&osi_critSec[i]);
  		osi_sleepers[i] = (osi_sleepInfo_t *) NULL;
+ 	        osi_sleepersEnd[i] = (osi_sleepInfo_t *) NULL;
  	}
  
  	/* free list CS */
***************
*** 265,277 ****
  		sp = osi_AllocSleepInfo();
  		TlsSetValue(osi_SleepSlot, sp);
  	}
! 	else
  		sp->states = 0;
  	sp->refCount = 0;
          sp->waitFor = waitFor;
          sp->value = (long) patchp;
!         osi_QAdd((osi_queue_t **) &turnp->firstp, &sp->q);
!         if (!turnp->lastp) turnp->lastp = sp;
          LeaveCriticalSection(releasep);
  
  	/* now wait for the signal */
--- 267,281 ----
  		sp = osi_AllocSleepInfo();
  		TlsSetValue(osi_SleepSlot, sp);
  	}
! 	else {
  		sp->states = 0;
+         }
  	sp->refCount = 0;
          sp->waitFor = waitFor;
          sp->value = (long) patchp;
!         osi_QAddT((osi_queue_t **) &turnp->firstp, (osi_queue_t **) &turnp->lastp, &sp->q);
!         if (!turnp->lastp) 
! 	  turnp->lastp = sp;
          LeaveCriticalSection(releasep);
  
  	/* now wait for the signal */
***************
*** 309,319 ****
  {
  	osi_sleepInfo_t *sp;
          
! 	if (!turnp->lastp) return;
          
          sp = turnp->lastp;
  	turnp->lastp = (osi_sleepInfo_t *) osi_QPrev(&sp->q);
!         osi_QRemove((osi_queue_t **) &turnp->firstp, &sp->q);
          sp->states |= OSI_SLEEPINFO_SIGNALLED;
          ReleaseSemaphore(sp->sema, 1, (long *) 0);
  }
--- 313,324 ----
  {
  	osi_sleepInfo_t *sp;
          
! 	if (!turnp->lastp) 
! 	    return;
          
          sp = turnp->lastp;
  	turnp->lastp = (osi_sleepInfo_t *) osi_QPrev(&sp->q);
!         osi_QRemoveHT((osi_queue_t **) &turnp->firstp, (osi_queue_t **) &turnp->lastp, &sp->q);
          sp->states |= OSI_SLEEPINFO_SIGNALLED;
          ReleaseSemaphore(sp->sema, 1, (long *) 0);
  }
***************
*** 325,331 ****
          
          while(sp = turnp->lastp) {
  		turnp->lastp = (osi_sleepInfo_t *) osi_QPrev(&sp->q);
! 	        osi_QRemove((osi_queue_t **) &turnp->firstp, &sp->q);
  	        sp->states |= OSI_SLEEPINFO_SIGNALLED;
  	        ReleaseSemaphore(sp->sema, 1, (long *) 0);
  	}	/* while someone's still asleep */
--- 330,336 ----
          
          while(sp = turnp->lastp) {
  		turnp->lastp = (osi_sleepInfo_t *) osi_QPrev(&sp->q);
! 	        osi_QRemoveHT((osi_queue_t **) &turnp->firstp, (osi_queue_t **) &turnp->lastp, &sp->q);
  	        sp->states |= OSI_SLEEPINFO_SIGNALLED;
  	        ReleaseSemaphore(sp->sema, 1, (long *) 0);
  	}	/* while someone's still asleep */
***************
*** 370,376 ****
                   * the crit sec.
                   */
  		turnp->lastp = (osi_sleepInfo_t *) osi_QPrev(&tsp->q);
! 	        osi_QRemove((osi_queue_t **) &turnp->firstp, &tsp->q);
                  
  		/* do the patching required for lock obtaining */
                  if (tsp->waitFor & OSI_SLEEPINFO_W4WRITE) {
--- 375,381 ----
                   * the crit sec.
                   */
  		turnp->lastp = (osi_sleepInfo_t *) osi_QPrev(&tsp->q);
! 	        osi_QRemoveHT((osi_queue_t **) &turnp->firstp, (osi_queue_t **) &turnp->lastp, &tsp->q);
                  
  		/* do the patching required for lock obtaining */
                  if (tsp->waitFor & OSI_SLEEPINFO_W4WRITE) {
***************
*** 425,438 ****
  		sp = osi_AllocSleepInfo();
  		TlsSetValue(osi_SleepSlot, sp);
  	}
! 	else
  		sp->states = 0;
  	sp->refCount = 0;
  	sp->value = sleepValue;
  	idx = osi_SLEEPHASH(sleepValue);
  	csp = &osi_critSec[idx];
  	EnterCriticalSection(csp);
! 	osi_QAdd((osi_queue_t **) &osi_sleepers[idx], &sp->q);
  	sp->states |= OSI_SLEEPINFO_INHASH;
  	LeaveCriticalSection(releasep);
  	LeaveCriticalSection(csp);
--- 430,444 ----
  		sp = osi_AllocSleepInfo();
  		TlsSetValue(osi_SleepSlot, sp);
  	}
! 	else {
  		sp->states = 0;
+ 	}
  	sp->refCount = 0;
  	sp->value = sleepValue;
  	idx = osi_SLEEPHASH(sleepValue);
  	csp = &osi_critSec[idx];
  	EnterCriticalSection(csp);
! 	osi_QAddT((osi_queue_t **) &osi_sleepers[idx], (osi_queue_t **) &osi_sleepersEnd[idx], &sp->q);
  	sp->states |= OSI_SLEEPINFO_INHASH;
  	LeaveCriticalSection(releasep);
  	LeaveCriticalSection(csp);
Index: openafs/src/WINNT/client_osi/osistatl.h
diff -c openafs/src/WINNT/client_osi/osistatl.h:1.4.2.1 openafs/src/WINNT/client_osi/osistatl.h:1.4.2.2
*** openafs/src/WINNT/client_osi/osistatl.h:1.4.2.1	Mon Oct 18 00:09:36 2004
--- openafs/src/WINNT/client_osi/osistatl.h	Mon Oct  2 22:46:38 2006
***************
*** 59,64 ****
--- 59,65 ----
  	osi_turnstile_t turn;  	/* the real turnstile */
  	unsigned long refCount;	/* so we can iterate cleanly */
  	short states;
+         DWORD tid;
  
  	/* track # of lock calls and blocks */
  	LARGE_INTEGER lockedTime;	/* total time held */
***************
*** 81,86 ****
--- 82,88 ----
  	osi_turnstile_t turn;		/* the real turnstile */
  	unsigned long refCount;		/* so we can iterate cleanly */
  	short states;
+         DWORD tid;
  
  	/* statistics */
  	LARGE_INTEGER writeLockedTime;	/* total time held */
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.1.24.3 openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.1.24.5
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.1.24.3	Sun Sep 25 22:53:07 2005
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm	Mon Aug 21 01:00:49 2006
***************
*** 198,204 ****
  
  <h1>OpenAFS for Windows</h1>
  
! <h2>Version 1.4.0</h2>
  
  <p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>&nbsp; <o:p></o:p></span></p>
  
--- 198,204 ----
  
  <h1>OpenAFS for Windows</h1>
  
! <h2>Version 1.4.2</h2>
  
  <p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho"'>&nbsp; <o:p></o:p></span></p>
  
***************
*** 223,229 ****
  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
  Release Notes</a></p>
  
  <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
--- 223,229 ----
  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/relnotes-frames.htm">OpenAFS for Windows
  Release Notes</a></p>
  
  <p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1;
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm:1.1.2.5 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm:removed
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm:1.1.2.5	Sun Feb  5 03:14:16 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/frames.htm	Fri Oct 13 15:52:10 2006
***************
*** 1,130 ****
- <html xmlns:o="urn:schemas-microsoft-com:office:office"
- xmlns:w="urn:schemas-microsoft-com:office:word"
- xmlns="http://www.w3.org/TR/REC-html40">
- 
- <head>
- <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
- <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="frames_files/filelist.xml">
- <title>OpenAFS for Windows 1.4.1 Release Notes</title>
- <!--[if gte mso 9]><xml>
-  <o:DocumentProperties>
-   <o:Author>Jeffrey Altman</o:Author>
-   <o:LastAuthor>Jeffrey Altman</o:LastAuthor>
-   <o:Revision>2</o:Revision>
-   <o:TotalTime>0</o:TotalTime>
-   <o:Created>2006-02-05T08:10:00Z</o:Created>
-   <o:LastSaved>2006-02-05T08:10:00Z</o:LastSaved>
-   <o:Pages>1</o:Pages>
-   <o:Words>9</o:Words>
-   <o:Characters>53</o:Characters>
-   <o:Company>Secure Endpoints Inc.</o:Company>
-   <o:Lines>1</o:Lines>
-   <o:Paragraphs>1</o:Paragraphs>
-   <o:CharactersWithSpaces>61</o:CharactersWithSpaces>
-   <o:Version>11.6568</o:Version>
-  </o:DocumentProperties>
- </xml><![endif]--><!--[if gte mso 9]><xml>
-  <w:WordDocument>
-   <w:View>Normal</w:View>
-   <w:Zoom>0</w:Zoom>
-   <w:SpellingState>Clean</w:SpellingState>
-   <w:ValidateAgainstSchemas/>
-   <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
-   <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
-   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
-   <w:Compatibility>
-    <w:BreakWrappedTables/>
-    <w:SnapToGridInCell/>
-    <w:WrapTextWithPunct/>
-    <w:UseAsianBreakRules/>
-    <w:UseWord2002TableStyleRules/>
-    <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]-->
- <style>
- <!--
-  /* Font Definitions */
-  @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:"MS Mincho";}
- @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;}
- -->
- </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-ansi-language:#0400;
- 	mso-fareast-language:#0400;
- 	mso-bidi-language:#0400;}
- </style>
- <![endif]-->
- </head>
- 
- <frameset cols="275,1*">
-  <frameset rows="160,1*">
-   <frame name=OpenAFS.org src=logo.htm scrolling=no style='mso-linked-frame:
-   auto'>
-   <frame name="Release Notes Table of Contents" src=toc.htm style='mso-linked-frame:
-   auto'>
-  </frameset>
-  <frame name="OpenAFS for Windows Release Notes" src=relnotes.htm
-  style='mso-linked-frame:auto'>
-  <noframes>
-   <body lang=EN-US style='tab-interval:36.0pt'>
-   <div class=Section1>
-   <p class=MsoNormal>This page uses frames, but your browser doesn't support
-   them.</p>
-   </div>
-   </body>
-  </noframes>
- </frameset>
- 
- </html>
--- 0 ----
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.2.5 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.2.6
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.2.5	Sun Feb  5 03:14:16 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm	Thu Jul  6 21:15:30 2006
***************
*** 1,161 ****
! <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="http://www.w3.org/TR/REC-html40">
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
! <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="logo_files/filelist.xml">
! <link rel=Edit-Time-Data href="logo_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 Logo</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>2</o:TotalTime>
!   <o:Created>2005-09-25T21:09:00Z</o:Created>
!   <o:LastSaved>2005-09-25T21:09:00Z</o:LastSaved>
!   <o:Pages>1</o:Pages>
!   <o:Characters>1</o:Characters>
!   <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>1</o:Lines>
!   <o:Paragraphs>1</o:Paragraphs>
!   <o:CharactersWithSpaces>1</o:CharactersWithSpaces>
!   <o:Version>11.6568</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>
!   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
!   <w:Compatibility>
!    <w:BreakWrappedTables/>
!    <w:SnapToGridInCell/>
!    <w:WrapTextWithPunct/>
!    <w:UseAsianBreakRules/>
!    <w:UseWord2002TableStyleRules/>
!    <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]-->
  <style>
  <!--
   /* Font Definitions */
   @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:"MS Mincho";}
  @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;}
  -->
  </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-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	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"/>
!  </o:shapelayout></xml><![endif]-->
  </head>
  
! <body lang=EN-US 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="logo_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="logo_files/image002.jpg" align=left
! hspace=12 v:shapes="_x0000_s1026"></a><![endif]></p>
  
  </div>
  
--- 1,41 ----
! <html>
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
! <meta name=Generator content="Microsoft Word 11 (filtered)">
! <title>OpenAFS for Windows 1.4.2 Release Notes</title>
  <style>
  <!--
   /* Font Definitions */
   @font-face
  	{font-family:"MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;}
  @font-face
  	{font-family:"\@MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;}
   /* Style Definitions */
   p.MsoNormal, li.MsoNormal, div.MsoNormal
! 	{margin:0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  @page Section1
  	{size:612.0pt 792.0pt;
! 	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
  div.Section1
  	{page:Section1;}
  -->
  </style>
! 
  </head>
  
! <body lang=EN-US>
  
  <div class=Section1>
  
! <p class=MsoNormal><a href="http://www.openafs.org/windows.html"><span
! style='color:windowtext;text-decoration:none'><img border=0 width=184
! height=127 src="logo_files/image001.jpg"></span></a></p>
  
  </div>
  
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm
diff -c /dev/null openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:10 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm	Thu Jul  6 21:15:30 2006
***************
*** 0 ****
--- 1,48 ----
+ <html>
+ 
+ <head>
+ <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
+ <meta name=Generator content="Microsoft Word 11 (filtered)">
+ <title>OpenAFS for Windows 1.4.2 Release Notes</title>
+ <style>
+ <!--
+  /* Font Definitions */
+  @font-face
+ 	{font-family:"MS Mincho";
+ 	panose-1:2 2 6 9 4 2 5 8 3 4;}
+ @font-face
+ 	{font-family:"\@MS Mincho";
+ 	panose-1:2 2 6 9 4 2 5 8 3 4;}
+  /* Style Definitions */
+  p.MsoNormal, li.MsoNormal, div.MsoNormal
+ 	{margin:0pt;
+ 	margin-bottom:.0001pt;
+ 	font-size:12.0pt;
+ 	font-family:"Times New Roman";}
+ @page Section1
+ 	{size:612.0pt 792.0pt;
+ 	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
+ div.Section1
+ 	{page:Section1;}
+ -->
+ </style>
+ 
+ </head>
+ 
+ <frameset cols="216,1*">
+  <frameset rows="15%,1*">
+   <frame name=logo src=logo.htm>
+   <frame name="Table of Contents" src=toc.htm>
+  </frameset>
+  <frame name=Main src=relnotes.htm>
+  <noframes>
+   <body lang=EN-US>
+   <div class=Section1>
+   <p class=MsoNormal>This page uses frames, but your browser doesn't support
+   them.</p>
+   </div>
+   </body>
+  </noframes>
+ </frameset>
+ 
+ </html>
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.2.2.9 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.2.2.11
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.2.2.9	Sun Feb  5 03:14:17 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm	Mon Aug 21 01:00:55 2006
***************
*** 1,3816 ****
! <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:contacts"
! xmlns:st2="urn:schemas-microsoft-com:office:smarttags"
! xmlns="http://www.w3.org/TR/REC-html40">
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
! <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="relnotes_files/filelist.xml">
! <link rel=Preview href="relnotes_files/preview.wmf">
! <title>OpenAFS for Windows 1.4.1 Release Notes</title>
! <o:SmartTagType namespaceuri="urn:schemas:contacts" name="GivenName"/>
! <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"/>
! <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
!  name="country-region"/>
! <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
!  name="address"/>
! <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
!  name="City"/>
! <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
!  name="State"/>
! <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
!  name="PostalCode"/>
! <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
!  name="Street"/>
! <!--[if gte mso 9]><xml>
!  <o:DocumentProperties>
!   <o:Author>Jeffrey Altman</o:Author>
!   <o:Keywords>OpenAFS 1.4.1 AFS Windows</o:Keywords>
!   <o:LastAuthor>Jeffrey Altman</o:LastAuthor>
!   <o:Revision>3</o:Revision>
!   <o:TotalTime>11</o:TotalTime>
!   <o:LastPrinted>1601-01-01T07:00:00Z</o:LastPrinted>
!   <o:Created>2005-09-25T21:12:00Z</o:Created>
!   <o:LastSaved>2006-01-09T05:13:00Z</o:LastSaved>
!   <o:Pages>1</o:Pages>
!   <o:Words>14578</o:Words>
!   <o:Characters>83097</o:Characters>
!   <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>692</o:Lines>
!   <o:Paragraphs>194</o:Paragraphs>
!   <o:CharactersWithSpaces>97481</o:CharactersWithSpaces>
!   <o:Version>11.6568</o:Version>
!  </o:DocumentProperties>
! </xml><![endif]--><!--[if gte mso 9]><xml>
!  <w:WordDocument>
!   <w:DrawingGridHorizontalSpacing>0 pt</w:DrawingGridHorizontalSpacing>
!   <w:DrawingGridVerticalSpacing>0 pt</w:DrawingGridVerticalSpacing>
!   <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
!   <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery>
!   <w:UseMarginsForDrawingGridOrigin/>
!   <w:ValidateAgainstSchemas/>
!   <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
!   <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
!   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
!   <w:DrawingGridHorizontalOrigin>0 pt</w:DrawingGridHorizontalOrigin>
!   <w:DrawingGridVerticalOrigin>0 pt</w:DrawingGridVerticalOrigin>
!   <w:Compatibility>
!    <w:NoLeading/>
!    <w:SpaceForUL/>
!    <w:BalanceSingleByteDoubleByteWidth/>
!    <w:DoNotLeaveBackslashAlone/>
!    <w:ULTrailSpace/>
!    <w:DoNotExpandShiftReturn/>
!    <w:AdjustLineHeightInTable/>
!    <w:SelectEntireFieldWithStartOrEnd/>
!    <w:UseWord2002TableStyleRules/>
!   </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) }st2\:*{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:Tahoma;
! 	panose-1:2 11 6 4 3 5 4 4 2 4;
! 	mso-font-charset:0;
! 	mso-generic-font-family:swiss;
! 	mso-font-pitch:variable;
! 	mso-font-signature:1627421319 -2147483648 8 0 66047 0;}
  @font-face
! 	{font-family:Thorndale;
! 	panose-1:2 2 6 3 5 4 5 2 3 4;
! 	mso-font-charset:0;
! 	mso-generic-font-family:roman;
! 	mso-font-pitch:variable;
! 	mso-font-signature:647 0 0 0 159 0;}
! @font-face
! 	{font-family:"Andale Sans UI";
! 	panose-1:2 11 5 2 0 0 0 0 0 1;
! 	mso-font-charset:0;
! 	mso-generic-font-family:swiss;
! 	mso-font-pitch:variable;
! 	mso-font-signature:647 0 0 0 159 0;}
  @font-face
  	{font-family:StarSymbol;
! 	panose-1:5 0 0 0 0 0 0 0 0 0;
! 	mso-font-charset:0;
! 	mso-generic-font-family:auto;
! 	mso-font-pitch:variable;
! 	mso-font-signature:3 268468224 0 0 1 0;}
  @font-face
! 	{font-family:Albany;
! 	panose-1:2 11 6 4 2 2 2 2 2 4;
! 	mso-font-charset:0;
! 	mso-generic-font-family:swiss;
! 	mso-font-pitch:variable;
! 	mso-font-signature:647 0 0 0 159 0;}
  @font-face
  	{font-family:Cumberland;
! 	panose-1:2 7 3 9 2 2 5 2 4 4;
! 	mso-font-charset:0;
! 	mso-generic-font-family:modern;
! 	mso-font-pitch:fixed;
! 	mso-font-signature:647 0 0 0 159 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-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  h1
! 	{mso-style-parent:Heading;
! 	mso-style-next:"Body Text";
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-indent:0pt;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-outline-level:1;
- 	mso-list:l21 level1 lfo12;
- 	mso-hyphenate:none;
- 	tab-stops:list 0pt;
  	font-size:16.0pt;
! 	font-family:Albany;
! 	mso-fareast-font-family:"MS Mincho";
! 	mso-bidi-font-family:Tahoma;
! 	mso-font-kerning:0pt;
! 	mso-fareast-language:#00FF;}
  h2
! 	{mso-style-parent:Heading;
! 	mso-style-next:"Body Text";
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-indent:0pt;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-outline-level:2;
- 	mso-list:l21 level2 lfo12;
- 	mso-hyphenate:none;
- 	tab-stops:list 0pt;
  	font-size:14.0pt;
  	font-family:Albany;
- 	mso-fareast-font-family:"MS Mincho";
- 	mso-bidi-font-family:Tahoma;
- 	mso-fareast-language:#00FF;
  	font-style:italic;}
  h3
! 	{mso-style-parent:Heading;
! 	mso-style-link:"Heading 3 Char";
! 	mso-style-next:"Body Text";
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-indent:0pt;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-outline-level:3;
- 	mso-list:l21 level3 lfo12;
- 	mso-hyphenate:none;
- 	tab-stops:list 0pt;
  	font-size:14.0pt;
! 	font-family:Albany;
! 	mso-fareast-font-family:"MS Mincho";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  h4
! 	{mso-style-link:"Heading 4 Char";
! 	mso-style-next:Normal;
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:3.0pt;
  	margin-left:0pt;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-outline-level:4;
- 	mso-hyphenate:none;
  	font-size:14.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-fareast-language:#00FF;}
  h5
! 	{mso-style-next:Normal;
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:3.0pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-outline-level:5;
- 	mso-hyphenate:none;
  	font-size:13.0pt;
  	font-family:Thorndale;
- 	mso-fareast-font-family:"Andale Sans UI";
- 	mso-fareast-language:#00FF;
  	font-style:italic;}
  h6
! 	{mso-style-next:Normal;
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:3.0pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-outline-level:6;
- 	mso-hyphenate:none;
  	font-size:11.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-fareast-language:#00FF;}
  p.MsoToc1, li.MsoToc1, div.MsoToc1
! 	{mso-style-noshow:yes;
! 	mso-style-parent:Index;
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:no-line-numbers;
- 	mso-hyphenate:none;
- 	tab-stops:right dotted 432.0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  p.MsoToc2, li.MsoToc2, div.MsoToc2
! 	{mso-style-noshow:yes;
! 	mso-style-parent:Index;
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:14.15pt;
- 	mso-pagination:no-line-numbers;
- 	mso-hyphenate:none;
- 	tab-stops:right dotted 432.0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  p.MsoToc3, li.MsoToc3, div.MsoToc3
! 	{mso-style-noshow:yes;
! 	mso-style-parent:Index;
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:28.3pt;
- 	mso-pagination:no-line-numbers;
- 	mso-hyphenate:none;
- 	tab-stops:right dotted 432.0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
! 	{mso-style-noshow:yes;
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:10.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.MsoHeader, li.MsoHeader, div.MsoHeader
  	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
- 	tab-stops:center 216.0pt right 432.0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.MsoFooter, li.MsoFooter, div.MsoFooter
  	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
- 	tab-stops:center 216.0pt right 432.0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.MsoEnvelopeAddress, li.MsoEnvelopeAddress, div.MsoEnvelopeAddress
  	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:144.0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
- 	mso-element:frame;
- 	mso-element-frame-width:396.0pt;
- 	mso-element-frame-height:99.0pt;
- 	mso-element-frame-hspace:9.0pt;
- 	mso-element-wrap:auto;
- 	mso-element-anchor-horizontal:page;
- 	mso-element-left:center;
- 	mso-element-top:bottom;
- 	mso-height-rule:exactly;
  	font-size:12.0pt;
! 	font-family:Arial;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-fareast-language:#00FF;}
  span.MsoFootnoteReference
! 	{mso-style-noshow:yes;
! 	vertical-align:super;}
  p.MsoList, li.MsoList, div.MsoList
! 	{mso-style-parent:"Body Text";
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  p.MsoTitle, li.MsoTitle, div.MsoTitle
! 	{mso-style-parent:Heading;
! 	mso-style-next:Subtitle;
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-align:center;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-hyphenate:none;
  	font-size:18.0pt;
  	font-family:Albany;
- 	mso-fareast-font-family:"MS Mincho";
- 	mso-bidi-font-family:Tahoma;
- 	mso-fareast-language:#00FF;
  	font-weight:bold;}
  p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
! 	{mso-style-link:"Body Text Char";
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
! 	{mso-style-parent:"Body Text";
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:14.15pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
! 	{mso-style-parent:Heading;
! 	mso-style-next:"Body Text";
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-align:center;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-hyphenate:none;
  	font-size:14.0pt;
  	font-family:Albany;
- 	mso-fareast-font-family:"MS Mincho";
- 	mso-bidi-font-family:Tahoma;
- 	mso-fareast-language:#00FF;
  	font-style:italic;}
  a:link, span.MsoHyperlink
! 	{mso-style-parent:"";
! 	color:navy;
! 	text-decoration:underline;
! 	text-underline:single;}
  a:visited, span.MsoHyperlinkFollowed
! 	{mso-style-parent:"";
! 	color:maroon;
! 	text-decoration:underline;
! 	text-underline:single;}
! span.NumberingSymbols
! 	{mso-style-name:"Numbering Symbols";
! 	mso-style-parent:"";}
  span.Bullets
! 	{mso-style-name:Bullets;
! 	mso-style-parent:"";
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	font-family:StarSymbol;
! 	mso-ascii-font-family:StarSymbol;
! 	mso-fareast-font-family:StarSymbol;
! 	mso-hansi-font-family:StarSymbol;
! 	mso-bidi-font-family:StarSymbol;}
! span.FootnoteCharacters
! 	{mso-style-name:"Footnote Characters";
! 	mso-style-parent:"";}
! span.EndnoteCharacters
! 	{mso-style-name:"Endnote Characters";
! 	mso-style-parent:"";}
  p.Heading, li.Heading, div.Heading
! 	{mso-style-name:Heading;
! 	mso-style-link:"Heading Char";
! 	mso-style-next:"Body Text";
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
- 	mso-pagination:none;
  	page-break-after:avoid;
- 	mso-hyphenate:none;
  	font-size:14.0pt;
! 	font-family:Albany;
! 	mso-fareast-font-family:"MS Mincho";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  p.Caption1, li.Caption1, div.Caption1
! 	{mso-style-name:Caption1;
! 	margin-top:6.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
- 	mso-pagination:no-line-numbers;
- 	mso-hyphenate:none;
  	font-size:10.0pt;
  	font-family:Thorndale;
- 	mso-fareast-font-family:"Andale Sans UI";
- 	mso-bidi-font-family:Tahoma;
- 	mso-fareast-language:#00FF;
  	font-style:italic;}
  p.Index, li.Index, div.Index
! 	{mso-style-name:Index;
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:no-line-numbers;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:Tahoma;
! 	mso-fareast-language:#00FF;}
  p.ContentsHeading, li.ContentsHeading, div.ContentsHeading
! 	{mso-style-name:"Contents Heading";
! 	mso-style-parent:Heading;
! 	margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
- 	mso-pagination:no-line-numbers;
  	page-break-after:avoid;
- 	mso-hyphenate:none;
  	font-size:16.0pt;
  	font-family:Albany;
- 	mso-fareast-font-family:"MS Mincho";
- 	mso-bidi-font-family:Tahoma;
- 	mso-fareast-language:#00FF;
  	font-weight:bold;}
  p.PreformattedText, li.PreformattedText, div.PreformattedText
! 	{mso-style-name:"Preformatted Text";
! 	margin:0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:10.0pt;
! 	font-family:Cumberland;
! 	mso-fareast-font-family:Cumberland;
! 	mso-bidi-font-family:Cumberland;
! 	mso-fareast-language:#00FF;}
  p.ListContents, li.ListContents, div.ListContents
! 	{mso-style-name:"List Contents";
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:28.35pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.ListHeading, li.ListHeading, div.ListHeading
! 	{mso-style-name:"List Heading";
! 	mso-style-next:"List Contents";
! 	margin-top:4.3pt;
  	margin-right:0pt;
  	margin-bottom:4.3pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  span.HeadingChar
! 	{mso-style-name:"Heading Char";
! 	mso-style-locked:yes;
! 	mso-style-link:Heading;
! 	mso-ansi-font-size:14.0pt;
! 	mso-bidi-font-size:14.0pt;
! 	font-family:Albany;
! 	mso-ascii-font-family:Albany;
! 	mso-fareast-font-family:"MS Mincho";
! 	mso-hansi-font-family:Albany;
! 	mso-bidi-font-family:Tahoma;
! 	mso-ansi-language:EN-US;
! 	mso-fareast-language:#00FF;
! 	mso-bidi-language:AR-SA;}
  span.Heading3Char
! 	{mso-style-name:"Heading 3 Char";
! 	mso-style-locked:yes;
! 	mso-style-parent:"Heading Char";
! 	mso-style-link:"Heading 3";
! 	mso-ansi-font-size:14.0pt;
! 	mso-bidi-font-size:14.0pt;
! 	font-family:Albany;
! 	mso-ascii-font-family:Albany;
! 	mso-fareast-font-family:"MS Mincho";
! 	mso-hansi-font-family:Albany;
! 	mso-bidi-font-family:Tahoma;
! 	mso-ansi-language:EN-US;
! 	mso-fareast-language:#00FF;
! 	mso-bidi-language:AR-SA;
  	font-weight:bold;}
  p.Header5, li.Header5, div.Header5
! 	{mso-style-name:"Header 5";
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  p.Heading3, li.Heading3, div.Heading3
! 	{mso-style-name:Heading3;
! 	margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
- 	mso-pagination:none;
- 	mso-hyphenate:none;
  	font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-bidi-font-family:"Times New Roman";
! 	mso-fareast-language:#00FF;}
  span.Heading4Char
! 	{mso-style-name:"Heading 4 Char";
! 	mso-style-locked:yes;
! 	mso-style-link:"Heading 4";
! 	mso-ansi-font-size:14.0pt;
! 	mso-bidi-font-size:14.0pt;
! 	font-family:"Andale Sans UI";
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-ansi-language:EN-US;
! 	mso-fareast-language:#00FF;
! 	mso-bidi-language:AR-SA;
  	font-weight:bold;}
  p.Default, li.Default, div.Default
! 	{mso-style-name:Default;
! 	mso-style-parent:"";
! 	margin:0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
- 	mso-layout-grid-align:none;
  	text-autospace:none;
  	font-size:12.0pt;
  	font-family:Arial;
- 	mso-fareast-font-family:"MS Mincho";
  	color:black;}
  span.BodyTextChar
! 	{mso-style-name:"Body Text Char";
! 	mso-style-locked:yes;
! 	mso-style-link:"Body Text";
! 	mso-ansi-font-size:12.0pt;
! 	mso-bidi-font-size:12.0pt;
! 	font-family:Thorndale;
! 	mso-ascii-font-family:Thorndale;
! 	mso-fareast-font-family:"Andale Sans UI";
! 	mso-hansi-font-family:Thorndale;
! 	mso-ansi-language:EN-US;
! 	mso-fareast-language:#00FF;
! 	mso-bidi-language:AR-SA;}
   /* Page Definitions */
!  @page
! 	{mso-footnote-separator:url("relnotes_files/header.htm") fs;
! 	mso-footnote-continuation-separator:url("relnotes_files/header.htm") fcs;
! 	mso-endnote-separator:url("relnotes_files/header.htm") es;
! 	mso-endnote-continuation-separator:url("relnotes_files/header.htm") ecs;
! 	mso-footnote-position:beneath-text;}
! @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;
! 	mso-footnote-position:beneath-text;}
  @page Section2
  	{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-header:url("relnotes_files/header.htm") h2;
! 	mso-paper-source:0;}
  div.Section2
  	{page:Section2;}
   /* List Definitions */
!  @list l0
! 	{mso-list-id:-132;
! 	mso-list-type:simple;
! 	mso-list-template-ids:-1234375184;}
! @list l0:level1
! 	{mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:left;
! 	margin-left:90.0pt;
! 	text-indent:-18.0pt;}
! @list l1
! 	{mso-list-id:-131;
! 	mso-list-type:simple;
! 	mso-list-template-ids:1628742212;}
! @list l1:level1
! 	{mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	margin-left:72.0pt;
! 	text-indent:-18.0pt;}
! @list l2
! 	{mso-list-id:-130;
! 	mso-list-type:simple;
! 	mso-list-template-ids:1598849380;}
! @list l2:level1
! 	{mso-level-tab-stop:54.0pt;
! 	mso-level-number-position:left;
! 	margin-left:54.0pt;
! 	text-indent:-18.0pt;}
! @list l3
! 	{mso-list-id:-129;
! 	mso-list-type:simple;
! 	mso-list-template-ids:-1708084928;}
! @list l3:level1
! 	{mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;}
! @list l4
! 	{mso-list-id:-128;
! 	mso-list-type:simple;
! 	mso-list-template-ids:-573116274;}
! @list l4:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:left;
! 	margin-left:90.0pt;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l5
! 	{mso-list-id:-127;
! 	mso-list-type:simple;
! 	mso-list-template-ids:-1674157402;}
! @list l5:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	margin-left:72.0pt;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l6
! 	{mso-list-id:-126;
! 	mso-list-type:simple;
! 	mso-list-template-ids:-855098526;}
! @list l6:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:54.0pt;
! 	mso-level-number-position:left;
! 	margin-left:54.0pt;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l7
! 	{mso-list-id:-125;
! 	mso-list-type:simple;
! 	mso-list-template-ids:1629288942;}
! @list l7: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;}
! @list l8
! 	{mso-list-id:-120;
! 	mso-list-type:simple;
! 	mso-list-template-ids:1092749420;}
! @list l8:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;}
! @list l9
! 	{mso-list-id:-119;
! 	mso-list-type:simple;
! 	mso-list-template-ids:-593317242;}
! @list l9:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l10
! 	{mso-list-id:1;
! 	mso-list-template-ids:1148726518;}
! @list l10:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;}
! @list l10:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l10:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11
! 	{mso-list-id:2;
! 	mso-list-template-ids:2;}
! @list l11:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l11:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12
! 	{mso-list-id:3;
! 	mso-list-template-ids:3;}
! @list l12:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l12:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13
! 	{mso-list-id:4;
! 	mso-list-template-ids:4;}
! @list l13:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l13:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14
! 	{mso-list-id:5;
! 	mso-list-template-ids:5;}
! @list l14:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l14:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15
! 	{mso-list-id:6;
! 	mso-list-template-ids:6;}
! @list l15:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l15:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16
! 	{mso-list-id:7;
! 	mso-list-template-ids:7;}
! @list l16:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l16:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17
! 	{mso-list-id:8;
! 	mso-list-template-ids:8;}
! @list l17:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l17:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18
! 	{mso-list-id:9;
! 	mso-list-template-ids:9;}
! @list l18:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l18:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19
! 	{mso-list-id:10;
! 	mso-list-template-ids:10;}
! @list l19:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l19:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20
! 	{mso-list-id:11;
! 	mso-list-template-ids:11;}
! @list l20:level1
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:14.15pt;
! 	mso-level-number-position:left;
! 	margin-left:14.15pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l20:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l21
! 	{mso-list-id:12;
! 	mso-list-template-ids:12;}
! @list l21:level1
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level2
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level3
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level4
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level5
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level6
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level7
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level8
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l21:level9
! 	{mso-level-number-format:none;
! 	mso-level-text:"";
! 	mso-level-tab-stop:0pt;
! 	mso-level-number-position:left;
! 	margin-left:0pt;
! 	text-indent:0pt;}
! @list l22
! 	{mso-list-id:116531205;
! 	mso-list-template-ids:-1288027304;}
! @list l22:level1
! 	{mso-level-text:"%1\)";
! 	mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;}
! @list l23
! 	{mso-list-id:276641855;
! 	mso-list-template-ids:67698719;}
! @list l23:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;}
! @list l23:level2
! 	{mso-level-text:"%1\.%2\.";
! 	mso-level-tab-stop:39.6pt;
! 	mso-level-number-position:left;
! 	margin-left:39.6pt;
! 	text-indent:-21.6pt;}
! @list l23:level3
! 	{mso-level-text:"%1\.%2\.%3\.";
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	margin-left:61.2pt;
! 	text-indent:-25.2pt;}
! @list l23:level4
! 	{mso-level-text:"%1\.%2\.%3\.%4\.";
! 	mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:left;
! 	margin-left:86.4pt;
! 	text-indent:-32.4pt;}
! @list l23:level5
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
! 	mso-level-tab-stop:126.0pt;
! 	mso-level-number-position:left;
! 	margin-left:111.6pt;
! 	text-indent:-39.6pt;}
! @list l23:level6
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	margin-left:136.8pt;
! 	text-indent:-46.8pt;}
! @list l23:level7
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	margin-left:162.0pt;
! 	text-indent:-54.0pt;}
! @list l23:level8
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
! 	mso-level-tab-stop:198.0pt;
! 	mso-level-number-position:left;
! 	margin-left:187.2pt;
! 	text-indent:-61.2pt;}
! @list l23:level9
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
! 	mso-level-tab-stop:234.0pt;
! 	mso-level-number-position:left;
! 	margin-left:216.0pt;
! 	text-indent:-72.0pt;}
! @list l24
! 	{mso-list-id:291328403;
! 	mso-list-template-ids:1148726518;}
! @list l24:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;}
! @list l24:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l24:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l25
! 	{mso-list-id:465316796;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:747157604 -1330584532 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l25:level1
! 	{mso-level-start-at:0;
! 	mso-level-number-format:bullet;
! 	mso-level-text:\F0D8;
! 	mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;
! 	mso-fareast-font-family:Cumberland;
! 	mso-bidi-font-family:Cumberland;}
! @list l26
! 	{mso-list-id:604534799;
! 	mso-list-template-ids:1659901228;}
! @list l26: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;}
! @list l26:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l26:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:108.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l26:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l26:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l26:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:216.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l26:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:252.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l26:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:288.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l26:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:324.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l27
! 	{mso-list-id:671564588;
! 	mso-list-template-ids:67698719;}
! @list l27:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;}
! @list l27:level2
! 	{mso-level-text:"%1\.%2\.";
! 	mso-level-tab-stop:39.6pt;
! 	mso-level-number-position:left;
! 	margin-left:39.6pt;
! 	text-indent:-21.6pt;}
! @list l27:level3
! 	{mso-level-text:"%1\.%2\.%3\.";
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	margin-left:61.2pt;
! 	text-indent:-25.2pt;}
! @list l27:level4
! 	{mso-level-text:"%1\.%2\.%3\.%4\.";
! 	mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:left;
! 	margin-left:86.4pt;
! 	text-indent:-32.4pt;}
! @list l27:level5
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
! 	mso-level-tab-stop:126.0pt;
! 	mso-level-number-position:left;
! 	margin-left:111.6pt;
! 	text-indent:-39.6pt;}
! @list l27:level6
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	margin-left:136.8pt;
! 	text-indent:-46.8pt;}
! @list l27:level7
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	margin-left:162.0pt;
! 	text-indent:-54.0pt;}
! @list l27:level8
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
! 	mso-level-tab-stop:198.0pt;
! 	mso-level-number-position:left;
! 	margin-left:187.2pt;
! 	text-indent:-61.2pt;}
! @list l27:level9
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
! 	mso-level-tab-stop:234.0pt;
! 	mso-level-number-position:left;
! 	margin-left:216.0pt;
! 	text-indent:-72.0pt;}
! @list l28
! 	{mso-list-id:696472061;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:986222236 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l28: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;}
! @list l29
! 	{mso-list-id:718094992;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:-1288027304 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
! @list l29:level1
! 	{mso-level-text:"%1\)";
! 	mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;}
! @list l30
! 	{mso-list-id:753824527;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:-1854628230 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l30: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;}
! @list l31
! 	{mso-list-id:803735998;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:58764522 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l31: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;}
! @list l32
! 	{mso-list-id:858816198;
! 	mso-list-template-ids:1148726518;}
! @list l32:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;}
! @list l32:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:28.35pt;
! 	mso-level-number-position:left;
! 	margin-left:28.35pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:42.5pt;
! 	mso-level-number-position:left;
! 	margin-left:42.5pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:56.7pt;
! 	mso-level-number-position:left;
! 	margin-left:56.7pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:70.85pt;
! 	mso-level-number-position:left;
! 	margin-left:70.85pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:85.05pt;
! 	mso-level-number-position:left;
! 	margin-left:85.05pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:99.2pt;
! 	mso-level-number-position:left;
! 	margin-left:99.2pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:113.4pt;
! 	mso-level-number-position:left;
! 	margin-left:113.4pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l32:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:127.55pt;
! 	mso-level-number-position:left;
! 	margin-left:127.55pt;
! 	text-indent:-14.15pt;
! 	mso-ansi-font-size:9.0pt;
! 	mso-bidi-font-size:9.0pt;
! 	mso-ascii-font-family:Symbol;
! 	mso-hansi-font-family:Symbol;
! 	mso-bidi-font-family:StarSymbol;}
! @list l33
! 	{mso-list-id:865482897;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:-2013987438 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
! @list l33:level1
! 	{mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;}
! @list l34
! 	{mso-list-id:1082213354;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:1622673204 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
! @list l34:level1
! 	{mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;}
! @list l35
! 	{mso-list-id:1281301046;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:1985279396 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
! @list l35:level1
! 	{mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;}
! @list l36
! 	{mso-list-id:1320424235;
! 	mso-list-template-ids:-1854628230;}
! @list l36: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;}
! @list l36:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l36:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:108.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l36:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l36:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l36:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:216.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l36:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:252.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l36:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:288.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l36:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:324.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l37
! 	{mso-list-id:1438016346;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:1659901228 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l37: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;}
! @list l38
! 	{mso-list-id:1495950886;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:-898045188 -1269669692 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l38:level1
! 	{mso-level-start-at:0;
! 	mso-level-number-format:bullet;
! 	mso-level-text:\F0D8;
! 	mso-level-tab-stop:36.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;
! 	mso-fareast-font-family:Cumberland;
! 	mso-bidi-font-family:Cumberland;}
! @list l39
! 	{mso-list-id:1678120386;
! 	mso-list-template-ids:58764522;}
! @list l39: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;}
! @list l39:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l39:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:108.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l39:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l39:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l39:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:216.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l39:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:252.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l39:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:288.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l39:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:324.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l40
! 	{mso-list-id:1740133347;
! 	mso-list-template-ids:-5492374;}
! @list l40:level1
! 	{mso-level-text:"%1\)";
! 	mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;}
! @list l40:level2
! 	{mso-level-number-format:alpha-lower;
! 	mso-level-tab-stop:54.0pt;
! 	mso-level-number-position:left;
! 	margin-left:54.0pt;
! 	text-indent:-18.0pt;}
! @list l40:level3
! 	{mso-level-number-format:roman-lower;
! 	mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:right;
! 	margin-left:90.0pt;
! 	text-indent:-9.0pt;}
! @list l40:level4
! 	{mso-level-tab-stop:126.0pt;
! 	mso-level-number-position:left;
! 	margin-left:126.0pt;
! 	text-indent:-18.0pt;}
! @list l40:level5
! 	{mso-level-number-format:alpha-lower;
! 	mso-level-tab-stop:162.0pt;
! 	mso-level-number-position:left;
! 	margin-left:162.0pt;
! 	text-indent:-18.0pt;}
! @list l40:level6
! 	{mso-level-number-format:roman-lower;
! 	mso-level-tab-stop:198.0pt;
! 	mso-level-number-position:right;
! 	margin-left:198.0pt;
! 	text-indent:-9.0pt;}
! @list l40:level7
! 	{mso-level-tab-stop:234.0pt;
! 	mso-level-number-position:left;
! 	margin-left:234.0pt;
! 	text-indent:-18.0pt;}
! @list l40:level8
! 	{mso-level-number-format:alpha-lower;
! 	mso-level-tab-stop:270.0pt;
! 	mso-level-number-position:left;
! 	margin-left:270.0pt;
! 	text-indent:-18.0pt;}
! @list l40:level9
! 	{mso-level-number-format:roman-lower;
! 	mso-level-tab-stop:306.0pt;
! 	mso-level-number-position:right;
! 	margin-left:306.0pt;
! 	text-indent:-9.0pt;}
! @list l41
! 	{mso-list-id:1781024997;
! 	mso-list-template-ids:67698719;}
! @list l41:level1
! 	{mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;}
! @list l41:level2
! 	{mso-level-text:"%1\.%2\.";
! 	mso-level-tab-stop:39.6pt;
! 	mso-level-number-position:left;
! 	margin-left:39.6pt;
! 	text-indent:-21.6pt;}
! @list l41:level3
! 	{mso-level-text:"%1\.%2\.%3\.";
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	margin-left:61.2pt;
! 	text-indent:-25.2pt;}
! @list l41:level4
! 	{mso-level-text:"%1\.%2\.%3\.%4\.";
! 	mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:left;
! 	margin-left:86.4pt;
! 	text-indent:-32.4pt;}
! @list l41:level5
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.";
! 	mso-level-tab-stop:126.0pt;
! 	mso-level-number-position:left;
! 	margin-left:111.6pt;
! 	text-indent:-39.6pt;}
! @list l41:level6
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.";
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	margin-left:136.8pt;
! 	text-indent:-46.8pt;}
! @list l41:level7
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.";
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	margin-left:162.0pt;
! 	text-indent:-54.0pt;}
! @list l41:level8
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.";
! 	mso-level-tab-stop:198.0pt;
! 	mso-level-number-position:left;
! 	margin-left:187.2pt;
! 	text-indent:-61.2pt;}
! @list l41:level9
! 	{mso-level-text:"%1\.%2\.%3\.%4\.%5\.%6\.%7\.%8\.%9\.";
! 	mso-level-tab-stop:234.0pt;
! 	mso-level-number-position:left;
! 	margin-left:216.0pt;
! 	text-indent:-72.0pt;}
! @list l42
! 	{mso-list-id:1834448678;
! 	mso-list-template-ids:-5492374;}
! @list l42:level1
! 	{mso-level-text:"%1\)";
! 	mso-level-tab-stop:18.0pt;
! 	mso-level-number-position:left;
! 	margin-left:18.0pt;
! 	text-indent:-18.0pt;}
! @list l42:level2
! 	{mso-level-number-format:alpha-lower;
! 	mso-level-tab-stop:54.0pt;
! 	mso-level-number-position:left;
! 	margin-left:54.0pt;
! 	text-indent:-18.0pt;}
! @list l42:level3
! 	{mso-level-number-format:roman-lower;
! 	mso-level-tab-stop:90.0pt;
! 	mso-level-number-position:right;
! 	margin-left:90.0pt;
! 	text-indent:-9.0pt;}
! @list l42:level4
! 	{mso-level-tab-stop:126.0pt;
! 	mso-level-number-position:left;
! 	margin-left:126.0pt;
! 	text-indent:-18.0pt;}
! @list l42:level5
! 	{mso-level-number-format:alpha-lower;
! 	mso-level-tab-stop:162.0pt;
! 	mso-level-number-position:left;
! 	margin-left:162.0pt;
! 	text-indent:-18.0pt;}
! @list l42:level6
! 	{mso-level-number-format:roman-lower;
! 	mso-level-tab-stop:198.0pt;
! 	mso-level-number-position:right;
! 	margin-left:198.0pt;
! 	text-indent:-9.0pt;}
! @list l42:level7
! 	{mso-level-tab-stop:234.0pt;
! 	mso-level-number-position:left;
! 	margin-left:234.0pt;
! 	text-indent:-18.0pt;}
! @list l42:level8
! 	{mso-level-number-format:alpha-lower;
! 	mso-level-tab-stop:270.0pt;
! 	mso-level-number-position:left;
! 	margin-left:270.0pt;
! 	text-indent:-18.0pt;}
! @list l42:level9
! 	{mso-level-number-format:roman-lower;
! 	mso-level-tab-stop:306.0pt;
! 	mso-level-number-position:right;
! 	margin-left:306.0pt;
! 	text-indent:-9.0pt;}
! @list l43
! 	{mso-list-id:1954169307;
! 	mso-list-template-ids:986222236;}
! @list l43: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;}
! @list l43:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l43:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:108.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l43:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l43:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l43:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:216.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l43:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:252.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l43:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:288.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l43:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:324.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l44
! 	{mso-list-id:2000840094;
! 	mso-list-template-ids:519993794;}
! @list l44: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;}
! @list l44:level2
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:72.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l44:level3
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:108.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l44:level4
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:144.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l44:level5
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:180.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l44:level6
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:216.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l44:level7
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0B7;
! 	mso-level-tab-stop:252.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Symbol;}
! @list l44:level8
! 	{mso-level-number-format:bullet;
! 	mso-level-text:o;
! 	mso-level-tab-stop:288.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:"Courier New";}
! @list l44:level9
! 	{mso-level-number-format:bullet;
! 	mso-level-text:\F0A7;
! 	mso-level-tab-stop:324.0pt;
! 	mso-level-number-position:left;
! 	text-indent:-18.0pt;
! 	font-family:Wingdings;}
! @list l45
! 	{mso-list-id:2140024448;
! 	mso-list-type:hybrid;
! 	mso-list-template-ids:519993794 67698689 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
! @list l45: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-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	mso-bidi-language:#0400;}
! table.MsoTable3DFx1
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-tstyle-rowband-size:0;
! 	mso-tstyle-colband-size:0;
! 	mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
! 	mso-tstyle-shading:white;
! 	mso-tstyle-pattern:solid silver;
! 	mso-para-margin-top:7.2pt;
! 	mso-para-margin-right:0pt;
! 	mso-para-margin-bottom:7.2pt;
! 	mso-para-margin-left:0pt;
! 	mso-pagination:none;
! 	mso-hyphenate:none;
! 	font-size:10.0pt;
! 	font-family:"Times New Roman";
! 	mso-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	mso-bidi-language:#0400;}
! table.MsoTable3DFx1FirstRow
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:first-row;
! 	mso-tstyle-border-bottom:.75pt solid gray;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;
! 	color:purple;
! 	mso-ansi-font-weight:bold;
! 	mso-bidi-font-weight:bold;}
! table.MsoTable3DFx1LastRow
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:last-row;
! 	mso-tstyle-border-top:.75pt solid white;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;}
! table.MsoTable3DFx1FirstCol
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:first-column;
! 	mso-tstyle-border-right:.75pt solid gray;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;
! 	mso-ansi-font-weight:bold;
! 	mso-bidi-font-weight:bold;}
! table.MsoTable3DFx1LastCol
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:last-column;
! 	mso-tstyle-border-left:.75pt solid white;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;}
! table.MsoTable3DFx1NECell
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:ne-cell;
! 	mso-tstyle-border-left:0pt none windowtext;
! 	mso-tstyle-border-bottom:0pt none windowtext;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;}
! table.MsoTable3DFx1NWCell
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:nw-cell;
! 	mso-tstyle-border-bottom:0pt none windowtext;
! 	mso-tstyle-border-right:0pt none windowtext;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;}
! table.MsoTable3DFx1SECell
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:se-cell;
! 	mso-tstyle-border-top:0pt none windowtext;
! 	mso-tstyle-border-left:0pt none windowtext;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;}
! table.MsoTable3DFx1SWCell
! 	{mso-style-name:"Table 3D effects 1";
! 	mso-table-condition:sw-cell;
! 	mso-tstyle-border-top:0pt none windowtext;
! 	mso-tstyle-border-right:0pt none windowtext;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;
! 	color:navy;}
! table.MsoTableWeb1
! 	{mso-style-name:"Table Web 1";
! 	mso-tstyle-rowband-size:0;
! 	mso-tstyle-colband-size:0;
! 	mso-cellspacing:2.0pt;
! 	border:outset 1.0pt;
! 	mso-border-alt:outset windowtext .75pt;
! 	mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
! 	mso-border-insideh:.75pt outset windowtext;
! 	mso-border-insidev:.75pt outset windowtext;
! 	mso-para-margin-top:7.2pt;
! 	mso-para-margin-right:0pt;
! 	mso-para-margin-bottom:7.2pt;
! 	mso-para-margin-left:0pt;
! 	mso-pagination:none;
! 	mso-hyphenate:none;
! 	font-size:10.0pt;
! 	font-family:"Times New Roman";
! 	mso-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	mso-bidi-language:#0400;}
! table.MsoTableWeb1FirstRow
! 	{mso-style-name:"Table Web 1";
! 	mso-table-condition:first-row;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;
! 	color:windowtext;}
! table.MsoTableWeb3
! 	{mso-style-name:"Table Web 3";
! 	mso-tstyle-rowband-size:0;
! 	mso-tstyle-colband-size:0;
! 	mso-cellspacing:2.0pt;
! 	border:outset 3.0pt;
! 	mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
! 	mso-border-insideh:.75pt outset windowtext;
! 	mso-border-insidev:.75pt outset windowtext;
! 	mso-para-margin-top:7.2pt;
! 	mso-para-margin-right:0pt;
! 	mso-para-margin-bottom:7.2pt;
! 	mso-para-margin-left:0pt;
! 	mso-pagination:none;
! 	mso-hyphenate:none;
! 	font-size:10.0pt;
! 	font-family:"Times New Roman";
! 	mso-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	mso-bidi-language:#0400;}
! table.MsoTableWeb3FirstRow
! 	{mso-style-name:"Table Web 3";
! 	mso-table-condition:first-row;
! 	mso-tstyle-diagonal-down:0pt none windowtext;
! 	mso-tstyle-diagonal-up:0pt none windowtext;
! 	color:windowtext;}
! table.MsoTableGrid
! 	{mso-style-name:"Table Grid";
! 	mso-tstyle-rowband-size:0;
! 	mso-tstyle-colband-size:0;
! 	border:solid windowtext 1.0pt;
! 	mso-border-alt:solid windowtext .5pt;
! 	mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
! 	mso-border-insideh:.5pt solid windowtext;
! 	mso-border-insidev:.5pt solid windowtext;
! 	mso-para-margin-top:7.2pt;
! 	mso-para-margin-right:0pt;
! 	mso-para-margin-bottom:7.2pt;
! 	mso-para-margin-left:0pt;
! 	mso-pagination:none;
! 	mso-hyphenate:none;
! 	font-size:10.0pt;
! 	font-family:"Times New Roman";
! 	mso-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	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"/>
!  </o:shapelayout></xml><![endif]-->
  </head>
  
! <body lang=EN-US link=navy vlink=maroon style='tab-interval:35.45pt;line-break:
! strict'>
  
  <div class=Section1>
  
! <p class=MsoTitle>OpenAFS for Windows 1.4.1<br>
  Release Notes</p>
  
  <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
! file system that uses a local cache to increase its performance.<span
! style='mso-spacerun:yes'>  </span>An AFS client accesses files anonymously or
! via a Kerberos authentication.<span style='mso-spacerun:yes'>  </span>The
! global AFS is partitioned into cells.<span style='mso-spacerun:yes'> 
! </span>The AFS cell is a collection of AFS volumes that are administered by a
! common entity.<span style='mso-spacerun:yes'>   </span>AFS cells can be
! administered by a department even when the Kerberos realm used for local
! authentication is managed by a much larger organization.<span
! style='mso-spacerun:yes'>  </span>AFS clients and servers take advantage of
! Kerberos cross realm authentication to enable authenticated access by entities
! located outside the local realm.<span style='mso-spacerun:yes'> 
! </span>Authorization is enforced by the use of directory level access control
! lists which can consist of individual or group identities.<span
! style='mso-spacerun:yes'>  </span></p>
! 
! <p class=MsoBodyText>The AFS volume is a tree of files and
! sub-directories.<span style='mso-spacerun:yes'>  </span>AFS volumes are created
! by administrators and are joined to an AFS cell via the use of a mount
! point.<span style='mso-spacerun:yes'>   </span>Once a volume is created, users
! can create files and directories as well as mount points and symlinks within
! the volume without regard for the physical location of the volume.<span
! style='mso-spacerun:yes'>  </span>Administrators can move the volume to another
! server as necessary without the need to notify users.<span
! style='mso-spacerun:yes'>   </span>In fact, the volume move can occur while
! files in the volume are in use.<span style='mso-spacerun:yes'>  </span></p>
! 
! <p class=MsoBodyText>AFS volumes can be replicated to read-only copies.<span
! style='mso-spacerun:yes'>   </span>When accessing files from a read-only replica,
! clients will read all of the data from a single replica.<span
! style='mso-spacerun:yes'>   </span>If that replica becomes unavailable, the
! clients will failover to any replica that is reachable.<span
! style='mso-spacerun:yes'>  </span>Users of the data are unaware of where the
! replicas are stored or which one is being accessed.<span
! style='mso-spacerun:yes'>   </span>The contents of the replicas can be updated
! at any time by <i style='mso-bidi-font-style:normal'>releasing</i> the current
  contents of the source volume.</p>
  
  <p class=MsoBodyText>OpenAFS for Windows (OAFW) provides AFS client access
! Microsoft Windows operating systems.<span style='mso-spacerun:yes'>  </span>It
! strives to maintain transparency such that the user is unaware of the
! distinction between the use of AFS and Microsoft Windows file shares.<span
! style='mso-spacerun:yes'>   </span>OAFW can be part of a single sign-on
! solution by allowing credentials for a Kerberos principal to be obtained at
! logon and for that principal to be used to obtain AFS tokens for one or more
! cells.<span style='mso-spacerun:yes'>   </span>Although OAFW is implemented as
! a locally installed SMB to AFS gateway, OAFW maintains the portability of file
! paths by its use of the <a href="file:///\\AFS">\\AFS</a> UNC server name.</p>
  
  <p class=MsoBodyText>OpenAFS is the product of an open source development
! effort begun in July 2001.<span style='mso-spacerun:yes'>  </span>OpenAFS is
! maintained and developed by a group of volunteers with the support of the user
! community.<span style='mso-spacerun:yes'>   </span>If you use OpenAFS as part
! of your computing infrastructure please contribute to its continued growth.</p>
! 
! <p class=MsoToc1><!--[if supportFields]><span style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>TOC \o &quot;1-1&quot; \h \z \u <span
! style='mso-element:field-separator'></span><![endif]--><span
! class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417109">1. Installer Options<span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417109 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>1</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100300039000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417110">2. System Requirements<span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417110 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>2</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310030000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417111">3. Operational Notes<span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417111 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>2</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310031000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417112">4. How to Debug Problems with
! OpenAFS for Windows:<span style='color:windowtext;display:none;mso-hide:screen;
! text-decoration:none;text-underline:none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417112 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>11</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310032000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417113">5. Reporting Bugs:<span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-tab-count:1 dotted'> </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417113 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>13</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310033000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417114">6. How to Contribute to the
! Development of OpenAFS for Windows<span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417114 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>14</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310034000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417115">7. MSI Deployment Guide<span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417115 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>15</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310035000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="oafw-1-4-release-notes.doc#_Toc115417116">Appendix A: Registry Values<span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-tab-count:1 dotted'>. </span></span><!--[if supportFields]><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'><span style='mso-element:field-begin'></span></span><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'> PAGEREF _Toc115417116 \h </span><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-separator'></span></span><![endif]--><span
! style='color:windowtext;display:none;mso-hide:screen;text-decoration:none;
! text-underline:none'>26</span><span style='color:windowtext;display:none;
! mso-hide:screen;text-decoration:none;text-underline:none'><!--[if gte mso 9]><xml>
!  <w:data>08D0C9EA79F9BACE118C8200AA004BA90B02000000080000000E0000005F0054006F0063003100310035003400310037003100310036000000</w:data>
! </xml><![endif]--></span><!--[if supportFields]><span style='color:windowtext;
! display:none;mso-hide:screen;text-decoration:none;text-underline:none'><span
! style='mso-element:field-end'></span></span><![endif]--></a></span></span><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA;mso-no-proof:yes'><o:p></o:p></span></p>
! 
! <h1 style='margin-left:0pt;text-indent:0pt'><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><a name="_Toc126872163"></a><a
! name="_Toc115417109"></a><a name="_Toc115417037"></a><a name="_Toc115416098"><span
! style='mso-bookmark:_Toc115417037'><span style='mso-bookmark:_Toc115417109'><span
! style='mso-bookmark:_Toc126872163'>1. Installer Options</span></span></span></a></h1>
! 
! <p class=MsoNormal>It can be installed either as a new installation or an
! upgrade from previous versions of OpenAFS for Windows or IBM AFS for
! Windows.<span style='mso-spacerun:yes'>  </span>Installers are provided in two
! forms:</p>
! 
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l10 level1 lfo1;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='font-size:9.0pt;
! mso-fareast-font-family:Thorndale;mso-bidi-font-family:Thorndale'><span
! style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>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;mso-list:l10 level1 lfo1;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='font-size:9.0pt;
! mso-fareast-font-family:Thorndale;mso-bidi-font-family:Thorndale'><span
! style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>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="oafw-1-4-release-notes.doc#_MSI_Deployment_Guide">MSI Deployment
  Guide</a>)</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872164"></a><a
! name="_Toc115417110"></a><a name="_Toc115417038"></a><a name="_Toc115416099"><span
! style='mso-bookmark:_Toc115417038'><span style='mso-bookmark:_Toc115417110'><span
! style='mso-bookmark:_Toc126872164'>2. System Requirements</span></span></span></a></h1>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872165"></a><a
! name="_Toc115417039"></a><a name="_Toc115416100"><span style='mso-bookmark:
! _Toc115417039'><span style='mso-bookmark:_Toc126872165'>2.1 Supported Operating
! Systems</span></span></a></h2>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l11 level1 lfo2;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 2000 Workstation</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l11 level1 lfo2;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 2000 Server</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l11 level1 lfo2;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows XP Home</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l11 level1 lfo2;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows XP Professional</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l11 level1 lfo2;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 2003 Server</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l11 level1 lfo2;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 2003 R2 Server</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872166"></a><a
! name="_Toc115416101"><span style='mso-bookmark:_Toc126872166'>2.1.1 Unsupported
! Operating Systems</span></a></h3>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 95</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 98</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows 98 OSR2</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows ME</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! NT</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Microsoft
! Windows Vista (as of Beta 1 bugs in Windows prevent its use)</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l12 level1 lfo3;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>All
! 64-bit versions of Microsoft Windows on Itanium and x86-64 chipsets.</p>
  
  <p class=MsoNormal>Older releases of OpenAFS are available for download if
! those operating systems must be supported.<span style='mso-spacerun:yes'> 
! </span>The last version of OpenAFS with support for Win9x is 1.2.2b.<span
! style='mso-spacerun:yes'>  </span>The last version with support for Windows NT
  4.0 is 1.2.10.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872167"></a><a
! name="_Toc115417040"></a><a name="_Toc115416102"><span style='mso-bookmark:
! _Toc115417040'><span style='mso-bookmark:_Toc126872167'>2.2 Disk Space</span></span></a></h2>
  
  <p class=MsoNormal>Up to 60mb required for the OpenAFS binaries plus 100MB for
! the default AFSCache file.<span style='mso-spacerun:yes'>   </span>(The size of
! the AFSCache file may be adjusted via the Registry after installation.)</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872168"></a><a
! name="_Toc115417041"></a><a name="_Toc115416103"><span style='mso-bookmark:
! _Toc115417041'><span style='mso-bookmark:_Toc126872168'>2.3 Additional Software</span></span></a></h2>
  
  <p class=MsoNormal><a href="http://web.mit.edu/kerberos/dist/index.html">MIT
  Kerberos for Windows</a> 2.6.x or 3.x.x if Kerberos 5 authentication support is
  desired.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872169"></a><a
! name="_Toc115417111"></a><a name="_Toc115417042"></a><a name="_Toc115416104"><span
! style='mso-bookmark:_Toc115417042'><span style='mso-bookmark:_Toc115417111'><span
! style='mso-bookmark:_Toc126872169'>3. Operational Notes</span></span></span></a></h1>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872170"></a><a
! name="_Toc115417043"></a><a name="_Toc115416105"><span style='mso-bookmark:
! _Toc115417043'><span style='mso-bookmark:_Toc126872170'>3.1. Requirements for
! Kerberos 5 Authentication</span></span></a></h2>
  
  <p class=MsoNormal>The Kerberos 4 infrastructure on which the OpenAFS 1.2
! series is reliant is no longer secure.<span style='mso-spacerun:yes'> 
! </span>Cross-realm Kerberos is very important in the AFS context and most sites
! have or are migrating to Kerberos 5 environments.<span
! style='mso-spacerun:yes'>  </span>The OpenAFS 1.4 series integrates with MIT
! Kerberos for Windows 2.6.5 to support Kerberos 5 authentication including
! automatic renewal of AFS tokens and single sign-on via the Microsoft Windows
! Kerberos Logon Service.</p>
  
  <p class=MsoNormal>When KFW is installed, the OpenAFS 1.4 client will obtain
! Kerberos 5 tickets and use them as tokens without modification.<span
! style='mso-spacerun:yes'>  </span>The OpenAFS 1.4 client requires that all of
! the AFS Servers with which it communicates support the use of Kerberos 5
! tickets as tokens. If Kerberos 5 based tokens are presented to an AFS server
! that does not understand them, the server will be unable to communicate with
! the client when tokens are present. Kerberos 5 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 5.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;Kerberos 5&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872171"></a><a
! name="_Toc115416106"><span style='mso-bookmark:_Toc126872171'>3.1.1. Active
! Directory</span></a></h3>
  
  <p class=MsoNormal>There are two things to consider when using a Microsoft
  Windows Active Directory as the Kerberos realm that issues the AFS service
! ticket.<span style='mso-spacerun:yes'>  </span>First, the Kerberos 5 tickets
! issued by Active Directory can be quite large when compared to tickets issued
! by a traditional KDC due to the incorporation of authorization data in the <st2:place
! w:st="on">PAC.</st2:place><span style='mso-spacerun:yes'>  </span>If the issued
! tickets become larger than 344 bytes OpenAFS 1.2 servers will be unable to
! process them.<span style='mso-spacerun:yes'>  </span>OpenAFS 1.4 servers can
! support the largest tickets that Active Directory can issue.<span
! style='mso-spacerun:yes'>  </span>Second, the Kerberos 5 tickets issued by
! Windows 2003 Active Directory are encrypted with the DES-CBC-MD5 enctype.<span
! style='mso-spacerun:yes'>  </span>OpenAFS 1.2 servers only support the
! DES-CBC-CRC enctype.<!--[if supportFields]><span style='mso-element:field-begin'></span>
! XE &quot;Active Directory&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;DES enctypes&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872172"></a><a
! name="_Toc115416107"><span style='mso-bookmark:_Toc126872172'>3.1.2. Using the
! krb524 service</span></a></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 5 ticket from realm FOO to a
! Kerberos 4 ticket in realm BAR.<span style='mso-spacerun:yes'>  </span>This
! allows user@FOO to appear to be user@bar for the purposes of accessing the AFS
! cell.<span style='mso-spacerun:yes'>  </span>As of OpenAFS 1.2.8, support was
  added to allow the immediate use of Kerberos 5 tickets as AFS (2b) tokens. This
  is the first building block necessary to break away from the limitations of
! Kerberos 4 with AFS.<span style='mso-spacerun:yes'>  </span>By using Kerberos 5
! directly we avoid the security holes inherent in Kerberos 4 cross-realm.<span
! style='mso-spacerun:yes'>  </span>We also gain access to cryptographically
  stronger algorithms for authentication and encryption. </p>
  
  <p class=MsoNormal>Another reason for using Kerberos 5 directly is because the
  krb524 service runs on a port (4444) which has become increasingly blocked by
! ISPs.<span style='mso-spacerun:yes'>  </span>The port was used to spread a worm
! which attacked Microsoft Windows in the summer of 2003.<span
! style='mso-spacerun:yes'>  </span>When the port is blocked users find that they
! are unable to authenticate.</p>
  
  <p class=MsoNormal>Replacing the Kerberos 4 ticket with a Kerberos 5 ticket is
  a win in all situations except when the cell name does not match the realm name
  and the principal names placed into the ACL’s are not the principal names from
! the Kerberos 5 ticket.<span style='mso-spacerun:yes'>  </span>To support this
! transition, OpenAFS for Windows 1.4 adds a new registry value, <i><a
! href="oafw-1-4-release-notes.doc#_Value___: Use524">Use524</a></i>, to force
! the use of krb524d.<span style='mso-spacerun:yes'>  </span>However, the
! availability of this option should only be used by individuals until such time
! as their organizations can provide a more permanent solution.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;Kerberos 5&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;krb524&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872173"></a><a
! name="_Toc115417044"></a><a name="_Toc115416108"><span style='mso-bookmark:
! _Toc115417044'><span style='mso-bookmark:_Toc126872173'>3.2. Use of the
! Microsoft Loopback Adapter</span></span></a></h2>
  
  <p class=MsoNormal>By itself the OpenAFS Client Service does not provide robust
! behavior in a plug-n-play network environment.<span style='mso-spacerun:yes'> 
! </span>Changes to the number of network adapters or their assigned IP addresses
! will cause the service to terminate unexpectedly.<span
! style='mso-spacerun:yes'>  </span>To avoid this behavior OpenAFS for Windows
! installs a single instance of the Microsoft Loopback Adapter (MLA) on the
! machine.<span style='mso-spacerun:yes'>  </span>With the MLA installed, the
! OpenAFS Client Service will not be affected by the configuration changes of
! other network adapters installed on the system.<span style='mso-spacerun:yes'> 
! </span></p>
! 
! <p class=MsoNormal>The MLA is installed with a name of &quot;AFS&quot; and a
! pre-assigned IP address in the 10.x.x.x range.<span style='mso-spacerun:yes'> 
! </span>The MLA is bound to the “Client for Microsoft Networks” service and not
! bound to the “File and Printer Sharing for Microsoft Networks”.<span
! style='mso-spacerun:yes'>  </span>If the MLA is unbound to &quot;Client
! Microsoft Networks&quot;, the OpenAFS Client Service will become inaccessible
! when the machine is disconnected from the network.<span
! style='mso-spacerun:yes'>  </span>If the MLA is bound to &quot;File and Printer
! Sharing ...&quot; there will be a service type collision between the name
! &quot;AFS&quot; and the name of the machine on the MLA's IP Address that will
! result in the OpenAFS client service becoming inaccessible and the &quot;NET
! VIEW \\AFS&quot; command will return a &quot;System Error 52&quot;
! message.<span style='mso-spacerun:yes'>  </span>To correct the problem:</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l13 level1 lfo4;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]><span
! style='mso-spacerun:yes'> </span>stop the AFS Client Service</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l13 level1 lfo4;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]><span
! style='mso-spacerun:yes'> </span>bind the &quot;Client for Microsoft
! Networks&quot; to the MLA</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l13 level1 lfo4;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]><span
! style='mso-spacerun:yes'> </span>unbind &quot;File and Printer Sharing for
! Microsoft Networks&quot; from the MLA</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l13 level1 lfo4;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]><span
! style='mso-spacerun:yes'> </span>Disable and then re-enable the MLA</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l13 level1 lfo4;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]><span
! style='mso-spacerun:yes'> </span>start the AFS Client Service</p>
  
  <p class=MsoNormal>When the MLA is not installed the unique NETBIOS name
! published by OpenAFS SMB server is &quot;<i>MACHINE</i>-AFS&quot;.<span
! style='mso-spacerun:yes'>  </span>One of the benefits of using the MLA is that
! the NETBIOS name does not have to be published on any adapter other than the
! MLA.<span style='mso-spacerun:yes'>  </span>Therefore the chosen name is no
! longer required to be unique.<span style='mso-spacerun:yes'>  </span>Instead
! the NETBIOS name associated with 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.<!--[if supportFields]><span style='mso-element:field-begin'></span>
! XE &quot;loopback&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;UNC paths&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;NETBIOS&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872174"></a><a
! name="_Toc115417045"></a><a name="_Toc115416109"><span style='mso-bookmark:
! _Toc115417045'><span style='mso-bookmark:_Toc126872174'>3.3. Using Freelance
! (Dynamic Root) Mode to Improve Mobility</span></span></a></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.<span style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>If the &quot;root.afs&quot;
! volume is inaccessible when the client service is started, the service will
! terminate unexpectedly.<span style='mso-spacerun:yes'>  </span>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, a fake &quot;root.afs&quot; volume is dynamically constructed
! from mount points and symlinks stored in the local registry.<span
! style='mso-spacerun:yes'>  </span>This method of operation is referred to as
! Freelance mode.</p>
  
  <p class=MsoNormal>The content of the fake “root.afs” volume is dynamically
! modified as cells are accessed.<span style='mso-spacerun:yes'>  </span>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.<span
! style='mso-spacerun:yes'>  </span>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.<span
! style='mso-spacerun:yes'>  </span>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>.<span style='mso-spacerun:yes'>  </span>These
! mount points are preserved in the registry at key:</p>
  
  <p class=PreformattedText style='margin-left:35.45pt'><a
! href="oafw-1-4-release-notes.doc#_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.<span style='mso-spacerun:yes'>  </span>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>
--- 1,676 ----
! <html>
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
! <meta name=Generator content="Microsoft Word 11 (filtered)">
! <title>OpenAFS for Windows 1.4.2 Release Notes</title>
! 
  <style>
  <!--
   /* Font Definitions */
   @font-face
  	{font-family:Wingdings;
! 	panose-1:5 0 0 0 0 0 0 0 0 0;}
  @font-face
  	{font-family:"MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;}
  @font-face
  	{font-family:Tahoma;
! 	panose-1:2 11 6 4 3 5 4 4 2 4;}
  @font-face
! 	{font-family:Albany;
! 	panose-1:2 11 6 4 2 2 2 2 2 4;}
  @font-face
  	{font-family:StarSymbol;
! 	panose-1:5 0 0 0 0 0 0 0 0 0;}
  @font-face
! 	{font-family:Thorndale;
! 	panose-1:2 2 6 3 5 4 5 2 3 4;}
  @font-face
  	{font-family:Cumberland;
! 	panose-1:2 7 3 9 2 2 5 2 4 4;}
! @font-face
! 	{font-family:"Andale Sans UI";
! 	panose-1:2 11 5 2 0 0 0 0 0 1;}
  @font-face
  	{font-family:"\@MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;}
   /* Style Definitions */
   p.MsoNormal, li.MsoNormal, div.MsoNormal
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  h1
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-indent:0pt;
  	page-break-after:avoid;
  	font-size:16.0pt;
! 	font-family:Albany;}
  h2
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-indent:0pt;
  	page-break-after:avoid;
  	font-size:14.0pt;
  	font-family:Albany;
  	font-style:italic;}
  h3
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-indent:0pt;
  	page-break-after:avoid;
  	font-size:14.0pt;
! 	font-family:Albany;}
  h4
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:3.0pt;
  	margin-left:0pt;
  	page-break-after:avoid;
  	font-size:14.0pt;
! 	font-family:"Times New Roman";}
  h5
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:3.0pt;
  	margin-left:0pt;
  	font-size:13.0pt;
  	font-family:Thorndale;
  	font-style:italic;}
  h6
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:3.0pt;
  	margin-left:0pt;
  	font-size:11.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc1, li.MsoToc1, div.MsoToc1
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoToc2, li.MsoToc2, div.MsoToc2
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:14.15pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoToc3, li.MsoToc3, div.MsoToc3
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:28.3pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:10.0pt;
! 	font-family:Thorndale;}
  p.MsoHeader, li.MsoHeader, div.MsoHeader
  	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoFooter, li.MsoFooter, div.MsoFooter
  	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoEnvelopeAddress, li.MsoEnvelopeAddress, div.MsoEnvelopeAddress
  	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:144.0pt;
  	font-size:12.0pt;
! 	font-family:Arial;}
  span.MsoFootnoteReference
! 	{vertical-align:super;}
  p.MsoList, li.MsoList, div.MsoList
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoTitle, li.MsoTitle, div.MsoTitle
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-align:center;
  	page-break-after:avoid;
  	font-size:18.0pt;
  	font-family:Albany;
  	font-weight:bold;}
  p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoBodyTextIndent, li.MsoBodyTextIndent, div.MsoBodyTextIndent
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:14.15pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.MsoSubtitle, li.MsoSubtitle, div.MsoSubtitle
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	text-align:center;
  	page-break-after:avoid;
  	font-size:14.0pt;
  	font-family:Albany;
  	font-style:italic;}
  a:link, span.MsoHyperlink
! 	{color:navy;
! 	text-decoration:underline;}
  a:visited, span.MsoHyperlinkFollowed
! 	{color:maroon;
! 	text-decoration:underline;}
! pre
! 	{margin:0pt;
! 	margin-bottom:.0001pt;
! 	font-size:10.0pt;
! 	font-family:"Courier New";}
  span.Bullets
! 	{font-family:StarSymbol;}
  p.Heading, li.Heading, div.Heading
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	page-break-after:avoid;
  	font-size:14.0pt;
! 	font-family:Albany;}
  p.Caption1, li.Caption1, div.Caption1
! 	{margin-top:6.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	font-size:10.0pt;
  	font-family:Thorndale;
  	font-style:italic;}
  p.Index, li.Index, div.Index
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.ContentsHeading, li.ContentsHeading, div.ContentsHeading
! 	{margin-top:12.0pt;
  	margin-right:0pt;
  	margin-bottom:6.0pt;
  	margin-left:0pt;
  	page-break-after:avoid;
  	font-size:16.0pt;
  	font-family:Albany;
  	font-weight:bold;}
  p.PreformattedText, li.PreformattedText, div.PreformattedText
! 	{margin:0pt;
  	margin-bottom:.0001pt;
  	font-size:10.0pt;
! 	font-family:Cumberland;}
  p.ListContents, li.ListContents, div.ListContents
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:28.35pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.ListHeading, li.ListHeading, div.ListHeading
! 	{margin-top:4.3pt;
  	margin-right:0pt;
  	margin-bottom:4.3pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  span.HeadingChar
! 	{font-family:Albany;}
  span.Heading3Char
! 	{font-family:Albany;
  	font-weight:bold;}
  p.Header5, li.Header5, div.Header5
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  p.Heading3, li.Heading3, div.Heading3
! 	{margin-top:7.2pt;
  	margin-right:0pt;
  	margin-bottom:7.2pt;
  	margin-left:0pt;
  	font-size:12.0pt;
! 	font-family:Thorndale;}
  span.Heading4Char
! 	{font-family:"Andale Sans UI";
  	font-weight:bold;}
  p.Default, li.Default, div.Default
! 	{margin:0pt;
  	margin-bottom:.0001pt;
  	text-autospace:none;
  	font-size:12.0pt;
  	font-family:Arial;
  	color:black;}
  span.BodyTextChar
! 	{font-family:Thorndale;}
   /* Page Definitions */
!  @page Section1
  	{size:612.0pt 792.0pt;
! 	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
  div.Section1
! 	{page:Section1;}
  @page Section2
  	{size:612.0pt 792.0pt;
! 	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
  div.Section2
  	{page:Section2;}
   /* List Definitions */
!  ol
  	{margin-bottom:0pt;}
  ul
  	{margin-bottom:0pt;}
  -->
  </style>
! 
  </head>
  
! <body lang=EN-US link=navy vlink=maroon style='line-break:strict'>
  
  <div class=Section1>
  
! <p class=MsoTitle>OpenAFS for Windows 1.4.2<br>
  Release Notes</p>
  
  <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
! file system that uses a local cache to increase its performance.  An AFS client
! accesses files anonymously or via a Kerberos authentication.  The global AFS is
! partitioned into cells.  The AFS cell is a collection of AFS volumes that are
! administered by a common entity.   AFS cells can be administered by a
! department even when the Kerberos realm used for local authentication is
! managed by a much larger organization.  AFS clients and servers take advantage
! of Kerberos cross realm authentication to enable authenticated access by
! entities located outside the local realm.  Authorization is enforced by the use
! of directory level access control lists which can consist of individual or
! group identities.  </p>
! 
! <p class=MsoBodyText>The AFS volume is a tree of files and sub-directories. 
! AFS volumes are created by administrators and are joined to an AFS cell via the
! use of a mount point.   Once a volume is created, users can create files and
! directories as well as mount points and symlinks within the volume without
! regard for the physical location of the volume.  Administrators can move the
! volume to another server as necessary without the need to notify users.   In
! fact, the volume move can occur while files in the volume are in use.  </p>
! 
! <p class=MsoBodyText>AFS volumes can be replicated to read-only copies.   When
! accessing files from a read-only replica, clients will read all of the data
! from a single replica.   If that replica becomes unavailable, the clients will
! failover to any replica that is reachable.  Users of the data are unaware of
! where the replicas are stored or which one is being accessed.   The contents of
! the replicas can be updated at any time by <i>releasing</i> the current
  contents of the source volume.</p>
  
  <p class=MsoBodyText>OpenAFS for Windows (OAFW) provides AFS client access
! Microsoft Windows operating systems.  It strives to maintain transparency such
! that the user is unaware of the distinction between the use of AFS and
! Microsoft Windows file shares.   OAFW can be part of a single sign-on solution
! by allowing credentials for a Kerberos principal to be obtained at logon and
! for that principal to be used to obtain AFS tokens for one or more cells.  
! Although OAFW is implemented as a locally installed SMB to AFS gateway, OAFW
! maintains the portability of file paths by its use of the <a href="file:///\\AFS">\\AFS</a>
! UNC server name.</p>
  
  <p class=MsoBodyText>OpenAFS is the product of an open source development
! effort begun on October 31 2000.  OpenAFS is maintained and developed by a
! group of volunteers with the support of the user community.   If you use
! OpenAFS as part of your computing infrastructure please contribute to its
! continued growth.</p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417109">1. Installer Options<span
! style='color:windowtext;display:none;text-decoration:none'>. </span><span
! style='color:windowtext;display:none;text-decoration:none'>1</span></a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417110">2. System Requirements<span
! style='color:windowtext;display:none;text-decoration:none'>. </span><span
! style='color:windowtext;display:none;text-decoration:none'>2</span></a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417111">3. Operational Notes<span
! style='color:windowtext;display:none;text-decoration:none'>. </span><span
! style='color:windowtext;display:none;text-decoration: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;text-decoration:
! none'> </span><span
! style='color:windowtext;display:none;text-decoration:none'>11</span></a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417113">5. Reporting Bugs:<span
! style='color:windowtext;display:none;text-decoration:none'> </span><span
! style='color:windowtext;display:none;text-decoration:none'>13</span></a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417114">6. How to Contribute to
! the Development of OpenAFS for Windows<span style='color:windowtext;display:
! none;text-decoration:none'>. </span><span
! style='color:windowtext;display:none;text-decoration: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;text-decoration:none'>. </span><span
! style='color:windowtext;display:none;text-decoration: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;text-decoration:none'>. </span><span
! style='color:windowtext;display:none;text-decoration:none'>26</span></a></span></p>
! 
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980939"></a><a
! name="_Toc126872163"></a><a name="_Toc115417109"></a><a name="_Toc115417037"></a><a
! name="_Toc115416098">1. Installer Options</a></h1>
! 
! <p class=MsoNormal>It can be installed either as a new installation or an upgrade
! from previous versions of OpenAFS for Windows or IBM AFS for Windows. 
! Installers are provided in two forms:</p>
! 
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'><span
! style='font-size:9.0pt'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980940"></a><a
! name="_Toc126872164"></a><a name="_Toc115417110"></a><a name="_Toc115417038"></a><a
! name="_Toc115416099">2. System Requirements</a></h1>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980941"></a><a
! name="_Toc126872165"></a><a name="_Toc115417039"></a><a name="_Toc115416100">2.1
! Supported Operating Systems</a></h2>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 2000 Workstation</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 2000 Server</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows XP Home</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows XP Professional</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 2003 Server</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 2003 R2 Server</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows Vista Beta 2 (not for production use)</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980942"></a><a
! name="_Toc126872166"></a><a name="_Toc115416101">2.1.1 Unsupported Operating
! Systems</a></h3>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 95</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 98</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows 98 OSR2</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft Windows ME</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Microsoft NT</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>All 64-bit versions of Microsoft Windows on Itanium and x86-64
! chipsets.</p>
  
  <p class=MsoNormal>Older releases of OpenAFS are available for download if
! unsupported 32-bit operating systems must be used.  The last version of OpenAFS
! with support for Win9x is 1.2.2b.  The last version with support for Windows NT
  4.0 is 1.2.10.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980943"></a><a
! name="_Toc126872167"></a><a name="_Toc115417040"></a><a name="_Toc115416102">2.2
! Disk Space</a></h2>
  
  <p class=MsoNormal>Up to 60mb required for the OpenAFS binaries plus 100MB for
! the default AFSCache file.   (The size of the AFSCache file may be adjusted via
! the Registry after installation.)</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980944"></a><a
! name="_Toc126872168"></a><a name="_Toc115417041"></a><a name="_Toc115416103">2.3
! Additional Software</a> Packages</h2>
  
  <p class=MsoNormal><a href="http://web.mit.edu/kerberos/dist/index.html">MIT
  Kerberos for Windows</a> 2.6.x or 3.x.x if Kerberos 5 authentication support is
  desired.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980945"></a><a
! name="_Toc126872169"></a><a name="_Toc115417111"></a><a name="_Toc115417042"></a><a
! name="_Toc115416104">3. Operational Notes</a></h1>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980946"></a><a
! name="_Toc126872170"></a><a name="_Toc115417043"></a><a name="_Toc115416105">3.1.
! Requirements for Kerberos 5 Authentication</a></h2>
  
  <p class=MsoNormal>The Kerberos 4 infrastructure on which the OpenAFS 1.2
! series is reliant is no longer secure.  Cross-realm Kerberos is very important
! in the AFS context and most sites have or are migrating to Kerberos 5 environments. 
! The OpenAFS 1.4 series integrates with MIT Kerberos for Windows 2.6.5 and above
! to support Kerberos 5 authentication including automatic renewal of AFS tokens
! and single sign-on via the Microsoft Windows Kerberos Logon Service.</p>
  
  <p class=MsoNormal>When KFW is installed, the OpenAFS 1.4 client will obtain
! Kerberos 5 tickets and use them as tokens without modification.  The OpenAFS
! 1.4 client requires that all of the AFS Servers with which it communicates
! support the use of Kerberos 5 tickets as tokens. If Kerberos 5 based tokens are
! presented to an AFS server that does not understand them, the server will be
! unable to communicate with the client when tokens are present. Kerberos 5 based
! tokens are supported by OpenAFS release 1.2.8 or later.  IBM Transarc servers
! do not support Kerberos 5.</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980947"></a><a
! name="_Toc126872171"></a><a name="_Toc115416106">3.1.1. Active Directory</a></h3>
  
  <p class=MsoNormal>There are two things to consider when using a Microsoft
  Windows Active Directory as the Kerberos realm that issues the AFS service
! ticket.  First, the Kerberos 5 tickets issued by Active Directory can be quite
! large when compared to tickets issued by a traditional KDC due to the
! incorporation of authorization data in the PAC.  If the issued tickets become
! larger than 344 bytes OpenAFS 1.2 servers will be unable to process them. 
! OpenAFS 1.4 servers can support the largest tickets that Active Directory can
! issue.  Second, the Kerberos 5 tickets issued by Windows 2003 Active Directory
! are encrypted with the DES-CBC-MD5 enctype.  OpenAFS 1.2 servers only support
! 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>
! a new NO_AUTH_REQUIRED flag that can be set on the account mapped to the AFS
! service principal which will prevent the generation of a PAC.</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980948"></a><a
! name="_Toc126872172"></a><a name="_Toc115416107">3.1.2. Using the krb524
! service</a></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 5 ticket from realm FOO to a
! Kerberos 4 ticket in realm BAR.  This allows user@FOO to appear to be user@bar
! for the purposes of accessing the AFS cell.  As of OpenAFS 1.2.8, support was
  added to allow the immediate use of Kerberos 5 tickets as AFS (2b) tokens. This
  is the first building block necessary to break away from the limitations of
! Kerberos 4 with AFS.  By using Kerberos 5 directly we avoid the security holes
! inherent in Kerberos 4 cross-realm.  We also gain access to cryptographically
  stronger algorithms for authentication and encryption. </p>
  
  <p class=MsoNormal>Another reason for using Kerberos 5 directly is because the
  krb524 service runs on a port (4444) which has become increasingly blocked by
! ISPs.  The port was used to spread a worm which attacked Microsoft Windows in
! the summer of 2003.  When the port is blocked users find that they are unable
! to authenticate.</p>
  
  <p class=MsoNormal>Replacing the Kerberos 4 ticket with a Kerberos 5 ticket is
  a win in all situations except when the cell name does not match the realm name
  and the principal names placed into the ACL’s are not the principal names from
! the Kerberos 5 ticket.  To support this transition, OpenAFS for Windows 1.4
! adds a new registry value, <i><a
! href="#_Value___: Use524">Use524</a></i>, to
! force the use of krb524d.  However, the availability of this option should only
! be used by individuals until such time as their organizations can provide a
! more permanent solution.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980949"></a><a
! name="_Toc126872173"></a><a name="_Toc115417044"></a><a name="_Toc115416108">3.2.
! Use of the Microsoft Loopback Adapter</a></h2>
  
  <p class=MsoNormal>By itself the OpenAFS Client Service does not provide robust
! behavior in a plug-n-play network environment.  Changes to the number of
! network adapters or their assigned IP addresses will cause the service to
! terminate unexpectedly.  To avoid this behavior OpenAFS for Windows installs a
! single instance of the Microsoft Loopback Adapter (MLA) on the machine.  With
! the MLA installed, the OpenAFS Client Service will not be affected by the
! configuration changes of other network adapters installed on the system.  </p>
! 
! <p class=MsoNormal>The MLA is installed with a name of &quot;AFS&quot; and a pre-assigned
! IP address in the 10.x.x.x range.  The MLA is bound to the “Client for
! Microsoft Networks” service and not bound to the “File and Printer Sharing for
! Microsoft Networks”.  If the MLA is unbound to &quot;Client Microsoft
! Networks&quot;, the OpenAFS Client Service will become inaccessible when the
! machine is disconnected from the network.  If the MLA is bound to &quot;File
! and Printer Sharing ...&quot; there will be a service type collision between
! the name &quot;AFS&quot; and the name of the machine on the MLA's IP Address
! that will result in the OpenAFS client service becoming inaccessible and the
! &quot;NET VIEW \\AFS&quot; command will return a &quot;System Error 52&quot;
! message.  To correct the problem:</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span> stop the AFS Client Service</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span> bind the &quot;Client for Microsoft Networks&quot; to the MLA</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span> unbind &quot;File and Printer Sharing for Microsoft
! Networks&quot; from the MLA</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span> Disable and then re-enable the MLA</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span> start the AFS Client Service</p>
  
  <p class=MsoNormal>When the MLA is not installed the unique NETBIOS name
! published by OpenAFS SMB server is &quot;<i>MACHINE</i>-AFS&quot;.  One of the
! benefits of using the MLA is that the NETBIOS name does not have to be
! published on any adapter other than the MLA.  Therefore the chosen name is no
! longer required to be unique.  Instead the NETBIOS name associated with 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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980950"></a><a
! name="_Toc126872174"></a><a name="_Toc115417045"></a><a name="_Toc115416109">3.3.
! Using Freelance (Dynamic Root) Mode to Improve Mobility</a></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. 
! 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.  If the &quot;root.afs&quot; volume is
! inaccessible when the client service is started, the service will terminate
! unexpectedly.  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, a fake &quot;root.afs&quot; volume is dynamically constructed
! from mount points and symlinks stored in the local registry.  This method of
! operation is referred to as Freelance mode.</p>
  
  <p class=MsoNormal>The content of the fake “root.afs” volume is dynamically
! modified as cells are accessed.  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.  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.  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>.  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.  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>
***************
*** 3824,4058 ****
  <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><span style='mso-tab-count:1'>      </span>&gt;symlink
! list \\afs\link</p>
  
! <p class=PreformattedText><span style='mso-tab-count:1'>      </span>'\\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="oafw-1-4-release-notes.doc#_Regkey:_[HKLMSOFTWAREOpenAFSClie_1">HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks</a><!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;Freelance Mode&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;Dynamic Root&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;fs.exe&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;symlink.exe&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;root.afs&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><span
! style='mso-spacerun:yes'> </span></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872175"></a><a
! name="_Toc115417046"></a><a name="_Toc115416110"><span style='mso-bookmark:
! _Toc115417046'><span style='mso-bookmark:_Toc126872175'>3.4. Locating AFS
! Volume Database Servers</span></span></a> </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 are not
  present in the client's CellServDB file
! (\%PROGRAMFILES%\OpenAFS\Client\CellServDB).<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;dns&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;afsdb&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872176"></a><a
! name="_Toc115417047"></a><a name="_Toc115416111"><span style='mso-bookmark:
! _Toc115417047'><span style='mso-bookmark:_Toc126872176'>3.5. Obtaining AFS
! Tokens as a Part of Windows Logon</span></span></a></h2>
  
  <p class=MsoNormal>OpenAFS for Windows installs a WinLogon Network Provider to
! provide Single Sign-on functionality (aka Integrated Logon.)<span
! style='mso-spacerun:yes'>  </span>Integrated Logon can be used when the Windows
! username and password match the username and password associated with the
! default cell's Kerberos realm.<span style='mso-spacerun:yes'>  </span>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;.<span
! style='mso-spacerun:yes'>  </span>The realm “ATHENA.MIT.EDU” is obtained by
! performing a domain name to realm mapping on the hostname of one of the cell's
! Volume Database servers.</p>
  
  <p class=MsoNormal>Integrated Logon is required if you desire the ability to
! store roaming user profiles within the AFS file system.<span
! style='mso-spacerun:yes'>  </span>OpenAFS does not provide tools for
! synchronizing the Windows and Kerberos user accounts and passwords.</p>
  
  <p class=MsoNormal>When KFW is configured, Integrated Logon will use it to
! obtain tokens.<span style='mso-spacerun:yes'>  </span>The Kerberos 5 tickets
! obtained during the process of generating AFS tokens are preserved and stored
! into the default ccache within the user logon session.</p>
  
  <p class=MsoNormal>Integrated Logon does not have the ability to cache the
  user's username and password for the purpose of obtaining tokens if the
  Kerberos KDC is inaccessible at logon time.</p>
  
  <p class=MsoNormal>Integrated Login supports the ability to obtain tokens for
! multiple cells.<span style='mso-spacerun:yes'>  </span>For further information
! on how to configure this feature read the <a
! href="relnotes.htm#_Value:_TheseCells">TheseCells</a> value in <a
! href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;integrated login&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872177"></a><a
! name="_Toc115417048"></a><a name="_Toc115416112"><span style='mso-bookmark:
! _Toc115417048'><span style='mso-bookmark:_Toc126872177'>3.6. AFS System Tray
! Command Line Options</span></span></a></h2>
  
  <p class=MsoNormal>The AFS System Tray tool (afscreds.exe) supports several
  command line options: </p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-A =
! autoinit </p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-E = force
! existing afscreds to exit</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-I =
! install startup shortcut</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-M = renew
! drive maps </p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-N = IP address
! change detection </p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-Q = quiet
! mode.<span style='mso-spacerun:yes'>  </span>do not display start service
  dialog</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>         </span>if
! afsd_service is not already running</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-S = show
! tokens dialog on startup</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-U =
! uninstall startup shortcut</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-X = test
! and do map share</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>-Z = unmap
! drives</p>
  
  <p class=MsoNormal>autoinit will result in automated attempts to acquire AFS
! tokens when afscreds.exe is started.<span style='mso-spacerun:yes'> 
! </span>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.<span style='mso-spacerun:yes'>  </span>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
  each time afscreds.exe is started.</p>
  
  <p class=MsoNormal>By default afscreds.exe is configured by the OpenAFS.org
! installers to use “-A -N -M -Q” as startup options.<span
! style='mso-spacerun:yes'>  </span>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.<span
! style='mso-spacerun:yes'>  </span>See <span style='mso-bidi-font-style:italic'><a
! href="oafw-1-4-release-notes.doc#_Value___: AfscredsShortcutParams">AfscredsShortcutParams</a></span>
! in <a href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;afscreds.exe&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872178"></a><a
! name="_Toc115417049"></a><a name="_Toc115416113"><span style='mso-bookmark:
! _Toc115417049'><span style='mso-bookmark:_Toc126872178'>3.7. The “AFS Client
! Admins” Authorization Group</span></span></a></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows 1.4 client supports a local Windows
! authorization group named &quot;AFS Client Admins&quot;.<span
! style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>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;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>checkservers
! with a non-zero timer value</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setcachesize</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>newcell</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>sysname
! with a new sysname list</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>exportafs</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setcell</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setserverprefs</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>storebehind</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setcrypt</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>cscpolicy</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt;
! mso-list:l14 level1 lfo5;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>trace</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
--- 684,854 ----
  <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>      &gt;symlink list \\afs\link</p>
  
! <p class=PreformattedText>      '\\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> </p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980951"></a><a
! name="_Toc126872175"></a><a name="_Toc115417046"></a><a name="_Toc115416110">3.4.
! Locating AFS Volume Database Servers</a> </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 are not
  present in the client's CellServDB file
! (\%PROGRAMFILES%\OpenAFS\Client\CellServDB).</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980952"></a><a
! name="_Toc126872176"></a><a name="_Toc115417047"></a><a name="_Toc115416111">3.5.
! Obtaining AFS Tokens as a Part of Windows Logon</a></h2>
  
  <p class=MsoNormal>OpenAFS for Windows installs a WinLogon Network Provider to
! provide Single Sign-On functionality (aka Integrated Logon.)  Integrated Logon
! can be used when the Windows username and password match the username and
! password associated with the default cell's Kerberos realm.  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;. 
! The realm “ATHENA.MIT.EDU” is obtained by performing a domain name to realm
! mapping on the hostname of one of the cell's Volume Database servers.</p>
  
  <p class=MsoNormal>Integrated Logon is required if you desire the ability to
! store roaming user profiles within the AFS file system.  OpenAFS does not
! provide tools for synchronizing the Windows and Kerberos user accounts and
! passwords.</p>
  
  <p class=MsoNormal>When KFW is configured, Integrated Logon will use it to
! obtain tokens.  The Kerberos 5 tickets obtained during the process of
! generating AFS tokens are preserved and stored into the default ccache within
! the user logon session.</p>
  
  <p class=MsoNormal>Integrated Logon does not have the ability to cache the
  user's username and password for the purpose of obtaining tokens if the
  Kerberos KDC is inaccessible at logon time.</p>
  
  <p class=MsoNormal>Integrated Login supports the ability to obtain tokens for
! multiple cells.  For further information on how to configure this feature read
! the <a href="#_Value:_TheseCells">TheseCells</a> value in <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980953"></a><a
! name="_Toc126872177"></a><a name="_Toc115417048"></a><a name="_Toc115416112">3.6.
! AFS System Tray Command Line Options</a></h2>
  
  <p class=MsoNormal>The AFS System Tray tool (afscreds.exe) supports several
  command line options: </p>
  
! <p class=PreformattedText>    -A = autoinit </p>
  
! <p class=PreformattedText>    -E = force existing afscreds to exit</p>
  
! <p class=PreformattedText>    -I = install startup shortcut</p>
  
! <p class=PreformattedText>    -M = renew drive maps </p>
  
! <p class=PreformattedText>    -N = IP address change detection </p>
  
! <p class=PreformattedText>    -Q = quiet mode.  do not display start service
  dialog</p>
  
! <p class=PreformattedText>         if afsd_service is not already running</p>
  
! <p class=PreformattedText>    -S = show tokens dialog on startup</p>
  
! <p class=PreformattedText>    -U = uninstall startup shortcut</p>
  
! <p class=PreformattedText>    -X = test and do map share</p>
  
! <p class=PreformattedText>    -Z = unmap drives</p>
  
  <p class=MsoNormal>autoinit will result in automated attempts to acquire AFS
! tokens when afscreds.exe is started.  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.  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
  each time afscreds.exe is started.</p>
  
  <p class=MsoNormal>By default afscreds.exe is configured by the OpenAFS.org
! installers to use “-A -N -M -Q” as startup options.  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.  See <a
! href="#_Value___: AfscredsShortcutParams">AfscredsShortcutParams</a>
! in <a href="#_Appendix_A:_Registry_Values">Appendix
! A</a>.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980954"></a><a
! name="_Toc126872178"></a><a name="_Toc115417049"></a><a name="_Toc115416113">3.7.
! The “AFS Client Admins” Authorization Group</a></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows 1.4 client supports a local Windows
! authorization group named &quot;AFS Client Admins&quot;.  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.  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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>trace</p>
! 
! <p class=PreformattedText style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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
***************
*** 4060,5177 ****
  
  <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.<span style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>Only users that are
! members of the &quot;AFS Client Admins&quot; group are AFS Client Administrators.<span
! style='mso-spacerun:yes'>  </span>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="oafw-1-4-release-notes.doc#_Value_:_SysName">registry</a> and not
! via &quot;fs sysname&quot;.<!--[if supportFields]><span style='mso-element:
! field-begin'></span> XE &quot;AFS Client Admins&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;fs.exe&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872179"></a><a
! name="_Toc115417050"></a><a name="_Toc115416114"><span style='mso-bookmark:
! _Toc115417050'><span style='mso-bookmark:_Toc126872179'>3.8. OpenAFS support
! for UNC paths</span></span></a> </h2>
! 
! <p class=MsoNormal>The OpenAFS 1.4 client supports UNC paths everywhere.<span
! style='mso-spacerun:yes'>  </span>UNC paths provide a canonical name for
! resources stored within AFS.<span style='mso-spacerun:yes'>  </span>UNC paths
! should be used instead of drive letter mappings whenever possible.<span
! style='mso-spacerun:yes'>   </span>This is especially true when specifying the
! location of roaming profiles and redirected folders.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;UNC paths&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><span
! style='mso-spacerun:yes'>  </span></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.<span style='mso-spacerun:yes'>  </span>Unlike cmd.exe, the
! JPSoftware shells fully support UNC paths as the current directory.<span
! style='mso-spacerun:yes'>  </span>With the release of version 4NT 7.0 and Take
! Command 7.0, JPSoftware is adding special recognition of OpenAFS.<span
! style='mso-spacerun:yes'>  </span>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>.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;JP Software&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>XE &quot;4nt.exe&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872180"></a><a
! name="_Toc115417051"></a><a name="_Toc115416115"><span style='mso-bookmark:
! _Toc115417051'><span style='mso-bookmark:_Toc126872180'>3.9. OpenAFS includes
! aklog.exe</span></span></a></h2>
  
  <p class=MsoNormal>The OpenAFS 1.4 Client ships with its own version of
  aklog.exe which should be used in preference to those obtained by third party
! sources.<span style='mso-spacerun:yes'>  </span>The OpenAFS aklog.exe supports
! Kerberos 5 as well as the ability to auto-generate pts IDs for user's obtaining
! tokens<span style='mso-spacerun:yes'>  </span>for access to foreign cells.</p>
  
  <p class=PreformattedText>Usage: aklog [-d] [[-cell | -c] cell [-k krb_realm]]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>            
! </span>[[-p | -path] pathname]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>            
! </span>[-noprdb] [-force]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>            
! </span>[-5 [-m]| -4]</p>
  
! <p class=PreformattedText><o:p>&nbsp;</o:p></p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>-d = output
! debugging information.</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>cell = zero
! or more cells for which tokens will be obtained</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>krb_realm =
! the kerberos realm of the cell.</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>pathname =
! the directory for which authentication is required</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>-noprdb =
! don't try to determine AFS ID.</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>-5 or -4 =
! use Kerberos V (default) or Kerberos IV tickets</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>-m = use
! krb524d to convert Kerberos V tickets to Kerberos IV<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;aklog.exe&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872181"></a><a
! name="_Toc115417052"></a><a name="_Toc115416116"><span style='mso-bookmark:
! _Toc115417052'><span style='mso-bookmark:_Toc126872181'>3.10. OpenAFS Servers
! on Windows are Unsupported</span></span></a></h2>
  
  <p class=MsoNormal>The AFS Server functionality provided with OpenAFS 1.4 might
! work but should be considered highly experimental.<span
! style='mso-spacerun:yes'>  </span>It has not been thoroughly tested.<span
! style='mso-spacerun:yes'>  </span>Any data which would cause pain if lost
! should not be stored in an OpenAFS Server on Windows.</p>
  
  <p class=MsoNormal>A few notes on the usage of the AFS Client Service if it is
  going to be used with the OpenAFS AFS Server:</p>
  
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l15 level1 lfo6;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>When
! installed on the same machine as the AFS Server, Freelance mode must be turned
! off.<span style='mso-spacerun:yes'>  </span>Otherwise, you will be unable to
! manipulate the contents of the root.afs volume for the hosted cell.</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l15 level1 lfo6;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>The
! AFS Server and related tools only support the built in kaserver (Kerberos
! IV).<span style='mso-spacerun:yes'>  </span>If the AFS Server is being used,
! MIT Kerberos for Windows should not be installed or must be disabled.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;AFS Servers&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872182"></a><a
! name="_Toc115417053"></a><a name="_Toc115416117"><span style='mso-bookmark:
! _Toc115417053'><span style='mso-bookmark:_Toc126872182'>3.11. OpenAFS Debugging
! Symbol files</span></span></a></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows installers now include Debugging
  Symbol files which should be installed if you are experiencing problems and
! need to send crash reports.<span style='mso-spacerun:yes'>  </span>This is true
! for both the release and the debug versions of the installers.<span
! style='mso-spacerun:yes'>  </span>The difference between the release and debug
  versions are:</p>
  
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l16 level1 lfo7;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>whether
! or not the binaries were compiled with optimization</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l16 level1 lfo7;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>whether
! the debug symbols are installed by default</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l16 level1 lfo7;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>whether
! additional debug statements were compiled into the binaries<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;Symbol files&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872183"></a><a
! name="_Toc115417054"></a><a name="_Toc115416118"><span style='mso-bookmark:
! _Toc115417054'><span style='mso-bookmark:_Toc126872183'>3.12. Maximum File Size
! is 2GB</span></span></a></h2>
! 
! <p class=MsoNormal>OpenAFS for Windows does not support files larger than
! 2GB.<span style='mso-spacerun:yes'>  </span>The version of the SMB/CIFS
! protocol implemented imposes this limitation.<span style='mso-spacerun:yes'> 
! </span>Upgrading the SMB/CIFS implementation or replacing it with an
! Installable File System will allow larger files to be supported.<!--[if supportFields]><span
! style='mso-element:field-begin'></span> XE &quot;large file support&quot; <![endif]--><!--[if supportFields]><span
! style='mso-element:field-end'></span><![endif]--></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872184"></a><a
! name="_Toc115417055"></a><a name="_Toc115416119"><span style='mso-bookmark:
! _Toc115417055'><span style='mso-bookmark:_Toc126872184'>3.13. Encrypted AFS
! File Access</span></span></a></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.<span style='mso-spacerun:yes'>  </span>This is often referred to as
! &quot;fcrypt&quot; mode.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872185"></a><a
! name="_Toc115417056"></a><a name="_Toc115416120"><span style='mso-bookmark:
! _Toc115417056'><span style='mso-bookmark:_Toc126872185'>3.14. Authenticated
! Access to the OpenAFS Client Service</span></span></a></h2>
  
  <p class=MsoNormal>OpenAFS 1.4 supports authenticated SMB connections using
! either NTLM or GSS SPNEGO (NTLM).<span style='mso-spacerun:yes'>  </span>In
! previous versions of OpenAFS, the SMB connections were unauthenticated which
! opened the door for several attacks which could be used to obtain access to
! another user's tokens on shared machines.<span style='mso-spacerun:yes'>   
! </span></p>
  
  <p class=MsoNormal>When GSS SPNEGO attempts a Kerberos 5 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).<span style='mso-spacerun:yes'>  </span>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.<span
! style='mso-spacerun:yes'>  </span>When NTLM is used a special local
! authentication mode will be used that does not require access to the user's
! password.<span style='mso-spacerun:yes'>  </span>Instead, Windows will
! internally recognize the request as coming from a local logon session.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872186"></a><a
! name="_Toc115417057"></a><a name="_Toc115416121"><span style='mso-bookmark:
! _Toc115417057'><span style='mso-bookmark:_Toc126872186'>3.15. No More INI Files</span></span></a></h2>
  
  <p class=MsoNormal>Previous AFS clients for Windows stored configuration data
! in Windows .INI files. <span style='mso-spacerun:yes'>  </span>OpenAFS 1.4 does
! not use Windows .INI files for the storage of configuration data.<span
! style='mso-spacerun:yes'>   </span>All settings are now stored in the registry
! (see <a href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix
! A</a>).<span style='mso-spacerun:yes'>  </span>The CellServDB file is now
! stored in the %PROGRAMFILES%\OpenAFS\Client directory.<span
! style='mso-spacerun:yes'>   </span>The <i style='mso-bidi-font-style:normal'><a
! href="oafw-1-4-release-notes.doc#_Value___: CellServDBDir">CellServDBDir</a></i>
  registry value can be used to specify an alternative location.</p>
  
  <p class=MsoNormal>OpenAFS 1.4 will relocate the contents of the “afsdcell.ini”
! file to the new CellServDB file.<span style='mso-spacerun:yes'>  </span>OpenAFS
! 1.4 will also import the contents of the “afs_freelance.ini” file to the
! Windows registry.<span style='mso-spacerun:yes'>   </span>OpenAFS 1.4 will not
  process the contents of the “afsddbmt.ini”.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872187"></a><a
! name="_Toc115417058"></a><a name="_Toc115416122"><span style='mso-bookmark:
! _Toc115417058'><span style='mso-bookmark:_Toc126872187'>3.16. Microsoft Windows
! Internet Connection Firewall</span></span></a></h2>
! 
! <p class=MsoNormal>The OpenAFS 1.4 Client is compatible with the Internet
! Connection Firewall that debuted with Windows XP SP2 and Windows 2003 SP1.<span
! style='mso-spacerun:yes'>  </span>The Internet Connection Firewall will be
! automatically adjusted to allow the receipt of incoming callback messages from
! the AFS file server.<span style='mso-spacerun:yes'>  </span>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872188"></a><a
! name="_Toc115417059"></a><a name="_Toc115416123"><span style='mso-bookmark:
! _Toc115417059'><span style='mso-bookmark:_Toc126872188'>3.17. Browsing AFS from
! the Explorer Shell and Office</span></span></a></h2>
  
  <p class=MsoNormal>The OpenAFS 1.4 Client Service implements the CIFS Remote
  Admin Protocol which allows Explorer to browse server and share information.
  This significantly enhances the interoperability of AFS volumes within the
  Explorer Shell and Microsoft Office applications.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872189"></a><a
! name="_Toc115417060"></a><a name="_Toc115416124"><span style='mso-bookmark:
! _Toc115417060'><span style='mso-bookmark:_Toc126872189'>3.18. </span></span></a><st2:place
! w:st="on"><st2:PlaceName w:st="on"><span style='mso-bookmark:_Toc126872189'><span
!   style='mso-bookmark:_Toc115417060'><span style='mso-bookmark:_Toc115416124'>Byte</span></span></span></st2:PlaceName><span
!  style='mso-bookmark:_Toc126872189'><span style='mso-bookmark:_Toc115417060'><span
!  style='mso-bookmark:_Toc115416124'> <st2:PlaceType w:st="on">Range</st2:PlaceType></span></span></span></st2:place><span
! style='mso-bookmark:_Toc126872189'><span style='mso-bookmark:_Toc115417060'><span
! style='mso-bookmark:_Toc115416124'> Locking</span></span></span></h2>
  
  <p class=MsoBodyText>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.<span
! style='mso-spacerun:yes'>   </span>OpenAFS implements byte range locking local
! to the machine.<span style='mso-spacerun:yes'>   </span>OpenAFS does not obtain
! file locks on the server.<span style='mso-spacerun:yes'>   </span>It is
! strongly recommended that files not be edited within AFS if they might be
! accessed by multiple users or multiple processes on more than one machine at
! the same time.</p>
! 
! <p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Note:
! <span style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA'>In a future release, OpenAFS for Windows will utilize
! AFS' advisory locks to simulate Microsoft Windows mandatory locks.&nbsp;&nbsp;
! When an application opens a file, a lock will be placed in AFS indicating that
! the file is in use.&nbsp; If the lock is a write lock, the use of the file will
! be restricted to other applications running on the same machine as the first
! application to apply the lock.&nbsp;&nbsp; Applications running on other
! machines will see the full lock and will be unable to access the file.<o:p></o:p></span></p>
! 
! <p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
! mso-pagination:widow-orphan;mso-hyphenate:auto'><span style='font-family:"Times New Roman";
! mso-fareast-font-family:"MS Mincho";mso-fareast-language:JA'>Most Windows
  applications and Windows itself opens files in shared read mode. When this is
  done, a read lock is applied to the file.&nbsp;&nbsp; This does not prevent
  shared read access across multiple machines but is used to ensure that no one
! writes to the file while it is in use.<o:p></o:p></span></p>
  
! <p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
! mso-pagination:widow-orphan;mso-hyphenate:auto'><span style='mso-fareast-language:
! JA'>As locks are checked and applied during the file open operation, it is
! crucial that users have the locking 'k' privilege in all directories in which
! the user might read a file or execute an application unless the directory
! exists on a read only volume.&nbsp; A failure to assign the 'k' privilege will
! result in &quot;Access Denied&quot; errors during file open.</span> <span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! mso-fareast-language:JA'><o:p></o:p></span></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872190"></a><a
! name="_Toc115417061"></a><a name="_Toc115416125"><span style='mso-bookmark:
! _Toc115417061'><span style='mso-bookmark:_Toc126872190'>3.19. Automatic
! Discarding of AFS Tokens at Logoff</span></span></a></h2>
  
  <p class=MsoNormal>OpenAFS 1.4 will automatically forget a user's tokens upon
! Logoff unless the user's profile was loaded from an AFS volume.<span
! style='mso-spacerun:yes'>  </span>In this situation there is no mechanism to
! determine when the profile has been successfully written back to the
! network.<span style='mso-spacerun:yes'>  </span>It is therefore unsafe to
! release the user's tokens.<span style='mso-spacerun:yes'>  </span>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 <span
! style='mso-bidi-font-style:italic'><a
! href="oafw-1-4-release-notes.doc#_Value_:_LogoffPreserveTokens">LogoffPreserveTokens</a></span>
  registry value can be used. (see <a
! href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.)</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872191"></a><a
! name="_Toc115417062"></a><a name="_Toc115416126"><span style='mso-bookmark:
! _Toc115417062'><span style='mso-bookmark:_Toc126872191'>3.20. Terminal Server
! installations</span></span></a></h2>
  
  <p class=MsoNormal>When installing the NSIS (.exe) installer under Terminal
! Server, you must execute it from within the Add/Remove Programs Control
! Panel.<span style='mso-spacerun:yes'>  </span>Failure to do so will result in
! AFS not running properly.<span style='mso-spacerun:yes'>  </span>The AFS Server
  should not be installed on a machine with Terminal Server installed.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872192"></a><a
! name="_Toc115417063"></a><a name="_Toc115416127"><span style='mso-bookmark:
! _Toc115417063'><span style='mso-bookmark:_Toc126872192'>3.21. Hidden Dot Files</span></span></a></h2>
! 
! <p class=MsoNormal>AFS is a UNIX native file system.<span
! style='mso-spacerun:yes'>  </span>The OpenAFS client attempts to treat the
! files stored in AFS as they would be on UNIX.<span style='mso-spacerun:yes'> 
! </span>File and directory names beginning with a &quot;.&quot; are
! automatically given the Hidden attribute so they will not normally be
! displayed.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872193"></a><a
! name="_Toc115417064"></a><a name="_Toc115416128"><span style='mso-bookmark:
! _Toc115417064'><span style='mso-bookmark:_Toc126872193'>3.22. Status Cache
! Limits</span></span></a></h2>
  
  <p class=MsoNormal>The Status Cache (AFS Configuration Control Panel: Advanced
! Page) is defined to have a maximum number of entries.<span
! style='mso-spacerun:yes'>  </span>Each entry represents a single file or
! directory entry accessed within the AFS file system.<span
! style='mso-spacerun:yes'>  </span>When the maximum number of entries are
! allocated, entries will begin to be reused according to a least recently used
! (LRU) algorithm.<span style='mso-spacerun:yes'>  </span>If the number of files
! or directories being accessed repeatedly by your applications is greater then the
  maximum number of entries, your host will begin to experience thrashing of the
  Status Cache and all requests will result in network operations.</p>
  
  <p class=MsoNormal>If you are experiencing poor performance try increasing the
! maximum number of Status Cache entries.<span style='mso-spacerun:yes'> 
! </span>Each entry requires approximately 1.2K.<span style='mso-spacerun:yes'> 
! </span>In OpenAFS 1.4, the default number of Status Cache entries is 10,000.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872194"></a><a
! name="_Toc115417065"></a><a name="_Toc115416129"><span style='mso-bookmark:
! _Toc115417065'><span style='mso-bookmark:_Toc126872194'>3.23. NETBIOS over
! TCP/IP must be enabled</span></span></a></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.<span
! style='mso-spacerun:yes'>  </span>If &quot;Netbios over TCP/IP&quot; is
! disabled on the machine, then communication with the AFS Client Service will be
! impossible.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872195"></a><a
! name="_Toc115417066"></a><a name="_Toc115416130"><span style='mso-bookmark:
! _Toc115417066'><span style='mso-bookmark:_Toc126872195'>3.24. OpenAFS binaries
! are digitally signed</span></span></a></h2>
  
  <p class=MsoNormal>The OpenAFS Client Service and related binaries distributed
! by OpenAFS.org are digitally signed by &quot;Secure Endpoints Inc.&quot;.<span
! style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>This check has been added to
  prevent the stability problems caused by more than one AFS installation present
! on a machine at the same time.<span style='mso-spacerun:yes'>  </span>Many
! hours of support time have been wasted tracking down problems caused by the
! mixture of files from different releases.<span style='mso-spacerun:yes'> 
! </span></p>
  
  <p class=MsoNormal><a
! href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
  documents the &quot;<a
! href="oafw-1-4-release-notes.doc#_Value___: VerifyServiceSignature">VerifyServiceSignature</a>&quot;
! registry value which can be used to disable the signature check.<span
! style='mso-spacerun:yes'>  </span>The file version check cannot be disabled.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872196"></a><a
! name="_Toc115417067"></a><a name="_Toc115416131"><span style='mso-bookmark:
! _Toc115417067'><span style='mso-bookmark:_Toc126872196'>3.25. Maximum Size of
! the AFSCache File</span></span></a></h2>
! 
! <p class=MsoNormal>The maximum cache size is approximately 1.3GB.<span
! style='mso-spacerun:yes'>  </span>This is the largest contiguous block of
! memory in the 2GB process address space which can be used for constructing a
! memory mapped file.<span style='mso-spacerun:yes'>  </span>Due to fragmentation
! of the process space caused by the loading of libraries required by the digital
  signature verification code, any attempt to specify a cache size greater then
  700MB will result in the automatic disabling of the signature check.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872197"></a><a
! name="_Toc115417068"></a><a name="_Toc115416132"><span style='mso-bookmark:
! _Toc115417068'><span style='mso-bookmark:_Toc126872197'>3.26. Filename
! Character Sets</span></span></a></h2>
  
  <p class=MsoNormal>OpenAFS for Windows implements an SMB server which is used
! as a gateway to the AFS filesystem.<span style='mso-spacerun:yes'> 
! </span>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).<span style='mso-spacerun:yes'>  </span>These code pages are
  incompatible with the ISO Latin-1 character set typically used as the default
! on UNIX systems in both the <st2:country-region w:st="on">United States</st2:country-region>
! and <st2:place w:st="on">Western Europe</st2:place>.<span
! style='mso-spacerun:yes'>  </span>Filenames stored by OpenAFS for Windows are
! therefore unreadable on UNIX systems if they include any of the following
! characters:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
!  mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;mso-border-insideh:
!  .5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
!  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:399.5pt'>
    <td width=590 valign=top style='width:442.8pt;border:solid windowtext 1.0pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt;height:399.5pt'>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Ç]<span
!   style='mso-spacerun:yes'>  </span>128<span style='mso-spacerun:yes'> 
!   </span>08/00<span style='mso-spacerun:yes'>  </span>200<span
!   style='mso-spacerun:yes'>  </span>80<span style='mso-spacerun:yes'>  </span>C
!   cedilla</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ü]<span
!   style='mso-spacerun:yes'>  </span>129<span style='mso-spacerun:yes'> 
!   </span>08/01<span style='mso-spacerun:yes'>  </span>201<span
!   style='mso-spacerun:yes'>  </span>81<span style='mso-spacerun:yes'>  </span>u
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[é]<span
!   style='mso-spacerun:yes'>  </span>130<span style='mso-spacerun:yes'> 
!   </span>08/02<span style='mso-spacerun:yes'>  </span>202<span
!   style='mso-spacerun:yes'>  </span>82<span style='mso-spacerun:yes'>  </span>e
!   acute</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[â]<span
!   style='mso-spacerun:yes'>  </span>131<span style='mso-spacerun:yes'> 
!   </span>08/03<span style='mso-spacerun:yes'>  </span>203<span
!   style='mso-spacerun:yes'>  </span>83<span style='mso-spacerun:yes'>  </span>a
!   circumflex</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ä]<span
!   style='mso-spacerun:yes'>  </span>132<span style='mso-spacerun:yes'> 
!   </span>08/04<span style='mso-spacerun:yes'>  </span>204<span
!   style='mso-spacerun:yes'>  </span>84<span style='mso-spacerun:yes'>  </span>a
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[à]<span
!   style='mso-spacerun:yes'>  </span>133<span style='mso-spacerun:yes'> 
!   </span>08/05<span style='mso-spacerun:yes'>  </span>205<span
!   style='mso-spacerun:yes'>  </span>85<span style='mso-spacerun:yes'>  </span>a
!   grave</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[å]<span
!   style='mso-spacerun:yes'>  </span>134<span style='mso-spacerun:yes'> 
!   </span>08/06<span style='mso-spacerun:yes'>  </span>206<span
!   style='mso-spacerun:yes'>  </span>86<span style='mso-spacerun:yes'>  </span>a
!   ring</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ç]<span
!   style='mso-spacerun:yes'>  </span>135<span style='mso-spacerun:yes'> 
!   </span>08/07<span style='mso-spacerun:yes'>  </span>207<span
!   style='mso-spacerun:yes'>  </span>87<span style='mso-spacerun:yes'>  </span>c
!   cedilla</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ê]<span
!   style='mso-spacerun:yes'>  </span>136<span style='mso-spacerun:yes'> 
!   </span>08/08<span style='mso-spacerun:yes'>  </span>210<span
!   style='mso-spacerun:yes'>  </span>88<span style='mso-spacerun:yes'>  </span>e
!   circumflex</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ë]<span
!   style='mso-spacerun:yes'>  </span>137<span style='mso-spacerun:yes'> 
!   </span>08/09<span style='mso-spacerun:yes'>  </span>211<span
!   style='mso-spacerun:yes'>  </span>89<span style='mso-spacerun:yes'>  </span>e
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[è]<span
!   style='mso-spacerun:yes'>  </span>138<span style='mso-spacerun:yes'> 
!   </span>08/10<span style='mso-spacerun:yes'>  </span>212<span
!   style='mso-spacerun:yes'>  </span>8A<span style='mso-spacerun:yes'>  </span>e
!   grave</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ï]<span
!   style='mso-spacerun:yes'>  </span>139<span style='mso-spacerun:yes'> 
!   </span>08/11<span style='mso-spacerun:yes'>  </span>213<span
!   style='mso-spacerun:yes'>  </span>8B<span style='mso-spacerun:yes'>  </span>i
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[î]<span
!   style='mso-spacerun:yes'>  </span>140<span style='mso-spacerun:yes'> 
!   </span>08/12<span style='mso-spacerun:yes'>  </span>214<span
!   style='mso-spacerun:yes'>  </span>8C<span style='mso-spacerun:yes'>  </span>i
!   circumflex</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ì]<span
!   style='mso-spacerun:yes'>  </span>141<span style='mso-spacerun:yes'> 
!   </span>08/13<span style='mso-spacerun:yes'>  </span>215<span
!   style='mso-spacerun:yes'>  </span>8D<span style='mso-spacerun:yes'>  </span>i
!   grave</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Ä]<span
!   style='mso-spacerun:yes'>  </span>142<span style='mso-spacerun:yes'> 
!   </span>08/14<span style='mso-spacerun:yes'>  </span>216<span
!   style='mso-spacerun:yes'>  </span>8E<span style='mso-spacerun:yes'>  </span>A
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Å]<span
!   style='mso-spacerun:yes'>  </span>143<span style='mso-spacerun:yes'> 
!   </span>08/15<span style='mso-spacerun:yes'>  </span>217<span
!   style='mso-spacerun:yes'>  </span>8F<span style='mso-spacerun:yes'>  </span>A
!   ring</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[É]<span
!   style='mso-spacerun:yes'>  </span>144<span style='mso-spacerun:yes'> 
!   </span>09/00<span style='mso-spacerun:yes'>  </span>220<span
!   style='mso-spacerun:yes'>  </span>90<span style='mso-spacerun:yes'>  </span>E
!   acute</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[æ]<span
!   style='mso-spacerun:yes'>  </span>145<span style='mso-spacerun:yes'> 
!   </span>09/01<span style='mso-spacerun:yes'>  </span>221<span
!   style='mso-spacerun:yes'>  </span>91<span style='mso-spacerun:yes'> 
!   </span>ae diphthong</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Æ]<span
!   style='mso-spacerun:yes'>  </span>146<span style='mso-spacerun:yes'> 
!   </span>09/02<span style='mso-spacerun:yes'>  </span>222<span
!   style='mso-spacerun:yes'>  </span>92<span style='mso-spacerun:yes'> 
!   </span>AE diphthong</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ô]<span
!   style='mso-spacerun:yes'>  </span>147<span style='mso-spacerun:yes'> 
!   </span>09/03<span style='mso-spacerun:yes'>  </span>223<span
!   style='mso-spacerun:yes'>  </span>93<span style='mso-spacerun:yes'>  </span>o
!   circumflex</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ö]<span
!   style='mso-spacerun:yes'>  </span>148<span style='mso-spacerun:yes'> 
!   </span>09/04<span style='mso-spacerun:yes'>  </span>224<span
!   style='mso-spacerun:yes'>  </span>94<span style='mso-spacerun:yes'>  </span>o
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ò]<span
!   style='mso-spacerun:yes'>  </span>149<span style='mso-spacerun:yes'> 
!   </span>09/05<span style='mso-spacerun:yes'>  </span>225<span
!   style='mso-spacerun:yes'>  </span>95<span style='mso-spacerun:yes'>  </span>o
!   grave</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[û]<span
!   style='mso-spacerun:yes'>  </span>150<span style='mso-spacerun:yes'> 
!   </span>09/06<span style='mso-spacerun:yes'>  </span>226<span
!   style='mso-spacerun:yes'>  </span>96<span style='mso-spacerun:yes'>  </span>u
!   circumflex</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ù]<span
!   style='mso-spacerun:yes'>  </span>151<span style='mso-spacerun:yes'> 
!   </span>09/07<span style='mso-spacerun:yes'>  </span>227<span
!   style='mso-spacerun:yes'>  </span>97<span style='mso-spacerun:yes'>  </span>u
!   grave</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ÿ]<span
!   style='mso-spacerun:yes'>  </span>152<span style='mso-spacerun:yes'> 
!   </span>09/08<span style='mso-spacerun:yes'>  </span>230<span
!   style='mso-spacerun:yes'>  </span>98<span style='mso-spacerun:yes'>  </span>y
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Ö]<span
!   style='mso-spacerun:yes'>  </span>153<span style='mso-spacerun:yes'> 
!   </span>09/09<span style='mso-spacerun:yes'>  </span>231<span
!   style='mso-spacerun:yes'>  </span>99<span style='mso-spacerun:yes'>  </span>O
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Ü]<span
!   style='mso-spacerun:yes'>  </span>154<span style='mso-spacerun:yes'> 
!   </span>09/10<span style='mso-spacerun:yes'>  </span>232<span
!   style='mso-spacerun:yes'>  </span>9A<span style='mso-spacerun:yes'>  </span>U
!   diaeresis</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ø]<span
!   style='mso-spacerun:yes'>  </span>155<span style='mso-spacerun:yes'> 
!   </span>09/11<span style='mso-spacerun:yes'>  </span>233<span
!   style='mso-spacerun:yes'>  </span>9B<span style='mso-spacerun:yes'>  </span>o
!   slash</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[£]<span
!   style='mso-spacerun:yes'>  </span>156<span style='mso-spacerun:yes'> 
!   </span>09/12<span style='mso-spacerun:yes'>  </span>234<span
!   style='mso-spacerun:yes'>  </span>9C<span style='mso-spacerun:yes'> 
!   </span>Pound sterling sign</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[Ø]<span
!   style='mso-spacerun:yes'>  </span>157<span style='mso-spacerun:yes'> 
!   </span>09/13<span style='mso-spacerun:yes'>  </span>235<span
!   style='mso-spacerun:yes'>  </span>9D<span style='mso-spacerun:yes'>  </span>O
!   slash</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[×]<span
!   style='mso-spacerun:yes'>  </span>158<span style='mso-spacerun:yes'> 
!   </span>09/14<span style='mso-spacerun:yes'>  </span>236<span
!   style='mso-spacerun:yes'>  </span>9E<span style='mso-spacerun:yes'> 
!   </span>Multiplication sign</p>
!   <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>[ƒ]<span
!   style='mso-spacerun:yes'>  </span>159<span style='mso-spacerun:yes'> 
!   </span>09/15<span style='mso-spacerun:yes'>  </span>237<span
!   style='mso-spacerun:yes'>  </span>9F<span style='mso-spacerun:yes'>  </span><st2:place
!   w:st="on">Florin</st2:place> sign</p>
    </td>
   </tr>
  </table>
  
! <p class=PreformattedText><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>OpenAFS 1.4 provides an optional registry value, <i><a
! href="oafw-1-4-release-notes.doc#_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.<span style='mso-spacerun:yes'>  </span>The ANSI
! Code Page is a compatible superset of Latin-1.<span style='mso-spacerun:yes'> 
! </span>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872198"></a><a
! name="_Toc115417069"></a><a name="_Toc115416133"><span style='mso-bookmark:
! _Toc115417069'><span style='mso-bookmark:_Toc126872198'>3.27. Known Character
! Set Issues with Roaming Profiles</span></span></a></h2>
  
  <p class=MsoNormal>There is a known issue with storing Windows Roaming Profiles
  when the profile contains either directories or files with names which cannot
! be represented in the local OEM character set.<span style='mso-spacerun:yes'> 
! </span>In this case, attempts to write the profile back to AFS will fail.<span
! style='mso-spacerun:yes'>  </span>OpenAFS for Windows does not currently
! support UNICODE.<span style='mso-spacerun:yes'>  </span>To avoid this problem
! some sites run logoff scripts (assigned by group policy) which rename all files
! to use only the supported characters for the locale.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872199"></a><a
! name="_Toc115417070"></a><a name="_Toc115416134"><span style='mso-bookmark:
! _Toc115417070'><span style='mso-bookmark:_Toc126872199'>3.28. The AFSCache File</span></span></a></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. <span
! style='mso-spacerun:yes'> </span>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.<span
! style='mso-spacerun:yes'>  </span></p>
  
  <p class=MsoNormal>The performance of the AFS Client Service is significantly
! affected by the access times associated with the AFSCache paging file.<span
! style='mso-spacerun:yes'>   </span>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.<span
! style='mso-spacerun:yes'>   </span>Significant performance gains can be
! achieved by defragmenting the AFSCache file with Sysinternal's Contig utility.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872200"></a><a
! name="_Toc115417071"></a><a name="_Toc115416135"><span style='mso-bookmark:
! _Toc115417071'><span style='mso-bookmark:_Toc126872200'>3.29. Restricting
! OpenAFS Client Service Start and Stop</span></span></a></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><span style='mso-spacerun:yes'>    </span>afsdacl :
! Set or reset the DACL to allow starting or stopping</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>         </span>the
! afsd service by any ordinary user.</p>
  
! <p class=PreformattedText><o:p>&nbsp;</o:p></p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    </span>Usage :
! afsdacl [-set | -reset] [-show]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>         
! </span>-set<span style='mso-spacerun:yes'>   </span>: Sets the DACL</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>         
! </span>-reset : Reset the DACL</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>         
! </span>-show<span style='mso-spacerun:yes'>  </span>: Show current DACL (SDSF)</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872201"></a><a
! name="_Toc115417072"></a><a name="_Toc115416136"><span style='mso-bookmark:
! _Toc115417072'><span style='mso-bookmark:_Toc126872201'>3.30. The @sys Name
! List</span></span></a></h2>
  
  <p class=MsoNormal>The default @sys name list in OpenAFS 1.4 is set to
! &quot;x86_win32 i386_w2k i386_nt40&quot; for 32-bit x86 systems.<span
! style='mso-spacerun:yes'>  </span>The default for itanium will be
! &quot;ia64_win64&quot; and &quot;amd64_win64&quot; for amd 64-bit processors
! when those platforms are supported.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872202"></a><a
! name="_Toc115417073"></a><a name="_Toc115416137"><span style='mso-bookmark:
! _Toc115417073'><span style='mso-bookmark:_Toc126872202'>3.31. Symlinks to AFS
! UNC paths</span></span></a></h2>
  
  <p class=MsoNormal>In OpenAFS 1.4, symlinks to AFS UNC paths, \\AFS[\all]\...,
! are treated the same as symlinks to /afs/...<span style='mso-spacerun:yes'> 
! </span>However, please use /afs/... as the Windows UNC form will not work on UNIX.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872203"></a><a
! name="_Toc115417074"></a><a name="_Toc115416138"><span style='mso-bookmark:
! _Toc115417074'><span style='mso-bookmark:_Toc126872203'>3.32. Cache Manager
! Debugging Now Supported</span></span></a></h2>
  
  <p class=MsoNormal>OpenAFS for Windows 1.4 implements the Cache Manager
! Debugging RPC Interface.<span style='mso-spacerun:yes'>  </span>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><span style='mso-spacerun:yes'>              
! </span>[-addrs] [-cache] [-help]</p>
  
! <p class=PreformattedText>Where: -long<span style='mso-spacerun:yes'>  
! </span>print all info</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-addrs<span style='mso-spacerun:yes'>  </span>print only host interfaces</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-cache<span style='mso-spacerun:yes'>  </span>print only cache
! configuration</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872204"></a><a
! name="_Toc115417075"></a><a name="_Toc115416139"><span style='mso-bookmark:
! _Toc115417075'><span style='mso-bookmark:_Toc126872204'>3.33. Windows Logon
! Caching vs. Kerberos Logons</span></span></a></h2>
  
  <p class=MsoNormal>If you are a site which utilizes MIT/Heimdal Kerberos
  principals to logon to Windows via a cross-realm relationship with a
  multi-domain Windows forest, you must enable Windows logon caching unless the
! workstation is Windows Vista Beta 1 or later.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872205"></a><a
! name="_Toc115417076"></a><a name="_Toc115416140"><span style='mso-bookmark:
! _Toc115417076'><span style='mso-bookmark:_Toc126872205'>3.34. Initial Server
! Preferences</span></span></a></h2>
  
  <p class=MsoNormal>VLDB and File Server Preferences can now be provided initial
! values using registry keys.<span style='mso-spacerun:yes'>  </span>This is
! useful for managed machines in a Windows domain which are centrally located
! (e.g., in a computing lab.)<span style='mso-spacerun:yes'>  </span>See <a
! href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
  for details on the &quot;<a
! href="oafw-1-4-release-notes.doc#_Regkey:_[HKLMSOFTWAREOpenAFSClie_2">Server
  Preferences</a>&quot; keys.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872206"></a><a
! name="_Toc115417077"></a><a name="_Toc115416141"><span style='mso-bookmark:
! _Toc115417077'><span style='mso-bookmark:_Toc126872206'>3.35. File Timestamps</span></span></a></h2>
  
  <p class=MsoNormal>OpenAFS 1.4 reports timestamps on files stored in AFS in UTC
! all year round.<span style='mso-spacerun:yes'>  </span>In locales with daylight
! savings time, previous versions of AFS for Windows reported the time when DST
! is active as UTC+1.<span style='mso-spacerun:yes'>  </span>This was done to
! preserve the relative local time for the user.<span style='mso-spacerun:yes'> 
! </span>A file stored at 11:00am EST in January would be reported as having been
! stored at 11:00am EDT in June.<span style='mso-spacerun:yes'> 
! </span>Unfortunately, this has the negative side effect of changing the
! reported timestamp from 16:00UTC to 15:00UTC.<span style='mso-spacerun:yes'> 
! </span>Since Windows treats all file times in UTC, data synchronization
! applications which rely on the timestamp would believe that all files stored in
! AFS had changed.</p>
  
  <p class=MsoNormal>It should be noted that UNIX based operating systems (such
! as Solaris) do not appear to report file times to applications in UTC.<span
! style='mso-spacerun:yes'>  </span>They do preserve the relative local
! time.<span style='mso-spacerun:yes'>  </span>This may confuse some users who
! are used to being able to compare the timestamp in an UNIX shell with the
! timestamp from the Windows explorer.<span style='mso-spacerun:yes'> 
! </span>During DST, these two times will no longer agree even though they are in
! fact representing the same moment in time.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872207"></a><a
! name="_Toc115417078"></a><a name="_Toc115416142"><span style='mso-bookmark:
! _Toc115417078'><span style='mso-bookmark:_Toc126872207'>3.36. Windows RPC
! client support must be installed</span></span></a> </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><span style='mso-spacerun:yes'>   </span>HKLM
  &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_np&quot;</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>HKLM
  &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_ip_tcp&quot;</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>HKLM
! &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncadg_ip_udp&quot;</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>   </span>HKLM
  &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_http&quot;</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872208"></a><a
! name="_Toc115417079"></a><a name="_Toc115416143"><span style='mso-bookmark:
! _Toc115417079'><span style='mso-bookmark:_Toc126872208'>3.37. Generating
! Minidumps of the OpenAFS Client Service</span></span></a></h2>
! 
! <p class=MsoNormal>OpenAFS 1.4 adds a new command, &quot;fs
! minidump&quot;.<span style='mso-spacerun:yes'>  </span>This command can be used
! at any time to generate a mini dump file containing the current stack of the
! afsd_service.exe process.<span style='mso-spacerun:yes'>   </span>This output
! can be very helpful when debugging the AFS Client Service when it is
! unresponsive to SMB/CIFS requests.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872209"></a><a
! name="_Toc115417080"></a><a name="_Toc115416144"><span style='mso-bookmark:
! _Toc115417080'><span style='mso-bookmark:_Toc126872209'>3.38. AFS Client
! Universally Unique Identifiers</span></span></a></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows 1.4 client implements Universally
! Unique Identifiers (UUIDs).<span style='mso-spacerun:yes'>  </span>They are
! used to provide the server with a method of identifying the client that is
! independent of IP address.<span style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'> 
! </span>The UUID is stored in the AFSCache file.<span
! style='mso-spacerun:yes'>   </span>When cloning machines that have Windows AFS
! client installed, the AFSCache files must be deleted as part of the cloning
! process.</p>
! 
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872210"></a><a
! name="_Toc115417112"></a><a name="_Toc115417081"></a><a name="_Toc115416145"><span
! style='mso-bookmark:_Toc115417081'><span style='mso-bookmark:_Toc115417112'><span
! style='mso-bookmark:_Toc126872210'>4. How to Debug Problems with OpenAFS for
! Windows:</span></span></span></a></h1>
  
  <p class=MsoNormal>OpenAFS for Windows provides a wide range of tools to assist
! you in debugging problems.<span style='mso-spacerun:yes'>  </span>The
! techniques available to you are varied because of the wide range of issues that
! have been discovered over the years.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872211"></a><a
! name="_Toc115417082"></a><a name="_Toc115416146"><span style='mso-bookmark:
! _Toc115417082'><span style='mso-bookmark:_Toc126872211'>4.1. pioctl debugging (</span></span></a><a
! href="oafw-1-4-release-notes.doc#_Value___: IoctlDebug"><span style='mso-bookmark:
! _Toc115416146'><span style='mso-bookmark:_Toc115417082'><span style='mso-bookmark:
! _Toc126872211'>IoctlDebug</span></span></span><span style='mso-bookmark:_Toc115416146'><span
! style='mso-bookmark:_Toc115417082'><span style='mso-bookmark:_Toc126872211'></span></span></span></a><span
! style='mso-bookmark:_Toc115416146'><span style='mso-bookmark:_Toc115417082'><span
! style='mso-bookmark:_Toc126872211'> registry key)</span></span></span></h2>
  
  <p class=MsoNormal>pioctl (path-based ioctl) calls are used by various tools to
! communicate with the AFS Client Service.<span style='mso-spacerun:yes'> 
! </span>Some of the operations performed include:</p>
  
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setting/querying
! tokens<span style='mso-spacerun:yes'>  </span>(tokens.exe, aklog.exe,
! afscreds.exe)</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setting/querying
! ACLs </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setting/querying
! cache parameters</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>flushing
! files or volumes</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setting/querying
! server preferences</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>querying
! path location</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>checking
! the status of servers and volumes</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l17 level1 lfo8;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>setting/querying
! the sysname list</p>
  
  <p class=MsoNormal>pioctl calls are implemented by writing to a special UNC
! path that is processed by the AFS Client Service.<span
! style='mso-spacerun:yes'>   </span>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.<span style='mso-spacerun:yes'>   </span></p>
  
  <p class=MsoNormal>To assist in debugging these problems, the registry value:</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>[HKLM\SOFTWARE\OpenAFS\Client]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>REG_DWORD:<span style='mso-spacerun:yes'>  </span>IoctlDebug<span
! style='mso-spacerun:yes'>   </span>= 0x01</p>
! 
! <p class=MsoNormal>should be set.<span style='mso-spacerun:yes'>  </span>Then
! any of the commands that perform pioctl calls should be executed from the
! command prompt.<span style='mso-spacerun:yes'>  </span>With this key set the
! pioctl library will generate debugging output to stderr.<span
! style='mso-spacerun:yes'>  </span>The output will contain the Win32 API calls
! executed along with their most important parameters and their return code.<span
! style='mso-spacerun:yes'>   </span>The MSDN Library and the Microsoft
! KnowledgeBase can be used as a reference to help you determine the
! configuration probem with your system.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872212"></a><a
! name="_Toc115417083"></a><a name="_Toc115416147"><span style='mso-bookmark:
! _Toc115417083'><span style='mso-bookmark:_Toc126872212'>4.2. afsd_service
! initialization log (%WinDir%\TEMP\afsd_init.log)</span></span></a></h2>
  
  <p class=MsoNormal>Every time the AFS Client Service starts it appends data
! about its progress and configuration to a file.<span style='mso-spacerun:yes'> 
! </span>This file provides information crucial to determining why the service
! cannot start when there are problems.<span style='mso-spacerun:yes'> 
! </span>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.<span
! style='mso-spacerun:yes'>  </span>In many cases the panic condition is due to a
! misconfiguration of the machine.<span style='mso-spacerun:yes'>  </span>In
! other cases it might be due to a programming error in the software.<span
! style='mso-spacerun:yes'>  </span>A quick review of the location in the source
! code will quickly reveal the reason for the termination.</p>
  
! <p class=MsoNormal>The <i style='mso-bidi-font-style:normal'><a
! href="oafw-1-4-release-notes.doc#_Value___: MaxLogSize">MaxLogSize</a></i>
  registry value determines the maximum size of the %WINDIR%\TEMP\afsd_init.log
! file.<span style='mso-spacerun:yes'>  </span>If the file is larger than this
! value when OpenAFS Client Service starts, the file will be reset to 0 bytes.<span
! style='mso-spacerun:yes'>  </span>If value is set to 0, the file will be
! allowed to grow indefinitely.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872213"></a><a
! name="_Toc115417084"></a><a name="_Toc115416148"><span style='mso-bookmark:
! _Toc115417084'><span style='mso-bookmark:_Toc126872213'>4.3. afsd_service debug
! logs (fs trace {-on, -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</span></span></a></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.<span style='mso-spacerun:yes'>  </span>While running the AFS
! Client Service keeps an in memory log of many of its actions.<span
! style='mso-spacerun:yes'>   </span>The default number of actions preserved at
! any one time is 5000.<span style='mso-spacerun:yes'>  </span>This can be
! adjusted with the <a href="oafw-1-4-release-notes.doc#_Value_:_TraceBufferSize">registry
! value</a>:</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>REG_DWORD<span style='mso-spacerun:yes'>  </span>TraceBufferSize </p>
  
  <p class=MsoNormal>A restart of the service is necessary when adjusting this
! value.<span style='mso-spacerun:yes'>   </span>Execute &quot;fs trace -on&quot;
! to clear to the log and &quot;fs trace -dump&quot; to output the contents of
! the log to the file.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872214"></a><a
! name="_Toc115417085"></a><a name="_Toc115416149"><span style='mso-bookmark:
! _Toc115417085'><span style='mso-bookmark:_Toc126872214'>4.4. Using
! SysInternal’s DbgView and FileMon Tools</span></span></a></h2>
  
  <p class=MsoNormal>An alternatve option to the use of &quot;fs trace -dump&quot;
  to capture internal OpenAFS Client Service events is to use a tool such as
! Sysinternal's DbgView to capture real-time debugging output.<span
! style='mso-spacerun:yes'>  </span>When the OpenAFS Client Service starts and Bit
! 2 of the <a href="oafw-1-4-release-notes.doc#_Value__:_TraceOption">TraceOption</a>
  value in the registry is set, all trace log events are output using the Windows
! Debug Monitor interface (OutputDebugString).<span style='mso-spacerun:yes'> 
! </span></p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
  
! <p class=PreformattedText style='text-indent:12.0pt'>REG_DWORD<span
! style='mso-spacerun:yes'>   </span>TraceOption = 0x04</p>
  
  <p class=MsoNormal>Use “fs trace –on” and “fs trace –off” to toggle the
  generation of log messages. </p>
  
  <p class=MsoNormal>Sysinternal’s FileMon utility can be use to monitor the file
! operations requested by applications and their success or failure.<span
! style='mso-spacerun:yes'>   </span>Restrict FileMon to monitor Network Volumes
! only in order to reduce the output to just the CIFS requests.<span
! style='mso-spacerun:yes'>   </span></p>
! 
! <p class=MsoNormal>Turn on the <i style='mso-bidi-font-style:normal'>Clock Time</i>
! option in both tools to make it easier to synchronize the application requests
! and the resulting OpenAFS Client Service operations.<span
! style='mso-spacerun:yes'>   </span>The captured data can be stored to files for
! inclusion in bug reports.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872215"></a><a
! name="_Toc115417086"></a><a name="_Toc115416150"><span style='mso-bookmark:
! _Toc115417086'><span style='mso-bookmark:_Toc126872215'>4.5. Microsoft
! MiniDumps <br>
! (fs minidump -&gt; %WinDir%\TEMP\afsd.dmp)</span></span></a></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.<span style='mso-spacerun:yes'>  
! </span>The &quot;fs minidump&quot; command can be used to force the generation
! of a MiniDump file containing the state of all of the threads in the AFS Client
! Service process.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872216"></a><a
! name="_Toc115417087"></a><a name="_Toc115416151"><span style='mso-bookmark:
! _Toc115417087'><span style='mso-bookmark:_Toc126872216'>4.6. Single Sign-on (Integrated
! Logon) debugging</span></span></a></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.<span style='mso-spacerun:yes'>   </span>Setting Bit 0 of the <a
! href="oafw-1-4-release-notes.doc#_Value__:_TraceOption">TraceOption</a> registry
  value:</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'> 
! </span>REG_DWORD<span style='mso-spacerun:yes'>   </span>TraceOption = 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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872217"></a><a
! name="_Toc115417088"></a><a name="_Toc115416152"><span style='mso-bookmark:
! _Toc115417088'><span style='mso-bookmark:_Toc126872217'>4.7. RX (AFS RPC)
! debugging (rxdebug)</span></span></a></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.<span
! style='mso-spacerun:yes'>  </span>The port for the AFS Cache Manager is
! 7001.<span style='mso-spacerun:yes'>  </span></p>
  
  <p class=PreformattedText>Usage: rxdebug -servers &lt;server machine&gt; [-port
  &lt;IP port&gt;] [-nodally] </p>
  
! <p class=PreformattedText style='margin-left:35.45pt;text-indent:35.45pt'><span
! style='mso-spacerun:yes'>   </span>[-allconnections] [-rxstats] [-onlyserver]
! [-onlyclient] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'><span
! style='mso-spacerun:yes'>   </span>[-onlyport &lt;show only &lt;port&gt;&gt;] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'><span
! style='mso-spacerun:yes'>   </span>[-onlyhost &lt;show only &lt;host&gt;&gt;] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'><span
! style='mso-spacerun:yes'>   </span>[-onlyauth &lt;show only &lt;auth
! level&gt;&gt;] [-version] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'><span
! style='mso-spacerun:yes'>   </span>[-noconns] [-peers] [-help]</p>
  
! <p class=PreformattedText>Where: -nodally<span
! style='mso-spacerun:yes'>         </span>don't show dallying conns</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-allconnections<span style='mso-spacerun:yes'>  </span>don't filter out
  uninteresting connections</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-rxstats<span style='mso-spacerun:yes'>         </span>show Rx
! statistics</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-onlyserver<span style='mso-spacerun:yes'>      </span>only show server
! conns</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-onlyclient<span style='mso-spacerun:yes'>      </span>only show client
! conns</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-version<span style='mso-spacerun:yes'>         </span>show AFS version
! id</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-noconns<span style='mso-spacerun:yes'>         </span>show no
! connections</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-peers<span style='mso-spacerun:yes'>           </span>show peers</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872218"></a><a
! name="_Toc115417089"></a><a name="_Toc115416153"><span style='mso-bookmark:
! _Toc115417089'><span style='mso-bookmark:_Toc126872218'>4.8. Cache Manager
! debugging (cmdebug)</span></span></a></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>
--- 856,1674 ----
  
  <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.  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.  Only
! users that are members of the &quot;AFS Client Admins&quot; group are AFS
! Client Administrators.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980955"></a><a
! name="_Toc126872179"></a><a name="_Toc115417050"></a><a name="_Toc115416114">3.8.
! OpenAFS support for UNC paths</a> </h2>
! 
! <p class=MsoNormal>The OpenAFS 1.4 client supports UNC paths everywhere.  UNC
! paths provide a canonical name for resources stored within AFS.  UNC paths
! should be used instead of drive letter mappings whenever possible.   This is
! especially true when specifying the location of roaming profiles and redirected
! folders.  </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.  Unlike cmd.exe, the JPSoftware shells fully support UNC paths as
! the current directory.  With the release of version 4NT 7.0 and Take Command 7.0,
! JPSoftware is adding special recognition of OpenAFS.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980956"></a><a
! name="_Toc126872180"></a><a name="_Toc115417051"></a><a name="_Toc115416115">3.9.
! OpenAFS includes aklog.exe</a></h2>
  
  <p class=MsoNormal>The OpenAFS 1.4 Client ships with its own version of
  aklog.exe which should be used in preference to those obtained by third party
! sources.  The OpenAFS aklog.exe supports Kerberos 5 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>             [[-p | -path] pathname]</p>
  
! <p class=PreformattedText>             [-noprdb] [-force]</p>
  
! <p class=PreformattedText>             [-5 [-m]| -4]</p>
  
! <p class=PreformattedText>&nbsp;</p>
  
! <p class=PreformattedText>   -d = output debugging information.</p>
  
! <p class=PreformattedText>   cell = zero or more cells for which tokens will be
! obtained</p>
  
! <p class=PreformattedText>   krb_realm = the kerberos realm of the cell.</p>
  
! <p class=PreformattedText>   pathname = the directory for which authentication
! is required</p>
  
! <p class=PreformattedText>   -noprdb = don't try to determine AFS ID.</p>
  
! <p class=PreformattedText>   -5 or -4 = use Kerberos V (default) or Kerberos IV
! tickets</p>
  
! <p class=PreformattedText>   -m = use krb524d to convert Kerberos V tickets to
! Kerberos IV</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980957"></a><a
! name="_Toc126872181"></a><a name="_Toc115417052"></a><a name="_Toc115416116">3.10.
! OpenAFS Servers on Windows are Unsupported</a></h2>
  
  <p class=MsoNormal>The AFS Server functionality provided with OpenAFS 1.4 might
! work but should be considered highly experimental.  It has not been thoroughly
! tested.  Any data which would cause pain if lost should not be stored in an
! OpenAFS Server on Windows.</p>
  
  <p class=MsoNormal>A few notes on the usage of the AFS Client Service if it is
  going to be used with the OpenAFS AFS Server:</p>
  
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>When installed on the same machine as the AFS Server, Freelance
! mode must be turned off.  Otherwise, you will be unable to manipulate the
! contents of the root.afs volume for the hosted cell.</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>The AFS Server and related tools only support the built in kaserver
! (Kerberos IV).  If the AFS Server is being used, MIT Kerberos for Windows
! should not be installed or must be disabled.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980958"></a><a
! name="_Toc126872182"></a><a name="_Toc115417053"></a><a name="_Toc115416117">3.11.
! OpenAFS Debugging Symbol files</a></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows installers now include Debugging
  Symbol files which should be installed if you are experiencing problems and
! need to send crash reports.  This is true for both the release and the debug
! versions of the installers.  The difference between the release and debug
  versions are:</p>
  
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>whether or not the binaries were compiled with optimization</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>whether the debug symbols are installed by default</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>whether additional debug statements were compiled into the
! binaries</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980959"></a><a
! name="_Toc126872183"></a><a name="_Toc115417054"></a><a name="_Toc115416118">3.12.
! Maximum File Size is 2GB</a></h2>
! 
! <p class=MsoNormal>OpenAFS for Windows does not support files larger than 2GB. 
! The version of the SMB/CIFS protocol implemented imposes this limitation. 
! Upgrading the SMB/CIFS implementation or replacing it with an Installable File
! System will allow larger files to be supported. </p>
! 
! <p class=MsoNormal>OpenAFS for Windows 1.5.3 or greater will provide support
! for files up to 16777216 terabytes.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980960"></a><a
! name="_Toc126872184"></a><a name="_Toc115417055"></a><a name="_Toc115416119">3.13.
! Encrypted AFS File Access</a></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.  This is often referred to as &quot;fcrypt&quot; mode.  Encrypted data
! transfer can be turned on or off with the “fs crypt” command.  Transitions
! between “crypt” and “non-crypt” modes are logged to the Windows Application
! Event Log. </p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980961"></a><a
! name="_Toc126872185"></a><a name="_Toc115417056"></a><a name="_Toc115416120">3.14.
! Authenticated Access to the OpenAFS Client Service</a></h2>
  
  <p class=MsoNormal>OpenAFS 1.4 supports authenticated SMB connections using
! either NTLM or GSS SPNEGO (NTLM).  In previous versions of OpenAFS, the SMB
! connections were unauthenticated which opened the door for several attacks
! which could be used to obtain access to another user's tokens on shared
! machines.    </p>
  
  <p class=MsoNormal>When GSS SPNEGO attempts a Kerberos 5 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).  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.  When NTLM is used a special local authentication mode will
! be used that does not require access to the user's password.  Instead, Windows
! will internally recognize the request as coming from a local logon session.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980962"></a><a
! name="_Toc126872186"></a><a name="_Toc115417057"></a><a name="_Toc115416121">3.15.
! No More INI Files</a></h2>
  
  <p class=MsoNormal>Previous AFS clients for Windows stored configuration data
! in Windows .INI files.   OpenAFS 1.4 does not use Windows .INI files for the storage
! of configuration data.   All settings are now stored in the registry (see <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>). 
! The CellServDB file is now stored in the %PROGRAMFILES%\OpenAFS\Client directory.  
! The <i><a href="#_Value___: CellServDBDir">CellServDBDir</a></i>
  registry value can be used to specify an alternative location.</p>
  
  <p class=MsoNormal>OpenAFS 1.4 will relocate the contents of the “afsdcell.ini”
! file to the new CellServDB file.  OpenAFS 1.4 will also import the contents of
! the “afs_freelance.ini” file to the Windows registry.   OpenAFS 1.4 will not
  process the contents of the “afsddbmt.ini”.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980963"></a><a
! name="_Toc126872187"></a><a name="_Toc115417058"></a><a name="_Toc115416122">3.16.
! Microsoft Windows Internet Connection Firewall</a></h2>
! 
! <p class=MsoNormal>The OpenAFS 1.4 Client is compatible with the Internet Connection
! Firewall that debuted with Windows XP SP2 and Windows 2003 SP1.  The Internet
! Connection Firewall will be automatically adjusted to allow the receipt of
! incoming callback messages from the AFS file server.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980964"></a><a
! name="_Toc126872188"></a><a name="_Toc115417059"></a><a name="_Toc115416123">3.17.
! Browsing AFS from the Explorer Shell and Office</a></h2>
  
  <p class=MsoNormal>The OpenAFS 1.4 Client Service implements the CIFS Remote
  Admin Protocol which allows Explorer to browse server and share information.
  This significantly enhances the interoperability of AFS volumes within the
  Explorer Shell and Microsoft Office applications.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980965"></a><a
! name="_Toc126872189"></a><a name="_Toc115417060"></a><a name="_Toc115416124">3.18.
! </a>Byte Range Locking</h2>
  
  <p class=MsoBodyText>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.   OpenAFS implements byte
! range locking local to the machine.   OpenAFS does not obtain file locks on the
! server.   It is strongly recommended that files not be edited within AFS if
! they might be accessed by multiple users or multiple processes on more than one
! machine at the same time.</p>
! 
! <p class=MsoNormal>Note: <span style='font-family:"Times New Roman"'>In a
! future release, OpenAFS for Windows will utilize AFS' advisory locks to
! simulate Microsoft Windows mandatory locks.&nbsp;&nbsp; When an application
! opens a file, a lock will be placed in AFS indicating that the file is in
! use.&nbsp; If the lock is a write lock, the use of the file will be restricted
! to other applications running on the same machine as the first application to
! apply the lock.&nbsp;&nbsp; Applications running on other machines will see the
! full lock and will be unable to access the file.</span></p>
! 
! <p class=MsoNormal><span style='font-family:"Times New Roman"'>Most Windows
  applications and Windows itself opens files in shared read mode. When this is
  done, a read lock is applied to the file.&nbsp;&nbsp; This does not prevent
  shared read access across multiple machines but is used to ensure that no one
! writes to the file while it is in use.</span></p>
  
! <p class=MsoNormal>As locks are checked and applied during the file open
! operation, it is crucial that users have the locking 'k' privilege in all
! directories in which the user might read a file or execute an application
! unless the directory exists on a read only volume.&nbsp; A failure to assign
! the 'k' privilege will result in &quot;Access Denied&quot; errors during file
! open. </p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980966"></a><a
! name="_Toc126872190"></a><a name="_Toc115417061"></a><a name="_Toc115416125">3.19.
! Automatic Discarding of AFS Tokens at Logoff</a></h2>
  
  <p class=MsoNormal>OpenAFS 1.4 will automatically forget a user's tokens upon
! Logoff unless the user's profile was loaded from an AFS volume.  In this
! situation there is no mechanism to determine when the profile has been successfully
! written back to the network.  It is therefore unsafe to release the user's
! tokens.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980967"></a><a
! name="_Toc126872191"></a><a name="_Toc115417062"></a><a name="_Toc115416126">3.20.
! Terminal Server installations</a></h2>
  
  <p class=MsoNormal>When installing the NSIS (.exe) installer under Terminal
! Server, you must execute it from within the Add/Remove Programs Control Panel. 
! Failure to do so will result in AFS not running properly.  The AFS Server
  should not be installed on a machine with Terminal Server installed.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980968"></a><a
! name="_Toc126872192"></a><a name="_Toc115417063"></a><a name="_Toc115416127">3.21.
! Hidden Dot Files</a></h2>
! 
! <p class=MsoNormal>AFS is a UNIX native file system.  The OpenAFS client
! attempts to treat the files stored in AFS as they would be on UNIX.  File and
! directory names beginning with a &quot;.&quot; are automatically given the
! Hidden attribute so they will not normally be displayed.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980969"></a><a
! name="_Toc126872193"></a><a name="_Toc115417064"></a><a name="_Toc115416128">3.22.
! Status Cache Limits</a></h2>
  
  <p class=MsoNormal>The Status Cache (AFS Configuration Control Panel: Advanced
! Page) is defined to have a maximum number of entries.  Each entry represents a
! single file or directory entry accessed within the AFS file system.  When the
! maximum number of entries are allocated, entries will begin to be reused
! according to a least recently used (LRU) algorithm.  If the number of files or
! directories being accessed repeatedly by your applications is greater then the
  maximum number of entries, your host will begin to experience thrashing of the
  Status Cache and all requests will result in network operations.</p>
  
  <p class=MsoNormal>If you are experiencing poor performance try increasing the
! maximum number of Status Cache entries.  Each entry requires approximately
! 1.2K.  In OpenAFS 1.4, the default number of Status Cache entries is 10,000.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980970"></a><a
! name="_Toc126872194"></a><a name="_Toc115417065"></a><a name="_Toc115416129">3.23.
! NETBIOS over TCP/IP must be enabled</a></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.  If
! &quot;Netbios over TCP/IP&quot; is disabled on the machine, then communication
! with the AFS Client Service will be impossible.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980971"></a><a
! name="_Toc126872195"></a><a name="_Toc115417066"></a><a name="_Toc115416130">3.24.
! OpenAFS binaries are digitally signed</a></h2>
  
  <p class=MsoNormal>The OpenAFS Client Service and related binaries distributed
! by OpenAFS.org are digitally signed by &quot;Secure Endpoints Inc.&quot;.  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.  This check has been added to
  prevent the stability problems caused by more than one AFS installation present
! on a machine at the same time.  Many hours of support time have been wasted
! tracking down problems caused by the mixture of files from different releases. 
! </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.  The file
! version check cannot be disabled.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980972"></a><a
! name="_Toc126872196"></a><a name="_Toc115417067"></a><a name="_Toc115416131">3.25.
! Maximum Size of the AFSCache File</a></h2>
! 
! <p class=MsoNormal>The maximum cache size is approximately 1.3GB.  This is the
! largest contiguous block of memory in the 2GB process address space which can
! be used for constructing a memory mapped file.  Due to fragmentation of the
! process space caused by the loading of libraries required by the digital
  signature verification code, any attempt to specify a cache size greater then
  700MB will result in the automatic disabling of the signature check.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980973"></a><a
! name="_Toc126872197"></a><a name="_Toc115417068"></a><a name="_Toc115416132">3.26.
! Filename Character Sets</a></h2>
  
  <p class=MsoNormal>OpenAFS for Windows implements an SMB server which is used
! as a gateway to the AFS filesystem.  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).  These code pages are
  incompatible with the ISO Latin-1 character set typically used as the default
! on UNIX systems in both the United States and Western Europe.  Filenames stored
! by OpenAFS for Windows are therefore unreadable on UNIX systems if they include
! any of the following characters:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='border-collapse:collapse;border:none'>
!  <tr style='height:399.5pt'>
    <td width=590 valign=top style='width:442.8pt;border:solid windowtext 1.0pt;
!   padding:0pt 5.4pt 0pt 5.4pt;height:399.5pt'>
!   <p class=PreformattedText>     [Ç]  128  08/00  200  80  C cedilla</p>
!   <p class=PreformattedText>     [ü]  129  08/01  201  81  u diaeresis</p>
!   <p class=PreformattedText>     [é]  130  08/02  202  82  e acute</p>
!   <p class=PreformattedText>     [â]  131  08/03  203  83  a circumflex</p>
!   <p class=PreformattedText>     [ä]  132  08/04  204  84  a diaeresis</p>
!   <p class=PreformattedText>     [à]  133  08/05  205  85  a grave</p>
!   <p class=PreformattedText>     [å]  134  08/06  206  86  a ring</p>
!   <p class=PreformattedText>     [ç]  135  08/07  207  87  c cedilla</p>
!   <p class=PreformattedText>     [ê]  136  08/08  210  88  e circumflex</p>
!   <p class=PreformattedText>     [ë]  137  08/09  211  89  e diaeresis</p>
!   <p class=PreformattedText>     [è]  138  08/10  212  8A  e grave</p>
!   <p class=PreformattedText>     [ï]  139  08/11  213  8B  i diaeresis</p>
!   <p class=PreformattedText>     [î]  140  08/12  214  8C  i circumflex</p>
!   <p class=PreformattedText>     [ì]  141  08/13  215  8D  i grave</p>
!   <p class=PreformattedText>     [Ä]  142  08/14  216  8E  A diaeresis</p>
!   <p class=PreformattedText>     [Å]  143  08/15  217  8F  A ring</p>
!   <p class=PreformattedText>     [É]  144  09/00  220  90  E acute</p>
!   <p class=PreformattedText>     [æ]  145  09/01  221  91  ae diphthong</p>
!   <p class=PreformattedText>     [Æ]  146  09/02  222  92  AE diphthong</p>
!   <p class=PreformattedText>     [ô]  147  09/03  223  93  o circumflex</p>
!   <p class=PreformattedText>     [ö]  148  09/04  224  94  o diaeresis</p>
!   <p class=PreformattedText>     [ò]  149  09/05  225  95  o grave</p>
!   <p class=PreformattedText>     [û]  150  09/06  226  96  u circumflex</p>
!   <p class=PreformattedText>     [ù]  151  09/07  227  97  u grave</p>
!   <p class=PreformattedText>     [ÿ]  152  09/08  230  98  y diaeresis</p>
!   <p class=PreformattedText>     [Ö]  153  09/09  231  99  O diaeresis</p>
!   <p class=PreformattedText>     [Ü]  154  09/10  232  9A  U diaeresis</p>
!   <p class=PreformattedText>     [ø]  155  09/11  233  9B  o slash</p>
!   <p class=PreformattedText>     [£]  156  09/12  234  9C  Pound sterling sign</p>
!   <p class=PreformattedText>     [Ø]  157  09/13  235  9D  O slash</p>
!   <p class=PreformattedText>     [×]  158  09/14  236  9E  Multiplication sign</p>
!   <p class=PreformattedText>     [ƒ]  159  09/15  237  9F  Florin sign</p>
    </td>
   </tr>
  </table>
  
! <p class=PreformattedText>&nbsp;</p>
  
  <p class=MsoNormal>OpenAFS 1.4 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.  The ANSI Code Page is a compatible superset of
! Latin-1.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980974"></a><a
! name="_Toc126872198"></a><a name="_Toc115417069"></a><a name="_Toc115416133">3.27.
! Known Character Set Issues with Roaming Profiles</a></h2>
  
  <p class=MsoNormal>There is a known issue with storing Windows Roaming Profiles
  when the profile contains either directories or files with names which cannot
! be represented in the local OEM character set.  In this case, attempts to write
! the profile back to AFS will fail.  OpenAFS for Windows does not currently
! support UNICODE.  To avoid this problem some sites run logoff scripts (assigned
! by group policy) which rename all files to use only the supported characters
! for the locale.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980975"></a><a
! name="_Toc126872199"></a><a name="_Toc115417070"></a><a name="_Toc115416134">3.28.
! The AFSCache File</a></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.  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.  </p>
  
  <p class=MsoNormal>The performance of the AFS Client Service is significantly
! affected by the access times associated with the AFSCache paging file.   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.   Significant performance gains can be achieved by defragmenting
! the AFSCache file with Sysinternal's Contig utility.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980976"></a><a
! name="_Toc126872200"></a><a name="_Toc115417071"></a><a name="_Toc115416135">3.29.
! Restricting OpenAFS Client Service Start and Stop</a></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>    afsdacl : Set or reset the DACL to allow starting
! or stopping</p>
  
! <p class=PreformattedText>         the afsd service by any ordinary user.</p>
  
! <p class=PreformattedText>&nbsp;</p>
  
! <p class=PreformattedText>    Usage : afsdacl [-set | -reset] [-show]</p>
  
! <p class=PreformattedText>          -set   : Sets the DACL</p>
  
! <p class=PreformattedText>          -reset : Reset the DACL</p>
  
! <p class=PreformattedText>          -show  : Show current DACL (SDSF)</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980977"></a><a
! name="_Toc126872201"></a><a name="_Toc115417072"></a><a name="_Toc115416136">3.30.
! The @sys Name List</a></h2>
  
  <p class=MsoNormal>The default @sys name list in OpenAFS 1.4 is set to
! &quot;x86_win32 i386_w2k i386_nt40&quot; for 32-bit x86 systems.  The default
! for itanium will be &quot;ia64_win64&quot; and &quot;amd64_win64&quot; for amd
! 64-bit processors when those platforms are supported.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980978"></a><a
! name="_Toc126872202"></a><a name="_Toc115417073"></a><a name="_Toc115416137">3.31.
! Symlinks to AFS UNC paths</a></h2>
  
  <p class=MsoNormal>In OpenAFS 1.4, symlinks to AFS UNC paths, \\AFS[\all]\...,
! are treated the same as symlinks to /afs/...  However, please use /afs/... as
! the Windows UNC form will not work on UNIX.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980979"></a><a
! name="_Toc126872203"></a><a name="_Toc115417074"></a><a name="_Toc115416138">3.32.
! Cache Manager Debugging Now Supported</a></h2>
  
  <p class=MsoNormal>OpenAFS for Windows 1.4 implements the Cache Manager
! Debugging RPC Interface.  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>               [-addrs] [-cache] [-help]</p>
  
! <p class=PreformattedText>Where: -long   print all info</p>
  
! <p class=PreformattedText>       -addrs  print only host interfaces</p>
  
! <p class=PreformattedText>       -cache  print only cache configuration</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980980"></a><a
! name="_Toc126872204"></a><a name="_Toc115417075"></a><a name="_Toc115416139">3.33.
! Windows Logon Caching vs. Kerberos Logons</a></h2>
  
  <p class=MsoNormal>If you are a site which utilizes MIT/Heimdal Kerberos
  principals to logon to Windows via a cross-realm relationship with a
  multi-domain Windows forest, you must enable Windows logon caching unless the
! workstation is Windows Vista Beta 2 or later.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980981"></a><a
! name="_Toc126872205"></a><a name="_Toc115417076"></a><a name="_Toc115416140">3.34.
! Initial Server Preferences</a></h2>
  
  <p class=MsoNormal>VLDB and File Server Preferences can now be provided initial
! values using registry keys.  This is useful for managed machines in a Windows
! domain which are centrally located (e.g., in a computing lab.)  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980982"></a><a
! name="_Toc126872206"></a><a name="_Toc115417077"></a><a name="_Toc115416141">3.35.
! File Timestamps</a></h2>
  
  <p class=MsoNormal>OpenAFS 1.4 reports timestamps on files stored in AFS in UTC
! all year round.  In locales with daylight savings time, previous versions of
! AFS for Windows reported the time when DST is active as UTC+1.  This was done
! to preserve the relative local time for the user.  A file stored at 11:00am EST
! in January would be reported as having been stored at 11:00am EDT in June. 
! Unfortunately, this has the negative side effect of changing the reported timestamp
! from 16:00UTC to 15:00UTC.  Since Windows treats all file times in UTC, data
! synchronization applications which rely on the timestamp would believe that all
! files stored in AFS had changed.</p>
  
  <p class=MsoNormal>It should be noted that UNIX based operating systems (such
! as Solaris) do not appear to report file times to applications in UTC.  They do
! preserve the relative local time.  This may confuse some users who are used to
! being able to compare the timestamp in an UNIX shell with the timestamp from
! the Windows explorer.  During DST, these two times will no longer agree even
! though they are in fact representing the same moment in time.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980983"></a><a
! name="_Toc126872207"></a><a name="_Toc115417078"></a><a name="_Toc115416142">3.36.
! Windows RPC client support must be installed</a> </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>   HKLM
  &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_np&quot;</p>
  
! <p class=PreformattedText>   HKLM
  &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_ip_tcp&quot;</p>
  
! <p class=PreformattedText>   HKLM &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot;
! &quot;ncadg_ip_udp&quot;</p>
  
! <p class=PreformattedText>   HKLM
  &quot;SOFTWARE\Microsoft\RPC\ClientProtocols&quot; &quot;ncacn_http&quot;</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980984"></a><a
! name="_Toc126872208"></a><a name="_Toc115417079"></a><a name="_Toc115416143">3.37.
! Generating Minidumps of the OpenAFS Client Service</a></h2>
! 
! <p class=MsoNormal>OpenAFS 1.4 adds a new command, &quot;fs minidump&quot;. 
! This command can be used at any time to generate a mini dump file containing
! the current stack of the afsd_service.exe process.   This output can be very
! helpful when debugging the AFS Client Service when it is unresponsive to
! SMB/CIFS requests.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980985"></a><a
! name="_Toc126872209"></a><a name="_Toc115417080"></a><a name="_Toc115416144">3.38.
! AFS Client Universally Unique Identifiers</a></h2>
  
  <p class=MsoNormal>The OpenAFS for Windows 1.4 client implements Universally
! Unique Identifiers (UUIDs).  They are used to provide the server with a method
! of identifying the client that is independent of IP address.  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.  The UUID is stored in the
! AFSCache file.   When cloning machines that have Windows AFS client installed,
! the AFSCache files should be deleted as part of the cloning process.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980986">3.39. Delayed
! Write Errors with Microsoft Office Applications</a></h2>
! 
! <p class=MsoBodyText>Microsoft Office makes heavy use of asynchronous
! input/output methods for reading and writing to file streams.  This can result
! in hundreds of requests being simultaneously queued for service by the CIFS client
! with a fixed timeout period.  As the AFS CIFS server is local to the machine
! the Windows CIFS client believes that it can respond almost instantaneously to
! write requests as the actual writing to the AFS file server is performed by a
! background daemon thread.  When the actual network bandwidth to the AFS file
! server is slow and the file size is large it is possible for the CIFS client to
! time out the connection.  When this happens a “delayed write error” will be
! reported to the user and the application may crash.  The only workaround at the
! current time is to save first to a local disk and subsequently copy the file to
! AFS as copying a file with the explorer shell does not use asynchronous i/o.</p>
! 
! <p class=MsoBodyText>The CIFS session timeout defaults to 45 seconds and can be
! increased by modifying the <a href="#_Value:_ConnDeadTimeout">registry</a>.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980987">3.40.
! Global Drives (aka </a>Service Drive Letters) are no longer supported by
! Microsoft</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>
! 
! <p class=MsoBodyText>It says that services mounting drive letters are no longer
! supported by Microsoft and may act unpredictably.  The experience other users
! have had is that if the connection to the OpenAFS CIFS/SMB server is terminated
! by the Windows CIFS client, the drive mapping may not be re-established until
! the machine is rebooted.</p>
! 
! <p class=MsoBodyText>OpenAFS supports UNC paths and whenever possible
! applications should be modified to use of \\AFS\&lt;cellname&gt;\&lt;path&gt;
! instead of drive letters.</p>
! 
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980988"></a><a
! name="_Toc126872210"></a><a name="_Toc115417112"></a><a name="_Toc115417081"></a><a
! name="_Toc115416145">4. How to Debug Problems with OpenAFS for Windows:</a></h1>
  
  <p class=MsoNormal>OpenAFS for Windows provides a wide range of tools to assist
! you in debugging problems.  The techniques available to you are varied because
! of the wide range of issues that have been discovered over the years.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980989"></a><a
! name="_Toc126872211"></a><a name="_Toc115417082"></a><a name="_Toc115416146">4.1.
! pioctl debugging (</a><a
! href="#_Value___: IoctlDebug">IoctlDebug</a>
! registry key)</h2>
  
  <p class=MsoNormal>pioctl (path-based ioctl) calls are used by various tools to
! communicate with the AFS Client Service.  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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>setting/querying tokens  (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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>setting/querying ACLs </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>setting/querying the sysname list</p>
  
  <p class=MsoNormal>pioctl calls are implemented by writing to a special UNC
! path that is processed by the AFS Client Service.   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.   </p>
  
  <p class=MsoNormal>To assist in debugging these problems, the registry value:</p>
  
! <p class=PreformattedText>  [HKLM\SOFTWARE\OpenAFS\Client]</p>
! 
! <p class=PreformattedText>  REG_DWORD:  IoctlDebug   = 0x01</p>
  
! <p class=MsoNormal>should be set.  Then any of the commands that perform pioctl
! calls should be executed from the command prompt.  With this key set the pioctl
! library will generate debugging output to stderr.  The output will contain the
! Win32 API calls executed along with their most important parameters and their
! return code.   The MSDN Library and the Microsoft KnowledgeBase can be used as
! a reference to help you determine the configuration probem with your system.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980990"></a><a
! name="_Toc126872212"></a><a name="_Toc115417083"></a><a name="_Toc115416147">4.2.
! afsd_service initialization log (%WinDir%\TEMP\afsd_init.log)</a></h2>
  
  <p class=MsoNormal>Every time the AFS Client Service starts it appends data
! about its progress and configuration to a file.  This file provides information
! crucial to determining why the service cannot start when there are problems. 
! 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.  In many cases the panic
! condition is due to a misconfiguration of the machine.  In other cases it might
! be due to a programming error in the software.  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">MaxLogSize</a></i>
  registry value determines the maximum size of the %WINDIR%\TEMP\afsd_init.log
! file.  If the file is larger than this value when OpenAFS Client Service
! starts, the file will be reset to 0 bytes.  If value is set to 0, the file will
! be allowed to grow indefinitely.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980991"></a><a
! name="_Toc126872213"></a><a name="_Toc115417084"></a><a name="_Toc115416148">4.3.
! afsd_service debug logs (fs trace {-on, -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</a></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.  While running the AFS Client Service keeps an in memory log
! of many of its actions.   The default number of actions preserved at any one
! time is 5000.  This can be adjusted with the <a
! href="#_Value_:_TraceBufferSize">registry value</a>:</p>
  
! <p class=PreformattedText> 
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
  
! <p class=PreformattedText>  REG_DWORD  TraceBufferSize </p>
  
  <p class=MsoNormal>A restart of the service is necessary when adjusting this
! value.   Execute &quot;fs trace -on&quot; to clear to the log and &quot;fs
! trace -dump&quot; to output the contents of the log to the file.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980992"></a><a
! name="_Toc126872214"></a><a name="_Toc115417085"></a><a name="_Toc115416149">4.4.
! Using SysInternal’s DbgView and FileMon Tools</a></h2>
  
  <p class=MsoNormal>An alternatve option to the use of &quot;fs trace -dump&quot;
  to capture internal OpenAFS Client Service events is to use a tool such as
! Sysinternal's DbgView to capture real-time debugging output.  When the OpenAFS
! Client Service starts and Bit 2 of the <a
! href="#_Value__:_TraceOption">TraceOption</a>
  value in the registry is set, all trace log events are output using the Windows
! Debug Monitor interface (OutputDebugString).  </p>
  
! <p class=PreformattedText> 
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
  
! <p class=PreformattedText style='text-indent:12.0pt'>REG_DWORD   TraceOption =
! 0x04</p>
  
  <p class=MsoNormal>Use “fs trace –on” and “fs trace –off” to toggle the
  generation of log messages. </p>
  
  <p class=MsoNormal>Sysinternal’s FileMon utility can be use to monitor the file
! operations requested by applications and their success or failure.   Use the
! Volumes menu to restrict FileMon monitor to <i>Network</i> volumes only in
! order to reduce the output to just the CIFS requests.  Turn on the <i>Advanced
! Output</i> option in order to log with finer granularity.</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.   The captured data can be stored
! to files for inclusion in <a href="#_5._Reporting_Bugs:">bug
! reports</a>.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980993"></a><a
! name="_Toc126872215"></a><a name="_Toc115417086"></a><a name="_Toc115416150">4.5.
! Microsoft MiniDumps <br>
! (fs minidump -&gt; %WinDir%\TEMP\afsd.dmp)</a></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.   The &quot;fs minidump&quot;
! command can be used to force the generation of a MiniDump file containing the
! state of all of the threads in the AFS Client Service process.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980994"></a><a
! name="_Toc126872216"></a><a name="_Toc115417087"></a><a name="_Toc115416151">4.6.
! Single Sign-on (Integrated Logon) debugging</a></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.   Setting Bit 0 of the <a
! href="#_Value__:_TraceOption">TraceOption</a> registry
  value:</p>
  
! <p class=PreformattedText> 
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
  
! <p class=PreformattedText>  REG_DWORD   TraceOption = 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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980995"></a><a
! name="_Toc126872217"></a><a name="_Toc115417088"></a><a name="_Toc115416152">4.7.
! RX (AFS RPC) debugging (rxdebug)</a></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.  The port for
! the AFS Cache Manager is 7001.  </p>
  
  <p class=PreformattedText>Usage: rxdebug -servers &lt;server machine&gt; [-port
  &lt;IP port&gt;] [-nodally] </p>
  
! <p class=PreformattedText style='margin-left:35.45pt;text-indent:35.45pt'>  
! [-allconnections] [-rxstats] [-onlyserver] [-onlyclient] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'>   [-onlyport &lt;show
! only &lt;port&gt;&gt;] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'>   [-onlyhost &lt;show
! only &lt;host&gt;&gt;] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'>   [-onlyauth &lt;show
! only &lt;auth level&gt;&gt;] [-version] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'>   [-noconns] [-peers]
! [-help]</p>
  
! <p class=PreformattedText>Where: -nodally         don't show dallying conns</p>
  
! <p class=PreformattedText>       -allconnections  don't filter out
  uninteresting connections</p>
  
! <p class=PreformattedText>       -rxstats         show Rx statistics</p>
! 
! <p class=PreformattedText>       -onlyserver      only show server conns</p>
! 
! <p class=PreformattedText>       -onlyclient      only show client conns</p>
! 
! <p class=PreformattedText>       -version         show AFS version id</p>
! 
! <p class=PreformattedText>       -noconns         show no connections</p>
! 
! <p class=PreformattedText>       -peers           show peers</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980996"></a><a
! name="_Toc126872218"></a><a name="_Toc115417089"></a><a name="_Toc115416153">4.8.
! Cache Manager debugging (cmdebug)</a></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>
***************
*** 5179,5325 ****
  <p class=PreformattedText>Usage: cmdebug -servers &lt;server machine&gt; [-port
  &lt;IP port&gt;] [-long] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'><span
! style='mso-spacerun:yes'>   </span>[-refcounts] [-callbacks] [-addrs] [-cache]
! [-help]</p>
  
! <p class=PreformattedText>Where: -long<span style='mso-spacerun:yes'>      
! </span>print all info</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-refcounts<span style='mso-spacerun:yes'>  </span>print only cache entries
! with positive reference counts</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-callbacks<span style='mso-spacerun:yes'>  </span>print only cache
! entries with callbacks</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-addrs<span style='mso-spacerun:yes'>      </span>print only host
! interfaces</p>
! 
! <p class=PreformattedText><span style='mso-spacerun:yes'>      
! </span>-cache<span style='mso-spacerun:yes'>      </span>print only cache
! configuration</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872219"></a><a
! name="_Toc115417090"></a><a name="_Toc115416154"><span style='mso-bookmark:
! _Toc115417090'><span style='mso-bookmark:_Toc126872219'>4.9. Persistent Cache
! consistency check</span></span></a></h2>
  
  <p class=MsoNormal>The persistent cache is stored in a Hidden System file at
! %WinDir%\TEMP\AFSCache.<span style='mso-spacerun:yes'>  </span>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><span style='mso-spacerun:yes'> 
! </span>afsd_service.exe --validate-cache &lt;cache-path&gt;</p>
! 
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872220"></a><a
! name="_Toc115417113"></a><a name="_Toc115417091"></a><a name="_Toc115416155"><span
! style='mso-bookmark:_Toc115417091'><span style='mso-bookmark:_Toc115417113'><span
! style='mso-bookmark:_Toc126872220'>5. Reporting Bugs:</span></span></span></a></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>.<span
! style='mso-spacerun:yes'>  </span>Please include as much information as
! possible about the issue.<span style='mso-spacerun:yes'>  </span>If you are
  reporting a crash, please install the debugging symbols by re-running the
! installer.<span style='mso-spacerun:yes'>  </span>If a dump file is available
! for the problem, %WINDIR%\TEMP\afsd.dmp, include it along with the AFS Client
! Trace file<span style='mso-spacerun:yes'>  </span>%WINDIR%\TEMP\afsd.log.<span
! style='mso-spacerun:yes'>  </span>The AFS Client startup log is
! %WINDIR%\TEMP\afsd_init.log.<span style='mso-spacerun:yes'>  </span>Send the
! last continuous block of<span style='mso-spacerun:yes'>  </span>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;mso-list:
! l18 level1 lfo9;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Run
! drwtsn32.exe to configure or to identify where the log and the crash dump files
! are created: </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>click
! Start &gt; Run...<span style='mso-spacerun:yes'>  </span></p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>type
! drwtsn32 &lt;enter&gt;. </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Select
! either a Crash Dump Type: Mini or Full. </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Clear
! Dump Symbol Table</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Clear
! Append to Existing Log file. </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Check
! Dump All Thread Contexts.</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Check
! Create Crash Dump File</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt;mso-list:
! l19 level1 lfo10;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Next
! run the monitoring module of Dr. Watson: </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l20 level1 lfo11;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>click
! Start &gt; Run...</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l20 level1 lfo11;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>type
! drwatson &lt;enter&gt;. </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt;mso-list:
! l20 level1 lfo11;tab-stops:list 14.15pt'><![if !supportLists]><span
! style='font-size:9.0pt;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; </span></span></span><![endif]>Once
! 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>
--- 1676,1773 ----
  <p class=PreformattedText>Usage: cmdebug -servers &lt;server machine&gt; [-port
  &lt;IP port&gt;] [-long] </p>
  
! <p class=PreformattedText style='margin-left:70.9pt'>   [-refcounts]
! [-callbacks] [-addrs] [-cache] [-help]</p>
! 
! <p class=PreformattedText>Where: -long       print all info</p>
! 
! <p class=PreformattedText>       -refcounts  print only cache entries with
! positive reference counts</p>
! 
! <p class=PreformattedText>       -callbacks  print only cache entries with
! callbacks</p>
! 
! <p class=PreformattedText>       -addrs      print only host interfaces</p>
  
! <p class=PreformattedText>       -cache      print only cache configuration</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980997"></a><a
! name="_Toc126872219"></a><a name="_Toc115417090"></a><a name="_Toc115416154">4.9.
! Persistent Cache consistency check</a></h2>
  
  <p class=MsoNormal>The persistent cache is stored in a Hidden System file at
! %WinDir%\TEMP\AFSCache.  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>  afsd_service.exe --validate-cache
! &lt;cache-path&gt;</p>
! 
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980998"></a><a
! name="_Toc126872220"></a><a name="_Toc115417113"></a><a name="_Toc115417091"></a><a
! name="_Toc115416155"></a><a name="_5._Reporting_Bugs:"></a>5. Reporting Bugs:</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>. 
! Please include as much information as possible about the issue.  If you are
  reporting a crash, please install the debugging symbols by re-running the
! installer.  If a dump file is available for the problem,
! %WINDIR%\TEMP\afsd.dmp, include it along with the AFS Client Trace file 
! %WINDIR%\TEMP\afsd.log.  The AFS Client startup log is
! %WINDIR%\TEMP\afsd_init.log.  Send the last continuous block of  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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Run drwtsn32.exe to configure or to identify where the log and
! the crash dump files are created: </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>click Start &gt; Run...  </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>type drwtsn32 &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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Select either a Crash Dump Type: Mini or Full. </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Clear Dump Symbol Table</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Clear Append to Existing Log file. </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Check Dump All Thread Contexts.</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Check Create Crash Dump File</p>
! 
! <p class=MsoNormal style='margin-left:14.15pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Next run the monitoring module of Dr. Watson: </p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>click Start &gt; Run...</p>
! 
! <p class=MsoNormal style='margin-left:49.6pt;text-indent:-14.15pt'><span
! style='font-size:9.0pt;font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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 style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Once 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>
***************
*** 5327,5347 ****
  <p class=MsoNormal>When reporting a error, please be sure to include the
  version of OpenAFS.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872221"></a><a
! name="_Toc115417114"></a><a name="_Toc115417092"></a><a name="_Toc115416156"><span
! style='mso-bookmark:_Toc115417092'><span style='mso-bookmark:_Toc115417114'><span
! style='mso-bookmark:_Toc126872221'>6. How to Contribute to the Development of
! OpenAFS for Windows</span></span></span></a></h1>
! 
! <p class=MsoNormal>Contributions to the development of OpenAFS for Windows are
! continuously needed.<span style='mso-spacerun:yes'>  </span>Contributions may
! take many forms including cash donations, support contracts, donated developer
! time, and even donated tech writer time.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872222"></a><a
! name="_Toc115417093"></a><a name="_Toc115416157"><span style='mso-bookmark:
! _Toc115417093'><span style='mso-bookmark:_Toc126872222'>6.1. The USENIX OpenAFS
! Fund</span></span></a> </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
--- 1775,1792 ----
  <p class=MsoNormal>When reporting a error, please be sure to include the
  version of OpenAFS.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980999"></a><a
! name="_Toc126872221"></a><a name="_Toc115417114"></a><a name="_Toc115417092"></a><a
! name="_Toc115416156">6. How to Contribute to the Development of OpenAFS for
! Windows</a></h1>
! 
! <p class=MsoNormal>Contributions to the development of OpenAFS for Windows are continuously
! needed.  Contributions may take many forms including cash donations, support
! contracts, donated developer time, and even donated tech writer time.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981000"></a><a
! name="_Toc126872222"></a><a name="_Toc115417093"></a><a name="_Toc115416157">6.1.
! The USENIX OpenAFS Fund</a> </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
***************
*** 5349,5507 ****
  will be allocated by the OpenAFS Elders to fund OpenAFS development,
  documentation, project management, and maintaining openafs.org. </p>
  
! <div style='mso-element:frame;mso-element-frame-height:66.05pt;mso-element-wrap:
! no-wrap-beside;mso-element-anchor-vertical:page;mso-element-left:.05pt;
! mso-element-top:372.8pt'>
  
  <table cellspacing=0 cellpadding=0 hspace=0 vspace=0 width=540 height=88>
   <tr>
    <td valign=top align=left height=88 style='padding-top:0pt;padding-right:
    9.0pt;padding-bottom:0pt;padding-left:9.0pt'>
!   <p class=MsoEnvelopeAddress style='mso-element:frame;mso-element-frame-height:
!   66.05pt;mso-element-wrap:no-wrap-beside;mso-element-anchor-vertical:page;
!   mso-element-left:.05pt;mso-element-top:372.8pt'>USENIX OpenAFS Fund<br>
    USENIX Association <br>
! <st2:address w:st="on"><st2:Street w:st="on">2560 Ninth St., Suite 215</st2:Street>
!    <br>
! <st2:City w:st="on">Berkeley</st2:City>, <st2:State w:st="on">CA</st2:State> <st2:PostalCode
!    w:st="on">94710</st2:PostalCode></st2:address> </p>
    </td>
   </tr>
  </table>
  
  </div>
  
! <![if !supportTextWrap]><br clear=ALL>
! <![endif]>
  
  <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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872223"></a><a
! name="_Toc115417094"><span style='mso-bookmark:_Toc126872223'><span
! style='mso-fareast-language:JA'>6.2. Secure Endpoints Inc.</span></span></a><span
! style='mso-fareast-language:JA'> <o:p></o:p></span></h2>
! 
! <p class=MsoBodyText><span style='mso-fareast-language:JA'><a
! href="http://www.secure-endpoints.com/">Secure Endpoints Inc.</a> provides
! development and support services for OpenAFS for Windows and MIT Kerberos for
! Windows. <span style='mso-spacerun:yes'> </span>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.<o:p></o:p></span></p>
! 
! <p class=MsoBodyText><span style='mso-fareast-language:JA'>Secure Endpoints
! Inc. accepts software development agreements from organizations who wish to
! fund a well-defined set of bug fixes or new features. <o:p></o:p></span></p>
! 
! <p class=MsoBodyText><span style='mso-fareast-language:JA'>Secure Endpoints
! Inc. provides contract based support for the OpenAFS for Windows and the MIT
! Kerberos for Windows products. <o:p></o:p></span></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872224"></a><a
! name="_Toc115417095"><span style='mso-bookmark:_Toc126872224'><span
! style='mso-fareast-language:JA'>6.3. The MIT Kerberos Account</span></span></a><span
! style='mso-fareast-language:JA'> <o:p></o:p></span></h2>
! 
! <p class=MsoNormal style='margin:0pt;margin-bottom:.0001pt;mso-pagination:widow-orphan;
! mso-hyphenate:auto;mso-layout-grid-align:none;text-autospace:none'><span
! style='font-family:"Times New Roman";mso-fareast-font-family:"MS Mincho";
! color:black;mso-fareast-language:JA'>Th</span><span class=BodyTextChar><span
! style='mso-fareast-language:JA'>e <a href="http://web.mit.edu/kerberos/">MIT
! Kerberos</a> development team accepts unrestricted grants. <span
! style='mso-spacerun:yes'> </span>Grants are tax deductible and the full amount
  of the grant will be used to fund the development of Kerberos 5 and/or Kerberos
! for Windows. <span style='mso-spacerun:yes'> </span>OpenAFS for Windows is
! dependent on MIT Kerberos for Windows for authentication and shares many of the
! same re</span></span><span style='font-family:"Times New Roman";mso-fareast-font-family:
! "MS Mincho";color:black;mso-fareast-language:JA'>quirements for credential
! management. <span style='mso-spacerun:yes'> </span>Future releases of both
! products will share a common identity management user interface. <o:p></o:p></span></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872225"></a><a
! name="_Toc115417096"><span style='mso-bookmark:_Toc126872225'><span
! style='mso-fareast-language:JA'>6.4. Direct contributions of code and/or
! documentation</span></span></a><span style='mso-fareast-language:JA'> <o:p></o:p></span></h2>
! 
! <p class=MsoBodyText><span style='mso-fareast-language:JA'>Organizations that
! use OpenAFS in house and have development staffs are encouraged to contribute
! any code modifications they make to OpenAFS.org via <u><span style='color:blue'>openafs-bugs@openafs.org</span></u>.
! <span style='mso-spacerun:yes'> </span>Contributions of documentation are
! highly desired. <o:p></o:p></span></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872226"></a><a
! name="_Toc115417097"><span style='mso-bookmark:_Toc126872226'>6.5. OpenAFS for
! Windows Mailing Lists</span></a></h2>
  
  <p class=MsoNormal>If you wish to participate in OpenAFS for Windows
  development please join the <i><a
  href="mailto:openafs-win32-devel@openafs.org?subject=OpenAFS%20for%20Windows%20Development%20Contribution">openafs-win32-devel@openafs.org</a></i>
  mailing list.</p>
  
! <p class=MsoNormal style='margin-left:35.45pt'><span class=MsoHyperlink>https://lists.openafs.org/mailman/listinfo/openafs-win32-devel<o:p></o:p></span></p>
  
  <p class=MsoNormal>User questions should be sent to the <a
  href="mailto:openafs-info@openafs.org?subject=OpenAFS%20for%20Windows%20User%20Question">openafs-info@openafs.org</a>
! mailing list.<span style='mso-spacerun:yes'>  </span></p>
  
! <p class=MsoNormal style='margin-left:35.45pt'><span class=MsoHyperlink>https://lists.openafs.org/mailman/listinfo/openafs-info<o:p></o:p></span></p>
  
  <p class=MsoNormal>You must join the mailing lists if you wish to post to the
  list without incurring a moderation delay.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872227"></a><a
! name="_Toc115417115"></a><a name="_Toc115417098"></a><a name="_Toc115416158"></a><a
! name="_MSI_Deployment_Guide"></a><![if !supportLists]><span style='mso-bookmark:
! _Toc126872227'><span style='mso-bookmark:_Toc115417115'><span style='mso-bookmark:
! _Toc115417098'><span style='mso-bookmark:_Toc115416158'></span></span></span></span><![endif]><span
! style='mso-bookmark:_Toc126872227'><span style='mso-bookmark:_Toc115417115'><span
! style='mso-bookmark:_Toc115417098'><span style='mso-bookmark:_Toc115416158'>7. MSI
! Deployment Guide</span></span></span></span></h1>
  
  </div>
  
! <b><span style='font-size:16.0pt;font-family:Albany;mso-fareast-font-family:
! "MS Mincho";mso-bidi-font-family:Tahoma;mso-ansi-language:EN-US;mso-fareast-language:
! #00FF;mso-bidi-language:AR-SA'><br clear=all style='page-break-before:always;
! mso-break-type:section-break'>
  </span></b>
  
  <div class=Section2>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872228"></a><a
! name="_Toc115417099"></a><a name="_Toc115416159"><span style='mso-bookmark:
! _Toc115417099'><span style='mso-bookmark:_Toc126872228'>7.1. Introduction</span></span></a></h2>
  
  <p class=MsoNormal>A MSI installer option is available for those who wish to
  use Windows Installer for installing OpenAFS and for organizations that wish to
! deploy OpenAFS through Group Policy.<span style='mso-spacerun:yes'>  </span>The
! first version of OpenAFS for Windows available as an MSI was 1.3.65.</p>
  
  <p class=MsoNormal>This document provides a guide for authoring transforms used
! to customize the MSI package for a particular organization.<span
! style='mso-spacerun:yes'>  </span>Although many settings can be deployed via
! transforms, in an Active Directory environment it is advisable to deploy
! registry settings<span style='mso-spacerun:yes'>    </span>and configuration
! 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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872229"></a><a
! name="_Toc115416160"><span style='mso-bookmark:_Toc126872229'>7.1.1
! Requirements</span></a></h3>
  
  <p class=MsoNormal>The information in this document applies to MSI packages
  distributed with OpenAFS for Windows releases from 1.3.65 and onwards or MSI
! packages built from corresponding source releases. <span
! style='mso-spacerun:yes'> </span>Not all releases support all the configuration
! options documented here.</p>
  
  <p class=MsoNormal>Authoring a &quot;Windows Installer&quot; transform requires
  additional software for editing the MSI database tables and generating the
! transform from the modified MSI package.<span style='mso-spacerun:yes'> 
! </span>ORCA.EXE and MSITRAN.EXE which are included in the Windows Platform SDK (&quot;Windows
! Installer&quot; SDK) can be used for this purpose.</p>
  
  <p class=MsoNormal>For reference, the schema for the MSI package is based on
  SCHEMA.MSI distributed with the Platform SDK.</p>
--- 1794,1926 ----
  will be allocated by the OpenAFS Elders to fund OpenAFS development,
  documentation, project management, and maintaining openafs.org. </p>
  
! <div>
  
  <table cellspacing=0 cellpadding=0 hspace=0 vspace=0 width=540 height=88>
   <tr>
    <td valign=top align=left height=88 style='padding-top:0pt;padding-right:
    9.0pt;padding-bottom:0pt;padding-left:9.0pt'>
!   <p class=MsoEnvelopeAddress>USENIX OpenAFS Fund<br>
    USENIX Association <br>
!     2560 Ninth St., Suite 215 <br>
!     Berkeley, CA 94710 </p>
    </td>
   </tr>
  </table>
  
  </div>
  
! <br clear=ALL>
  
  <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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981001"></a><a
! name="_Toc126872223"></a><a name="_Toc115417094">6.2. Secure Endpoints Inc.</a>
! </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 MIT Kerberos for Windows.  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
! or new features. </p>
! 
! <p class=MsoBodyText>Secure Endpoints Inc. provides contract based support for
! the OpenAFS for Windows and the MIT Kerberos for Windows products. </p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981002"></a><a
! name="_Toc126872224"></a><a name="_Toc115417095">6.3. The MIT Kerberos Account</a>
! </h2>
! 
! <p class=MsoNormal style='margin:0pt;margin-bottom:.0001pt;text-autospace:none'><span
! style='font-family:"Times New Roman";color:black'>Th</span><span
! class=BodyTextChar>e <a href="http://web.mit.edu/kerberos/">MIT Kerberos</a> development
! team accepts unrestricted grants.  Grants are tax deductible and the full amount
  of the grant will be used to fund the development of Kerberos 5 and/or Kerberos
! for Windows.  OpenAFS for Windows is dependent on MIT Kerberos for Windows for
! authentication and shares many of the same re</span><span style='font-family:
! "Times New Roman";color:black'>quirements for credential management.  Future
! releases of both products will share a common identity management user
! interface. </span></p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981003"></a><a
! name="_Toc126872225"></a><a name="_Toc115417096">6.4. Direct contributions of
! code and/or documentation</a> </h2>
! 
! <p class=MsoBodyText>Organizations that use OpenAFS in house and have
! development staffs are encouraged to contribute any code modifications they
! make to OpenAFS.org via <u><span style='color:blue'>openafs-bugs@openafs.org</span></u>.
!  Contributions of documentation are highly desired. </p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981004"></a><a
! name="_Toc126872226"></a><a name="_Toc115417097">6.5. OpenAFS for Windows
! Mailing Lists</a></h2>
  
  <p class=MsoNormal>If you wish to participate in OpenAFS for Windows
  development please join the <i><a
  href="mailto:openafs-win32-devel@openafs.org?subject=OpenAFS%20for%20Windows%20Development%20Contribution">openafs-win32-devel@openafs.org</a></i>
  mailing list.</p>
  
! <p class=MsoNormal style='margin-left:35.45pt'><span class=MsoHyperlink>https://lists.openafs.org/mailman/listinfo/openafs-win32-devel</span></p>
  
  <p class=MsoNormal>User questions should be sent to the <a
  href="mailto:openafs-info@openafs.org?subject=OpenAFS%20for%20Windows%20User%20Question">openafs-info@openafs.org</a>
! mailing list.  </p>
  
! <p class=MsoNormal style='margin-left:35.45pt'><span class=MsoHyperlink>https://lists.openafs.org/mailman/listinfo/openafs-info</span></p>
  
  <p class=MsoNormal>You must join the mailing lists if you wish to post to the
  list without incurring a moderation delay.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981005"></a><a
! name="_Toc126872227"></a><a name="_Toc115417115"></a><a name="_Toc115417098"></a><a
! name="_Toc115416158"></a><a name="_MSI_Deployment_Guide"></a>7. MSI Deployment
! Guide</h1>
  
  </div>
  
! <b><span style='font-size:16.0pt;font-family:Albany'><br clear=all
! style='page-break-before:always'>
  </span></b>
  
  <div class=Section2>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981006"></a><a
! name="_Toc126872228"></a><a name="_Toc115417099"></a><a name="_Toc115416159">7.1.
! Introduction</a></h2>
  
  <p class=MsoNormal>A MSI installer option is available for those who wish to
  use Windows Installer for installing OpenAFS and for organizations that wish to
! deploy OpenAFS through Group Policy.  The first version of OpenAFS for Windows
! available as an MSI was 1.3.65.</p>
  
  <p class=MsoNormal>This document provides a guide for authoring transforms used
! to customize the MSI package for a particular organization.  Although many
! settings can be deployed via transforms, in an Active Directory environment it
! is advisable to deploy registry settings    and configuration 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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981007"></a><a
! name="_Toc126872229"></a><a name="_Toc115416160">7.1.1 Requirements</a></h3>
  
  <p class=MsoNormal>The information in this document applies to MSI packages
  distributed with OpenAFS for Windows releases from 1.3.65 and onwards or MSI
! packages built from corresponding source releases.  Not all releases support
! all the configuration options documented here.</p>
  
  <p class=MsoNormal>Authoring a &quot;Windows Installer&quot; transform requires
  additional software for editing the MSI database tables and generating the
! transform from the modified MSI package.  ORCA.EXE and MSITRAN.EXE which are
! included in the Windows Platform SDK (&quot;Windows Installer&quot; SDK) can be
! used for this purpose.</p>
  
  <p class=MsoNormal>For reference, the schema for the MSI package is based on
  SCHEMA.MSI distributed with the Platform SDK.</p>
***************
*** 5509,6290 ****
  <p class=MsoNormal>For general information about &quot;Windows Installer&quot;,
  refer to:</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><a
  href="http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp">http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp</a></p>
  
  <p class=MsoNormal>For general information about authoring MSI transforms,
  refer to:</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><a
  href="http://msdn.microsoft.com/library/en-us/msi/setup/transforms.asp">http://msdn.microsoft.com/library/en-us/msi/setup/transforms.asp</a></p>
  
  <p class=MsoNormal>The remainder of this document assumes some familiarity with
! authoring transforms.<span style='mso-spacerun:yes'>  </span>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.<span
! style='mso-spacerun:yes'>  </span>MSDN also includes a step-by-step example for
! creating a transform at:</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872230"></a><a
! name="_Toc115416161"><span style='mso-bookmark:_Toc126872230'>7.1.2 Authoring a
! Transform</span></a></h3>
  
  <p class=MsoNormal>Transforms describe a set of modifications to be performed
! on an existing MSI for the purpose of customizing it.<span
! style='mso-spacerun:yes'>  </span>This is ordinarily done by making a copy of
! the MSI to be customized, modifying the copy and then using the old and the new
! MSI to generate a transform.<span style='mso-spacerun:yes'>  </span>For
! example:</p>
! 
! <p class=PreformattedText style='margin-left:36.0pt;text-indent:-18.0pt;
! mso-list:l35 level1 lfo14;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
! </span></span><![endif]>copy openafs.msi openafs-modified.msi</p>
! 
! <p class=PreformattedText style='margin-left:36.0pt;text-indent:-18.0pt;
! mso-list:l35 level1 lfo14;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
! </span></span><![endif]>(edit the openafs-modified.msi to include the necessary
! changes)</p>
! 
! <p class=PreformattedText style='margin-left:36.0pt;text-indent:-18.0pt;
! mso-list:l35 level1 lfo14;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
! </span></span><![endif]>msitran -g openafs.msi openafs-modified.msi
! openafs-transform.mst</p>
! 
! <p class=PreformattedText style='margin-left:36.0pt;text-indent:-18.0pt;
! mso-list:l35 level1 lfo14;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-list:Ignore'>4.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
! </span></span><![endif]>(generates openafs-transform.mst, which is the
! transform)</p>
! 
! <p class=MsoNormal>Transforms have an extension of .mst.<span
! style='mso-spacerun:yes'>  </span>'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;
! mso-list:l34 level1 lfo16;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
! </span></span><![endif]>copy openafs.msi openafs-test.msi</p>
! 
! <p class=PreformattedText style='margin-left:36.0pt;text-indent:-18.0pt;
! mso-list:l34 level1 lfo16;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;
! </span></span><![endif]>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.<span style='mso-spacerun:yes'>  </span>'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.<span
! style='mso-spacerun:yes'>  </span>More details are given below.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872231"></a><a
! name="_Toc115417100"></a><a name="_Toc115416162"><span style='mso-bookmark:
! _Toc115417100'><span style='mso-bookmark:_Toc126872231'>7.2. Configuration
! Options</span></span></a></h2>
  
  <p class=MsoNormal>The logic necessary to implement many of the settings
! described in <a href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix
! A</a> are present in the MSI.<span style='mso-spacerun:yes'>  </span>Most of
! these can be controlled by setting the corresponding properties to the desired
! value.<span style='mso-spacerun:yes'>  </span>Some settings may require
  modifying existing registry entries (though not recommended) or adding new
! resources (like files or registry keys).<span style='mso-spacerun:yes'> 
! </span>Instructions for performing these tasks are below.</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872232"></a><a
! name="_Toc115416163"><span style='mso-bookmark:_Toc126872232'>7.2.1
! Configurable Properties</span></a></h3>
  
  <p class=MsoNormal>Most configurable properties correspond to registry keys or
! values.<span style='mso-spacerun:yes'>  </span>Due to the logic invoked based
! on the existence of these registry keys or values, they are only set if the
! associated property is defined to have a non null value.<span
! style='mso-spacerun:yes'>  </span>If the associated property is not defined in
! the MSI, the registry key or value will not be touched.<span
! style='mso-spacerun:yes'>  </span>By default, the MSI does not contain these
! properties and hence will not set the registry keys.<span
! style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>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="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
  <p class=MsoNormal>Strings are quoted using single quotes (e.g. 'a string'). An
! empty string is denoted as ''.<span style='mso-spacerun:yes'>  </span>Note that
! you can't author null values into the 'Property' table.</p>
  
  <p class=MsoNormal>Numeric values should be authored as decimal strings.</p>
  
! <h4><a name="_Toc126872233"></a><a name="_Toc115416164"><span style='mso-bookmark:
! _Toc126872233'>7.2.1.1 Setting Properties</span></a></h4>
  
  <p class=MsoNormal>In order to set a property,</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt;mso-list:l32 level1 lfo18;tab-stops:
! list 18.0pt'><![if !supportLists]><span style='font-size:9.0pt;mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>Open the MSI in ORCA.EXE</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt;mso-list:l32 level1 lfo18;tab-stops:
! list 18.0pt'><![if !supportLists]><span style='font-size:9.0pt;mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>2.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>Select the 'Property' table from the list of
! tables on the left.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt;mso-list:l32 level1 lfo18;tab-stops:
! list 18.0pt'><![if !supportLists]><span style='font-size:9.0pt;mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>3.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>Find the property in the list of properties on
! the right, double click the value and type the new value.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt;mso-list:l32 level1 lfo18;tab-stops:
! list 18.0pt'><![if !supportLists]><span style='font-size:9.0pt;mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>4.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>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="_Toc126872234"></a><a name="_Toc115416165"><span style='mso-bookmark:
! _Toc126872234'>7.2.1.2 OpenAFS for Windows Properties</span></a></h4>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872235"></a><a
!   name="_Toc115416166"></a><a name="_(Service_parameters):"></a><span
!   style='mso-bookmark:_Toc126872235'><span style='mso-bookmark:_Toc115416166'>(Service
!   parameters):</span></span></h5>
!   <p class=ListContents style='margin-left:0pt;mso-yfti-cnfc:1'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]<span
!   style='mso-bidi-language:#00FF'><o:p></o:p></span></p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:0'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872236"></a><a
!   name="_Toc115416167"></a><a name="_(Network_provider):"></a><span
!   style='mso-bookmark:_Toc126872236'><span style='mso-bookmark:_Toc115416167'>(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:1;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872237"></a><a
!   name="_Toc115416168"></a><a name="_(OpenAFS_Client):"></a><span
!   style='mso-bookmark:_Toc126872237'><span style='mso-bookmark:_Toc115416168'>(OpenAFS
!   Client):</span></span></h5>
!   <p class=ListContents style='margin-left:0pt'>[HKLM\SOFTWARE\OpenAFS\Client]<span
!   style='mso-bidi-language:#00FF'><o:p></o:p></span></p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc126872238"></a><a name="_Toc115416169"><span style='mso-bookmark:
! _Toc126872238'>7.2.1.2.1 Registry Properties</span></a></h5>
  
  <p class=MsoNormal>These properties are used to set the values of registry
  entries associated with OpenAFS for Windows.</p>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6;mso-yfti-cnfc:1'><a name="_Toc126872239"></a><a
!   name="_Toc115416170"><span style='mso-bookmark:_Toc126872239'>AFSCACHEPATH</span></a></h6>
!   <p class=MsoList style='mso-yfti-cnfc:1'>Registry key<span
!   style='mso-spacerun:yes'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList style='mso-yfti-cnfc:1'>Registry value : <a
!   href="oafw-1-4-release-notes.doc#_Value_:_CachePath">CachePath</a></p>
!   <p class=MsoList style='mso-yfti-cnfc:1'>Valid values<span
!   style='mso-spacerun:yes'>    </span>: string .</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:0'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872240"></a><a
!   name="_Toc115416171"><span style='mso-bookmark:_Toc126872240'>AFSCACHESIZE</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-spacerun:yes'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="oafw-1-4-release-notes.doc#_Value___: CacheSize">CacheSize</a></p>
!   <p class=MsoList>Valid values<span style='mso-spacerun:yes'>    </span>:
!   numeric</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 style='mso-outline-level:6'><a name="_Toc126872241"></a><a
!   name="_Toc115416172"><span style='mso-bookmark:_Toc126872241'>AFSCELLNAME</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_Cell">Cell</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>:
!   string</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 style='mso-outline-level:6'><a name="_Toc126872242"></a><a
!   name="_Toc115416173"><span style='mso-bookmark:_Toc126872242'>FREELANCEMODE</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_FreelanceClient">FreelanceClient</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '1'
!   or '0'</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:3'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872243"></a><a
!   name="_Toc115416174"><span style='mso-bookmark:_Toc126872243'>HIDEDOTFILES</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_HideDotFiles">HideDotFiles</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '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 style='mso-outline-level:6'><a name="_Toc126872244"></a><a
!   name="_Toc115416175"><span style='mso-bookmark:_Toc126872244'>LOGONOPTIONS</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Network_provider):">(Network provider)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value___: LogonOptions">LogonOptions</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '0', '1'
!   or '3'</p>
    <p class=MsoNormal>See <a
!   href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
!   <a href="oafw-1-4-release-notes.doc#_A.2.1_Domain_specific_configuration">section
    2.1 (Domain specific configuration keys for Network Provider)</a> for more
    details.</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 style='mso-outline-level:6'><a name="_Toc126872245"></a><a
!   name="_Toc115416176"><span style='mso-bookmark:_Toc126872245'>MOUNTROOT</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_Mountroot">Mountroot</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>:
!   string</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:6'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872246"></a><a
!   name="_Toc115416177"><span style='mso-bookmark:_Toc126872246'>NETBIOSNAME</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value___: NetbiosName">NetbiosName</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>:
!   string (at most 15 characters)</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 style='mso-outline-level:6'><a name="_Toc126872247"></a><a
!   name="_Toc115416178"><span style='mso-bookmark:_Toc126872247'>NOFINDLANABYNAME</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value___: NoFindLanaByName">NoFindLanaByName</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '1'
!   or '0'</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 style='mso-outline-level:6'><a name="_Toc126872248"></a><a
!   name="_Toc115416179"><span style='mso-bookmark:_Toc126872248'>RXMAXMTU</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_RxMaxMTU">RxMaxMTU</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>:
!   numeric</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 style='mso-outline-level:6'><a name="_Toc126872249"></a><a
!   name="_Toc115416180"><span style='mso-bookmark:_Toc126872249'>SECURITYLEVEL</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_SecurityLevel">SecurityLevel</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '1'
!   or '0'</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 style='mso-outline-level:6'><a name="_Toc126872250"></a><a
!   name="_Toc115416181"><span style='mso-bookmark:_Toc126872250'>SMBAUTHTYPE</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value___: smbAuthType">SMBAuthType</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>:
!   '0','1' or '2'</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 style='mso-outline-level:6'><a name="_Toc126872251"></a><a
!   name="_Toc115416182"><span style='mso-bookmark:_Toc126872251'>STOREANSIFILENAMES</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(OpenAFS_Client):">(OpenAFS Client)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value___: StoreAnsiFilenames">StoreAnsiFilenames</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '0'
!   or '1'</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872252"></a><a
!   name="_Toc115416183"><span style='mso-bookmark:_Toc126872252'>USEDNS</span></a></h6>
!   <p class=MsoList>Registry key<span style='mso-tab-count:1'>    </span>: <a
!   href="oafw-1-4-release-notes.doc#_(Service_parameters):">(Service parameters)</a></p>
!   <p class=MsoList>Registry value<span style='mso-tab-count:1'> </span>: <a
!   href="oafw-1-4-release-notes.doc#_Value_:_UseDNS">UseDNS</a></p>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '1'
!   or '0'</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc126872253"></a><a name="_Toc115416184"></a><a
! name="_7.2.1.2.2_AFSCreds.exe_Properties"></a><span style='mso-bookmark:_Toc126872253'><span
! style='mso-bookmark:_Toc115416184'>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).<span
! style='mso-spacerun:yes'>  </span>The method of specifying the option was
! chosen for easy integration with the Windows Installer user interface.<span
! style='mso-spacerun:yes'>  </span>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=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6;mso-yfti-cnfc:1'><a name="_Toc126872254"></a><a
!   name="_Toc115416185"><span style='mso-bookmark:_Toc126872254'>CREDSSTARTUP</span></a></h6>
!   <p class=MsoList style='mso-yfti-cnfc:1'>Valid values<span
!   style='mso-spacerun:yes'>    </span>: '1' or '0'</p>
!   <p class=MsoList style='mso-yfti-cnfc:1'>Controls whether AFSCreds.exe starts
!   up automatically when the user logs on.<span style='mso-spacerun:yes'> 
!   </span>When CREDSSTARTUP is '1' a shortcut is added to the 'Startup' folder
!   in the 'Program menu' which starts AFSCREDS.EXE with the options that are
!   determined by the other CREDS* properties.</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:0'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872255"></a><a
!   name="_Toc115416186"><span style='mso-bookmark:_Toc126872255'>CREDSAUTOINIT</span></a></h6>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '-a'
!   or ''</p>
    <p class=MsoList>Enables automatic initialization.</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 style='mso-outline-level:6'><a name="_Toc126872256"></a><a
!   name="_Toc115416187"><span style='mso-bookmark:_Toc126872256'>CREDSIPCHDET</span></a></h6>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '-n'
!   or ''</p>
    <p class=MsoList>Enables IP address change detection.</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 style='mso-outline-level:6'><a name="_Toc126872257"></a><a
!   name="_Toc115416188"><span style='mso-bookmark:_Toc126872257'>CREDSQUIET</span></a></h6>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '-q'
!   or ''</p>
    <p class=MsoList>Enables quiet mode.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:3'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872258"></a><a
!   name="_Toc115416189"><span style='mso-bookmark:_Toc126872258'>CREDSRENEWDRMAP</span></a></h6>
!   <p class=MsoList>Valid values<span style='mso-tab-count:1'>    </span>: '-m'
!   or '’</p>
    <p class=MsoList>Enables renewing drive map at startup.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:4;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6 style='mso-outline-level:6'><a name="_Toc126872259"></a><a
!   name="_Toc115416190"><span style='mso-bookmark:_Toc126872259'>CREDSSHOW</span></a></h6>
!   <p class=MsoList>Valid values<span style='mso-spacerun:yes'>    </span>: '-s'
!   or ''</p>
    <p class=MsoList>Enables displaying the credential manager window when
    AFSCREDS starts up.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872260"></a><a
! name="_Toc115416191"><span style='mso-bookmark:_Toc126872260'>7.2.2 Existing
! Registry Entries</span></a></h3>
  
  <p class=MsoNormal>You can change existing registry values subject to the
! restrictions mentioned in the Windows Platform SDK.<span
! style='mso-spacerun:yes'>  </span>Pay special attention to component key paths
! and try to only change the 'Value' column in the 'Registry' table.<span
! style='mso-spacerun:yes'>  </span>If you want to add additional registry keys
! please refer to section 3 (Additional resources).</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872261"></a><a
! name="_Toc115416192"><span style='mso-bookmark:_Toc126872261'>7.2.3 Replacing
! Configuration Files</span></a></h3>
  
  <p class=MsoNormal>The OpenAFS configuration files (CellServDB) can be replaced
! by your own configuration files.<span style='mso-spacerun:yes'>  </span>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
! replace, and then add new components for the replacement files.<span
! style='mso-spacerun:yes'>  </span>This is outlined below (assuming you are
! using ORCA.EXE to author the transform).</p>
  
  <p class=MsoNormal>Note that transforms are not a good way to add a new file as
! an embedded stream.<span style='mso-spacerun:yes'>  </span>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;mso-list:l23 level1 lfo32;tab-stops:
! list 18.0pt'><![if !supportLists]><span style='mso-fareast-font-family:Thorndale;
! mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>Disable
! the component that contains the configuration file that you want to replace.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;tab-stops:
! list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:Thorndale;
! mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Locate
! and select the 'Component' table in the 'Tables' list.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;tab-stops:
! list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:Thorndale;
! mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>In
! the Component table, locate the component you need to change ( Ctrl-F invokes
! the 'Find' dialog).<span style='mso-spacerun:yes'>  </span>The component names
! are listed below in section <a
! href="oafw-1-4-release-notes.doc#_2.3.1_Components_for_Configuration ">7.2.3.1</a>.<span
! style='mso-spacerun:yes'>  </span>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;mso-list:l23 level2 lfo32;tab-stops:
! list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:Thorndale;
! mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1.3.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Go
! to the 'Condition' column of the component.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;tab-stops:
! list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:Thorndale;
! mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1.4.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>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;mso-list:l23 level1 lfo32;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>Add
  a new component containing the new configuration file.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>2.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Select
! the 'Component' table in the 'Tables' list.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>2.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Select
  'Tables'-&gt;'Add Row' (Ctrl-R).</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>2.3.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Enter
! the following :</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:39.35pt;border-collapse:collapse;border:none;mso-border-alt:
!  solid windowtext .5pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
!  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;height:23.35pt'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt;height:23.35pt'>
    <p class=PreformattedText>Component</p>
    </td>
    <td width=475 valign=top style='width:356.55pt;border:solid windowtext 1.0pt;
!   border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
!   solid windowtext .5pt;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;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>{7019836F-BB2C-4AF6-9463-0D6EC9035CF1}</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:2'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Directory_</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>dirClient</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:3'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Attributes</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>144</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:4'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Condition</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=PreformattedText><o:p>&nbsp;</o:p></p>
    </td>
   </tr>
!  <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;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;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.<span style='mso-spacerun:yes'>  </span>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).<span style='mso-spacerun:yes'> 
! </span>This ensures that local modifications are not overwritten or lost during
! an installation or uninstallation.<span style='mso-spacerun:yes'>  </span>These
! are the same settings used on the default configuration files.</p>
! 
! <p class=MsoNormal><span style='mso-tab-count:1'>            </span>'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;mso-list:l23 level1 lfo32;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>3.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>Add
  a new feature to hold the new component.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>3.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Select
! the 'Feature' table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>3.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Add
! a new row (Ctrl-R or 'Tables'-&gt;'Add Row') with the following values:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none;mso-border-alt:
!  solid windowtext .5pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
!  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Feature</p>
    </td>
    <td width=462 valign=top style='width:346.2pt;border:solid windowtext 1.0pt;
!   border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
!   solid windowtext .5pt;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;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>feaClient</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:2'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Title</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=PreformattedText><o:p>&nbsp;</o:p></p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:3'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Description</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=PreformattedText><o:p>&nbsp;</o:p></p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:4'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Display</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>0</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:5'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Level</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>30</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:6'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Directory_</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=PreformattedText><o:p>&nbsp;</o:p></p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes'>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Attributes</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>8</p>
    </td>
   </tr>
--- 1928,2595 ----
  <p class=MsoNormal>For general information about &quot;Windows Installer&quot;,
  refer to:</p>
  
! <p class=MsoNormal>    <a
  href="http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp">http://msdn.microsoft.com/library/en-us/msi/setup/windows_installer_start_page.asp</a></p>
  
  <p class=MsoNormal>For general information about authoring MSI transforms,
  refer to:</p>
  
! <p class=MsoNormal>    <a
  href="http://msdn.microsoft.com/library/en-us/msi/setup/transforms.asp">http://msdn.microsoft.com/library/en-us/msi/setup/transforms.asp</a></p>
  
  <p class=MsoNormal>The remainder of this document assumes some familiarity with
! authoring transforms.  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.  MSDN also includes a step-by-step example for creating a
! transform at:</p>
  
! <p class=MsoNormal>    <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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981008"></a><a
! name="_Toc126872230"></a><a name="_Toc115416161">7.1.2 Authoring a Transform</a></h3>
  
  <p class=MsoNormal>Transforms describe a set of modifications to be performed
! on an existing MSI for the purpose of customizing it.  This is ordinarily done
! by making a copy of the MSI to be customized, modifying the copy and then using
! the old and the new MSI to generate a transform.  For example:</p>
! 
! <p class=PreformattedText style='margin-left:36.0pt;text-indent:-18.0pt'>1.<span
! style='font:7.0pt "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:7.0pt "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:7.0pt "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:7.0pt "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.  '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:7.0pt "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:7.0pt "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.  '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.  More details are
! given below.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981009"></a><a
! name="_Toc126872231"></a><a name="_Toc115417100"></a><a name="_Toc115416162">7.2.
! Configuration Options</a></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.  Most of these can be controlled by setting the
! corresponding properties to the desired value.  Some settings may require
  modifying existing registry entries (though not recommended) or adding new
! resources (like files or registry keys).  Instructions for performing these
! tasks are below.</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981010"></a><a
! name="_Toc126872232"></a><a name="_Toc115416163">7.2.1 Configurable Properties</a></h3>
  
  <p class=MsoNormal>Most configurable properties correspond to registry keys or
! values.  Due to the logic invoked based on the existence of these registry keys
! or values, they are only set if the associated property is defined to have a
! non null value.  If the associated property is not defined in the MSI, the
! registry key or value will not be touched.  By default, the MSI does not
! contain these properties and hence will not set the registry keys.  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.  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 A</a>.</p>
  
  <p class=MsoNormal>Strings are quoted using single quotes (e.g. 'a string'). An
! empty string is denoted as ''.  Note that you can't author null values into the
! 'Property' table.</p>
  
  <p class=MsoNormal>Numeric values should be authored as decimal strings.</p>
  
! <h4><a name="_Toc139981011"></a><a name="_Toc126872233"></a><a
! name="_Toc115416164">7.2.1.1 Setting Properties</a></h4>
  
  <p class=MsoNormal>In order to set a property,</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt'><span style='font-size:9.0pt'>1.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Open the MSI in ORCA.EXE</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt'><span style='font-size:9.0pt'>2.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Select the 'Property' table from the list of tables on the left.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt'><span style='font-size:9.0pt'>3.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span>Find the property in the list of properties on the right, double
! click the value and type the new value.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
! margin-left:18.0pt;text-indent:-18.0pt'><span style='font-size:9.0pt'>4.<span
  style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></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="_Toc139981012"></a><a name="_Toc126872234"></a><a
! name="_Toc115416165">7.2.1.2 OpenAFS for Windows Properties</a></h4>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc139981013"></a><a name="_Toc126872235"></a><a
!   name="_Toc115416166"></a><a name="_(Service_parameters):"></a>(Service
!   parameters):</h5>
!   <p class=ListContents style='margin-left:0pt'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc139981014"></a><a name="_Toc126872236"></a><a
!   name="_Toc115416167"></a><a name="_(Network_provider):"></a>(Network
!   provider):</h5>
    <p class=ListContents style='margin-left:0pt'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc139981015"></a><a name="_Toc126872237"></a><a
!   name="_Toc115416168"></a><a name="_(OpenAFS_Client):"></a>(OpenAFS Client):</h5>
!   <p class=ListContents style='margin-left:0pt'>[HKLM\SOFTWARE\OpenAFS\Client]</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc139981016"></a><a name="_Toc126872238"></a><a
! name="_Toc115416169">7.2.1.2.1 Registry Properties</a></h5>
  
  <p class=MsoNormal>These properties are used to set the values of registry
  entries associated with OpenAFS for Windows.</p>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981017"></a><a name="_Toc126872239"></a><a
!   name="_Toc115416170">AFSCACHEPATH</a></h6>
!   <p class=MsoList>Registry key    : <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    : string .</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981018"></a><a name="_Toc126872240"></a><a
!   name="_Toc115416171">AFSCACHESIZE</a></h6>
!   <p class=MsoList>Registry key    : <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    : numeric</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981019"></a><a name="_Toc126872241"></a><a
!   name="_Toc115416172">AFSCELLNAME</a></h6>
!   <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
!   parameters)</a></p>
!   <p class=MsoList>Registry value : <a
!   href="#_Value_:_Cell">Cell</a></p>
!   <p class=MsoList>Valid values    : string</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981020"></a><a name="_Toc126872242"></a><a
!   name="_Toc115416173">FREELANCEMODE</a></h6>
!   <p class=MsoList>Registry key    : <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    : '1' or '0'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981021"></a><a name="_Toc126872243"></a><a
!   name="_Toc115416174">HIDEDOTFILES</a></h6>
!   <p class=MsoList>Registry key    : <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    : '1' or '0'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981022"></a><a name="_Toc126872244"></a><a
!   name="_Toc115416175">LOGONOPTIONS</a></h6>
!   <p class=MsoList>Registry key    : <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    : '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 configuration keys for Network Provider)</a> for more
    details.</p>
    </td>
   </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981023"></a><a name="_Toc126872245"></a><a
!   name="_Toc115416176">MOUNTROOT</a></h6>
!   <p class=MsoList>Registry key    : <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    : string</p>
!   </td>
!  </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981024"></a><a name="_Toc126872246"></a><a
!   name="_Toc115416177">NETBIOSNAME</a></h6>
!   <p class=MsoList>Registry key    : <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    : string (at most 15 characters)</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981025"></a><a name="_Toc126872247"></a><a
!   name="_Toc115416178">NOFINDLANABYNAME</a></h6>
!   <p class=MsoList>Registry key    : <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    : '1' or '0'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981026"></a><a name="_Toc126872248"></a><a
!   name="_Toc115416179">RXMAXMTU</a></h6>
!   <p class=MsoList>Registry key    : <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    : numeric</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981027"></a><a name="_Toc126872249"></a><a
!   name="_Toc115416180">SECURITYLEVEL</a></h6>
!   <p class=MsoList>Registry key    : <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    : '1' or '0'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981028"></a><a name="_Toc126872250"></a><a
!   name="_Toc115416181">SMBAUTHTYPE</a></h6>
!   <p class=MsoList>Registry key    : <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    : '0','1' or '2'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981029"></a><a name="_Toc126872251"></a><a
!   name="_Toc115416182">STOREANSIFILENAMES</a></h6>
!   <p class=MsoList>Registry key    : <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    : '0' or '1'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981030"></a><a name="_Toc126872252"></a><a
!   name="_Toc115416183">USEDNS</a></h6>
!   <p class=MsoList>Registry key    : <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    : '1' or '0'</p>
    </td>
   </tr>
  </table>
  
! <h5><a name="_Toc139981031"></a><a name="_Toc126872253"></a><a
! name="_Toc115416184"></a><a name="_7.2.1.2.2_AFSCreds.exe_Properties"></a>7.2.1.2.2
! AFSCreds.exe Properties</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).  The method of specifying
! the option was chosen for easy integration with the Windows Installer user
! interface.  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=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981032"></a><a name="_Toc126872254"></a><a
!   name="_Toc115416185">CREDSSTARTUP</a></h6>
!   <p class=MsoList>Valid values    : '1' or '0'</p>
!   <p class=MsoList>Controls whether AFSCreds.exe starts up automatically when the
!   user logs on.  When CREDSSTARTUP is '1' a shortcut is added to the 'Startup'
!   folder in the 'Program menu' which starts AFSCREDS.EXE with the options that
!   are determined by the other CREDS* properties.</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981033"></a><a name="_Toc126872255"></a><a
!   name="_Toc115416186">CREDSAUTOINIT</a></h6>
!   <p class=MsoList>Valid values    : '-a' or ''</p>
    <p class=MsoList>Enables automatic initialization.</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981034"></a><a name="_Toc126872256"></a><a
!   name="_Toc115416187">CREDSIPCHDET</a></h6>
!   <p class=MsoList>Valid values    : '-n' or ''</p>
    <p class=MsoList>Enables IP address change detection.</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981035"></a><a name="_Toc126872257"></a><a
!   name="_Toc115416188">CREDSQUIET</a></h6>
!   <p class=MsoList>Valid values    : '-q' or ''</p>
    <p class=MsoList>Enables quiet mode.</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981036"></a><a name="_Toc126872258"></a><a
!   name="_Toc115416189">CREDSRENEWDRMAP</a></h6>
!   <p class=MsoList>Valid values    : '-m' or '’</p>
    <p class=MsoList>Enables renewing drive map at startup.</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h6><a name="_Toc139981037"></a><a name="_Toc126872259"></a><a
!   name="_Toc115416190">CREDSSHOW</a></h6>
!   <p class=MsoList>Valid values    : '-s' or ''</p>
    <p class=MsoList>Enables displaying the credential manager window when
    AFSCREDS starts up.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981038"></a><a
! name="_Toc126872260"></a><a name="_Toc115416191">7.2.2 Existing Registry
! Entries</a></h3>
  
  <p class=MsoNormal>You can change existing registry values subject to the
! restrictions mentioned in the Windows Platform SDK.  Pay special attention to
! component key paths and try to only change the 'Value' column in the 'Registry'
! table.  If you want to add additional registry keys please refer to section 3
! (Additional resources).</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981039"></a><a
! name="_Toc126872261"></a><a name="_Toc115416192">7.2.3 Replacing Configuration
! Files</a></h3>
  
  <p class=MsoNormal>The OpenAFS configuration files (CellServDB) can be replaced
! by your own configuration files.  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
! replace, and then add new components for the replacement files.  This is
! outlined below (assuming you are using ORCA.EXE to author the transform).</p>
  
  <p class=MsoNormal>Note that transforms are not a good way to add a new file as
! an embedded stream.  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:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span>Disable the component that contains the configuration file that you want
! to replace.</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.1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
! </span>Locate and select the 'Component' table in the 'Tables' list.</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.2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
! </span>In the Component table, locate the component you need to change ( Ctrl-F
! invokes the 'Find' dialog).  The component names are listed below in section <a
! href="#_2.3.1_Components_for_Configuration ">7.2.3.1</a>. 
! 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:7.0pt "Times New Roman"'>&nbsp;&nbsp;
! </span>Go to the 'Condition' column of the component.</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.4.<span style='font:7.0pt "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:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Add
  a new component containing the new configuration file.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>2.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Select the 'Component'
! table in the 'Tables' list.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>2.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Select
  'Tables'-&gt;'Add Row' (Ctrl-R).</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>2.3.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Enter the following :</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:39.35pt;border-collapse:collapse;border:none'>
!  <tr style='height:23.35pt'>
    <td width=115 valign=top style='width:86.25pt;border:solid windowtext 1.0pt;
!   padding:0pt 5.4pt 0pt 5.4pt;height:23.35pt'>
    <p class=PreformattedText>Component</p>
    </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>
    <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;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>{7019836F-BB2C-4AF6-9463-0D6EC9035CF1}</p>
    </td>
   </tr>
!  <tr>
    <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>Directory_</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>dirClient</p>
    </td>
   </tr>
!  <tr>
    <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>Attributes</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>144</p>
    </td>
   </tr>
!  <tr>
    <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>Condition</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>&nbsp;</p>
    </td>
   </tr>
!  <tr>
    <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.  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).  This ensures that local
! modifications are not overwritten or lost during an installation or
! uninstallation.  These are the same settings used on the default configuration
! files.</p>
! 
! <p class=MsoNormal>            '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:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Add
  a new feature to hold the new component.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>3.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Select the 'Feature'
! table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>3.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Add a new row (Ctrl-R
! or 'Tables'-&gt;'Add Row') with the following values:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none'>
!  <tr>
    <td width=126 valign=top style='width:94.8pt;border:solid windowtext 1.0pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Feature</p>
    </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>
    <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>
    <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>Title</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>&nbsp;</p>
    </td>
   </tr>
!  <tr>
    <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>Description</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>&nbsp;</p>
    </td>
   </tr>
!  <tr>
    <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>Display</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>0</p>
    </td>
   </tr>
!  <tr>
    <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>Level</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>30</p>
    </td>
   </tr>
!  <tr>
    <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>Directory_</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>&nbsp;</p>
    </td>
   </tr>
!  <tr>
    <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>Attributes</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>8</p>
    </td>
   </tr>
***************
*** 6295,6945 ****
  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.<span
! style='mso-spacerun:yes'>  </span>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.<span
! style='mso-spacerun:yes'>  </span>The OpenAFS MSI is not designed for an
! advertised installation.</p>
! 
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l23 level1 lfo32;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>4.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>Join
  the component and the feature.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>4.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Select
! the 'FeatureComponents' table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>4.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Add
! a new row with the following values:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none;mso-border-alt:
!  solid windowtext .5pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
!  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Feature</p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
!   border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
!   solid windowtext .5pt;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'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Component</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>cmf_my_CellServDB</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l23 level1 lfo32;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>5.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>Add
  an entry to the 'File' table.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>5.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Select
! the 'File' table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>5.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Add
! a new row with the following values:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none;mso-border-alt:
!  solid windowtext .5pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
!  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>File</p>
    </td>
    <td width=462 valign=top style='width:346.5pt;border:solid windowtext 1.0pt;
!   border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
!   solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>fil_my_CellServDB</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:1'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Component_</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;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;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;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;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>(enter file size here)</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:4'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Attributes</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>8192</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:5;mso-yfti-lastrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Sequence</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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>1000</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal><span style='mso-tab-count:1'>            </span><span
! style='mso-spacerun:yes'>    </span>(leave other fields blank)</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>The 'Attributes' value is
! msidbFileAttributesNonCompressed (8192).<span style='mso-spacerun:yes'> 
! </span>This is because we will be placing this file in the same directory as
! the MSI instead of embedding the file in it.<span style='mso-spacerun:yes'> 
! </span>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 location
  than the other files in the MSI.</p>
  
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt;mso-list:l23 level1 lfo32;
! tab-stops:list 18.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>6.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>Set
  a media source for the file.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>6.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Select
! the 'Media' table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt;mso-list:l23 level2 lfo32;
! tab-stops:list 39.6pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>6.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span></span></span><![endif]>Add
! a row with the following values :</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none;mso-border-alt:
!  solid windowtext .5pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
!  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   mso-border-alt:solid windowtext .5pt;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;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
!   solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>2</p>
    </td>
   </tr>
!  <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;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
!   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;
!   mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
!   mso-border-alt:solid windowtext .5pt;padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>1000</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal><span style='mso-tab-count:1'>            </span><span
! style='mso-spacerun:yes'>    </span>(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="_Toc126872262"></a><a name="_Toc115416193"></a><a
! name="_2.3.1_Components_for_Configuration "></a><span style='mso-bookmark:_Toc126872262'><span
! style='mso-bookmark:_Toc115416193'>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872263"></a><a
! name="_Toc115416194"><span style='mso-bookmark:_Toc126872263'>7.2.4 Adding
! Domain Specific Registry Keys</span></a></h3>
  
  <p class=MsoNormal>Following is an example for adding domain specific registry
  keys.</p>
  
! <p class=MsoNormal style='tab-stops:204.0pt'><span style='mso-spacerun:yes'>   
! </span>Refer to <a
! href="oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a> section
! 2.1 for more information.</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>Columns that are
! unspecified should be left empty.</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>We create a new
! feature and component to hold the new registry keys.</p>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal style='mso-yfti-cnfc:1'><span style='mso-spacerun:yes'>   
!   </span>'Feature' table:</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:0'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><span
!   style='mso-tab-count:1'>        </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Feature<span
!   style='mso-tab-count:1'>            </span>: 'feaDomainKeys'<br>
!   <span style='mso-tab-count:1'>            </span>Feature Parent<span
!   style='mso-tab-count:1'> </span>: 'feaClient'<br>
!   <span style='mso-tab-count:1'>            </span>Display<span
!   style='mso-tab-count:1'>           </span>: 0<br>
!   <span style='mso-tab-count:1'>            </span>Level<span style='mso-tab-count:
!   2'>               </span>: 30<br>
!   <span style='mso-tab-count:1'>            </span>Attributes<span
!   style='mso-tab-count:1'>        </span>: 10</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'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>'Component'
!   table:</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'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><span
!   style='mso-tab-count:1'>        </span>(new row)<br>
!   <span style='mso-spacerun:yes'>    </span><span style='mso-tab-count:1'>        </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'<br>
!   <span style='mso-tab-count:1'>            </span>ComponentId<span
!   style='mso-tab-count:1'>  </span>: '{4E3FCBF4-8BE7-40B2-A108-C47CF743C627}'<br>
!   <span style='mso-tab-count:1'>            </span>Directory<span
!   style='mso-tab-count:1'>         </span>: 'TARGETDIR'<br>
!   <span style='mso-tab-count:1'>            </span>Attributes<span
!   style='mso-tab-count:1'>        </span>: 4<br>
!   <span style='mso-tab-count:1'>            </span>KeyPath<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey0'</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:3'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>   
!   </span>'FeatureComponents' table:</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><span style='mso-spacerun:yes'>    </span><span
!   style='mso-tab-count:1'>        </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Feature<span
!   style='mso-tab-count:1'>            </span>: 'feaDomainKeys'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'</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'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>'Registry'
!   table:</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:6'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey0'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>:
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey1'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>:
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '*'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey2'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>:
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '*'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey3'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>:
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: 'LogonOptions'<br>
!   <span style='mso-tab-count:1'>            </span>Value<span style='mso-tab-count:
!   2'>              </span>: 1<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey4'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '*'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: '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><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey5'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>:
!   'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: 'LogonOptions'<br>
!   <span style='mso-tab-count:1'>            </span>Value<span style='mso-tab-count:
!   2'>              </span>: 0<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:12;mso-yfti-lastrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_domkey6'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>:
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: 'FailLoginsSilently'<br>
!   <span style='mso-tab-count:1'>            </span>Value<span style='mso-tab-count:
!   2'>              </span>: 1<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_DomainKeys'<br style='mso-special-character:
!   line-break'>
!   <![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
!   <![endif]></p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  <p class=MsoNormal>The example adds domain specific keys for 'ATHENA.MIT.EDU'
  (enable integrated logon) and 'LOCALHOST' (disable integrated logon and fail
  logins silently).</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872264"></a><a
! name="_Toc115416195"><span style='mso-bookmark:_Toc126872264'>7.2.5 Adding Site
! Specific Freelance Registry Keys</span></a></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><span style='mso-spacerun:yes'>    </span>Columns that are
! unspecified should be left empty.</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>We create a new
! feature and component to hold the new registry keys.</p>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal style='mso-yfti-cnfc:1'><span style='mso-spacerun:yes'>   
!   </span>'Feature' table:</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:0'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><span
!   style='mso-tab-count:1'>        </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Feature<span
!   style='mso-tab-count:1'>            </span>: 'feaFreelanceKeys'<br>
!   <span style='mso-tab-count:1'>            </span>Feature Parent<span
!   style='mso-tab-count:1'> </span>: 'feaClient'<br>
!   <span style='mso-tab-count:1'>            </span>Display<span
!   style='mso-tab-count:1'>           </span>: 0<br>
!   <span style='mso-tab-count:1'>            </span>Level<span style='mso-tab-count:
!   2'>               </span>: 30<br>
!   <span style='mso-tab-count:1'>            </span>Attributes<span
!   style='mso-tab-count:1'>        </span>: 10</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'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>'Component'
!   table:</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'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span><span
!   style='mso-tab-count:1'>        </span>(new row)<br>
!   <span style='mso-spacerun:yes'>    </span><span style='mso-tab-count:1'>        </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'<br>
!   <span style='mso-tab-count:1'>            </span>ComponentId<span
!   style='mso-tab-count:1'>  </span>: '{4E3B3CBF4-9AE7-40C3-7B09-C48CF842C583}'<br>
!   <span style='mso-tab-count:1'>            </span>Directory<span
!   style='mso-tab-count:1'>         </span>: 'TARGETDIR'<br>
!   <span style='mso-tab-count:1'>            </span>Attributes<span
!   style='mso-tab-count:1'>        </span>: 4<br>
!   <span style='mso-tab-count:1'>            </span>KeyPath<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey0'</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:3'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>   
!   </span>'FeatureComponents' table:</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><span style='mso-spacerun:yes'>    </span><span
!   style='mso-tab-count:1'>        </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Feature<span
!   style='mso-tab-count:1'>            </span>: 'feaFreelanceKeys'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'</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'>
!   <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>'Registry'
!   table:</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:6'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey0'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: 'SOFTWARE\OpenAFS\Client\Freelance'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey1'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: 'SOFTWARE\OpenAFS\Client\Freelance'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '0'<br>
!   <span style='mso-spacerun:yes'>  </span><span style='mso-tab-count:1'>          </span>Value<span
!   style='mso-spacerun:yes'>           </span><span style='mso-tab-count:1'>   </span>:
!   'athena.mit.edu#athena.mit.edu:root.cell.'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey2'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: 'SOFTWARE\OpenAFS\Client\Freelance'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '1'<br>
!   <span style='mso-spacerun:yes'>   </span><span style='mso-tab-count:1'>         </span>Value<span
!   style='mso-spacerun:yes'>           </span><span style='mso-tab-count:1'>   </span>:
!   '.athena.mit.edu%athena.mit.edu:root.cell.'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey3'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'</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'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey4'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '0'<br>
!   <span style='mso-spacerun:yes'> </span><span style='mso-tab-count:1'>           </span>Value<span
!   style='mso-spacerun:yes'>           </span><span style='mso-tab-count:1'>   </span>:
!   '<st1:GivenName w:st="on">athena</st1:GivenName>:athena.mit.edu.'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr style='mso-yfti-irow:11;mso-yfti-lastrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal><span style='mso-tab-count:1'>            </span>(new row)<br>
!   <span style='mso-tab-count:1'>            </span>Registry<span
!   style='mso-tab-count:1'>          </span>: 'reg_freekey5'<br>
!   <span style='mso-tab-count:1'>            </span>Root<span style='mso-tab-count:
!   2'>                </span>: 2<br>
!   <span style='mso-tab-count:1'>            </span>Key<span style='mso-tab-count:
!   2'>                 </span>: 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
!   <span style='mso-tab-count:1'>            </span>Name<span style='mso-tab-count:
!   2'>              </span>: '1'<br>
!   <span style='mso-spacerun:yes'>   </span><span style='mso-tab-count:1'>         </span>Value<span
!   style='mso-spacerun:yes'>           </span><span style='mso-tab-count:1'>   </span>:
!   '.athena:.athena.mit.edu.'<br>
!   <span style='mso-tab-count:1'>            </span>Component<span
!   style='mso-tab-count:1'>     </span>: '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.<span
! style='mso-spacerun:yes'>  </span>Aliases are also provided using symlinks.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872265"></a><a
! name="_Toc115417101"></a><a name="_Toc115416196"></a><a name="_Ref115275867"><span
! style='mso-bookmark:_Toc115416196'><span style='mso-bookmark:_Toc115417101'><span
! style='mso-bookmark:_Toc126872265'>7.3 Additional Resources</span></span></span></a></h2>
  
  <p class=MsoNormal>If you want to add registry keys or files you need to create
! new components and features for those.<span style='mso-spacerun:yes'> 
! </span>Refer to the Windows Platform SDK for details.</p>
  
  <p class=MsoNormal>It is beyond the scope of this document to provide a
! comprehensive overview of how to add new resources through a transform.<span
! style='mso-spacerun:yes'>  </span>Please refer to the &quot;Windows Installer&quot;
! documentation for details.<span style='mso-spacerun:yes'>  </span>The relevant
  section is at :</p>
  
  <p class=MsoNormal>http://msdn.microsoft.com/library/en-us/msi/setup/using_transforms_to_add_resources.asp</p>
--- 2600,3082 ----
  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. 
! 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.  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:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Join
  the component and the feature.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>4.1.<span
! style='font:7.0pt "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:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Add a new row with the
! following values:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none'>
!  <tr>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>Feature</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'>
    <p class=PreformattedText>fea_my_CellServDB</p>
    </td>
   </tr>
!  <tr>
    <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>Component</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>cmf_my_CellServDB</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>5.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Add
  an entry to the 'File' table.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>5.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Select the 'File'
! table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>5.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Add a new row with the
! following values:</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none'>
!  <tr>
    <td width=126 valign=top style='width:94.5pt;border:solid windowtext 1.0pt;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>File</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'>
    <p class=PreformattedText>fil_my_CellServDB</p>
    </td>
   </tr>
!  <tr>
    <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>Component_</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>cmf_my_CellServDB</p>
    </td>
   </tr>
!  <tr>
    <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>
    <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;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>(enter file size here)</p>
    </td>
   </tr>
!  <tr>
    <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>Attributes</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>8192</p>
    </td>
   </tr>
!  <tr>
    <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>Sequence</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>1000</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal>                (leave other fields blank)</p>
  
  <p class=MsoNormal style='margin-left:35.45pt'>The 'Attributes' value is
! msidbFileAttributesNonCompressed (8192).  This is because we will be placing
! this file in the same directory as the MSI instead of embedding the file in
! it.  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 location
  than the other files in the MSI.</p>
  
! <p class=MsoNormal style='margin-left:18.0pt;text-indent:-18.0pt'>6.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Set
  a media source for the file.</p>
  
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>6.1.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Select the 'Media'
! table.</p>
! 
! <p class=MsoNormal style='margin-left:39.6pt;text-indent:-21.6pt'>6.2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp; </span>Add a row with the
! following values :</p>
  
  <table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
!  style='margin-left:40.1pt;border-collapse:collapse;border:none'>
!  <tr>
    <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'>
    <p class=PreformattedText>2</p>
    </td>
   </tr>
!  <tr>
    <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;
!   padding:0pt 5.4pt 0pt 5.4pt'>
    <p class=PreformattedText>1000</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal>                (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="_Toc139981040"></a><a name="_Toc126872262"></a><a
! name="_Toc115416193"></a><a name="_2.3.1_Components_for_Configuration "></a>7.2.3.1
! Components for Configuration Files</h4>
  
  <p class=PreformattedText style='text-indent:35.45pt'>CellServDB:
  'cpf_CellServDB' (ID {D5BA4C15-DBEC-4292-91FC-B54C30F24F2A})</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981041"></a><a
! name="_Toc126872263"></a><a name="_Toc115416194">7.2.4 Adding Domain Specific
! Registry Keys</a></h3>
  
  <p class=MsoNormal>Following is an example for adding domain specific registry
  keys.</p>
  
! <p class=MsoNormal>    Refer to <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>
! section 2.1 for more information.</p>
  
! <p class=MsoNormal>    Columns that are unspecified should be left empty.</p>
  
! <p class=MsoNormal>    We create a new feature and component to hold the new
! registry keys.</p>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'Feature' table:</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Feature            : 'feaDomainKeys'<br>
!             Feature Parent : 'feaClient'<br>
!             Display           : 0<br>
!             Level               : 30<br>
!             Attributes        : 10</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'Component' table:</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!               Component     : 'rcm_DomainKeys'<br>
!             ComponentId  : '{4E3FCBF4-8BE7-40B2-A108-C47CF743C627}'<br>
!             Directory         : 'TARGETDIR'<br>
!             Attributes        : 4<br>
!             KeyPath          : 'reg_domkey0'</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'FeatureComponents' table:</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Feature            : 'feaDomainKeys'<br>
!             Component     : 'rcm_DomainKeys'</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'Registry' table:</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey0'<br>
!             Root                : 2<br>
!             Key                 :
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
!             Component     : 'rcm_DomainKeys'</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey1'<br>
!             Root                : 2<br>
!             Key                 : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain'<br>
!             Name              : '*'<br>
!             Component     : 'rcm_DomainKeys'</p>
    </td>
   </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey2'<br>
!             Root                : 2<br>
!             Key                 :
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
!             Name              : '*'<br>
!             Component     : 'rcm_DomainKeys'</p>
    </td>
   </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey3'<br>
!             Root                : 2<br>
!             Key                 :
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\ATHENA.MIT.EDU'<br>
!             Name              : 'LogonOptions'<br>
!             Value              : 1<br>
!             Component     : 'rcm_DomainKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey4'<br>
!             Root                : 2<br>
!             Key                 : SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!             Name              : '*'<br>
!             Component     : 'rcm_DomainKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey5'<br>
!             Root                : 2<br>
!             Key                 : 'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!             Name              : 'LogonOptions'<br>
!             Value              : 0<br>
!             Component     : 'rcm_DomainKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_domkey6'<br>
!             Root                : 2<br>
!             Key                 :
    'SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST'<br>
!             Name              : 'FailLoginsSilently'<br>
!             Value              : 1<br>
!             Component     : 'rcm_DomainKeys'<br>
!   <br>
!   </p>
    </td>
   </tr>
  </table>
  
! <p class=MsoNormal>&nbsp;</p>
  
  <p class=MsoNormal>The example adds domain specific keys for 'ATHENA.MIT.EDU'
  (enable integrated logon) and 'LOCALHOST' (disable integrated logon and fail
  logins silently).</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981042"></a><a
! name="_Toc126872264"></a><a name="_Toc115416195">7.2.5 Adding Site Specific
! Freelance Registry Keys</a></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>    Columns that are unspecified should be left empty.</p>
  
! <p class=MsoNormal>    We create a new feature and component to hold the new
! registry keys.</p>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'Feature' table:</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Feature            : 'feaFreelanceKeys'<br>
!             Feature Parent : 'feaClient'<br>
!             Display           : 0<br>
!             Level               : 30<br>
!             Attributes        : 10</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'Component' table:</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!               Component     : 'rcm_FreelanceKeys'<br>
!             ComponentId  : '{4E3B3CBF4-9AE7-40C3-7B09-C48CF842C583}'<br>
!             Directory         : 'TARGETDIR'<br>
!             Attributes        : 4<br>
!             KeyPath          : 'reg_freekey0'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'FeatureComponents' table:</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Feature            : 'feaFreelanceKeys'<br>
!             Component     : 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>    'Registry' table:</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_freekey0'<br>
!             Root                : 2<br>
!             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance'<br>
!             Component     : 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_freekey1'<br>
!             Root                : 2<br>
!             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance'<br>
!             Name              : '0'<br>
!               Value              : 'athena.mit.edu#athena.mit.edu:root.cell.'<br>
!             Component     : 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_freekey2'<br>
!             Root                : 2<br>
!             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance'<br>
!             Name              : '1'<br>
!               Value              : '.athena.mit.edu%athena.mit.edu:root.cell.'<br>
!             Component     : 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_freekey3'<br>
!             Root                : 2<br>
!             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
!             Component     : 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_freekey4'<br>
!             Root                : 2<br>
!             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
!             Name              : '0'<br>
!               Value              : 'athena:athena.mit.edu.'<br>
!             Component     : 'rcm_FreelanceKeys'</p>
!   </td>
!  </tr>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <p class=MsoNormal>            (new row)<br>
!             Registry          : 'reg_freekey5'<br>
!             Root                : 2<br>
!             Key                 : 'SOFTWARE\OpenAFS\Client\Freelance\Symlinks'<br>
!             Name              : '1'<br>
!               Value              : '.athena:.athena.mit.edu.'<br>
!             Component     : '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. 
! Aliases are also provided using symlinks.</p>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981043"></a><a
! name="_Toc126872265"></a><a name="_Toc115417101"></a><a name="_Toc115416196"></a><a
! name="_Ref115275867">7.3 Additional Resources</a></h2>
  
  <p class=MsoNormal>If you want to add registry keys or files you need to create
! new components and features for those.  Refer to the Windows Platform SDK for
! details.</p>
  
  <p class=MsoNormal>It is beyond the scope of this document to provide a
! comprehensive overview of how to add new resources through a transform.  Please
! refer to the &quot;Windows Installer&quot; documentation for details.  The relevant
  section is at :</p>
  
  <p class=MsoNormal>http://msdn.microsoft.com/library/en-us/msi/setup/using_transforms_to_add_resources.asp</p>
***************
*** 6949,6958 ****
  
  <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.<span style='mso-spacerun:yes'>  </span>Note
! that none of the features in the OpenAFS for Windows MSI package are designed
! to be installed to run from 'source' or 'advertised'.<span
! style='mso-spacerun:yes'>  </span>It is recommended that you set
  'msidbFeatureAttributesFavorLocal' (0), 'msidbFeatureAttributesFollowParent'
  (2) and 'msidbFeatureAttributesDisallowAdvertise' (8) attributes for new features.</p>
  
--- 3086,3094 ----
  
  <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.  Note that none of the features in the OpenAFS
! for Windows MSI package are designed to be installed to run from 'source' or
! 'advertised'.  It is recommended that you set
  'msidbFeatureAttributesFavorLocal' (0), 'msidbFeatureAttributesFollowParent'
  (2) and 'msidbFeatureAttributesDisallowAdvertise' (8) attributes for new features.</p>
  
***************
*** 6964,7020 ****
  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'.<span style='mso-spacerun:yes'> 
! </span>Generates transform 'openafs-transform.mst')</p>
  
! <p class=MsoNormal><span style='mso-spacerun:yes'>    </span>&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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872266"></a><a
! name="_Toc115417102"></a><a name="_Toc115416197"><span style='mso-bookmark:
! _Toc115417102'><span style='mso-bookmark:_Toc126872266'>7.4. Upgrades</span></span></a></h2>
  
  <p class=MsoNormal>The MSI package is designed to uninstall previous versions
! of OpenAFS for Windows during installation.<span style='mso-spacerun:yes'> 
! </span>Note that it doesn't directly upgrade an existing installation.<span
! style='mso-spacerun:yes'>  </span>This is intentional and ensures that
  development releases which do not have strictly increasing version numbers are
  properly upgraded.</p>
  
  <p class=MsoNormal>Versions of OpenAFS that are upgraded by the MSI package are:</p>
  
! <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l22 level1 lfo31;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>1)<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>OpenAFS
  MSI package<br>
  Upgrade code {6823EEDD-84FC-4204-ABB3-A80D25779833}<br>
  Up to current release</p>
  
! <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l22 level1 lfo31;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>2)<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>MIT's
  Transarc AFS MSI package<br>
  Upgrade code {5332B94F-DE38-4927-9EAB-51F4A64193A7}<br>
  Up to version 3.6.2</p>
  
! <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l22 level1 lfo31;
! tab-stops:list 36.0pt'><![if !supportLists]><span style='mso-fareast-font-family:
! Thorndale;mso-bidi-font-family:Thorndale'><span style='mso-list:Ignore'>3)<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><![endif]>OpenAFS
  NSIS package<br>
  All versions</p>
  
! <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.<span style='mso-spacerun:yes'>  </span>Therefore the MSI package will not
! try to uninstall an OpenAFS NSIS package if running unattended.<span
! style='mso-spacerun:yes'>  </span>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
--- 3100,3147 ----
  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'.  Generates transform 'openafs-transform.mst')</p>
  
! <p class=MsoNormal>    &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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981044"></a><a
! name="_Toc126872266"></a><a name="_Toc115417102"></a><a name="_Toc115416197">7.4.
! Upgrades</a></h2>
  
  <p class=MsoNormal>The MSI package is designed to uninstall previous versions
! of OpenAFS for Windows during installation.  Note that it doesn't directly
! upgrade an existing installation.  This is intentional and ensures that
  development releases which do not have strictly increasing version numbers are
  properly upgraded.</p>
  
  <p class=MsoNormal>Versions of OpenAFS that are upgraded by the MSI package are:</p>
  
! <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'>1)<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>OpenAFS
  MSI package<br>
  Upgrade code {6823EEDD-84FC-4204-ABB3-A80D25779833}<br>
  Up to current release</p>
  
! <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'>2)<span
! style='font:7.0pt "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>
  
! <p class=MsoNormal style='margin-left:36.0pt;text-indent:-18.0pt'>3)<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>OpenAFS
  NSIS package<br>
  All versions</p>
  
! <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. 
! Therefore the MSI package will not try to uninstall an OpenAFS NSIS package if
! running unattended.  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
***************
*** 7023,7091 ****
  <p class=MsoNormal>When performing an upgrade with msiexec.exe execute the MSI
  with the repair options &quot;vomus&quot;.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872267"></a><a
! name="_Toc115417116"></a><a name="_Toc115417103"></a><a name="_Toc115416198"></a><a
! name="_Appendix_A:_Registry_Values"></a><![if !supportLists]><span
! style='mso-bookmark:_Toc126872267'><span style='mso-bookmark:_Toc115417116'><span
! style='mso-bookmark:_Toc115417103'><span style='mso-bookmark:_Toc115416198'></span></span></span></span><![endif]><span
! style='mso-bookmark:_Toc126872267'><span style='mso-bookmark:_Toc115417116'><span
! style='mso-bookmark:_Toc115417103'><span style='mso-bookmark:_Toc115416198'>Appendix
! A: Registry Values</span></span></span></span></h1>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872268"></a><a
! name="_Toc115417104"></a><a name="_Toc115416199"><span style='mso-bookmark:
! _Toc115417104'><span style='mso-bookmark:_Toc126872268'>A.1. Service parameters</span></span></a></h2>
  
  <p class=MsoBodyText>The service parameters primarily affect the behavior of
  the AFS client service (afsd_service.exe).</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872269"></a><a
! name="_Toc115416200"><span style='mso-bookmark:_Toc126872269'>Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872270"></a><a
!   name="_Toc115416201"><span style='mso-bookmark:_Toc126872270'>Value:
!   LANadapter</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD<br>
    Default: -1<br>
    Variable: LANadapter</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>LAN adapter number to use.<span
!   style='mso-spacerun:yes'>  </span>This is the lana number of the LAN adapter
!   that the SMB server should bind to.<span style='mso-spacerun:yes'>  </span>If
!   unspecified or set to -1, a LAN adapter with named 'AFS' or a loopback
!   adapter will be selected.<span style='mso-spacerun:yes'>  </span>If neither
!   are present, then all available adapters will be bound to.<span
!   style='mso-spacerun:yes'>  </span>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:0;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872271"></a><a
!   name="_Toc115416202"></a><a name="_Value___: CacheSize"></a><span
!   style='mso-bookmark:_Toc126872271'><span style='mso-bookmark:_Toc115416202'>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:1;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872272"></a><a
!   name="_Toc115416203"><span style='mso-bookmark:_Toc126872272'>Value:
!   ChunkSize</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 17 (CM_CONFIGDEFAULT_CHUNKSIZE)<br>
    Variable: cm_logChunkSize (cm_chunkSize = 1 &lt;&lt; cm_logChunkSize)</p>
--- 3150,3205 ----
  <p class=MsoNormal>When performing an upgrade with msiexec.exe execute the MSI
  with the repair options &quot;vomus&quot;.</p>
  
! <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981045"></a><a
! name="_Toc126872267"></a><a name="_Toc115417116"></a><a name="_Toc115417103"></a><a
! name="_Toc115416198"></a><a name="_Appendix_A:_Registry_Values"></a>Appendix A:
! Registry Values</h1>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981046"></a><a
! name="_Toc126872268"></a><a name="_Toc115417104"></a><a name="_Toc115416199">A.1.
! Service parameters</a></h2>
  
  <p class=MsoBodyText>The service parameters primarily affect the behavior of
  the AFS client service (afsd_service.exe).</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981047"></a><a
! name="_Toc126872269"></a><a name="_Toc115416200">Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981048"></a><a name="_Toc126872270"></a><a
!   name="_Toc115416201">Value: LANadapter</a></h5>
!   <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
    Variable: LANadapter</p>
!   <p class=MsoBodyText>LAN adapter number to use.  This is the lana number of
!   the LAN adapter that the SMB server should bind to.  If unspecified or set to
!   -1, a LAN adapter with named 'AFS' or a loopback adapter will be selected. 
!   If neither are present, then all available adapters will be bound to.  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='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="_Toc139981049"></a><a name="_Toc126872271"></a><a
!   name="_Toc115416202"></a><a name="_Value___: CacheSize"></a>Value: CacheSize</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='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="_Toc139981050"></a><a name="_Toc126872272"></a><a
!   name="_Toc115416203">Value: ChunkSize</a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 17 (CM_CONFIGDEFAULT_CHUNKSIZE)<br>
    Variable: cm_logChunkSize (cm_chunkSize = 1 &lt;&lt; cm_logChunkSize)</p>
***************
*** 7093,7103 ****
    is 2^cm_logChunkSize.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:2;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872273"></a><a
!   name="_Toc115416204"><span style='mso-bookmark:_Toc126872273'>Value: Daemons</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 2 (CM_CONFIGDEFAULT_DAEMONS)<br>
    Variable: numBkgD</p>
--- 3207,3217 ----
    is 2^cm_logChunkSize.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981051"></a><a name="_Toc126872273"></a><a
!   name="_Toc115416204">Value: Daemons</a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 2 (CM_CONFIGDEFAULT_DAEMONS)<br>
    Variable: numBkgD</p>
***************
*** 7105,7116 ****
    cm_BkgDaemon). (see cm_BkgDaemon in cm_daemon.c)</p>
    </td>
   </tr>
!  <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 style='mso-outline-level:5'><a name="_Toc126872274"></a><a
!   name="_Toc115416205"><span style='mso-bookmark:_Toc126872274'>Value:
!   ServerThreads</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 25 (CM_CONFIGDEFAULT_SVTHREADS)<br>
    Variable: numSvThreads</p>
--- 3219,3229 ----
    cm_BkgDaemon). (see cm_BkgDaemon in cm_daemon.c)</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981052"></a><a name="_Toc126872274"></a><a
!   name="_Toc115416205">Value: ServerThreads</a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 25 (CM_CONFIGDEFAULT_SVTHREADS)<br>
    Variable: numSvThreads</p>
***************
*** 7118,7219 ****
    smb_Server). (see smb_Server in smb.c).</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 style='mso-outline-level:5'><a name="_Toc126872275"></a><a
!   name="_Toc115416206"><span style='mso-bookmark:_Toc126872275'>Value: Stats</span></a></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:5;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872276"></a><a
!   name="_Toc115416207"></a><a name="_Value_:_LogoffPreserveTokens"></a><span
!   style='mso-bookmark:_Toc126872276'><span style='mso-bookmark:_Toc115416207'>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
!   attempt to delete the user's tokens<span style='mso-spacerun:yes'>  </span>if
!   the user's profile is stored outside of AFS.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:6;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872277"></a><a
!   name="_Toc115416208"><span style='mso-bookmark:_Toc126872277'>Value:
!   RootVolume</span></a></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:7;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872278"></a><a
!   name="_Toc115416209"></a><a name="_Value_:_Mountroot"></a><span
!   style='mso-bookmark:_Toc126872278'><span style='mso-bookmark:_Toc115416209'>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.<span
!   style='mso-spacerun:yes'>  </span>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.<span
!   style='mso-spacerun:yes'>  </span>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:8;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872279"></a><a
!   name="_Toc115416210"></a><a name="_Value_:_CachePath"></a><span
!   style='mso-bookmark:_Toc126872279'><span style='mso-bookmark:_Toc115416210'>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.<span
!   style='mso-spacerun:yes'>  </span>The default is the SYSTEM account's TEMP
!   directory.<span style='mso-spacerun:yes'>  </span>The attributes assigned to
!   the file are HIDDEN and SYSTEM.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:9;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872280"></a><a
!   name="_Toc115416211"><span style='mso-bookmark:_Toc126872280'>Value:
!   NonPersistentCaching</span></a></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.<span style='mso-spacerun:yes'>  </span>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:10;height:125.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:125.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872281"></a><a
!   name="_Toc115416212"><span style='mso-bookmark:_Toc126872281'>Value:
!   ValidateCache</span></a></h5>
    <p class=MsoBodyText>Type: DWORD [0..2]<br>
    Default: 1<br>
    Variable: buf_CacheType</p>
--- 3231,3321 ----
    smb_Server). (see smb_Server in smb.c).</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981053"></a><a name="_Toc126872275"></a><a
!   name="_Toc115416206">Value: Stats</a></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='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="_Toc139981054"></a><a name="_Toc126872276"></a><a
!   name="_Toc115416207"></a><a name="_Value_:_LogoffPreserveTokens"></a>Value:
!   LogoffPreserveTokens</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
!   attempt to delete the user's tokens  if the user's profile is stored outside
!   of AFS.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981055"></a><a name="_Toc126872277"></a><a
!   name="_Toc115416208">Value: RootVolume</a></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='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="_Toc139981056"></a><a name="_Toc126872278"></a><a
!   name="_Toc115416209"></a><a name="_Value_:_Mountroot"></a>Value: Mountroot</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.  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.  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='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="_Toc139981057"></a><a name="_Toc126872279"></a><a
!   name="_Toc115416210"></a><a name="_Value_:_CachePath"></a>Value: CachePath</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.  The default is the
!   SYSTEM account's TEMP directory.  The attributes assigned to the file are
!   HIDDEN and SYSTEM.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981058"></a><a name="_Toc126872280"></a><a
!   name="_Toc115416211">Value: NonPersistentCaching</a></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.  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='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="_Toc139981059"></a><a name="_Toc126872281"></a><a
!   name="_Toc115416212">Value: ValidateCache</a></h5>
    <p class=MsoBodyText>Type: DWORD [0..2]<br>
    Default: 1<br>
    Variable: buf_CacheType</p>
***************
*** 7224,7235 ****
    2 - Validation is performed at shutdown</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:11;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872282"></a><a
!   name="_Toc115416213"><span style='mso-bookmark:_Toc126872282'>Value:
!   TrapOnPanic</span></a></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
    Variable: traceOnPanic</p>
--- 3326,3336 ----
    2 - Validation is performed at shutdown</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981060"></a><a name="_Toc126872282"></a><a
!   name="_Toc115416213">Value: TrapOnPanic</a></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 0<br>
    Variable: traceOnPanic</p>
***************
*** 7237,7342 ****
    (breakpoint: _asm int 3).</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:12;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872283"></a><a
!   name="_Toc115416214"></a><a name="_Value___: NetbiosName"></a><span
!   style='mso-bookmark:_Toc126872283'><span style='mso-bookmark:_Toc115416214'>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.<span style='mso-spacerun:yes'>  </span>To provide the old
!   behavior specify a value of<span style='mso-spacerun:yes'> 
!   </span>&quot;%COMPUTERNAME%-AFS&quot;.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:13;height:152.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:152.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872284"></a><a
!   name="_Toc115416215"><span style='mso-bookmark:_Toc126872284'>Value:
!   IsGateway</span></a></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.<span style='mso-spacerun:yes'>  </span>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.<span
!   style='mso-spacerun:yes'>  </span>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:14;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872285"></a><a
!   name="_Toc115416216"><span style='mso-bookmark:_Toc126872285'>Value:
!   ReportSessionStartups</span></a></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.<span style='mso-spacerun:yes'>  </span>This also
!   enables other events such as drive mappings or various error types to be
!   logged.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:15;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872286"></a><a
!   name="_Toc115416217"></a><a name="_Value_:_TraceBufferSize"></a><span
!   style='mso-bookmark:_Toc126872286'><span style='mso-bookmark:_Toc115416217'>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:16;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872287"></a><a
!   name="_Toc115416218"></a><a name="_Value_:_SysName"></a><span
!   style='mso-bookmark:_Toc126872287'><span style='mso-bookmark:_Toc115416218'>Value:
!   SysName</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;i386_nt40&quot;<br>
    Variable: cm_sysName</p>
!   <p class=MsoBodyText>Provides an initial value for &quot;fs
!   sysname&quot;.<span style='mso-spacerun:yes'>  </span>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:17;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872288"></a><a
!   name="_Toc115416219"></a><a name="_Value_:_SecurityLevel"></a><span
!   style='mso-bookmark:_Toc126872288'><span style='mso-bookmark:_Toc115416219'>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:18;height:112.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:112.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872289"></a><a
!   name="_Toc115416220"></a><a name="_Value_:_UseDNS"></a><span
!   style='mso-bookmark:_Toc126872289'><span style='mso-bookmark:_Toc115416220'>Value:
!   UseDNS</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 1<br>
    Variable: cm_dnsEnabled</p>
--- 3338,3429 ----
    (breakpoint: _asm int 3).</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981061"></a><a name="_Toc126872283"></a><a
!   name="_Toc115416214"></a><a name="_Value___: NetbiosName"></a>Value: NetbiosName</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.  To provide the old behavior specify a value of 
!   &quot;%COMPUTERNAME%-AFS&quot;.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981062"></a><a name="_Toc126872284"></a><a
!   name="_Toc115416215">Value: IsGateway</a></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.  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.  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='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="_Toc139981063"></a><a name="_Toc126872285"></a><a
!   name="_Toc115416216">Value: ReportSessionStartups</a></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.  This also enables other events such as drive mappings
!   or various error types to be logged.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981064"></a><a name="_Toc126872286"></a><a
!   name="_Toc115416217"></a><a name="_Value_:_TraceBufferSize"></a>Value:
!   TraceBufferSize</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='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="_Toc139981065"></a><a name="_Toc126872287"></a><a
!   name="_Toc115416218"></a><a name="_Value_:_SysName"></a>Value: SysName</h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &quot;i386_nt40&quot;<br>
    Variable: cm_sysName</p>
!   <p class=MsoBodyText>Provides an initial value for &quot;fs sysname&quot;. 
!   The string can contain one or more replacement values for @sys in order of
!   preference separated by whitespace.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981066"></a><a name="_Toc126872288"></a><a
!   name="_Toc115416219"></a><a name="_Value_:_SecurityLevel"></a>Value:
!   SecurityLevel</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='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="_Toc139981067"></a><a name="_Toc126872289"></a><a
!   name="_Toc115416220"></a><a name="_Value_:_UseDNS"></a>Value: UseDNS</h5>
    <p class=MsoBodyText>Type: DWORD {1,0}<br>
    Default: 1<br>
    Variable: cm_dnsEnabled</p>
***************
*** 7346,7385 ****
    above.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:19;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872290"></a><a
!   name="_Toc115416221"></a><a name="_Value_:_FreelanceClient"></a><span
!   style='mso-bookmark:_Toc126872290'><span style='mso-bookmark:_Toc115416221'>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:20;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872291"></a><a
!   name="_Toc115416222"></a><a name="_Value_:_HideDotFiles"></a><span
!   style='mso-bookmark:_Toc126872291'><span style='mso-bookmark:_Toc115416222'>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.<span
!   style='mso-spacerun:yes'>  </span>Dot files are files whose name starts with
!   a period (excluding &quot;.&quot; and &quot;..&quot;).</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:21;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872292"></a><a
!   name="_Toc115416223"><span style='mso-bookmark:_Toc126872292'>Value:
!   MaxMpxRequests</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 50<br>
    Variable: smb_maxMpxRequests</p>
--- 3433,3469 ----
    above.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981068"></a><a name="_Toc126872290"></a><a
!   name="_Toc115416221"></a><a name="_Value_:_FreelanceClient"></a>Value:
!   FreelanceClient</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='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="_Toc139981069"></a><a name="_Toc126872291"></a><a
!   name="_Toc115416222"></a><a name="_Value_:_HideDotFiles"></a>Value:
!   HideDotFiles</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.  Dot
!   files are files whose name starts with a period (excluding &quot;.&quot; and
!   &quot;..&quot;).</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981070"></a><a name="_Toc126872292"></a><a
!   name="_Toc115416223">Value: MaxMpxRequests</a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 50<br>
    Variable: smb_maxMpxRequests</p>
***************
*** 7387,7410 ****
    made.</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 style='mso-outline-level:5'><a name="_Toc126872293"></a><a
!   name="_Toc115416224"><span style='mso-bookmark:_Toc126872293'>Value:
!   MaxVCPerServer</span></a></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:23;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872294"></a><a
!   name="_Toc115416225"></a><a name="_Value_:_Cell"></a><span style='mso-bookmark:
!   _Toc126872294'><span style='mso-bookmark:_Toc115416225'>Value: Cell</span></span></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
    Variable: rootCellName</p>
--- 3471,3492 ----
    made.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981071"></a><a name="_Toc126872293"></a><a
!   name="_Toc115416224">Value: MaxVCPerServer</a></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='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="_Toc139981072"></a><a name="_Toc126872294"></a><a
!   name="_Toc115416225"></a><a name="_Value_:_Cell"></a>Value: Cell</h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
    Variable: rootCellName</p>
***************
*** 7412,7437 ****
    be mounted in \\afs\all).</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 style='mso-outline-level:5'><a name="_Toc126872295"></a><a
!   name="_Toc115416226"><span style='mso-bookmark:_Toc126872295'>Value:
!   RxNoJumbo</span></a></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:25;height:124.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:124.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872296"></a><a
!   name="_Toc115416227"></a><a name="_Value_:_RxMaxMTU"></a><span
!   style='mso-bookmark:_Toc126872296'><span style='mso-bookmark:_Toc115416227'>Value:
!   RxMaxMTU</span></span></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
    Variable: rx_mtu</p>
--- 3494,3516 ----
    be mounted in \\afs\all).</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981073"></a><a name="_Toc126872295"></a><a
!   name="_Toc115416226">Value: RxNoJumbo</a></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='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="_Toc139981074"></a><a name="_Toc126872296"></a><a
!   name="_Toc115416227"></a><a name="_Value_:_RxMaxMTU"></a>Value: RxMaxMTU</h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: -1<br>
    Variable: rx_mtu</p>
***************
*** 7441,7492 ****
    IPSec VPN client, this value must be set to 1264 or smaller.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:26;height:151.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:151.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872297"></a><a
!   name="_Toc115416228"><span style='mso-bookmark:_Toc126872297'>Value:
!   ConnDeadTimeout</span></a></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.<span style='mso-spacerun:yes'>  </span>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>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:27;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872298"></a><a
!   name="_Toc115416229"><span style='mso-bookmark:_Toc126872298'>Value:
!   HardDeadTimeout</span></a></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.<span style='mso-spacerun:yes'>  </span>The provides an
!   opportunity for at least one retry.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:28;height:158.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:158.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872299"></a><a
!   name="_Toc115416230"></a><a name="_Value__:_TraceOption"></a><span
!   style='mso-bookmark:_Toc126872299'><span style='mso-bookmark:_Toc115416230'>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.<span style='mso-spacerun:yes'>  </span></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;
--- 3520,3566 ----
    IPSec VPN client, this value must be set to 1264 or smaller.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981075"></a><a name="_Toc126872297"></a><a
!   name="_Toc115416228"></a><a name="_Value:_ConnDeadTimeout"></a>Value:
!   ConnDeadTimeout</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.  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>
    </td>
   </tr>
!  <tr style='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="_Toc139981076"></a><a name="_Toc126872298"></a><a
!   name="_Toc115416229">Value: HardDeadTimeout</a></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.  The provides an opportunity for at least one retry.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981077"></a><a name="_Toc126872299"></a><a
!   name="_Toc115416230"></a><a name="_Value__:_TraceOption"></a>Value:
!   TraceOption</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.  </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;
***************
*** 7494,7582 ****
    <p class=MsoBodyText>Bit 3 enables &quot;fs trace&quot; logging on startup.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:29;height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872300"></a><a
!   name="_Toc115416231"><span style='mso-bookmark:_Toc126872300'>Value:
!   AllSubmount</span></a></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.<span
!   style='mso-spacerun:yes'>  </span>This allows the read-write versions of
!   root.afs to be hidden.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:30;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872301"></a><a
!   name="_Toc115416232"></a><a name="_Value___: NoFindLanaByName"></a><span
!   style='mso-bookmark:_Toc126872301'><span style='mso-bookmark:_Toc115416232'>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:31;height:78.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:78.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872302"></a><a
!   name="_Toc115416233"><span style='mso-bookmark:_Toc126872302'>Value: MaxCPUs</span></a></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
!   greater number installed in the machine.<span style='mso-spacerun:yes'> 
!   </span></p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:32;height:151.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:151.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872303"></a><a
!   name="_Toc115416234"></a><a name="_Value___: smbAuthType"></a><span
!   style='mso-bookmark:_Toc126872303'><span style='mso-bookmark:_Toc115416234'>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
    authentication which must be present in order for the Windows SMB client to
!   connect to the AFS Client Service's SMB server.<span
!   style='mso-spacerun:yes'>  </span>The values are:</p>
    <p class=MsoBodyText>0 = No authentication required<br>
    1 = NTLM authentication required<br>
    2 = Extended (GSS SPNEGO) authentication required<br>
    The default is Extended authentication</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:33;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872304"></a><a
!   name="_Toc115416235"></a><a name="_Value___: MaxLogSize"></a><span
!   style='mso-bookmark:_Toc126872304'><span style='mso-bookmark:_Toc115416235'>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.<span style='mso-spacerun:yes'>  </span>If
!   the file is larger than this value when afsd_service.exe starts the file will
!   be reset to 0 bytes.<span style='mso-spacerun:yes'>  </span>If this value is
    0, it means the file should be allowed to grow indefinitely.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:34;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 style='mso-outline-level:5'><a name="_Toc126872305"></a><a
!   name="_Toc115416236"><span style='mso-bookmark:_Toc126872305'>Value:
!   FlushOnHibernate</span></a></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
--- 3568,3647 ----
    <p class=MsoBodyText>Bit 3 enables &quot;fs trace&quot; logging on startup.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981078"></a><a name="_Toc126872300"></a><a
!   name="_Toc115416231">Value: AllSubmount</a></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.  This allows
!   the read-write versions of root.afs to be hidden.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981079"></a><a name="_Toc126872301"></a><a
!   name="_Toc115416232"></a><a name="_Value___: NoFindLanaByName"></a>Value:
!   NoFindLanaByName</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='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="_Toc139981080"></a><a name="_Toc126872302"></a><a
!   name="_Toc115416233">Value: MaxCPUs</a></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
!   greater number installed in the machine.  </p>
    </td>
   </tr>
!  <tr style='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="_Toc139981081"></a><a name="_Toc126872303"></a><a
!   name="_Toc115416234"></a><a name="_Value___: smbAuthType"></a>Value:
!   smbAuthType</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
    authentication which must be present in order for the Windows SMB client to
!   connect to the AFS Client Service's SMB server.  The values are:</p>
    <p class=MsoBodyText>0 = No authentication required<br>
    1 = NTLM authentication required<br>
    2 = Extended (GSS SPNEGO) authentication required<br>
    The default is Extended authentication</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981082"></a><a name="_Toc126872304"></a><a
!   name="_Toc115416235"></a><a name="_Value___: MaxLogSize"></a>Value:
!   MaxLogSize</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.  If the file is larger than this value when
!   afsd_service.exe starts the file will be reset to 0 bytes.  If this value is
    0, it means the file should be allowed to grow indefinitely.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981083"></a><a name="_Toc126872305"></a><a
!   name="_Toc115416236">Value: FlushOnHibernate</a></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
***************
*** 7585,7676 ****
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872306"></a><a
! name="_Toc115416237"><span style='mso-bookmark:_Toc126872306'>Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:65.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.0pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872307"></a><a
!   name="_Toc115416238"><span style='mso-bookmark:_Toc126872307'>Value: &lt;Drive
!   Letter:&gt; for example &quot;G:&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Specifies the submount name to
!   be mapped by afsd_service.exe at startup to the provided drive letter.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872308"></a><a
! name="_Toc115416239"><span style='mso-bookmark:_Toc126872308'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872309"></a><a
!   name="_Toc115416240"></a><a name="_Value___: CellServDBDir"></a><span
!   style='mso-bookmark:_Toc126872309'><span style='mso-bookmark:_Toc115416240'>Value:
!   CellServDBDir</span></span></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &lt;not defined&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Specifies the directory
!   containing the CellServDB file.<span style='mso-spacerun:yes'>  </span>When
!   this value is not specified, the AFS Client install directory is used.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:0;height:145.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872310"></a><a
!   name="_Toc115416241"></a><a name="_Value___: VerifyServiceSignature"></a><span
!   style='mso-bookmark:_Toc126872310'><span style='mso-bookmark:_Toc115416241'>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
    verification of the digital signatures applied to afsd_service.exe and the
!   OpenAFS DLLs it loads.<span style='mso-spacerun:yes'>  </span>This test is
!   performed to verify that<span style='mso-spacerun:yes'>   </span>the DLLs
    which are loaded by afsd_service.exe are from the same distribution as
!   afsd_service.exe.<span style='mso-spacerun:yes'>  </span>This is to prevent
!   random errors caused when DLLs from one distribution of AFS are loaded by another
!   one.<span style='mso-spacerun:yes'>  </span>This is not a security test.<span
!   style='mso-spacerun:yes'>  </span>The reason for disabling this test is to
!   free up additional memory which can be used for a large cache size.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:1;height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872311"></a><a
!   name="_Toc115416242"></a><a name="_Value___: IoctlDebug"></a><span
!   style='mso-bookmark:_Toc126872311'><span style='mso-bookmark:_Toc115416242'>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.<span style='mso-spacerun:yes'>  </span>Set a non-zero value and the
!   pioctl() library will output status information to stdout.<span
!   style='mso-spacerun:yes'>  </span>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:2;height:330.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:330.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872312"></a><a
!   name="_Toc115416243"><span style='mso-bookmark:_Toc126872312'>Value:
!   MiniDumpType</span></a></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
--- 3650,3726 ----
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981084"></a><a
! name="_Toc126872306"></a><a name="_Toc115416237">Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981085"></a><a name="_Toc126872307"></a><a
!   name="_Toc115416238">Value: &lt;Drive Letter:&gt; for example &quot;G:&quot;</a></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>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981086"></a><a
! name="_Toc126872308"></a><a name="_Toc115416239">Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981087"></a><a name="_Toc126872309"></a><a
!   name="_Toc115416240"></a><a name="_Value___: CellServDBDir"></a>Value:
!   CellServDBDir</h5>
!   <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;not defined&gt;</p>
!   <p class=MsoBodyText>Specifies the directory containing the CellServDB file. 
!   When this value is not specified, the AFS Client install directory is used.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981088"></a><a name="_Toc126872310"></a><a
!   name="_Toc115416241"></a><a name="_Value___: VerifyServiceSignature"></a>Value:
!   VerifyServiceSignature</h5>
    <p class=MsoBodyText>Type: REG_DWORD<br>
    Default: 0x1</p>
    <p class=MsoBodyText>This value can be used to disable the runtime
    verification of the digital signatures applied to afsd_service.exe and the
!   OpenAFS DLLs it loads.  This test is performed to verify that   the DLLs
    which are loaded by afsd_service.exe are from the same distribution as
!   afsd_service.exe.  This is to prevent random errors caused when DLLs from one
!   distribution of AFS are loaded by another one.  This is not a security test. 
!   The reason for disabling this test is to free up additional memory which can
!   be used for a large cache size.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981089"></a><a name="_Toc126872311"></a><a
!   name="_Toc115416242"></a><a name="_Value___: IoctlDebug"></a>Value:
!   IoctlDebug</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.  Set a non-zero value and the pioctl() library will output status
!   information to stdout.  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='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="_Toc139981090"></a><a name="_Toc126872312"></a><a
!   name="_Toc115416243">Value: MiniDumpType</a></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
***************
*** 7678,7685 ****
    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.<span style='mso-spacerun:yes'>  </span>See the
!   Microsoft Developer Library for further information.</p>
    <p class=MsoBodyText>MiniDumpNormal = 0x00000000,<br>
    MiniDumpWithDataSegs = 0x00000001,<br>
    MiniDumpWithFullMemory = 0x00000002,<br>
--- 3728,3735 ----
    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.  See the Microsoft Developer Library for further
!   information.</p>
    <p class=MsoBodyText>MiniDumpNormal = 0x00000000,<br>
    MiniDumpWithDataSegs = 0x00000001,<br>
    MiniDumpWithFullMemory = 0x00000002,<br>
***************
*** 7697,8006 ****
    MiniDumpWithCodeSegs = 0x00002000</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:3;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 style='mso-outline-level:5'><a name="_Toc126872313"></a><a
!   name="_Toc115416244"></a><a name="_Value___: StoreAnsiFilenames"></a><span
!   style='mso-bookmark:_Toc126872313'><span style='mso-bookmark:_Toc115416244'>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.<span style='mso-spacerun:yes'>  </span></p>
    <p class=MsoBodyText>Note: The use of ANSI characters will render access to
!   files with 8-bit OEM file names unaccessible from Windows.<span
!   style='mso-spacerun:yes'>  </span>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872314"></a><a
! name="_Toc115416245"><span style='mso-bookmark:_Toc126872314'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:112.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:112.0pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872315"></a><a
!   name="_Toc115416246"><span style='mso-bookmark:_Toc126872315'>Value:
!   &quot;smb/cifs share name&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>This key is used to map SMB/CIFS
!   shares to Client Side Caching (off-line access) policies. For each share one
!   of the following policies may be used: &quot;manual&quot;,
!   &quot;programs&quot;, &quot;documents&quot;, &quot;disable&quot;.<span
!   style='mso-spacerun:yes'>  </span></p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values used to be stored
!   in afsdsbmt.ini</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872316"></a><a
! name="_Toc115416247"></a><a name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie"></a><![if !supportLists]><span
! style='mso-bookmark:_Toc126872316'><span style='mso-bookmark:_Toc115416247'></span></span><![endif]><span
! style='mso-bookmark:_Toc126872316'><span style='mso-bookmark:_Toc115416247'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</span></span></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:138.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:138.5pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872317"></a><a
!   name="_Toc115416248"><span style='mso-bookmark:_Toc126872317'>Value:
!   &quot;numeric value&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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 style='mso-yfti-cnfc:1'>&quot;athena.mit.edu#athena.mit.edu:root.cell.&quot;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>&quot;.athena.mit.edu%athena.mit.edu:root.cell.&quot;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values used to be stored
!   in afs_freelance.ini</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872318"></a><a
! name="_Toc115416249"></a><a name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_1"></a><![if !supportLists]><span
! style='mso-bookmark:_Toc126872318'><span style='mso-bookmark:_Toc115416249'></span></span><![endif]><span
! style='mso-bookmark:_Toc126872318'><span style='mso-bookmark:_Toc115416249'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</span></span></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:145.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:145.0pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872319"></a><a
!   name="_Toc115416250"><span style='mso-bookmark:_Toc126872319'>Value:
!   &quot;numeric value&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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 style='mso-yfti-cnfc:1'>&quot;linkname:destination-path.&quot;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>&quot;<st1:GivenName w:st="on">athena</st1:GivenName>:athena.mit.edu.&quot;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>&quot;home:athena.mit.edu\user\j\a\jaltman.&quot;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>&quot;filename:path\file.&quot;</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872320"></a><a
! name="_Toc115416251"><span style='mso-bookmark:_Toc126872320'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:171.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:171.75pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872321"></a><a
!   name="_Toc115416252"><span style='mso-bookmark:_Toc126872321'>Value:
!   &quot;submount name&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_EXPAND_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>This key is used to store
!   mappings of UNIX style AFS paths to submount names which can be referenced as
!   UNC paths.<span style='mso-spacerun:yes'>  </span>For example the submount
!   string “/athena.mit.edu/user/j/a/jaltman&quot; can be associated with the
!   submount name &quot;jaltman.home&quot;.<span style='mso-spacerun:yes'> 
!   </span>This can then be referenced as the UNC path \\AFS\jaltman.home.</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values used to be stored
!   in afsdsbmt.ini</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872322"></a><a
! name="_Toc115416253"></a><a name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_2"></a><![if !supportLists]><span
! style='mso-bookmark:_Toc126872322'><span style='mso-bookmark:_Toc115416253'></span></span><![endif]><span
! style='mso-bookmark:_Toc126872322'><span style='mso-bookmark:_Toc115416253'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</span></span></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872323"></a><a
!   name="_Toc115416254"><span style='mso-bookmark:_Toc126872323'>Value:
!   &quot;hostname or ip address&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_DWORD<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>This key is used to specify a
!   default set of VLDB server preferences. For each entry the value name will be
!   either the IP address of a server or a fully qualified domain name.<span
!   style='mso-spacerun:yes'>  </span>The value will be the ranking.<span
!   style='mso-spacerun:yes'>  </span>The ranking will be adjusted by a random
!   value between 0 and 256 prior to the preference being set.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872324"></a><a
! name="_Toc115416255"><span style='mso-bookmark:_Toc126872324'>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872325"></a><a
!   name="_Toc115416256"><span style='mso-bookmark:_Toc126872325'>Value:
!   &quot;hostname or ip address&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_DWORD<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>This key is used to specify a
!   default set of File server preferences. For each entry the value name will be
!   either the IP address of a server or a fully qualified domain name.<span
!   style='mso-spacerun:yes'>  </span>The value will be the ranking.<span
!   style='mso-spacerun:yes'>  </span>The ranking will be adjusted by a random
!   value between 0 and 256 prior to the preference being set.</p>
    </td>
   </tr>
  </table>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872326"></a><a
! name="_Toc115417105"></a><a name="_Toc115416257"><span style='mso-bookmark:
! _Toc115417105'><span style='mso-bookmark:_Toc126872326'>A.2. Integrated Logon Network
! provider parameters</span></span></a></h2>
  
  <p class=MsoBodyText>Affects the network provider (afslogon.dll).</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872327"></a><a
! name="_Toc115416258"><span style='mso-bookmark:_Toc126872327'>Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></a></h3>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872328"></a><a
!   name="_Toc115416259"><span style='mso-bookmark:_Toc126872328'>Value:
!   FailLoginsSilently</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD<br>
    Default: 0</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Do not display message boxes if
!   the login fails.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872329"></a><a
! name="_Toc115416260"><span style='mso-bookmark:_Toc126872329'>Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872330"></a><a
!   name="_Toc115416261"><span style='mso-bookmark:_Toc126872330'>Value: NoWarnings</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD<br>
    Default: 0</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Disables visible warnings during
!   logon.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:0;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872331"></a><a
!   name="_Toc115416262"><span style='mso-bookmark:_Toc126872331'>Value:
!   AuthentProviderPath</span></a></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:1;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872332"></a><a
!   name="_Toc115416263"><span style='mso-bookmark:_Toc126872332'>Value: Class</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    NSIS: 0x02</p>
    <p class=MsoBodyText>Specifies the class of network provider</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:2;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872333"></a><a
!   name="_Toc115416264"><span style='mso-bookmark:_Toc126872333'>Value:
!   DependOnGroup</span></a></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
!   Service depends.<span style='mso-spacerun:yes'>  </span>Windows should not
!   attempt to start the AFS Client Service until all of the services within
!   these groups have successfully started.</p>
    </td>
   </tr>
!  <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 style='mso-outline-level:5'><a name="_Toc126872334"></a><a
!   name="_Toc115416265"><span style='mso-bookmark:_Toc126872334'>Value:
!   DependOnService</span></a></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.<span style='mso-spacerun:yes'>  </span>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:4;height:65.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:65.75pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872335"></a><a
!   name="_Toc115416266"><span style='mso-bookmark:_Toc126872335'>Value: Name</span></a></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:5;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 style='mso-outline-level:5'><a name="_Toc126872336"></a><a
!   name="_Toc115416267"><span style='mso-bookmark:_Toc126872336'>Value:
!   ProviderPath</span></a></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>
--- 3747,4005 ----
    MiniDumpWithCodeSegs = 0x00002000</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981091"></a><a name="_Toc126872313"></a><a
!   name="_Toc115416244"></a><a name="_Value___: StoreAnsiFilenames"></a>Value:
!   StoreAnsiFilenames</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.  </p>
    <p class=MsoBodyText>Note: The use of ANSI characters will render access to
!   files with 8-bit OEM file names unaccessible from Windows.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981092"></a><a
! name="_Toc126872314"></a><a name="_Toc115416245">Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981093"></a><a name="_Toc126872315"></a><a
!   name="_Toc115416246">Value: &quot;smb/cifs share name&quot;</a></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
!   Caching (off-line access) policies. For each share one of the following policies
!   may be used: &quot;manual&quot;, &quot;programs&quot;, &quot;documents&quot;,
!   &quot;disable&quot;.  </p>
!   <p class=MsoBodyText>These values used to be stored in afsdsbmt.ini</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981094"></a><a
! name="_Toc126872316"></a><a name="_Toc115416247"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie"></a>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981095"></a><a name="_Toc126872317"></a><a
!   name="_Toc115416248">Value: &quot;numeric value&quot;</a></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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981096"></a><a
! name="_Toc126872318"></a><a name="_Toc115416249"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_1"></a>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981097"></a><a name="_Toc126872319"></a><a
!   name="_Toc115416250">Value: &quot;numeric value&quot;</a></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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981098"></a><a
! name="_Toc126872320"></a><a name="_Toc115416251">Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981099"></a><a name="_Toc126872321"></a><a
!   name="_Toc115416252">Value: &quot;submount name&quot;</a></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.  For example
!   the submount string “/athena.mit.edu/user/j/a/jaltman&quot; can be associated
!   with the submount name &quot;jaltman.home&quot;.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981100"></a><a
! name="_Toc126872322"></a><a name="_Toc115416253"></a><a
! name="_Regkey:_[HKLM\SOFTWARE\OpenAFS\Clie_2"></a>Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981101"></a><a name="_Toc126872323"></a><a
!   name="_Toc115416254">Value: &quot;hostname or ip address&quot;</a></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
!   preferences. For each entry the value name will be either the IP address of a
!   server or a fully qualified domain name.  The value will be the ranking.  The
!   ranking will be adjusted by a random value between 0 and 256 prior to the
!   preference being set.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981102"></a><a
! name="_Toc126872324"></a><a name="_Toc115416255">Regkey:<br>
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981103"></a><a name="_Toc126872325"></a><a
!   name="_Toc115416256">Value: &quot;hostname or ip address&quot;</a></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
!   preferences. For each entry the value name will be either the IP address of a
!   server or a fully qualified domain name.  The value will be the ranking.  The
!   ranking will be adjusted by a random value between 0 and 256 prior to the
!   preference being set.</p>
    </td>
   </tr>
  </table>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981104"></a><a
! name="_Toc126872326"></a><a name="_Toc115417105"></a><a name="_Toc115416257">A.2.
! Integrated Logon Network provider parameters</a></h2>
  
  <p class=MsoBodyText>Affects the network provider (afslogon.dll).</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981105"></a><a
! name="_Toc126872327"></a><a name="_Toc115416258">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></h3>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981106"></a><a name="_Toc126872328"></a><a
!   name="_Toc115416259">Value: FailLoginsSilently</a></h5>
!   <p class=MsoBodyText>Type: DWORD<br>
    Default: 0</p>
!   <p class=MsoBodyText>Do not display message boxes if the login fails.</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981107"></a><a
! name="_Toc126872329"></a><a name="_Toc115416260">Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981108"></a><a name="_Toc126872330"></a><a
!   name="_Toc115416261">Value: NoWarnings</a></h5>
!   <p class=MsoBodyText>Type: DWORD<br>
    Default: 0</p>
!   <p class=MsoBodyText>Disables visible warnings during logon.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981109"></a><a name="_Toc126872331"></a><a
!   name="_Toc115416262">Value: AuthentProviderPath</a></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='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="_Toc139981110"></a><a name="_Toc126872332"></a><a
!   name="_Toc115416263">Value: Class</a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    NSIS: 0x02</p>
    <p class=MsoBodyText>Specifies the class of network provider</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981111"></a><a name="_Toc126872333"></a><a
!   name="_Toc115416264">Value: DependOnGroup</a></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
!   Service depends.  Windows should not attempt to start the AFS Client Service
!   until all of the services within these groups have successfully started.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981112"></a><a name="_Toc126872334"></a><a
!   name="_Toc115416265">Value: DependOnService</a></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.  Windows should not attempt to start the AFS Client Service
!   until all of the specified services have successfully started.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981113"></a><a name="_Toc126872335"></a><a
!   name="_Toc115416266">Value: Name</a></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='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="_Toc139981114"></a><a name="_Toc126872336"></a><a
!   name="_Toc115416267">Value: ProviderPath</a></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>
***************
*** 8008,8123 ****
   </tr>
  </table>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872337"></a><a
! name="_Toc115417106"></a><a name="_Toc115416268"></a><a
! name="_A.2.1_Domain_specific_configuration"></a><![if !supportLists]><span
! style='mso-bookmark:_Toc126872337'><span style='mso-bookmark:_Toc115417106'><span
! style='mso-bookmark:_Toc115416268'></span></span></span><![endif]><span
! style='mso-bookmark:_Toc126872337'><span style='mso-bookmark:_Toc115417106'><span
! style='mso-bookmark:_Toc115416268'>A.2.1 Domain specific configuration keys for
! the Network Provider</span></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.<span
! style='mso-spacerun:yes'>  </span>These settings are only relevant when using
! integrated login.<span style='mso-spacerun:yes'>  </span>A domain refers to an Active
! Directory (AD) domain, a trusted Kerberos (non-AD) realm or the local machine
! (i.e. local account logins).<span style='mso-spacerun:yes'>  </span>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872338"></a><a
! name="_Toc115416269"><span style='mso-bookmark:_Toc126872338'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</span></a></h3>
  
! <p class=MsoBodyText><span style='mso-spacerun:yes'>  </span>(NP key)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872339"></a><a
! name="_Toc115416270"><span style='mso-bookmark:_Toc126872339'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</span></a></h3>
  
! <p class=MsoBodyText><span style='mso-spacerun:yes'>  </span>(Domains key)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872340"></a><a
! name="_Toc115416271"><span style='mso-bookmark:_Toc126872340'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
! name&quot;]</span></a></h3>
  
! <p class=MsoBodyText><span style='mso-spacerun:yes'>  </span>(Specific domain
! key. One per domain.)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872341"></a><a
! name="_Toc115416272"><span style='mso-bookmark:_Toc126872341'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</span></a></h3>
  
! <p class=MsoBodyText><span style='mso-spacerun:yes'>  </span>(Localhost key)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872342"></a><a
! name="_Toc115416273"><span style='mso-bookmark:_Toc126872342'>Example:</span></a></h3>
  
! <p class=PreformattedText><span
! style='mso-spacerun:yes'> </span>HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>  </span>|</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>  </span>+- Domain</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>     </span>+-AD1.EXAMPLE.COM</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    
! </span>+-AD2.EXAMPLE.NET</p>
  
! <p class=PreformattedText><span style='mso-spacerun:yes'>    
! </span>+-LOCALHOST</p>
  
  <p class=MsoBodyText>Each of the domain specific keys can have the set of
! values described in 2.1.1.<span style='mso-spacerun:yes'>  </span>The effective
! values are chosen as described in 2.1.2.</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872343"></a><a
! name="_Toc115416274"><span style='mso-bookmark:_Toc126872343'>A.2.1.1 Domain
! specific configuration values</span></a></h3>
  
! <h4><a name="_Toc126872344"></a><a name="_Toc115416275"><span style='mso-bookmark:
! _Toc126872344'>[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]<br>
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
  name&quot;]<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</span></a></h4>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872345"></a><a
!   name="_Toc115416276"></a><a name="_Value___: LogonOptions"></a><span
!   style='mso-bookmark:_Toc126872345'><span style='mso-bookmark:_Toc115416276'>Value:
!   LogonOptions</span></span></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD<br>
    Default: 0x01</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>NSIS/WiX: depends on user
!   configuration</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>0x00 - Integrated Logon is not
!   used<br>
    0x01 - Integrated Logon is used<br>
    0x02 - High Security Mode is used (deprecated)<br>
    0x03 - Integrated Logon with High Security Mode is used (deprecated)</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>High Security Mode generates
!   random SMB names for the creation of Drive Mappings.<span
!   style='mso-spacerun:yes'>  </span>This mode should not be used without
!   Integrated Logon.</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>As of 1.3.65 the SMB server
!   supports SMB authentication.<span style='mso-spacerun:yes'>  </span>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:0;height:92.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:92.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872346"></a><a
!   name="_Toc115416277"><span style='mso-bookmark:_Toc126872346'>Value:
!   FailLoginsSilentl</span></a></h5>
    <p class=MsoBodyText>Type: DWORD (1|0)<br>
    Default: 0<br>
    NSIS/WiX: (not set)</p>
--- 4007,4105 ----
   </tr>
  </table>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981115"></a><a
! name="_Toc126872337"></a><a name="_Toc115417106"></a><a name="_Toc115416268"></a><a
! name="_A.2.1_Domain_specific_configuration"></a>A.2.1 Domain specific configuration
! keys for the Network Provider</h2>
  
  <p class=MsoBodyText>The network provider can be configured to have different
! behavior depending on the domain that the user logs into.  These settings are only
! relevant when using integrated login.  A domain refers to an Active Directory
! (AD) domain, a trusted Kerberos (non-AD) realm or the local machine (i.e. local
! account logins).  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981116"></a><a
! name="_Toc126872338"></a><a name="_Toc115416269">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></h3>
  
! <p class=MsoBodyText>  (NP key)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981117"></a><a
! name="_Toc126872339"></a><a name="_Toc115416270">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</a></h3>
  
! <p class=MsoBodyText>  (Domains key)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981118"></a><a
! name="_Toc126872340"></a><a name="_Toc115416271">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\&quot;domain
! name&quot;]</a></h3>
  
! <p class=MsoBodyText>  (Specific domain key. One per domain.)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981119"></a><a
! name="_Toc126872341"></a><a name="_Toc115416272">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></h3>
  
! <p class=MsoBodyText>  (Localhost key)</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981120"></a><a
! name="_Toc126872342"></a><a name="_Toc115416273">Example:</a></h3>
  
! <p class=PreformattedText> HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider</p>
  
! <p class=PreformattedText>  |</p>
  
! <p class=PreformattedText>  +- Domain</p>
  
! <p class=PreformattedText>     +-AD1.EXAMPLE.COM</p>
  
! <p class=PreformattedText>     +-AD2.EXAMPLE.NET</p>
  
! <p class=PreformattedText>     +-LOCALHOST</p>
  
  <p class=MsoBodyText>Each of the domain specific keys can have the set of
! values described in 2.1.1.  The effective values are chosen as described in
! 2.1.2.</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981121"></a><a
! name="_Toc126872343"></a><a name="_Toc115416274">A.2.1.1 Domain specific
! configuration values</a></h3>
  
! <h4><a name="_Toc139981122"></a><a name="_Toc126872344"></a><a
! name="_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
  name&quot;]<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></h4>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981123"></a><a name="_Toc126872345"></a><a
!   name="_Toc115416276"></a><a name="_Value___: LogonOptions"></a>Value:
!   LogonOptions</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>
    0x03 - Integrated Logon with High Security Mode is used (deprecated)</p>
!   <p class=MsoBodyText>High Security Mode generates random SMB names for the
!   creation of Drive Mappings.  This mode should not be used without Integrated
!   Logon.</p>
!   <p class=MsoBodyText>As of 1.3.65 the SMB server supports SMB
!   authentication.  The High Security Mode should not be used when using SMB
!   authentication (SMBAuthType setting is non zero).</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981124"></a><a name="_Toc126872346"></a><a
!   name="_Toc115416277">Value: FailLoginsSilentl</a></h5>
    <p class=MsoBodyText>Type: DWORD (1|0)<br>
    Default: 0<br>
    NSIS/WiX: (not set)</p>
***************
*** 8125,8154 ****
    event of an error during the integrated login process.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:1;height:139.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:139.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872347"></a><a
!   name="_Toc115416278"><span style='mso-bookmark:_Toc126872347'>Value:
!   LogonScript</span></a></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.<span style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>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:2;height:105.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:105.5pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872348"></a><a
!   name="_Toc115416279"><span style='mso-bookmark:_Toc126872348'>Value: LoginRetryInterval</span></a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 30<br>
    NSIS/WiX: (not set)</p>
--- 4107,4134 ----
    event of an error during the integrated login process.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981125"></a><a name="_Toc126872347"></a><a
!   name="_Toc115416278">Value: LogonScript</a></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.  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.  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='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="_Toc139981126"></a><a name="_Toc126872348"></a><a
!   name="_Toc115416279">Value: LoginRetryInterval</a></h5>
    <p class=MsoBodyText>Type: DWORD<br>
    Default: 30<br>
    NSIS/WiX: (not set)</p>
***************
*** 8158,8182 ****
    if the service is up.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:3;height:79.25pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:79.25pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872349"></a><a
!   name="_Toc115416280"><span style='mso-bookmark:_Toc126872349'>Value:
!   LoginSleepInterval</span></a></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:4;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 style='mso-outline-level:5'><a name="_Toc126872350"></a><a
!   name="_Toc115416281"></a><a name="_Value:_TheseCells"></a><span
!   style='mso-bookmark:_Toc126872350'><span style='mso-bookmark:_Toc115416281'>Value:
!   TheseCells</span></span></h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
    NSIS: &lt;not set&gt;</p>
    <p class=MsoBodyText>When Kerberos 5 is being used, TheseCells provides a
--- 4138,4159 ----
    if the service is up.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981127"></a><a name="_Toc126872349"></a><a
!   name="_Toc115416280">Value: LoginSleepInterval</a></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='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="_Toc139981128"></a><a name="_Toc126872350"></a><a
!   name="_Toc115416281"></a><a name="_Value:_TheseCells"></a>Value: TheseCells</h5>
    <p class=MsoBodyText>Type: REG_MULTI_SZ<br>
    NSIS: &lt;not set&gt;</p>
    <p class=MsoBodyText>When Kerberos 5 is being used, TheseCells provides a
***************
*** 8186,8292 ****
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872351"></a><a
! name="_Toc115416282"><span style='mso-bookmark:_Toc126872351'>A.2.1.2<span
! style='mso-spacerun:yes'>  </span>Selection of effective values for domain
! specific configuration</span></a></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;mso-list:
! l33 level1 lfo13;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-fareast-font-family:Thorndale;mso-bidi-font-family:Thorndale'><span
! style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>NP key. (&quot;HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider&quot;)</p>
! 
! <p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
! l33 level1 lfo13;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-fareast-font-family:Thorndale;mso-bidi-font-family:Thorndale'><span
! style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>Domains key. (NP key\&quot;Domain&quot;)</p>
! 
! <p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:
! l33 level1 lfo13;tab-stops:list 36.0pt'><![if !supportLists]><span
! style='mso-fareast-font-family:Thorndale;mso-bidi-font-family:Thorndale'><span
! style='mso-list:Ignore'>3.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
! </span></span></span><![endif]>Specific domain key. (Domains key\X)</p>
  
  <p class=MsoBodyText>If the specific domain key does not exist, then the
! domains key will be ignored.<span style='mso-spacerun:yes'>  </span>All the
! configuration information in this 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.<span
! style='mso-spacerun:yes'>  </span>If no such instance can be found, the default
! will be used.<span style='mso-spacerun:yes'>  </span>To re-iterate, a value in
! a more specific key supercedes a value in a less specific key.<span
! style='mso-spacerun:yes'>  </span>The exceptions to this rule are stated below.</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872352"></a><a
! name="_Toc115416283"><span style='mso-bookmark:_Toc126872352'>A.2.1.3 Exceptions
! to A.2.1.2</span></a></h3>
  
  <p class=MsoBodyText>To retain backwards compatibility, the following
  exceptions are made to 2.1.2.</p>
  
! <h4><a name="_Toc126872353"></a><a name="_Toc115416284"><span style='mso-bookmark:
! _Toc126872353'>2.1.3.1 'FailLoginsSilently'</span></a></h4>
  
  <p class=MsoBodyText>Historically, the 'FailLoginsSilently' value was in HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
! key and not in the NP key.<span style='mso-spacerun:yes'>  </span>Therefore, for
! backwards compatibility, the value in the Parameters key will supercede all
! instances of this value in other keys.<span style='mso-spacerun:yes'> 
! </span>In the absence of this value in the Parameters key, normal scope rules
  apply.</p>
  
! <h4><a name="_Toc126872354"></a><a name="_Toc115416285"><span style='mso-bookmark:
! _Toc126872354'>2.1.3.2 'LogonScript'</span></a></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.<span
! style='mso-spacerun:yes'>  </span>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.<span style='mso-spacerun:yes'>  </span>Please be aware of
! this when setting this value.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872355"></a><a
! name="_Toc115417107"></a><a name="_Toc115416286"><span style='mso-bookmark:
! _Toc115417107'><span style='mso-bookmark:_Toc126872355'>A.3. AFS Credentials
! System Tray Tool parameters</span></span></a></h2>
  
  <p class=MsoBodyText>Affects the behavior of afscreds.exe</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872356"></a><a
! name="_Toc115416287"><span style='mso-bookmark:_Toc126872356'>Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872357"></a><a
!   name="_Toc115416288"><span style='mso-bookmark:_Toc126872357'>Value: Gateway</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &quot;&quot;<br>
    Function: GetGatewayName()</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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:0;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 style='mso-outline-level:5'><a name="_Toc126872358"></a><a
!   name="_Toc115416289"><span style='mso-bookmark:_Toc126872358'>Value: Cell</span></a></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
    Variable: IsServiceConfigured()</p>
--- 4163,4254 ----
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981129"></a><a
! name="_Toc126872351"></a><a name="_Toc115416282">A.2.1.2  Selection of
! effective values for domain specific configuration</a></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:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>NP
! key. (&quot;HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider&quot;)</p>
! 
! <p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt'>2.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Domains
! key. (NP key\&quot;Domain&quot;)</p>
! 
! <p class=MsoBodyText style='margin-left:36.0pt;text-indent:-18.0pt'>3.<span
! style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Specific
! domain key. (Domains key\X)</p>
  
  <p class=MsoBodyText>If the specific domain key does not exist, then the
! domains key will be ignored.  All the configuration information in this 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.  If no
! such instance can be found, the default will be used.  To re-iterate, a value
! in a more specific key supercedes a value in a less specific key.  The
! exceptions to this rule are stated below.</p>
! 
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981130"></a><a
! name="_Toc126872352"></a><a name="_Toc115416283">A.2.1.3 Exceptions to A.2.1.2</a></h3>
  
  <p class=MsoBodyText>To retain backwards compatibility, the following
  exceptions are made to 2.1.2.</p>
  
! <h4><a name="_Toc139981131"></a><a name="_Toc126872353"></a><a
! name="_Toc115416284">2.1.3.1 'FailLoginsSilently'</a></h4>
  
  <p class=MsoBodyText>Historically, the 'FailLoginsSilently' value was in HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters
! key and not in the NP key.  Therefore, for backwards compatibility, the value
! in the Parameters key will supercede all instances of this value in other
! keys.  In the absence of this value in the Parameters key, normal scope rules
  apply.</p>
  
! <h4><a name="_Toc139981132"></a><a name="_Toc126872354"></a><a
! name="_Toc115416285">2.1.3.2 'LogonScript'</a></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.  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.  Please be aware of this when
! setting this value.</p>
! 
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981133"></a><a
! name="_Toc126872355"></a><a name="_Toc115417107"></a><a name="_Toc115416286">A.3.
! AFS Credentials System Tray Tool parameters</a></h2>
  
  <p class=MsoBodyText>Affects the behavior of afscreds.exe</p>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981134"></a><a
! name="_Toc126872356"></a><a name="_Toc115416287">Regkey:<br>
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981135"></a><a name="_Toc126872357"></a><a
!   name="_Toc115416288">Value: Gateway</a></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='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="_Toc139981136"></a><a name="_Toc126872358"></a><a
!   name="_Toc115416289">Value: Cell</a></h5>
    <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
    Variable: IsServiceConfigured()</p>
***************
*** 8296,8528 ****
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872359"></a><a
! name="_Toc115416290"><span style='mso-bookmark:_Toc126872359'>Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client]<br>
! [HKCU\SOFTWARE\OpenAFS\Client]</span></a></h3>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872360"></a><a
!   name="_Toc115416291"><span style='mso-bookmark:_Toc126872360'>Value:
!   ShowTrayIcon</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD {0, 1}<br>
    Default: 1<br>
    Function: InitApp(), Main_OnCheckTerminate()</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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 style='mso-yfti-cnfc:1'>This value used to be stored at
!   [HKLM\Software\TransarcCorporation\AFS Client\AfsCreds].</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>The current user value is
!   checked first; if it does not exist the local machine value is checked.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:0;height:119.0pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:119.0pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872361"></a><a
!   name="_Toc115416292"><span style='mso-bookmark:_Toc126872361'>Value:
!   EnableKFW</span></a></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 5
!   will be used to obtain AFS credentials.<span style='mso-spacerun:yes'> 
!   </span>By setting this value to 0, the internal Kerberos 4 implementation
!   will be used instead.<span style='mso-spacerun:yes'>  </span>The current user
    value is checked first; if it does not exist the local machine value is
    checked.</p>
    </td>
   </tr>
!  <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 style='mso-outline-level:5'><a name="_Toc126872362"></a><a
!   name="_Toc115416293"></a><a name="_Value___: Use524"></a><span
!   style='mso-bookmark:_Toc126872362'><span style='mso-bookmark:_Toc115416293'>Value:
!   Use524</span></span></h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 0<br>
    Function: KFW_use_krb524()</p>
    <p class=MsoBodyText>When MIT Kerberos for Windows can be loaded, Kerberos 5
!   will be used to obtain AFS credentials.<span style='mso-spacerun:yes'> 
!   </span>By setting this value to 1, the Kerberos 5 tickets will be converted
!   to Kerberos 4 tokens via a call to the krb524 daemon.<span
!   style='mso-spacerun:yes'>  </span>The current user value is checked first; if
!   it does not exist the local machine value is checked.</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:2;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 style='mso-outline-level:5'><a name="_Toc126872363"></a><a
!   name="_Toc115416294"></a><a name="_Value___: AfscredsShortcutParams"></a><span
!   style='mso-bookmark:_Toc126872363'><span style='mso-bookmark:_Toc115416294'>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.<span
!   style='mso-spacerun:yes'>  </span>afscreds.exe rewrites the shortcut each
!   time it exits so as to ensure that the shortcut points to the latest version
!   of the program.<span style='mso-spacerun:yes'>  </span>This value is used to
!   determine which values should be used for command line parameters.<span
!   style='mso-spacerun:yes'>  </span>The current user value is checked first; if
!   it does not exist the local machine 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.<span style='mso-spacerun:yes'>  </span>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872364"></a><a
! name="_Toc115416295"><span style='mso-bookmark:_Toc126872364'>Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;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 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872365"></a><a
!   name="_Toc115416296"><span style='mso-bookmark:_Toc126872365'>Value:
!   Authentication Cell</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &lt;none&gt;<br>
    Function: Afscreds.exe GetDefaultCell()</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872366"></a><a
! name="_Toc115416297"><span style='mso-bookmark:_Toc126872366'>Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:124.75pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:124.75pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872367"></a><a
!   name="_Toc115416298"><span style='mso-bookmark:_Toc126872367'>Value:
!   &quot;afs cell name&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;<br>
    Function: LoadRemind(), SaveRemind()</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>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 style='mso-yfti-cnfc:1'>This value used to be stored at
!   [HKLM\Software\TransarcCorporation\AFS Client\AfsCreds].</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872368"></a><a
! name="_Toc115416299"><span style='mso-bookmark:_Toc126872368'>Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872369"></a><a
!   name="_Toc115416300"><span style='mso-bookmark:_Toc126872369'>Value:
!   &quot;upper case drive letter&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values are used to store
!   the persistence state of the AFS drive mappings as listed in the
!   [...\Client\Mappings] key.</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values used to be stored
!   in the afsdsbmt.ini file</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872370"></a><a
! name="_Toc115416301"><span style='mso-bookmark:_Toc126872370'>Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</span></a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes;
!   height:98.5pt'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt;
    height:98.5pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872371"></a><a
!   name="_Toc115416302"><span style='mso-bookmark:_Toc126872371'>Value:
!   &quot;upper case drive letter&quot;</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values are used to store
!   the AFS path in UNIX notation to which the drive letter is to be mapped.</p>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>These values used to be stored
!   in the afsdsbmt.ini file.</p>
    </td>
   </tr>
  </table>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc126872372"></a><a
! name="_Toc115417108"></a><a name="_Toc115416303"><span style='mso-bookmark:
! _Toc115417108'><span style='mso-bookmark:_Toc126872372'>A.4 OpenAFS Client
! Service Environment Variables</span></span></a></h2>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0
!  style='mso-cellspacing:2.0pt;mso-yfti-tbllook:480;mso-padding-alt:0pt 5.4pt 0pt 5.4pt;
!  mso-border-insideh:.75pt outset windowtext;mso-border-insidev:.75pt outset windowtext'>
!  <tr style='mso-yfti-irow:-1;mso-yfti-firstrow:yes'>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5 style='mso-outline-level:5;mso-yfti-cnfc:1'><a name="_Toc126872373"></a><a
!   name="_Toc115416304"><span style='mso-bookmark:_Toc126872373'>Variable:
!   AFS_RPC_ENCRYPT</span></a></h5>
!   <p class=MsoBodyText style='mso-yfti-cnfc:1'>Values:<span
!   style='mso-spacerun:yes'>   </span>&quot;OFF&quot; disables the use of RPC
    encryption any other value allows RPC encryption to be used<br>
!   Default:<span style='mso-spacerun:yes'>  </span>RPC encryption is on</p>
    </td>
   </tr>
!  <tr style='mso-yfti-irow:0;mso-yfti-lastrow:yes'>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5 style='mso-outline-level:5'><a name="_Toc126872374"></a><a
!   name="_Toc115416305"><span style='mso-bookmark:_Toc126872374'>Variable:
!   AFS_RPC_PROTSEQ</span></a></h5>
!   <p class=MsoBodyText>Values:<span style='mso-tab-count:1'>            </span>&quot;ncalrpc&quot;<span
!   style='mso-spacerun:yes'>  </span>- local RPC<br>
!   <span style='mso-spacerun:yes'> </span><span style='mso-tab-count:2'>                       </span>&quot;ncacn_np&quot;
!   - named pipes<br>
!   <span style='mso-spacerun:yes'> </span><span style='mso-tab-count:2'>                       </span>&quot;ncacn_ip_tcp&quot;
!   - tcp/ip<br>
!   Default:<span style='mso-spacerun:yes'>  </span>local RPC</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoBodyText><o:p>&nbsp;</o:p></p>
  
  </div>
  
--- 4258,4449 ----
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981137"></a><a
! name="_Toc126872359"></a><a name="_Toc115416290">Regkey:<br>
  [HKLM\SOFTWARE\OpenAFS\Client]<br>
! [HKCU\SOFTWARE\OpenAFS\Client]</a></h3>
  
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981138"></a><a name="_Toc126872360"></a><a
!   name="_Toc115416291">Value: ShowTrayIcon</a></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>
   </tr>
!  <tr style='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="_Toc139981139"></a><a name="_Toc126872361"></a><a
!   name="_Toc115416292">Value: EnableKFW</a></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 5
!   will be used to obtain AFS credentials.  By setting this value to 0, the
!   internal Kerberos 4 implementation will be used instead.  The current user
    value is checked first; if it does not exist the local machine value is
    checked.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981140"></a><a name="_Toc126872362"></a><a
!   name="_Toc115416293"></a><a name="_Value___: Use524"></a>Value: Use524</h5>
    <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: 0<br>
    Function: KFW_use_krb524()</p>
    <p class=MsoBodyText>When MIT Kerberos for Windows can be loaded, Kerberos 5
!   will be used to obtain AFS credentials.  By setting this value to 1, the
!   Kerberos 5 tickets will be converted to Kerberos 4 tokens via a call to the
!   krb524 daemon.  The current user value is checked first; if it does not exist
!   the local machine value is checked.</p>
    </td>
   </tr>
!  <tr style='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="_Toc139981141"></a><a name="_Toc126872363"></a><a
!   name="_Toc115416294"></a><a name="_Value___: AfscredsShortcutParams"></a>Value:
!   AfscredsShortcutParams</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.  afscreds.exe rewrites
!   the shortcut each time it exits so as to ensure that the shortcut points to
!   the latest version of the program.  This value is used to determine which
!   values should be used for command line parameters.  The current user value is
!   checked first; if it does not exist the local machine 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.  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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981142"></a><a
! name="_Toc126872364"></a><a name="_Toc115416295">Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981143"></a><a name="_Toc126872365"></a><a
!   name="_Toc115416296">Value: Authentication Cell</a></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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981144"></a><a
! name="_Toc126872366"></a><a name="_Toc115416297">Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981145"></a><a name="_Toc126872367"></a><a
!   name="_Toc115416298">Value: &quot;afs cell name&quot;</a></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 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981146"></a><a
! name="_Toc126872368"></a><a name="_Toc115416299">Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981147"></a><a name="_Toc126872369"></a><a
!   name="_Toc115416300">Value: &quot;upper case drive letter&quot;</a></h5>
!   <p class=MsoBodyText>Type: DWORD {0, 1}<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText>These values are used to store the persistence state of
!   the AFS drive mappings as listed in the [...\Client\Mappings] key.</p>
!   <p class=MsoBodyText>These values used to be stored in the afsdsbmt.ini file</p>
    </td>
   </tr>
  </table>
  
! <h3 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981148"></a><a
! name="_Toc126872370"></a><a name="_Toc115416301">Regkey:<br>
! [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</a></h3>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr style='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="_Toc139981149"></a><a name="_Toc126872371"></a><a
!   name="_Toc115416302">Value: &quot;upper case drive letter&quot;</a></h5>
!   <p class=MsoBodyText>Type: REG_SZ<br>
    Default: &lt;none&gt;</p>
!   <p class=MsoBodyText>These values are used to store the AFS path in UNIX
!   notation to which the drive letter is to be mapped.</p>
!   <p class=MsoBodyText>These values used to be stored in the afsdsbmt.ini file.</p>
    </td>
   </tr>
  </table>
  
! <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139981150"></a><a
! name="_Toc126872372"></a><a name="_Toc115417108"></a><a name="_Toc115416303">A.4
! OpenAFS Client Service Environment Variables</a></h2>
! 
! <table class=MsoTableWeb1 border=1 cellspacing=3 cellpadding=0>
!  <tr>
!   <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc139981151"></a><a name="_Toc126872373"></a><a
!   name="_Toc115416304">Variable: AFS_RPC_ENCRYPT</a></h5>
!   <p class=MsoBodyText>Values:   &quot;OFF&quot; disables the use of RPC
    encryption any other value allows RPC encryption to be used<br>
!   Default:  RPC encryption is on</p>
    </td>
   </tr>
!  <tr>
    <td width=590 valign=top style='width:442.8pt;padding:0pt 5.4pt 0pt 5.4pt'>
!   <h5><a name="_Toc139981152"></a><a name="_Toc126872374"></a><a
!   name="_Toc115416305">Variable: AFS_RPC_PROTSEQ</a></h5>
!   <p class=MsoBodyText>Values:            &quot;ncalrpc&quot;  - local RPC<br>
!                           &quot;ncacn_np&quot; - named pipes<br>
!                           &quot;ncacn_ip_tcp&quot; - tcp/ip<br>
!   Default:  local RPC</p>
    </td>
   </tr>
  </table>
  
! <p class=MsoBodyText>&nbsp;</p>
  
  </div>
  
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.2.5 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.2.7
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.2.5	Sun Feb  5 03:14:18 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm	Mon Aug 21 01:00:56 2006
***************
*** 1,1291 ****
! <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="http://www.w3.org/TR/REC-html40">
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
! <meta name=ProgId content=Word.Document>
! <meta name=Generator content="Microsoft Word 11">
! <meta name=Originator content="Microsoft Word 11">
! <base target="OpenAFS for Windows Release Notes">
! <link rel=File-List href="toc_files/filelist.xml">
! <title>OpenAFS for Windows Release Notes TOC</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>9</o:TotalTime>
!   <o:Created>2005-09-25T21:11:00Z</o:Created>
!   <o:LastSaved>2005-09-25T21:11:00Z</o:LastSaved>
!   <o:Pages>1</o:Pages>
!   <o:Words>4476</o:Words>
!   <o:Characters>25515</o:Characters>
!   <o:Company>Secure Endpoints Inc.</o:Company>
!   <o:Lines>212</o:Lines>
!   <o:Paragraphs>59</o:Paragraphs>
!   <o:CharactersWithSpaces>29932</o:CharactersWithSpaces>
!   <o:Version>11.6568</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>
!   <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
!   <w:Compatibility>
!    <w:BreakWrappedTables/>
!    <w:SnapToGridInCell/>
!    <w:WrapTextWithPunct/>
!    <w:UseAsianBreakRules/>
!    <w:UseWord2002TableStyleRules/>
!    <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]-->
  <style>
  <!--
   /* Font Definitions */
   @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:"MS Mincho";}
  p.MsoToc1, li.MsoToc1, div.MsoToc1
! 	{mso-style-update:auto;
! 	mso-style-noshow:yes;
! 	mso-style-next:Normal;
! 	margin:0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"MS Mincho";}
  p.MsoToc2, li.MsoToc2, div.MsoToc2
! 	{mso-style-update:auto;
! 	mso-style-noshow:yes;
! 	mso-style-next:Normal;
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:12.0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"MS Mincho";}
  p.MsoToc3, li.MsoToc3, div.MsoToc3
! 	{mso-style-update:auto;
! 	mso-style-noshow:yes;
! 	mso-style-next:Normal;
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:24.0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"MS Mincho";}
  p.MsoToc4, li.MsoToc4, div.MsoToc4
! 	{mso-style-update:auto;
! 	mso-style-noshow:yes;
! 	mso-style-next:Normal;
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:36.0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"MS Mincho";}
  p.MsoToc5, li.MsoToc5, div.MsoToc5
! 	{mso-style-update:auto;
! 	mso-style-noshow:yes;
! 	mso-style-next:Normal;
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:48.0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"MS Mincho";}
  p.MsoToc6, li.MsoToc6, div.MsoToc6
! 	{mso-style-update:auto;
! 	mso-style-noshow:yes;
! 	mso-style-next:Normal;
! 	margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:60.0pt;
  	margin-bottom:.0001pt;
- 	mso-pagination:widow-orphan;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";
! 	mso-fareast-font-family:"MS Mincho";}
  a:link, span.MsoHyperlink
  	{color:blue;
! 	text-decoration:underline;
! 	text-underline:single;}
  a:visited, span.MsoHyperlinkFollowed
  	{color:purple;
! 	text-decoration:underline;
! 	text-underline:single;}
  @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;}
  -->
  </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-ansi-language:#0400;
! 	mso-fareast-language:#0400;
! 	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"/>
!  </o:shapelayout></xml><![endif]-->
  </head>
  
! <body lang=EN-US link=blue vlink=purple style='tab-interval:36.0pt'>
  
  <div class=Section1>
  
! <p class=MsoNormal><!--[if supportFields]><span style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>RD
! &quot;C:\\src\\openafs\\openafs-1-4-branch\\doc\\txt\\winnotes\\relnotes.htm&quot;
! \f <![endif]--><!--[if supportFields]><span style='mso-element:field-end'></span><![endif]--><!--[if supportFields]><span
! style='mso-element:field-begin'></span><span
! style='mso-spacerun:yes'> </span>TOC \h \z \n \u <span style='mso-element:field-separator'></span><![endif]--><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#_Toc126872163">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#_Toc126872164">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#_Toc126872165">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#_Toc126872166">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#_Toc126872167">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#_Toc126872168">2.3 Additional Software</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#_Toc126872169">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#_Toc126872170">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#_Toc126872171">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#_Toc126872172">3.1.2. Using the krb524 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#_Toc126872173">3.2. Use of the Microsoft Loopback Adapter</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#_Toc126872174">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#_Toc126872175">3.4. Locating AFS Volume Database Servers</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#_Toc126872176">3.5. Obtaining AFS Tokens as a 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#_Toc126872177">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#_Toc126872178">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#_Toc126872179">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#_Toc126872180">3.9. OpenAFS includes 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#_Toc126872181">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=MsoToc2 style='tab-stops:right dotted 431.5pt'><span
! class=MsoHyperlink><span style='mso-no-proof:yes'><a
! href="relnotes.htm#_Toc126872182">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#_Toc126872183">3.12. Maximum File Size is 2GB</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#_Toc126872184">3.13. Encrypted AFS File Access</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#_Toc126872185">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#_Toc126872186">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#_Toc126872187">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#_Toc126872188">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#_Toc126872189">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#_Toc126872190">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#_Toc126872191">3.20. 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#_Toc126872192">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#_Toc126872193">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#_Toc126872194">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#_Toc126872195">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#_Toc126872196">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#_Toc126872197">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#_Toc126872198">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#_Toc126872199">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#_Toc126872200">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#_Toc126872201">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#_Toc126872202">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#_Toc126872203">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#_Toc126872204">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#_Toc126872205">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#_Toc126872206">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#_Toc126872207">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#_Toc126872208">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#_Toc126872209">3.38. AFS Client Universally Unique
! Identifiers</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#_Toc126872210">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#_Toc126872211">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#_Toc126872212">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#_Toc126872213">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#_Toc126872214">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#_Toc126872215">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#_Toc126872216">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#_Toc126872217">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#_Toc126872218">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#_Toc126872219">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#_Toc126872220">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#_Toc126872221">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#_Toc126872222">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#_Toc126872223">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#_Toc126872224">6.3. The MIT Kerberos Account</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#_Toc126872225">6.4. 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#_Toc126872226">6.5. 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#_Toc126872227">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#_Toc126872228">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#_Toc126872229">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#_Toc126872230">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#_Toc126872231">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#_Toc126872232">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#_Toc126872233">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#_Toc126872234">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#_Toc126872235">(Service 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#_Toc126872236">(Network provider):</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#_Toc126872237">(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#_Toc126872238">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#_Toc126872239">AFSCACHEPATH</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#_Toc126872240">AFSCACHESIZE</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#_Toc126872241">AFSCELLNAME</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#_Toc126872242">FREELANCEMODE</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#_Toc126872243">HIDEDOTFILES</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#_Toc126872244">LOGONOPTIONS</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#_Toc126872245">MOUNTROOT</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#_Toc126872246">NETBIOSNAME</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#_Toc126872247">NOFINDLANABYNAME</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#_Toc126872248">RXMAXMTU</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#_Toc126872249">SECURITYLEVEL</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#_Toc126872250">SMBAUTHTYPE</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#_Toc126872251">STOREANSIFILENAMES</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#_Toc126872252">USEDNS</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#_Toc126872253">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#_Toc126872254">CREDSSTARTUP</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#_Toc126872255">CREDSAUTOINIT</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#_Toc126872256">CREDSIPCHDET</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#_Toc126872257">CREDSQUIET</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#_Toc126872258">CREDSRENEWDRMAP</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#_Toc126872259">CREDSSHOW</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#_Toc126872260">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#_Toc126872261">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#_Toc126872262">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#_Toc126872263">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#_Toc126872264">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#_Toc126872265">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#_Toc126872266">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#_Toc126872267">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#_Toc126872268">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#_Toc126872269">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#_Toc126872270">Value: LANadapter</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#_Toc126872271">Value: CacheSize</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#_Toc126872272">Value: ChunkSize</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#_Toc126872273">Value: Daemons</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#_Toc126872274">Value: ServerThreads</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#_Toc126872275">Value: Stats</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#_Toc126872276">Value: LogoffPreserveTokens</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#_Toc126872277">Value: RootVolume</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#_Toc126872278">Value: Mountroot</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#_Toc126872279">Value: CachePath</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#_Toc126872280">Value: NonPersistentCaching</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#_Toc126872281">Value: ValidateCache</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#_Toc126872282">Value: TrapOnPanic</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#_Toc126872283">Value: NetbiosName</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#_Toc126872284">Value: IsGateway</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#_Toc126872285">Value: ReportSessionStartups</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#_Toc126872286">Value: TraceBufferSize</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#_Toc126872287">Value: SysName</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#_Toc126872288">Value: SecurityLevel</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#_Toc126872289">Value: UseDNS</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#_Toc126872290">Value: FreelanceClient</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#_Toc126872291">Value: HideDotFiles</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#_Toc126872292">Value: MaxMpxRequests</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#_Toc126872293">Value: MaxVCPerServer</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#_Toc126872294">Value: Cell</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#_Toc126872295">Value: RxNoJumbo</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#_Toc126872296">Value: RxMaxMTU</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#_Toc126872297">Value: ConnDeadTimeout</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#_Toc126872298">Value: HardDeadTimeout</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#_Toc126872299">Value: TraceOption</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#_Toc126872300">Value: AllSubmount</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#_Toc126872301">Value: NoFindLanaByName</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#_Toc126872302">Value: MaxCPUs</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#_Toc126872303">Value: smbAuthType</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#_Toc126872304">Value: MaxLogSize</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#_Toc126872305">Value: FlushOnHibernate</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#_Toc126872306">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#_Toc126872307">Value: &lt;Drive Letter:&gt; for example
! &quot;G:&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#_Toc126872308">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#_Toc126872309">Value: CellServDBDir</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#_Toc126872310">Value: VerifyServiceSignature</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#_Toc126872311">Value: IoctlDebug</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#_Toc126872312">Value: MiniDumpType</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#_Toc126872313">Value: StoreAnsiFilenames</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#_Toc126872314">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#_Toc126872315">Value: &quot;smb/cifs share 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#_Toc126872316">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#_Toc126872317">Value: &quot;numeric value&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#_Toc126872318">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#_Toc126872319">Value: &quot;numeric value&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#_Toc126872320">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#_Toc126872321">Value: &quot;submount 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#_Toc126872322">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#_Toc126872323">Value: &quot;hostname or ip address&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#_Toc126872324">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#_Toc126872325">Value: &quot;hostname or ip address&quot;</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#_Toc126872326">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#_Toc126872327">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#_Toc126872328">Value: FailLoginsSilently</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#_Toc126872329">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#_Toc126872330">Value: NoWarnings</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#_Toc126872331">Value: AuthentProviderPath</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#_Toc126872332">Value: Class</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#_Toc126872333">Value: DependOnGroup</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#_Toc126872334">Value: DependOnService</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#_Toc126872335">Value: Name</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#_Toc126872336">Value: ProviderPath</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#_Toc126872337">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#_Toc126872338">[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#_Toc126872339">[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#_Toc126872340">[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#_Toc126872341">[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#_Toc126872342">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#_Toc126872343">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#_Toc126872344">[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#_Toc126872345">Value: LogonOptions</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#_Toc126872346">Value: FailLoginsSilentl</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#_Toc126872347">Value: LogonScript</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#_Toc126872348">Value: LoginRetryInterval</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#_Toc126872349">Value: LoginSleepInterval</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#_Toc126872350">Value: TheseCells</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#_Toc126872351">A.2.1.2<span style='mso-spacerun:yes'> 
! </span>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#_Toc126872352">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#_Toc126872353">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#_Toc126872354">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#_Toc126872355">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#_Toc126872356">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#_Toc126872357">Value: Gateway</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#_Toc126872358">Value: Cell</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#_Toc126872359">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#_Toc126872360">Value: ShowTrayIcon</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#_Toc126872361">Value: EnableKFW</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#_Toc126872362">Value: Use524</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#_Toc126872363">Value: AfscredsShortcutParams</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#_Toc126872364">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#_Toc126872365">Value: Authentication Cell</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#_Toc126872366">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#_Toc126872367">Value: &quot;afs cell 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#_Toc126872368">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#_Toc126872369">Value: &quot;upper case drive letter&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#_Toc126872370">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#_Toc126872371">Value: &quot;upper case drive letter&quot;</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#_Toc126872372">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#_Toc126872373">Variable: AFS_RPC_ENCRYPT</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#_Toc126872374">Variable: AFS_RPC_PROTSEQ</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>
  
! <p class=MsoNormal><o:p>&nbsp;</o:p></p>
  
  </div>
  
--- 1,788 ----
! <html>
  
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
! <meta name=Generator content="Microsoft Word 11 (filtered)">
! <base target=Main>
  <style>
  <!--
   /* Font Definitions */
   @font-face
  	{font-family:"MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;}
  @font-face
  	{font-family:"\@MS Mincho";
! 	panose-1:2 2 6 9 4 2 5 8 3 4;}
   /* Style Definitions */
   p.MsoNormal, li.MsoNormal, div.MsoNormal
! 	{margin:0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc1, li.MsoToc1, div.MsoToc1
! 	{margin:0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc2, li.MsoToc2, div.MsoToc2
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:12.0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc3, li.MsoToc3, div.MsoToc3
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:24.0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc4, li.MsoToc4, div.MsoToc4
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:36.0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc5, li.MsoToc5, div.MsoToc5
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:48.0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  p.MsoToc6, li.MsoToc6, div.MsoToc6
! 	{margin-top:0pt;
  	margin-right:0pt;
  	margin-bottom:0pt;
  	margin-left:60.0pt;
  	margin-bottom:.0001pt;
  	font-size:12.0pt;
! 	font-family:"Times New Roman";}
  a:link, span.MsoHyperlink
  	{color:blue;
! 	text-decoration:underline;}
  a:visited, span.MsoHyperlinkFollowed
  	{color:purple;
! 	text-decoration:underline;}
  @page Section1
  	{size:612.0pt 792.0pt;
! 	margin:72.0pt 90.0pt 72.0pt 90.0pt;}
  div.Section1
  	{page:Section1;}
  -->
  </style>
! 
  </head>
  
! <body lang=EN-US link=blue vlink=purple>
  
  <div class=Section1>
  
! <p class=MsoNormal></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980939">1. Installer Options</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980940">2. System Requirements</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980941">2.1 Supported Operating Systems</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980942">2.1.1 Unsupported Operating Systems</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980943">2.2 Disk Space</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980944">2.3 Additional Software Packages</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980945">3. Operational Notes</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980946">3.1. Requirements for Kerberos 5
! Authentication</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980947">3.1.1. Active Directory</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980948">3.1.2. Using the krb524 service</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980949">3.2. Use of the Microsoft Loopback Adapter</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980950">3.3. Using Freelance (Dynamic Root) Mode
! to Improve Mobility</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980951">3.4. Locating AFS Volume Database Servers</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980952">3.5. Obtaining AFS Tokens as a Part of
! Windows Logon</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980953">3.6. AFS System Tray Command Line Options</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980954">3.7. The “AFS Client Admins” Authorization
! Group</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980955">3.8. OpenAFS support for UNC paths</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980956">3.9. OpenAFS includes aklog.exe</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980957">3.10. OpenAFS Servers on Windows are
! Unsupported</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980958">3.11. OpenAFS Debugging Symbol files</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980959">3.12. Maximum File Size is 2GB</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980960">3.13. Encrypted AFS File Access</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980961">3.14. Authenticated Access to the OpenAFS
! Client Service</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980962">3.15. No More INI Files</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980963">3.16. Microsoft Windows Internet
! Connection Firewall</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980964">3.17. Browsing AFS from the Explorer Shell
! and Office</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980965">3.18. Byte Range Locking</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980966">3.19. Automatic Discarding of AFS Tokens
! at Logoff</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980967">3.20. Terminal Server installations</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980968">3.21. Hidden Dot Files</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980969">3.22. Status Cache Limits</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980970">3.23. NETBIOS over TCP/IP must be enabled</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980971">3.24. OpenAFS binaries are digitally
! signed</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980972">3.25. Maximum Size of the AFSCache File</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980973">3.26. Filename Character Sets</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980974">3.27. Known Character Set Issues with
! Roaming Profiles</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980975">3.28. The AFSCache File</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980976">3.29. Restricting OpenAFS Client Service
! Start and Stop</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980977">3.30. The @sys Name List</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980978">3.31. Symlinks to AFS UNC paths</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980979">3.32. Cache Manager Debugging Now
! Supported</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980980">3.33. Windows Logon Caching vs. Kerberos
! Logons</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980981">3.34. Initial Server Preferences</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980982">3.35. File Timestamps</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980983">3.36. Windows RPC client support must be
! installed</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980984">3.37. Generating Minidumps of the OpenAFS
! Client Service</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980985">3.38. AFS Client Universally Unique
! Identifiers</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980986">3.39. Delayed Write Errors with Microsoft
! Office Applications</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980987">3.40. Global Drives (aka Service Drive
! Letters) are no longer supported by Microsoft</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980988">4. How to Debug Problems with OpenAFS for
! Windows:</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980989">4.1. pioctl debugging (IoctlDebug registry
! key)</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980990">4.2. afsd_service initialization log
! (%WinDir%\TEMP\afsd_init.log)</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980991">4.3. afsd_service debug logs (fs trace
! {-on, -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980992">4.4. Using SysInternal’s DbgView and
! FileMon Tools</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980993">4.5. Microsoft MiniDumps  (fs minidump
! -&gt; %WinDir%\TEMP\afsd.dmp)</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980994">4.6. Single Sign-on (Integrated Logon)
! debugging</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980995">4.7. RX (AFS RPC) debugging (rxdebug)</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980996">4.8. Cache Manager debugging (cmdebug)</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980997">4.9. Persistent Cache consistency check</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980998">5. Reporting Bugs:</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139980999">6. How to Contribute to the Development of
! OpenAFS for Windows</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981000">6.1. The USENIX OpenAFS Fund</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981001">6.2. Secure Endpoints Inc.</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981002">6.3. The MIT Kerberos Account</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981003">6.4. Direct contributions of code and/or
! documentation</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981004">6.5. OpenAFS for Windows Mailing Lists</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981005">7. MSI Deployment Guide</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981006">7.1. Introduction</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981007">7.1.1 Requirements</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981008">7.1.2 Authoring a Transform</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981009">7.2. Configuration Options</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981010">7.2.1 Configurable Properties</a></span></p>
! 
! <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981011">7.2.1.1 Setting Properties</a></span></p>
! 
! <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981012">7.2.1.2 OpenAFS for Windows Properties</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981013">(Service parameters):</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981014">(Network provider):</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981015">(OpenAFS Client):</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981016">7.2.1.2.1 Registry Properties</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981017">AFSCACHEPATH</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981018">AFSCACHESIZE</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981019">AFSCELLNAME</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981020">FREELANCEMODE</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981021">HIDEDOTFILES</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981022">LOGONOPTIONS</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981023">MOUNTROOT</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981024">NETBIOSNAME</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981025">NOFINDLANABYNAME</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981026">RXMAXMTU</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981027">SECURITYLEVEL</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981028">SMBAUTHTYPE</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981029">STOREANSIFILENAMES</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981030">USEDNS</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981031">7.2.1.2.2 AFSCreds.exe Properties</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981032">CREDSSTARTUP</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981033">CREDSAUTOINIT</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981034">CREDSIPCHDET</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981035">CREDSQUIET</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981036">CREDSRENEWDRMAP</a></span></p>
! 
! <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981037">CREDSSHOW</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981038">7.2.2 Existing Registry Entries</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981039">7.2.3 Replacing Configuration Files</a></span></p>
! 
! <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981040">7.2.3.1 Components for Configuration Files</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981041">7.2.4 Adding Domain Specific Registry Keys</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981042">7.2.5 Adding Site Specific Freelance
! Registry Keys</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981043">7.3 Additional Resources</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981044">7.4. Upgrades</a></span></p>
! 
! <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981045">Appendix A: Registry Values</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981046">A.1. Service parameters</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981047">Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981048">Value: LANadapter</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981049">Value: CacheSize</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981050">Value: ChunkSize</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981051">Value: Daemons</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981052">Value: ServerThreads</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981053">Value: Stats</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981054">Value: LogoffPreserveTokens</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981055">Value: RootVolume</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981056">Value: Mountroot</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981057">Value: CachePath</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981058">Value: NonPersistentCaching</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981059">Value: ValidateCache</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981060">Value: TrapOnPanic</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981061">Value: NetbiosName</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981062">Value: IsGateway</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981063">Value: ReportSessionStartups</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981064">Value: TraceBufferSize</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981065">Value: SysName</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981066">Value: SecurityLevel</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981067">Value: UseDNS</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981068">Value: FreelanceClient</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981069">Value: HideDotFiles</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981070">Value: MaxMpxRequests</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981071">Value: MaxVCPerServer</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981072">Value: Cell</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981073">Value: RxNoJumbo</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981074">Value: RxMaxMTU</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981075">Value: ConnDeadTimeout</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981076">Value: HardDeadTimeout</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981077">Value: TraceOption</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981078">Value: AllSubmount</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981079">Value: NoFindLanaByName</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981080">Value: MaxCPUs</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981081">Value: smbAuthType</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981082">Value: MaxLogSize</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981083">Value: FlushOnHibernate</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981084">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981085">Value: &lt;Drive Letter:&gt; for example
! &quot;G:&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981086">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981087">Value: CellServDBDir</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981088">Value: VerifyServiceSignature</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981089">Value: IoctlDebug</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981090">Value: MiniDumpType</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981091">Value: StoreAnsiFilenames</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981092">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981093">Value: &quot;smb/cifs share name&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981094">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981095">Value: &quot;numeric value&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981096">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981097">Value: &quot;numeric value&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981098">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981099">Value: &quot;submount name&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981100">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981101">Value: &quot;hostname or ip address&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981102">Regkey:
! [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\File]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981103">Value: &quot;hostname or ip address&quot;</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981104">A.2. Integrated Logon Network provider
! parameters</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981105">Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981106">Value: FailLoginsSilently</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981107">Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981108">Value: NoWarnings</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981109">Value: AuthentProviderPath</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981110">Value: Class</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981111">Value: DependOnGroup</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981112">Value: DependOnService</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981113">Value: Name</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981114">Value: ProviderPath</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981115">A.2.1 Domain specific configuration keys
! for the Network Provider</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981116">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981117">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981118">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
! name&quot;]</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981119">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981120">Example:</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981121">A.2.1.1 Domain specific configuration
! values</a></span></p>
! 
! <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981122">[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></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981123">Value: LogonOptions</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981124">Value: FailLoginsSilentl</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981125">Value: LogonScript</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981126">Value: LoginRetryInterval</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981127">Value: LoginSleepInterval</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981128">Value: TheseCells</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981129">A.2.1.2  Selection of effective values for
! domain specific configuration</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981130">A.2.1.3 Exceptions to A.2.1.2</a></span></p>
! 
! <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981131">2.1.3.1 'FailLoginsSilently'</a></span></p>
! 
! <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981132">2.1.3.2 'LogonScript'</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981133">A.3. AFS Credentials System Tray Tool
! parameters</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981134">Regkey:
! [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981135">Value: Gateway</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981136">Value: Cell</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981137">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]
! [HKCU\SOFTWARE\OpenAFS\Client]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981138">Value: ShowTrayIcon</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981139">Value: EnableKFW</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981140">Value: Use524</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981141">Value: AfscredsShortcutParams</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981142">Regkey: [HKCU\SOFTWARE\OpenAFS\Client]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981143">Value: Authentication Cell</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981144">Regkey: [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981145">Value: &quot;afs cell name&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981146">Regkey: [HKCU\SOFTWARE\OpenAFS\Client\Active
! Maps]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981147">Value: &quot;upper case drive letter&quot;</a></span></p>
! 
! <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981148">Regkey:
! [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</a></span></p>
! 
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981149">Value: &quot;upper case drive letter&quot;</a></span></p>
! 
! <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981150">A.4 OpenAFS Client Service Environment
! Variables</a></span></p>
  
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981151">Variable: AFS_RPC_ENCRYPT</a></span></p>
  
! <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139981152">Variable: AFS_RPC_PROTSEQ</a></span></p>
  
! <p class=MsoNormal>&nbsp;</p>
  
  </div>
  
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml:1.1.2.2 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml:removed
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml:1.1.2.2	Sun Sep 25 21:07:06 2005
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/filelist.xml	Fri Oct 13 15:52:11 2006
***************
*** 1,6 ****
- <xml xmlns:o="urn:schemas-microsoft-com:office:office">
-  <o:MainFile HRef="../logo.htm"/>
-  <o:File HRef="image001.jpg"/>
-  <o:File HRef="image002.jpg"/>
-  <o:File HRef="filelist.xml"/>
- </xml>
\ No newline at end of file
--- 0 ----
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo_files/image002.jpg
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml:1.1.2.2 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml:removed
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml:1.1.2.2	Sun Sep 25 22:01:23 2005
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml	Fri Oct 13 15:52:11 2006
***************
*** 1,6 ****
- <xml xmlns:o="urn:schemas-microsoft-com:office:office">
-  <o:MainFile HRef="../relnotes.htm"/>
-  <o:File HRef="preview.wmf"/>
-  <o:File HRef="header.htm"/>
-  <o:File HRef="filelist.xml"/>
- </xml>
\ No newline at end of file
--- 0 ----
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm:1.1.2.4 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm:removed
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm:1.1.2.4	Mon Jan  9 00:29:30 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/header.htm	Fri Oct 13 15:52:11 2006
***************
*** 1,84 ****
- <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:st2="urn:schemas-microsoft-com:office:smarttags"
- xmlns:st1="urn:schemas:contacts" xmlns="http://www.w3.org/TR/REC-html40">
- 
- <head>
- <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
- <meta name=ProgId content=Word.Document>
- <meta name=Generator content="Microsoft Word 11">
- <meta name=Originator content="Microsoft Word 11">
- <link id=Main-File rel=Main-File href="../relnotes.htm">
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="Street"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="PostalCode"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="State"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="City"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="address"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="country-region"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="place"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="PlaceName"/>
- <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
-  name="PlaceType"/>
- <o:SmartTagType namespaceuri="urn:schemas:contacts" name="GivenName"/>
- </head>
- 
- <body lang=EN-US link=navy vlink=maroon>
- 
- <div style='mso-element:footnote-separator' id=fs>
- 
- <p class=MsoNormal><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
- 
- <hr align=left size=1 width="33%">
- 
- <![endif]></span></p>
- 
- </div>
- 
- <div style='mso-element:footnote-continuation-separator' id=fcs>
- 
- <p class=MsoNormal><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
- 
- <hr align=left size=1>
- 
- <![endif]></span></p>
- 
- </div>
- 
- <div style='mso-element:endnote-separator' id=es>
- 
- <p class=MsoNormal><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
- 
- <hr align=left size=1 width="33%">
- 
- <![endif]></span></p>
- 
- </div>
- 
- <div style='mso-element:endnote-continuation-separator' id=ecs>
- 
- <p class=MsoNormal><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
- 
- <hr align=left size=1>
- 
- <![endif]></span></p>
- 
- </div>
- 
- <div style='mso-element:header' id=h2>
- 
- <p class=MsoHeader>OpenAFS for Windows 1.4.0 Release Notes</p>
- 
- </div>
- 
- </body>
- 
- </html>
--- 0 ----
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/preview.wmf
Index: openafs/src/WINNT/eventlog/lang/NTMakefile
diff -c openafs/src/WINNT/eventlog/lang/NTMakefile:1.6 openafs/src/WINNT/eventlog/lang/NTMakefile:1.6.2.1
*** openafs/src/WINNT/eventlog/lang/NTMakefile:1.6	Fri Nov 21 03:00:02 2003
--- openafs/src/WINNT/eventlog/lang/NTMakefile	Tue Jun  6 10:44:53 2006
***************
*** 70,73 ****
  install9x: install
  
  clean::
! 	$(DEL) $(INCFILES) $(DLLFILE)
\ No newline at end of file
--- 70,77 ----
  install9x: install
  
  clean::
! 	$(DEL) $(INCFILES) $(DLLFILE)
! 	$(DEL) $(LANGNAME)\afsevent.h
! 	$(DEL) $(LANGNAME)\event.h
! 	$(DEL) $(LANGNAME)\event.rc
! 	$(DEL) $(LANGNAME)\MSG*.bin
Index: openafs/src/WINNT/install/NSIS/CellServDB
diff -c openafs/src/WINNT/install/NSIS/CellServDB:1.2.2.4 openafs/src/WINNT/install/NSIS/CellServDB:1.2.2.5
*** openafs/src/WINNT/install/NSIS/CellServDB:1.2.2.4	Sat Oct 15 20:56:46 2005
--- openafs/src/WINNT/install/NSIS/CellServDB	Sun Oct  8 23:14:37 2006
***************
*** 1,15 ****
! >grand.central.org      #GCO Public CellServDB 15 Oct 2005
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #afsdb1.wu-wien.ac.at
! 137.208.8.12                    #caesar.wu-wien.ac.at
! 137.208.127.33                  #buddy.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
--- 1,19 ----
! >grand.central.org      #GCO Public CellServDB 08 Oct 2006
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #goya.wu-wien.ac.at
! 137.208.7.57                    #caravaggio.wu-wien.ac.at
! 137.208.127.57                  #vermeer.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
+ >cgv.tugraz.at          #CGV cell
+ 129.27.224.133                  #phobos.cgv.tugraz.at
+ 129.27.224.134                  #deimos.cgv.tugraz.at
+ 129.27.224.210                  #trinculo.cgv.tugraz.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
***************
*** 22,30 ****
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.2.6                     #kd1.epfl.ch
! 128.178.2.7                     #kd2.epfl.ch
! 128.178.2.8                     #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
--- 26,34 ----
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.109.111                 #kd1.epfl.ch
! 128.178.109.112                 #kd2.epfl.ch
! 128.178.109.113                 #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
***************
*** 37,44 ****
  129.129.190.142                 #afs02.psi.ch
  >extundo.com            #Simon Josefsson's cell
  195.42.214.241                  #slipsten.extundo.com
- >mekinok.com            #Mekinok, Inc.
- 4.36.43.98                      #loggerhead.mekinok.com
  >membrain.com           #membrain.com
  66.93.118.125                   #stormy
  130.85.24.11                    #weasel
--- 41,46 ----
***************
*** 105,121 ****
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 141.35.2.160                    #lc00.rz.uni-jena.de
! 141.35.7.9                      #fsuj01.rz.uni-jena.de
! 141.35.7.10                     #zaphod.rz.uni-jena
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.30                    #fileserv3.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.140.190                  #rzkbserv.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
--- 107,123 ----
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 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
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.10                    #lyra.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.141.243                  #agrippina.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
***************
*** 172,179 ****
  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.56.129                    #nihao.sbp.ri.cmu.edu
! 128.2.56.136                    #youtheman.sbp.ri.cmu.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
--- 174,181 ----
  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
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 186,191 ****
--- 188,195 ----
  129.170.16.22                   #halley.dartmouth.edu
  129.170.16.42                   #oort.dartmouth.edu
  129.170.16.43                   #cygnusx1.dartmouth.edu
+ >cs.fhm.edu             #Department Computer Science Munich University Of Applied Science
+ 129.187.208.2                   #srv1.informatik.fh-muenchen.de
  >eecs.harvard.edu       #Harvard - EECS
  140.247.60.61                   #zermelo.eecs.harvard.edu
  140.247.60.83                   #corfu.eecs.harvard.edu
***************
*** 261,266 ****
--- 265,280 ----
  134.79.18.25                    #afsdb1.slac.stanford.edu
  134.79.18.26                    #afsdb2.slac.stanford.edu
  134.79.18.27                    #afsdb3.slac.stanford.edu
+ >ucdavis.edu            #University of California at Davis
+ 169.237.104.100                 #afs1.ucdavis.edu
+ 169.237.235.176                 #afs2.ucdavis.edu
+ 169.237.247.91                  #afs3.ucdavis.edu
+ >home.ucdavis.edu       #University of California at Davis home directories
+ 169.237.105.91                  #home1.ucdavis.edu
+ 169.237.105.92                  #home2.ucdavis.edu
+ 169.237.105.93                  #home3.ucdavis.edu
+ >physics.ucsb.edu       #UC Santa Barbara, Physics Dept
+ 128.111.18.161                  #ledzeppelin.physics.ucsb.edu
  >cats.ucsc.edu          #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
  128.114.129.14                  #elan.ucsc.edu
  128.114.129.15                  #ichabod.ucsc.edu
***************
*** 291,316 ****
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.106                  #linat06.grid.umich.edu
! 141.211.43.109                  #atgrid.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >umr.edu                #University of Missouri - Rolla
! 131.151.1.59                    #afsdb1.umr.edu
! 131.151.1.70                    #afsdb3.umr.edu
! 131.151.1.146                   #afsdb2.umr.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.13.7                     #as-sm2.uncc.edu
! 152.15.30.27                    #fs-kenn3.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
--- 305,328 ----
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.103                  #linat03.grid.umich.edu
! 141.211.43.104                  #linat04.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >sph.umich.edu          #University of Michigan -- School of Public Health
! 141.211.50.41                   #afssph0.sph.umich.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.93.186                   #as-ece1.uncc.edu
! 152.15.181.175                  #as-me1.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
***************
*** 344,349 ****
--- 356,363 ----
  >dapnia.saclay.cea.fr   #CEA DAPNIA
  132.166.32.7                    #dphrsg.saclay.cea.fr
  132.166.32.12                   #dphrsl.saclay.cea.fr
+ >grif.fr                #GRIF cell
+ 192.54.208.18                   #node03.datagrid.cea.fr
  >in2p3.fr               #IN2P3 production cell
  134.158.232.11                  #ccafsdb1.in2p3.fr
  134.158.232.12                  #ccafsdb2.in2p3.fr
***************
*** 401,406 ****
--- 415,421 ----
  192.84.134.75                   #afsna.na.infn.it
  >ba.infn.it             #INFN, Sezione di Bari
  193.206.185.235                 #baafsserver.ba.infn.it
+ 193.206.185.236                 #debsrv.ba.infn.it
  >kloe.infn.it           #INFN, KLOE experiment at Laboratori di Frascati
  192.135.25.111                  #kloeafs1.lnf.infn.it
  192.135.25.112                  #kloeafs2.lnf.infn.it
***************
*** 451,461 ****
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 66.92.236.139                   #afs.sinenomine.net
  >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
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 466,478 ----
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 192.204.203.218                 #va.sinenomine.net
  >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
***************
*** 484,505 ****
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >openafs.org            #OpenAFS Project
! 18.7.14.88                      #grand-opening.mit.edu
! 128.2.191.224                   #penn.central.org
! 130.237.48.87                   #andrew.e.kth.se
! >e.kth.se               #Royal Institute of Technology, Elektro
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.141                  #rasmus13.hallf.kth.se
! 130.237.24.152                  #rasmus3.hallf.kth.se
! 130.237.24.177                  #rasmus29.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
! 130.237.202.12                  #afsdb2.isk.kth.se
! 130.237.206.13                  #afsdb1.isk.kth.se
! 130.237.209.141                 #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
--- 501,516 ----
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >kth.se                 #Royal Institute of Technology, Stockholm, Sweden
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.11                   #afs1.hallf.kth.se
! 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.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
***************
*** 543,548 ****
--- 554,566 ----
  193.2.120.2                     #solkan.p-ng.si
  >phy.bris.ac.uk         #Bristol University - phyics
  137.222.58.9                    #afs1.phy.bris.ac.uk
+ >inf.ed.ac.uk           #School of Informatics, University of Edinburgh
+ 129.215.64.16                   #afsdb0.inf.ed.ac.uk
+ 129.215.64.17                   #afsdb1.inf.ed.ac.uk
+ 129.215.64.18                   #afsdb2.inf.ed.ac.uk
+ >ic.ac.uk               #Imperial College London
+ 155.198.63.148                  #icafs2.cc.ic.ac.uk
+ 155.198.63.149                  #icafs1.cc.ic.ac.uk
  >hep.man.ac.uk          #Manchester HEP
  194.36.2.3                      #afs1.hep.man.ac.uk
  194.36.2.4                      #afs2.hep.man.ac.uk
Index: openafs/src/WINNT/install/NSIS/OpenAFS.nsi
diff -c openafs/src/WINNT/install/NSIS/OpenAFS.nsi:1.69.2.16 openafs/src/WINNT/install/NSIS/OpenAFS.nsi:1.69.2.19
*** openafs/src/WINNT/install/NSIS/OpenAFS.nsi:1.69.2.16	Tue Sep 27 00:38:38 2005
--- openafs/src/WINNT/install/NSIS/OpenAFS.nsi	Wed Sep  6 02:24:55 2006
***************
*** 102,108 ****
  ;--------------------------------
  ;Modern UI Configuration
  
!   ;!define MUI_LICENSEPAGE
    !define MUI_CUSTOMPAGECOMMANDS
    !define MUI_WELCOMEPAGE
    !define MUI_COMPONENTSPAGE
--- 102,108 ----
  ;--------------------------------
  ;Modern UI Configuration
  
!   !define MUI_LICENSEPAGE
    !define MUI_CUSTOMPAGECOMMANDS
    !define MUI_WELCOMEPAGE
    !define MUI_COMPONENTSPAGE
***************
*** 117,122 ****
--- 117,123 ----
    
    
    !insertmacro MUI_PAGE_WELCOME
+   !insertmacro MUI_PAGE_LICENSE "Licenses.rtf"
    !insertmacro MUI_PAGE_COMPONENTS
    !insertmacro MUI_PAGE_DIRECTORY
    Page custom AFSPageGetCellServDB
***************
*** 125,131 ****
    !insertmacro MUI_PAGE_INSTFILES
    !insertmacro MUI_PAGE_FINISH
    
-   ;LicenseData "Licenses.rtf"
  ;--------------------------------
  ;Languages
  
--- 126,131 ----
***************
*** 1035,1048 ****
  
  Section /o "Software Development Kit (SDK)" secSDK
  
!     SetOutPath "$INSTDIR\Client\Program\lib"
!     File /r "${AFS_CLIENT_LIBDIR}\*.*"
  
!     SetOutPath "$INSTDIR\Client\Program\Include"
!     File /r "${AFS_BUILD_INCDIR}\*.*"    
  
     ; Client Sample
!    SetOutPath "$INSTDIR\Client\Program\Sample"
     File "..\..\afsd\sample\token.c"
  
     ;Store install folder
--- 1035,1048 ----
  
  Section /o "Software Development Kit (SDK)" secSDK
  
!    SetOutPath "$INSTDIR\SDK\lib"
!    File /r "${AFS_CLIENT_LIBDIR}\*.*"
  
!    SetOutPath "$INSTDIR\SDK\Include"
!    File /r "${AFS_BUILD_INCDIR}\*.*"    
  
     ; Client Sample
!    SetOutPath "$INSTDIR\SDK\Sample"
     File "..\..\afsd\sample\token.c"
  
     ;Store install folder
***************
*** 1412,1418 ****
  ; the SDK is installed.  If not, we don't need to push it on the user.
  ; If they are there, we want to make sure they match the installed version.
  CheckSDK:
!    IfFileExists "$INSTDIR\Client\Program\Include\main.h" +1 NoSDK
     SectionGetFlags ${secSDK} $0
     IntOp $0 $0 | ${SF_SELECTED}
     SectionSetFlags ${secSDK} $0
--- 1412,1418 ----
  ; the SDK is installed.  If not, we don't need to push it on the user.
  ; If they are there, we want to make sure they match the installed version.
  CheckSDK:
!    IfFileExists "$INSTDIR\SDK\Include\main.h" +1 NoSDK
     SectionGetFlags ${secSDK} $0
     IntOp $0 $0 | ${SF_SELECTED}
     SectionSetFlags ${secSDK} $0
***************
*** 1802,1816 ****
  
    Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.pdb"
  
    Delete /REBOOTOK "$INSTDIR\Client\Program\*"
!   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\*"
!   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\afs\*"
!   Delete /REBOOTOK "$INSTDIR\Client\Program\Include\rx\*"
!   Delete /REBOOTOK "$INSTDIR\Client\Program\Sample\*"
!   RMDir  "$INSTDIR\Client\Program\Sample"
!   RMDir  "$INSTDIR\Client\Program\Include\afs"
!   RMDir  "$INSTDIR\Client\Program\Include\rx"
!   RMDir  "$INSTDIR\Client\Program\Include"
    RMDir  "$INSTDIR\Client\Program"
    RMDir  "$INSTDIR\Client"
  
--- 1802,1822 ----
  
    Delete /REBOOTOK "$INSTDIR\Client\Program\afscreds.pdb"
  
+   Delete /REBOOTOK "$INSTDIR\SDK\Include\*"
+   Delete /REBOOTOK "$INSTDIR\SDK\Include\afs\*"
+   Delete /REBOOTOK "$INSTDIR\SDK\Include\rx\*"
+   Delete /REBOOTOK "$INSTDIR\SDK\Sample\*"
+   Delete /REBOOTOK "$INSTDIR\SDK\*"
+ 
+   RMDir  "$INSTDIR\SDK\Sample"
+   RMDir  "$INSTDIR\SDK\Include\afs"
+   RMDir  "$INSTDIR\SDK\Include\rx"
+   RMDir  "$INSTDIR\SDK\Include"
+   RMDir  "$INSTDIR\SDK"
+ 
    Delete /REBOOTOK "$INSTDIR\Client\Program\*"
!   Delete /REBOOTOK "$INSTDIR\Client\*"
! 
    RMDir  "$INSTDIR\Client\Program"
    RMDir  "$INSTDIR\Client"
  
***************
*** 2813,2818 ****
--- 2819,2829 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1033.pdb"
  !endif
  
+    File "..\..\doc\help\en_US\afs-light.CNT"
+    File "..\..\doc\help\en_US\afs-light.hlp"
+    File "..\..\doc\help\en_US\afs-nt.CNT"
+    File "..\..\doc\help\en_US\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1033.dll"           "$INSTDIR\Common\afs_config_1033.dll" "$INSTDIR"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1033.dll"              "$INSTDIR\Common\afs_cpa_1033.dll" "$INSTDIR"
***************
*** 2825,2834 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1033.dll"   "$INSTDIR\Common\TaAfsServerManager_1033.dll" "$INSTDIR"
     File "..\..\doc\help\en_US\afs-cc.CNT"
     File "..\..\doc\help\en_US\afs-cc.hlp"
-    File "..\..\doc\help\en_US\afs-light.CNT"
-    File "..\..\doc\help\en_US\afs-light.hlp"
-    File "..\..\doc\help\en_US\afs-nt.CNT"
-    File "..\..\doc\help\en_US\afs-nt.HLP"
     File "..\..\doc\help\en_US\taafscfg.CNT"
     File "..\..\doc\help\en_US\taafscfg.hlp"
     File "..\..\doc\help\en_US\taafssvrmgr.CNT"
--- 2836,2841 ----
***************
*** 2871,2876 ****
--- 2878,2888 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afscreds_1032.pdb"
  !endif
  
+    File "..\..\doc\help\de_DE\afs-light.CNT"
+    File "..\..\doc\help\de_DE\afs-light.hlp"
+    File "..\..\doc\help\de_DE\afs-nt.CNT"
+    File "..\..\doc\help\de_DE\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1032.dll"           "$INSTDIR\Common\afs_config_1032.dll" "$INSTDIR"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1032.dll"              "$INSTDIR\Common\afs_cpa_1032.dll" "$INSTDIR" 
***************
*** 2883,2892 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1032.dll"   "$INSTDIR\Common\TaAfsServerManager_1032.dll" "$INSTDIR" 
     File "..\..\doc\help\de_DE\afs-cc.CNT"
     File "..\..\doc\help\de_DE\afs-cc.hlp"
-    File "..\..\doc\help\de_DE\afs-light.CNT"
-    File "..\..\doc\help\de_DE\afs-light.hlp"
-    File "..\..\doc\help\de_DE\afs-nt.CNT"
-    File "..\..\doc\help\de_DE\afs-nt.HLP"
     File "..\..\doc\help\de_DE\taafscfg.CNT"
     File "..\..\doc\help\de_DE\taafscfg.hlp"
     File "..\..\doc\help\de_DE\taafssvrmgr.CNT"
--- 2895,2900 ----
***************
*** 2929,2934 ****
--- 2937,2947 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1034.pdb"
  !endif
  
+    File "..\..\doc\help\es_ES\afs-light.CNT"
+    File "..\..\doc\help\es_ES\afs-light.hlp"
+    File "..\..\doc\help\es_ES\afs-nt.CNT"
+    File "..\..\doc\help\es_ES\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1034.dll"          "$INSTDIR\Common\afs_config_1034.dll" "$INSTDIR"  
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1034.dll"             "$INSTDIR\Common\afs_cpa_1034.dll" "$INSTDIR"  
***************
*** 2941,2950 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1034.dll"  "$INSTDIR\Common\TaAfsServerManager_1034.dll" "$INSTDIR"  
     File "..\..\doc\help\es_ES\afs-cc.CNT"
     File "..\..\doc\help\es_ES\afs-cc.hlp"
-    File "..\..\doc\help\es_ES\afs-light.CNT"
-    File "..\..\doc\help\es_ES\afs-light.hlp"
-    File "..\..\doc\help\es_ES\afs-nt.CNT"
-    File "..\..\doc\help\es_ES\afs-nt.HLP"
     File "..\..\doc\help\es_ES\taafscfg.CNT"
     File "..\..\doc\help\es_ES\taafscfg.hlp"
     File "..\..\doc\help\es_ES\taafssvrmgr.CNT"
--- 2954,2959 ----
***************
*** 2987,2992 ****
--- 2996,3006 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1041.pdb"
  !endif
  
+    File "..\..\doc\help\ja_JP\afs-light.CNT"
+    File "..\..\doc\help\ja_JP\afs-light.hlp"
+    File "..\..\doc\help\ja_JP\afs-nt.CNT"
+    File "..\..\doc\help\ja_JP\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1041.dll"           "$INSTDIR\Common\afs_config_1041.dll" "$INSTDIR"   
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1041.dll"              "$INSTDIR\Common\afs_cpa_1041.dll" "$INSTDIR"   
***************
*** 2999,3008 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1041.dll"   "$INSTDIR\Common\TaAfsServerManager_1041.dll" "$INSTDIR"   
     File "..\..\doc\help\ja_JP\afs-cc.CNT"
     File "..\..\doc\help\ja_JP\afs-cc.hlp"
-    File "..\..\doc\help\ja_JP\afs-light.CNT"
-    File "..\..\doc\help\ja_JP\afs-light.hlp"
-    File "..\..\doc\help\ja_JP\afs-nt.CNT"
-    File "..\..\doc\help\ja_JP\afs-nt.HLP"
     File "..\..\doc\help\ja_JP\taafscfg.CNT"
     File "..\..\doc\help\ja_JP\taafscfg.hlp"
     File "..\..\doc\help\ja_JP\taafssvrmgr.CNT"
--- 3013,3018 ----
***************
*** 3045,3050 ****
--- 3055,3065 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1042.pdb"
  !endif
  
+    File "..\..\doc\help\ko_KR\afs-light.CNT"
+    File "..\..\doc\help\ko_KR\afs-light.hlp"
+    File "..\..\doc\help\ko_KR\afs-nt.CNT"
+    File "..\..\doc\help\ko_KR\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1042.dll"           "$INSTDIR\Common\afs_config_1042.dll" "$INSTDIR"    
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1042.dll"              "$INSTDIR\Common\afs_cpa_1042.dll" "$INSTDIR"    
***************
*** 3057,3066 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1042.dll"   "$INSTDIR\Common\TaAfsServerManager_1042.dll" "$INSTDIR"    
     File "..\..\doc\help\ko_KR\afs-cc.CNT"
     File "..\..\doc\help\ko_KR\afs-cc.hlp"
-    File "..\..\doc\help\ko_KR\afs-light.CNT"
-    File "..\..\doc\help\ko_KR\afs-light.hlp"
-    File "..\..\doc\help\ko_KR\afs-nt.CNT"
-    File "..\..\doc\help\ko_KR\afs-nt.HLP"
     File "..\..\doc\help\ko_KR\taafscfg.CNT"
     File "..\..\doc\help\ko_KR\taafscfg.hlp"
     File "..\..\doc\help\ko_KR\taafssvrmgr.CNT"
--- 3072,3077 ----
***************
*** 3104,3109 ****
--- 3115,3125 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1046.pdb"
  !endif
  
+    File "..\..\doc\help\pt_BR\afs-light.CNT"
+    File "..\..\doc\help\pt_BR\afs-light.hlp"
+    File "..\..\doc\help\pt_BR\afs-nt.CNT"
+    File "..\..\doc\help\pt_BR\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1046.dll"           "$INSTDIR\Common\afs_config_1046.dll" "$INSTDIR"     
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1046.dll"              "$INSTDIR\Common\afs_cpa_1046.dll" "$INSTDIR"     
***************
*** 3116,3125 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1046.dll"   "$INSTDIR\Common\TaAfsServerManager_1046.dll" "$INSTDIR"     
     File "..\..\doc\help\pt_BR\afs-cc.CNT"
     File "..\..\doc\help\pt_BR\afs-cc.hlp"
-    File "..\..\doc\help\pt_BR\afs-light.CNT"
-    File "..\..\doc\help\pt_BR\afs-light.hlp"
-    File "..\..\doc\help\pt_BR\afs-nt.CNT"
-    File "..\..\doc\help\pt_BR\afs-nt.HLP"
     File "..\..\doc\help\pt_BR\taafscfg.CNT"
     File "..\..\doc\help\pt_BR\taafscfg.hlp"
     File "..\..\doc\help\pt_BR\taafssvrmgr.CNT"
--- 3132,3137 ----
***************
*** 3162,3167 ****
--- 3174,3184 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_2052.pdb"
  !endif
  
+    File "..\..\doc\help\zh_CN\afs-light.CNT"
+    File "..\..\doc\help\zh_CN\afs-light.hlp"
+    File "..\..\doc\help\zh_CN\afs-nt.CNT"
+    File "..\..\doc\help\zh_CN\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_2052.dll"           "$INSTDIR\Common\afs_config_2052.dll" "$INSTDIR"      
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_2052.dll"              "$INSTDIR\Common\afs_cpa_2052.dll" "$INSTDIR"      
***************
*** 3174,3183 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_2052.dll"   "$INSTDIR\Common\TaAfsServerManager_2052.dll" "$INSTDIR"      
     File "..\..\doc\help\zh_CN\afs-cc.CNT"
     File "..\..\doc\help\zh_CN\afs-cc.hlp"
-    File "..\..\doc\help\zh_CN\afs-light.CNT"
-    File "..\..\doc\help\zh_CN\afs-light.hlp"
-    File "..\..\doc\help\zh_CN\afs-nt.CNT"
-    File "..\..\doc\help\zh_CN\afs-nt.HLP"
     File "..\..\doc\help\zh_CN\taafscfg.CNT"
     File "..\..\doc\help\zh_CN\taafscfg.hlp"
     File "..\..\doc\help\zh_CN\taafssvrmgr.CNT"
--- 3191,3196 ----
***************
*** 3220,3225 ****
--- 3233,3243 ----
     ;File "${AFS_CLIENT_BUILDDIR}\afs_shl_ext_1028.pdb"
  !endif
  
+    File "..\..\doc\help\zh_TW\afs-light.CNT"
+    File "..\..\doc\help\zh_TW\afs-light.hlp"
+    File "..\..\doc\help\zh_TW\afs-nt.CNT"
+    File "..\..\doc\help\zh_TW\afs-nt.HLP"
+ 
     SetOutPath "$INSTDIR\Common"
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_config_1028.dll"           "$INSTDIR\Common\afs_config_1028.dll" "$INSTDIR"       
     !insertmacro ReplaceDLL "${AFS_CLIENT_BUILDDIR}\afs_cpa_1028.dll"              "$INSTDIR\Common\afs_cpa_1028.dll" "$INSTDIR"       
***************
*** 3232,3241 ****
     !insertmacro ReplaceDLL "${AFS_SERVER_BUILDDIR}\TaAfsServerManager_1028.dll"   "$INSTDIR\Common\TaAfsServerManager_1028.dll" "$INSTDIR"       
     File "..\..\doc\help\zh_TW\afs-cc.CNT"
     File "..\..\doc\help\zh_TW\afs-cc.hlp"
-    File "..\..\doc\help\zh_TW\afs-light.CNT"
-    File "..\..\doc\help\zh_TW\afs-light.hlp"
-    File "..\..\doc\help\zh_TW\afs-nt.CNT"
-    File "..\..\doc\help\zh_TW\afs-nt.HLP"
     File "..\..\doc\help\zh_TW\taafscfg.CNT"
     File "..\..\doc\help\zh_TW\taafscfg.hlp"
     File "..\..\doc\help\zh_TW\taafssvrmgr.CNT"
--- 3250,3255 ----
Index: openafs/src/WINNT/install/NSIS/licenses.rtf
diff -c /dev/null openafs/src/WINNT/install/NSIS/licenses.rtf:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:11 2006
--- openafs/src/WINNT/install/NSIS/licenses.rtf	Wed Sep  6 02:24:55 2006
***************
*** 0 ****
--- 1,679 ----
+ {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
+ {\f11\froman\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f37\froman\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}
+ {\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+ {\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f58\fmodern\fcharset238\fprq1 Courier New CE;}
+ {\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
+ {\f64\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+ \red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+ \red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+ \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+ \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+ \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}
+ {\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid5512945\rsid16720314}{\*\generator Microsoft Word 11.0.8026;}{\info{\operator Jeffrey Altman}{\creatim\yr2006\mo9\dy6\min9}{\revtim\yr2006\mo9\dy6\min27}{\version2}{\edmins18}{\nofpages12}
+ {\nofwords5339}{\nofchars30435}{\nofcharsws35703}{\vern24609}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect 
+ \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl\rsidroot5512945 \fet0{\*\wgrffmtfilter 013f}
+ \ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}
+ {\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang 
+ {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 
+ \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 IBM Public License Version 1.0
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM\hich\af2\dbch\af11\loch\f2  PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF\hich\af2\dbch\af11\loch\f2 
+   THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 1. DEFINITIONS
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Contribution" m\hich\af2\dbch\af11\loch\f2 eans:
+ \par \hich\af2\dbch\af11\loch\f2 a) in the case of International Business Machines Corporation ("IBM"),\hich\af2\dbch\af11\loch\f2  the Original Program, and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) in the case of each Contributor,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 i) changes to the Program, and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 ii) additions to the Program;
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 wh\hich\af2\dbch\af11\loch\f2 ere such changes and/or additions to the Program originate from and\hich\af2\dbch\af11\loch\f2  are distributed by that particular Contributor. A Contribution\hich\af2\dbch\af11\loch\f2 
+  'originates' from a Contributor if it was added to the Program by\hich\af2\dbch\af11\loch\f2  such Contributor itself or anyone acti\hich\af2\dbch\af11\loch\f2 ng on such Contributor's\hich\af2\dbch\af11\loch\f2 
+  behalf. Contributions do not include additions to the Program\hich\af2\dbch\af11\loch\f2  which: (i) are separate modules of software distributed in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 conjunction with the Program under their own license agreement,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and (ii) are not d\hich\af2\dbch\af11\loch\f2 erivative works of the Program.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 "Contributor" means IBM and any other entity that distributes the\hich\af2\dbch\af11\loch\f2  Program.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Licensed Patents " mean patent claims licensable by a Contributor\hich\af2\dbch\af11\loch\f2  which are necessarily infringed by the use or sale of its Contribution}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 alone or when combined with the Program.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Original Program" means the original version of the software}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 accompanying this Agreement as released by IBM, including source c\hich\af2\dbch\af11\loch\f2 ode,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 object code and documentation, if any.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Program" means the Original Program and Contributions.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Recipient" means anyone who receives the Program under this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Agreement, including all Contributors.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 2. GRANT OF RIGHTS
+ \par \hich\af2\dbch\af11\loch\f2 a) Subj\hich\af2\dbch\af11\loch\f2 ect to the terms of this Agreement, each Contributor hereby\hich\af2\dbch\af11\loch\f2  grants Recipient a non-exclusive, worldwide, royalty-free\hich\af2\dbch\af11\loch\f2 
+  copyright license to reproduce, prepare derivative works of,\hich\af2\dbch\af11\loch\f2   publicly display, publicly perform, distribute and subli\hich\af2\dbch\af11\loch\f2 cense the\hich\af2\dbch\af11\loch\f2 
+  Contribution of such Contributor, if any, and such derivative}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ works, in source code and object code form.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) Subject to the terms of this Agreement, each Contributor hereby\hich\af2\dbch\af11\loch\f2  grants Recipient a non-exclusive, worldwi\hich\af2\dbch\af11\loch\f2 de, royalty-free patent\hich\af2\dbch\af11\loch\f2 
+  license under Licensed Patents to make, use, sell, offer to sell,\hich\af2\dbch\af11\loch\f2  import and otherwise transfer the Contribution of such\hich\af2\dbch\af11\loch\f2  Contributor, if any, in source code and object code form. This
+ \hich\af2\dbch\af11\loch\f2  patent license shall\hich\af2\dbch\af11\loch\f2  apply to the combination of the Contribution\hich\af2\dbch\af11\loch\f2  and the Program if, at the time the Contribution is added by the\hich\af2\dbch\af11\loch\f2 
+  Contributor, such addition of the Contribution causes such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ combination to be covered by the Licensed Patents. The patent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ license shall not apply to any other combinations which include}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ the Contribution. No hardware per se is licensed hereunder.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 c) Recipient understands that although each Contributor grants the\hich\af2\dbch\af11\loch\f2  licenses to its Contributions set\hich\af2\dbch\af11\loch\f2  forth herein, no assurances are\hich\af2\dbch\af11\loch\f2 
+  provided by any Contributor that the Program does not infringe the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ patent or other intellectual property rights of any other entity.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ Each Contributor disclaims any liability to Recipient for claims}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ brought by any other entity based on infringement of intellectual}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ property rights or otherwise. As a condition to exercising the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ rights and licenses granted hereunder, each Recipient hereby}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ assumes sole responsibility to secure any \hich\af2\dbch\af11\loch\f2 other intellectual\hich\af2\dbch\af11\loch\f2  property rights needed, if any. For example, if a third party\hich\af2\dbch\af11\loch\f2 
+  patent license is required to allow Recipient to distribute the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ Program, it is Recipient's responsibility to acquire that license}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ before distributi\hich\af2\dbch\af11\loch\f2 ng the Program.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 d) Each Contributor represents that to its knowledge it has sufficient\hich\af2\dbch\af11\loch\f2        copyright rights in its Contribution, if any, to grant the\hich\af2\dbch\af11\loch\f2 
+  copyright license set forth in this Agreement.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 3. REQUIREMENTS
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 A Co\hich\af2\dbch\af11\loch\f2 ntributor may choose to distribute the Program in object code form\hich\af2\dbch\af11\loch\f2  under its own license agreement, provided that:}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 
+ \par 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 a) it complies with the terms and conditions of this Agreement; and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) its license agreement:
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 i) effectively disclaims on behalf of all Contributors all warranties\hich\af2\dbch\af11\loch\f2  and conditions, express and implied, including warranties or\hich\af2\dbch\af11\loch\f2 
+  conditions of title and non-infringement, and implied warranties}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ or conditions of merchantability and\hich\af2\dbch\af11\loch\f2  fitness for a particular}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 purpose;
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 ii) effectively excludes on behalf of all Contributors all liability\hich\af2\dbch\af11\loch\f2  for damages, including direct, indirect, special, incidental and\hich\af2\dbch\af11\loch\f2 
+  consequential damages, such as lost profits;
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 iii) states that any provisions which differ from this Agreement are}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 offered by that Contributor alone and not by any other party; and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 iv) states that source code for the Program is available from such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  Contributor, and informs lic\hich\af2\dbch\af11\loch\f2 ensees how to obtain it in a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 reasonable manner on or through a medium customarily used for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  s}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 oftware exchange.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 When the Program is made available in source code form:}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 a) it must be made available under this Agreement; and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) a copy of this Agreement must be included with each copy of the\hich\af2\dbch\af11\loch\f2  Program.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 Each Contributor must include the following in a conspicuous location}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 in the Program:
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 \hich\f2 Copyright \'a9\loch\f2  \{date here\}\hich\af2\dbch\af11\loch\f2 , International Business Machines Corporation}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and others. All Rights Reserved.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 In addition, each Contributor must identify itself as the originator}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 of its Contribution, if any, in a manner that reasonably allows}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 subsequent Recipient\hich\af2\dbch\af11\loch\f2 s to identify the originator of the Contribution.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 4. COMMERCIAL DISTRIBUTION
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 Commercial distributors of software may accept certain}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 responsibilities with respect to end users, business partners and the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 like. While this license is intend\hich\af2\dbch\af11\loch\f2 ed to facilitate the commercial use}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 of the Program, the Contributor who includes the Program in a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 commercial product offering should do so in a manner which does not\hich\af2\dbch\af11\loch\f2  create potential liability for other Contributors. Therefore, if a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Contributor\hich\af2\dbch\af11\loch\f2  includes the Program in a commercial product offering,}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 such Contributor ("Commercial Contributor") hereby agrees to defend}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and indemnify every other Contributor ("Indemnified Contributor")}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 against any losses, damages and costs (collectively "Loss\hich\af2\dbch\af11\loch\f2 
+ es") arising}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ from claims, lawsuits and other legal actions brought by a third party}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ against the Indemnified Contributor to the extent caused by the acts}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ or omissions of such Commercial Contributor in connection with its}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ distribution of the Prog\hich\af2\dbch\af11\loch\f2 ram in a commercial product offering. The}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 obligations in this section do not apply to any claims or Losses}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 relating to any actual or alleged intellectual property infringement.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 In order to qualify, an Indemnified Contributor must: a) promptly\hich\af2\dbch\af11\loch\f2  notify the Commercial Contributor in writing of such claim, and b)}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 allow the Commercial Contributor to control, and cooperate with the\hich\af2\dbch\af11\loch\f2 
+  Commercial Contributor in, the defense and any related settlement\hich\af2\dbch\af11\loch\f2  negotiations. The Indemnified Contributor m\hich\af2\dbch\af11\loch\f2 ay participate in any such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 claim at its own expense.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 For example, a Contributor might include the Program in a commercial}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 product offering, Product X. That Contributor is then a Commercial}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Contributor. If that Commercial Contributor then ma\hich\af2\dbch\af11\loch\f2 kes performance}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 claims, or offers warranties related to Product X, those performance}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  c}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 laims and warranties are such Commercial Contributor's responsibility\hich\af2\dbch\af11\loch\f2  alone. Under this section, the Commercial Contributor would have to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 defend claims agains\hich\af2\dbch\af11\loch\f2 t the other Contributors related to those}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 performance claims and warranties, and if a court requires any other}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Contributor to pay any damages as a result, the Commercial Contributor}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 must pay those damages.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 5. NO WARRANTY
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 EXCEPT AS EX\hich\af2\dbch\af11\loch\f2 PRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY\hich\af2\dbch\af11\loch\f2  WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCH\hich\af2\dbch\af11\loch\f2 ANTABILITY}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 responsible for determining the appropriateness of using and}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 distributing the Program and assumes all risks associated with its}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 exercise of rights under this Agreement, in\hich\af2\dbch\af11\loch\f2 cluding but not limited to}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the risks and costs of program errors, compliance with applicable}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 laws, damage to or loss of data, programs or equipment, and}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 unavailability or interruption of operations.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 6. DISCLAIMER OF LIABILITY
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 WITHOUT LIMITATION LOST PROFITS), HOW\hich\af2\dbch\af11\loch\f2 EVER CAUSED AND ON ANY THEORY OF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  \hich\af2\dbch\af11\loch\f2 L}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 IABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED\hich\af2\dbch\af11\loch\f2  HEREUNDER, EVE\hich\af2\dbch\af11\loch\f2 
+ N IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 7. GENERAL
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 If any provision of this Agreement is invalid or unenforceable under}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 applicable law, it shall not affect the validity or enforceability of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the remainder of the terms of this Ag\hich\af2\dbch\af11\loch\f2 reement, and without further}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 action by the parties hereto, such provision shall be reformed to the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 minimum extent necessary to make such provision valid and enforceable.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 If Recipient institutes patent litigation against a Contributor with}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 r\hich\af2\dbch\af11\loch\f2 espect to a patent applicable to software (including a cross-claim or\hich\af2\dbch\af11\loch\f2  counterclaim in a lawsuit), then any patent licenses granted by that\hich\af2\dbch\af11\loch\f2 
+  Contributor to such Recipient under this Agreement shall terminate as\hich\af2\dbch\af11\loch\f2  of the date such litigation is filed. \hich\af2\dbch\af11\loch\f2 In addition, If Recipient}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 institutes patent litigation against any entity (including a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 cross-claim or counterclaim in a lawsuit) alleging that the Program}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 itself (excluding combinations of the Program with other software or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 hardware) infringes such Recipient's patent(s), then such Recipient's}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights granted under Section 2(b) shall terminate as of the date such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 litigation is filed.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 All Recipient's rights under this Agreement shall terminate if it}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 fails to c\hich\af2\dbch\af11\loch\f2 omply with any of the material terms or conditions of this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Agreement and does not cure such failure in a reasonable period of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 time after becoming aware of such noncompliance. If all Recipient's}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights under this Agreement terminate, Recipient agre\hich\af2\dbch\af11\loch\f2 es to cease use}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and distribution of the Program as soon as reasonably practicable.\hich\af2\dbch\af11\loch\f2   However, Recipient's obligations under this Agreement and any licenses
+ \hich\af2\dbch\af11\loch\f2  granted by Recipient relating to the Program shall continue and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 survive.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 IBM may pu\hich\af2\dbch\af11\loch\f2 blish new versions (including revisions) of this Agreement}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 from time to time. Each new version of the Agreement will be given a\hich\af2\dbch\af11\loch\f2  distinguishing version number. The Program (including Contributions)}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 may always be distributed subject to the version o\hich\af2\dbch\af11\loch\f2 f the Agreement}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under which it was received. In addition, after a new version of the}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Agreement is published, Contributor may elect to distribute the}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Program (including its Contributions) under the new version. No one}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 other than IBM has the righ\hich\af2\dbch\af11\loch\f2 t to modify this Agreement. Except as}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 expressly stated in Sections 2(a) and 2(b) above, Recipient receives}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 no rights or licenses to the intellectual property of any Contributor}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under this Agreement, whether expressly, by implication, estoppel or}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 otherwise. All rights in the Program not expressly granted under this}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Agreement are reserved.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 This Agreement is governed by the laws of the State of {\*\xmlopen\xmlns1{\factoidname State}}New York{\*\xmlclose} and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the intellectual property laws of the {\*\xmlopen\xmlns1{\factoidname place}}{\*\xmlopen\xmlns1{\factoidname country-region}}United States of America{\*\xmlclose}{\*\xmlclose}. No
+ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 party to\hich\af2\dbch\af11\loch\f2 
+  this Agreement will bring a legal action under this Agreement}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ more than one year after the cause of action arose. Each party waives}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ its rights to a jury trial in any resulting litigation.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Kerberos 5 ticket support in rxkad is subject to the followi\hich\af2\dbch\af11\loch\f2 ng copyright:
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 \hich\f2 Copyright (c) 1995, 1996, 1997, 2002 Kungliga Tekniska H\'f6\loch\f2 gskolan
+ \par \hich\af2\dbch\af11\loch\f2 (Royal {\*\xmlopen\xmlns1{\factoidname PostalCode}}Institute{\*\xmlclose} of {\*\xmlopen\xmlns1{\factoidname PostalCode}}Technology{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname 
+ PostalCode}}Stockholm{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}Sweden{\*\xmlclose}{\*\xmlclose}).
+ \par \hich\af2\dbch\af11\loch\f2 All rights reserved.
+ \par \hich\af2\dbch\af11\loch\f2  
+ \par \hich\af2\dbch\af11\loch\f2 Redistribution and use in source a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 nd binary forms, with or \hich\af2\dbch\af11\loch\f2 without\hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 modification, a\hich\af2\dbch\af11\loch\f2 re permitted provided that the following conditions}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 are met:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1. Redistributions of source code must retain the above copyright\hich\af2\dbch\af11\loch\f2  notice, this list of conditions and the following disclaimer.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  
+ \par \hich\af2\dbch\af11\loch\f2 2. Redistributions in binary form must repro\hich\af2\dbch\af11\loch\f2 duce the above copyright\hich\af2\dbch\af11\loch\f2   notice, this list of conditions and the following disclaimer in the\hich\af2\dbch\af11\loch\f2 
+   documentation and/or other materials provided with the distribution.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  
+ \par \hich\af2\dbch\af11\loch\f2 3. Neither the name of the Institute nor the names of its contributors\hich\af2\dbch\af11\loch\f2  may be used to endorse or promote products derived from this software\hich\af2\dbch\af11\loch\f2 
+  without specific prior written permission.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\hich\af2\dbch\af11\loch\f2  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\hich\af2\dbch\af11\loch\f2 
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\hich\af2\dbch\af11\loch\f2  ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 FOR ANY DIRECT, INDIRECT\hich\af2\dbch\af11\loch\f2 , INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\hich\af2\dbch\af11\loch\f2 
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\hich\af2\dbch\af11\loch\f2  IN CONTRACT, STRICT\hich\af2\dbch\af11\loch\f2  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\hich\af2\dbch\af11\loch\f2 
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\hich\af2\dbch\af11\loch\f2  SUCH DAMAGE.
+ \par 
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Some code in rxkad/ticket5.c}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  and WINNT/afsd/afskfw.\hich\af2\dbch\af11\loch\f2 c}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  is subject to the following copyri\hich\af2\dbch\af11\loch\f2 ght:
+ \par 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 Copyright 1992, 2006}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  by the Massachusetts Institute of Technology.
+ \par \hich\af2\dbch\af11\loch\f2 All Rights Reserved.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Export of this software from the {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname PostalCode}}United States of America{\*\xmlclose}{\*\xmlclose} may}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 require a specific license from the United States Government.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2   It is the resp\hich\af2\dbch\af11\loch\f2 onsibility of any person or organization contemplating
+ \hich\af2\dbch\af11\loch\f2   export to obtain such a license before exporting.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 WITHIN THAT CONSTRAINT, permission to use, copy, modify, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distribute this software and its documentation for any purpose and\hich\af2\dbch\af11\loch\f2  witho\hich\af2\dbch\af11\loch\f2 ut fee is hereby granted, provided that the above copyright\hich\af2\dbch\af11\loch\f2 
+  notice appear in all copies and that both that copyright notice and\hich\af2\dbch\af11\loch\f2  this permission notice appear in supporting documentation, and that\hich\af2\dbch\af11\loch\f2 
+  the name of M.I.T. not be used in advertising or publicity pertaining\hich\af2\dbch\af11\loch\f2  to distribution of the software without specific, written prior\hich\af2\dbch\af11\loch\f2 
+  permission.  Furthermore if you modify this software you must label\hich\af2\dbch\af11\loch\f2  your software as modified software and not\hich\af2\dbch\af11\loch\f2  distribute it in such a\hich\af2\dbch\af11\loch\f2 
+  fashion that it might be confused with the original M.I.T. software.\hich\af2\dbch\af11\loch\f2  M.I.T. makes no representations about the suitability of\hich\af2\dbch\af11\loch\f2  this software for any purpose.  It is provided "as is" without express
+ \hich\af2\dbch\af11\loch\f2  or implied warranty.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 afssettings is subject to the following license:
+ \par \hich\af2\dbch\af11\loch\f2 APPLE PUBLIC SOURCE LICENSE
+ \par \hich\af2\dbch\af11\loch\f2 Version 2.0 - August 6, 2003
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Please read this License carefully before downloading this software.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 By downloading or using this software, you are agreeing to be bound by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the t\hich\af2\dbch\af11\loch\f2 erms of this License. If you do not or cannot agree to the terms}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 of this License, please do not download or use the software.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1. General; Definitions. This License applies to any program or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 work which Apple Computer, Inc. ("Apple") makes publicly av\hich\af2\dbch\af11\loch\f2 ailable and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 which contains a notice placed by Apple identifying such program or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 work as "Original Code" and stating that it is subject to the terms of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this Apple Public Source License version 2.0 ("License"). As used in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this License:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the grantor of rights, (i) claims of patents that are now or hereafter}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 acquired, owned by or assigned to Apple and (ii) that cover subject}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 matter contained in the Original Code, but only t\hich\af2\dbch\af11\loch\f2 o the extent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 necessary to use, reproduce and/or distribute the Original Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 without infringement; and (b) in the case where You are the grantor of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights, (i) claims of patents that are now or hereafter acquired,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 owned by or assigned to You and (ii) that \hich\af2\dbch\af11\loch\f2 cover subject matter in Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, taken alone or in combination with Original Code.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.2 "Contributor" means any person or entity that creates or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 contributes to the creation of Modifications.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.3 "Covered Code" means the Original Code, Modificat\hich\af2\dbch\af11\loch\f2 ions, the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 combination of Original Code and any Modifications, and/or any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 respective portions thereof.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.4 "Externally Deploy" means: (a) to sublicense, distribute or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 otherwise make Covered Code available, directly or indirectly, to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 anyone other than You; \hich\af2\dbch\af11\loch\f2 and/or (b) to use Covered Code, alone or as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 part of a Larger Work, in any way to provide a service, including but}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 not limited to delivery of content, through electronic communication}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 with a client other than You.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.5 "Larger Work" means a work which combi\hich\af2\dbch\af11\loch\f2 nes Covered Code or portions}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 thereof with code not governed by the terms of this License.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 1.6 "Modifications" mean any addition to, deletion fr}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 o}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 m, and/or change}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 to, the substance and/or structure of the Original Code, any previous}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Modifications, the combination of Original Code and any previous}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Modifications, and/or any respective portions thereof. When code is}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 released as a series of files, a Modification is: (a) any addition to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 or deletion from the contents of a file containing Co\hich\af2\dbch\af11\loch\f2 vered Code;}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and/or (b) any new file or other representation of computer program}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 statements that contains any part of Covered Code.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.7 "Original Code" means (a) the Source Code of a program or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 work as originally made available by Apple under this Li\hich\af2\dbch\af11\loch\f2 cense,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 including the Source Code of any updates or upgrades to such programs}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 or works made available by Apple under this License, and that has been}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 expressly identified by Apple as such in the header file(s) of such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 work; and (b) the object code compiled f\hich\af2\dbch\af11\loch\f2 rom such Source Code and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 originally made available by Apple under this License.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.8 "Source Code" means the human readable form of a program or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 work that is suitable for making modifications to it, including all}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 modules it contains, plus any associa\hich\af2\dbch\af11\loch\f2 ted interface definition files,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 scripts used to control compilation and installation of an executable}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 (object code).
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.9 "You" or "Your" means an individual or a legal entity exercising}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 rights under this License. For legal entities, "You" or "Your"}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 includ\hich\af2\dbch\af11\loch\f2 es any entity which controls, is controlled by, or is under}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 common control with, You, where "control" means (a) the power, direct}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 or indirect, to cause the direction or management of such entity,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 whether by contract or otherwise, or (b) ownership of fifty \hich\af2\dbch\af11\loch\f2 percent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 (50%) or more of the outstanding shares or beneficial ownership of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 such entity.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 2. Permitted Uses; Conditions & Restrictions. Subject to the terms}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 and conditions of this License, Apple hereby grants You, effective on}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the date You accept this License and download the Original Code, a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 world-wide, royalty-free, non-exclusive license, to the extent of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Apple's Applicable Patent Rights and copyrights covering the Original}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Code, to do the following:
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 2.1 Unmodified Code. You \hich\af2\dbch\af11\loch\f2 may use, reproduce, display, perform,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 internally distribute within Your organization, and Externally Deploy}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 verbatim, unmodified copies of the Original Code, for commercial or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 non-commercial purposes, provided that in each instance:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (a) You must retain an\hich\af2\dbch\af11\loch\f2 d reproduce in all copies of Original Code the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 copyright and other proprietary notices and disclaimers of Apple as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 they appear in the Original Code, and keep intact all notices in the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Original Code that refer to this License; and
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (b) You must include a co\hich\af2\dbch\af11\loch\f2 py of this License with every copy of Source}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Code of Covered Code and documentation You distribute or Externally}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Deploy, and You may not offer or impose any terms on such Source Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 that alter or restrict this License or the recipients' rights}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 hereunder, \hich\af2\dbch\af11\loch\f2 except as permitted under Section 6.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 2.2 Modified Code. You may modify Covered Code and use, reproduce,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 display, perform, internally distribute within Your organization, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Externally Deploy Your Modifications and Covered Code, for commercial}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 or non-commercial purposes, provided that in each instance You also}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 meet all of these conditions:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (a) You must satisfy all the conditions of Section 2.1 with respect to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the Source Code of the Covered Code;
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (b) You must duplicate, to the extent it does no\hich\af2\dbch\af11\loch\f2 t already exist, the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 notice in Exhibit A in each file of the Source Code of all Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, and cause the modified files to carry prominent notices}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 stating that You changed the files and the date of any change; and
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (c) If You Externally Deploy You\hich\af2\dbch\af11\loch\f2 r Modifications, You must make}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Source Code of all Your Externally Deployed Modifications either}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 available to those to whom You have Externally Deployed Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, or publicly available. Source Code of Your Externally}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Deployed Modifications must be\hich\af2\dbch\af11\loch\f2  released under the terms set forth in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this License, including the license grants set forth in Section 3}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 below, for as long as you Externally Deploy the Covered Code or twelve}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 (12) months from the date of initial External Deployment, whichever is}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 longer. Y\hich\af2\dbch\af11\loch\f2 ou should preferably distribute the Source Code of Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Externally Deployed Modifications electronically (e.g. download from a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 web site).
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 2.3 Distribution of Executable Versions. In addition, if You}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Externally Deploy Covered Code (Original Code and/or Mod\hich\af2\dbch\af11\loch\f2 ifications) in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 object code, executable form only, You must include a prominent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 notice, in the code itself as well as in related documentation,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 stating that Source Code of the Covered Code is available under the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 terms of this License with information on how and where to obtain such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Source Code.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par \hich\af2\dbch\af11\loch\f2 2}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 .4 Third Party Rights. You expressly acknowledge and agree that}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 although Apple and each Contributor grants the licenses to their}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 respective portions of the Covered Code s\hich\af2\dbch\af11\loch\f2 et forth herein, no}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 assurances are provided by Apple or any Contributor that the Covered}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Code does not infringe the patent or other intellectual property}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights of any other entity. Apple and each Contributor disclaim any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 liability to You for claims brough\hich\af2\dbch\af11\loch\f2 t by any other entity based on}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 infringement of intellectual property rights or otherwise. As a}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 condition to exercising the rights and licenses granted hereunder, You}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 hereby assume sole responsibility to secure any other intellectual}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 property rights needed,\hich\af2\dbch\af11\loch\f2  if any. For example, if a third party patent}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 license is required to allow You to distribute the Covered Code, it is}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Your responsibility to acquire that license before distributing the}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Covered Code.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 3. Your Grants. In consideration of, and as a condition \hich\af2\dbch\af11\loch\f2 to, the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 licenses granted to You under this License, You hereby grant to any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 person or entity receiving or distributing Covered Code under this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License a non-exclusive, royalty-free, perpetual, irrevocable license,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under Your Applicable Patent Rights and ot\hich\af2\dbch\af11\loch\f2 her intellectual property}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights (other than patent) owned or controlled by You, to use,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 reproduce, display, perform, modify, sublicense, distribute and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Externally Deploy Your Modifications of the same scope and extent as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Apple's licenses under Sections 2.\hich\af2\dbch\af11\loch\f2 1 and 2.2 above.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 4. Larger Works. You may create a Larger Work by combining Covered}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Code with other code not governed by the terms of this License and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distribute the Larger Work as a single product. In each such instance,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 You must make sure the requirements of this License are fulfilled for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the Covered Code or any portion thereof.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 5. Limitations on Patent License. Except as expressly stated in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Section 2, no other patent rights, express or implied, are granted by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Apple here\hich\af2\dbch\af11\loch\f2 in. Modifications and/or Larger Works may require additional}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 patent licenses from Apple which Apple may grant in its sole}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 discretion.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 6. Additional Terms. You may choose to offer, and to charge a fee for,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 warranty, support, indemnity or liability obligati\hich\af2\dbch\af11\loch\f2 ons and/or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights consistent with the scope of the license granted herein}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ("Additional Terms") to one or more recipients of Covered Code.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 However, You may do so only on Your own behalf and as Your sole}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 responsibility, and not on behalf of Apple or an\hich\af2\dbch\af11\loch\f2 y Contributor. You}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 must obtain the recipient's agreement that any such Additional Terms
+ \par \hich\af2\dbch\af11\loch\f2 are offered by You alone, and You hereby agree to indemnify, defend}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 and hold Apple and every Contributor harmless for any liability}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 incurred by or claims asserted again\hich\af2\dbch\af11\loch\f2 st Apple or such Contributor by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 reason of any such Additional Terms.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 7. Versions of the License. Apple may publish revised and/or new}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 versions of this License from time to time. Each version will be given}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 a distinguishing version number. Once Original Cod\hich\af2\dbch\af11\loch\f2 e has been published}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under a particular version of this License, You may continue to use it}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under the terms of that version. You may also choose to use such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Original Code under the terms of any subsequent version of this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License published by Apple. No one other than Apple has the right to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 modify the terms applicable to Covered Code created under this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 part pre-release, untested, or not fully te\hich\af2\dbch\af11\loch\f2 sted works. The Covered}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Code may contain errors that could cause failures or loss of data, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  \hich\af2\dbch\af11\loch\f2 m}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ay be incomplete or contain inaccuracies. You expressly acknowledge}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and agree that use of the Covered Code, or any portion thereof, is at}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Your sole and entire r\hich\af2\dbch\af11\loch\f2 isk. THE COVERED CODE IS PROVIDED "AS IS" AND}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ALL WARRANT\hich\af2\dbch\af11\loch\f2 IES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THI\hich\af2\dbch\af11\loch\f2 RD}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST
+ \par \hich\af2\dbch\af11\loch\f2 INTERF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 E}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ RENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERR\hich\af2\dbch\af11\loch\f2 UPTED OR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 You acknowledge that the Covered Code is not\hich\af2\dbch\af11\loch\f2  intended for use in the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 operation of nuclear facilities, aircraft navigation, communication}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 systems, or air traffic control machines in which case the failure of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the Covered Code could lead to death, personal injury, or severe
+ \par \hich\af2\dbch\af11\loch\f2 physical or environmental damage.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 TO THIS LICEN\hich\af2\dbch\af11\loch\f2 SE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY O\hich\af2\dbch\af11\loch\f2 F SUCH}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 TO YOU. In no event shall Apple's total \hich\af2\dbch\af11\loch\f2 liability to You for all}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 damages (other than as may be required by applicable law) under this}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License exceed the amount of fifty dollars ($50.00).
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 10. Trademarks. This License does not grant any rights to use the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 trademarks or trade names "Apple", "Apple \hich\af2\dbch\af11\loch\f2 Computer", "Mac", "Mac OS",}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 "QuickTime", "QuickTime Streaming Server" or any other trademarks,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 service marks, logos or trade names belonging to Apple (collectively}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 "Apple Marks") or to any trademark, service mark, logo or trade name}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 belonging to any Contri\hich\af2\dbch\af11\loch\f2 butor. You agree not to use any Apple Marks in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 or as part of the name of products derived from the Original Code or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 to endorse or promote products derived from the Original Code other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 than as expressly permitted by and in strict compliance at all times}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 with Apple's third party trademark usage guidelines which are posted}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 at}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 http://www.apple.com/legal/guidelinesfor3rdparties.html.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 11. Ownership. Subject to the licenses granted under this License,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 each Contributor retains all rights, title and interest in \hich\af2\dbch\af11\loch\f2 and to any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications made by such Contributor. Apple retains all rights,
+ \par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 itle and interest in and to the Original Code and any Modifications}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 made by or on behalf of Apple ("Apple Modifications"), and such Apple}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications will not be automatically \hich\af2\dbch\af11\loch\f2 subject to this License. Apple
+ \par \hich\af2\dbch\af11\loch\f2 m\hich\af2\dbch\af11\loch\f2 ay, at its sole discretion, choose to license such Apple}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications under this License, or on different terms from those}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 contained in this License or may choose not to license them at all.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 12. Termination.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 12.1 Terminat\hich\af2\dbch\af11\loch\f2 ion. This License and the rights granted hereunder will}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 terminate:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (a) automatically without notice from Apple if You fail to comply with}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 any term(s) of this License and fail to cure such breach within 30}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 days of becoming aware of such breach;
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (b) immedi\hich\af2\dbch\af11\loch\f2 ately in the event of the circumstances described in Section}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 13.5(b); or
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (c) automatically without notice from Apple if You, at any time during}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the term of this License, commence an action for patent infringement}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 against Apple; provided that Apple did not\hich\af2\dbch\af11\loch\f2  first commence}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 an action for patent infringement against You in that instance.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 12.2 Effect of Termination. Upon termination, You agree to immediately}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 stop any further use, reproduction, modification, sublicensing and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distribution of the Covered Code. All sublicenses to the Covered Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 which have been properly granted prior to termination shall survive}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 any termination of this License. Provisions which, by their nature,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 should remain in effect beyond the termination of \hich\af2\dbch\af11\loch\f2 this License shall}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 survive, including but not limited to Sections 3, 5, 8, 9, 10, 11,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 12.2 and 13. No party will be liable to any other for compensation,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 indemnity or damages of any sort solely as a result of terminating}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this License in accordance with its\hich\af2\dbch\af11\loch\f2  terms, and termination of this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License will be without prejudice to any other right or remedy of
+ \par \hich\af2\dbch\af11\loch\f2 any p}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rty.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13. Miscellaneous.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.1 Government End Users. The Covered Code is a "commercial item" as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 defined in FAR 2.101. Government software and technical \hich\af2\dbch\af11\loch\f2 data rights in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the Covered Code include only those rights customarily provided to the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 public as defined in this License. This customary commercial license}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 in technical data and software is provided in accordance with FAR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 12.211 (Technical Data) and 12.212 \hich\af2\dbch\af11\loch\f2 (Computer Software) and, for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Department of Defense purchases, DFAR 252.227-7015 (Technical Data --}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Commercial Items) and 227.7202-3 (Rights in Commercial Computer}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Software or Computer Software Documentation). Accordingly, all U.S.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Government End Users acqu\hich\af2\dbch\af11\loch\f2 ire Covered Code with only those rights set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 forth herein.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.2 Relationship of Parties. This License will not be construed as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 creating an agency, partnership, joint venture or any other form of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 legal association between or among You, Apple or any Contributor, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 You will not represent to the contrary, whether expressly, by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 implication, appearance or otherwise.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.3 Independent Development. Nothing in this License will impair}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Apple's right to ac\hich\af2\dbch\af11\loch\f2 quire, license, develop, have others develop for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 it, market and/or distribute technology or products that perform the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 same or similar functions as, or otherwise compete with,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, Larger Works, technology or products that You may}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 develop, produce\hich\af2\dbch\af11\loch\f2 , market or distribute.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.4 Waiver; Construction. Failure by Apple or any Contributor to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 enforce any provision of this License will not be deemed a waiver of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 future enforcement of that or any other provision. Any law or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 regulation which provides that the\hich\af2\dbch\af11\loch\f2  language of a contract shall be}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 construed against the drafter will not apply to this License.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.5 Severability. (a) If for any reason a court of competent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 jurisdiction finds any provision of this License, or portion thereof,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 to be unenforceable, that pr\hich\af2\dbch\af11\loch\f2 ovision of the License will be enforced to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the maximum extent permissible so as to effect the economic benefits}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and intent of the parties, and the remainder of this License will}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 continue in full force and effect. (b) Notwithstanding the foregoing,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 if appli\hich\af2\dbch\af11\loch\f2 cable law prohibits or restricts You from fully and/or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 specifically complying with Sections 2 and/or 3 or prevents the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 enforceability of either of those Sections, this License will
+ \par \hich\af2\dbch\af11\loch\f2 immediately \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 erminate and You must immediately discontinue any use of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the Covered Code and destroy all copies of it that are in your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 possession or control.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.6 Dispute Resolution. Any litigation or other dispute resolution}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 between You and Apple relating to this License shall take place in the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Northern District of Californi\hich\af2\dbch\af11\loch\f2 a, and You and Apple hereby consent to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the personal jurisdiction of, and venue in, the state and federal}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 courts within that District with respect to this License. The}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 application of the United Nations Convention on Contracts for the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 International Sale of G\hich\af2\dbch\af11\loch\f2 oods is expressly excluded.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.7 Entire Agreement; Governing Law. This License constitutes the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 entire agreement between the parties with respect to the subject}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 matter hereof. This License shall be governed by the laws of the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 United States and the State of\hich\af2\dbch\af11\loch\f2  California, except that body of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 California law concerning conflicts of law.
+ \par \hich\af2\dbch\af11\loch\f2 Where You are located in the {\*\xmlopen\xmlns1{\factoidname PostalCode}}province{\*\xmlclose} of {\*\xmlopen\xmlns1{\factoidname PostalCode}}Quebec{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}
+ {\*\xmlopen\xmlns1{\factoidname PostalCode}}Canada{\*\xmlclose}{\*\xmlclose}, the following}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 clause applies: The parties hereby confirm that they have requested}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 that this License and all related docum\hich\af2\dbch\af11\loch\f2 ents be drafted in English. Les}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 parties ont exige que le present contrat et tous les documents}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 connexes soient rediges en anglais.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 EXHIBIT A.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 "Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Reserved.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 This file contains Original Code and/or Modifications of Original Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 as defined in and that are subject to the Apple Public Source License}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Version 2.0 (the 'License'). You may not use this file except in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 compliance with the License. Please obtain a copy \hich\af2\dbch\af11\loch\f2 of the License at}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 http://www.opensource.apple.com/apsl/ and read it before using this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 file.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 The Original Code and all software distributed under the License are}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 E\hich\af2\dbch\af11\loch\f2 XPRESS OR IMPLIED, AND \hich\af2\dbch\af11\loch\f2 APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Please see the License for the specific language governing rights and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 limita\hich\af2\dbch\af11\loch\f2 tions under the License."
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Some portions of Rx are subject to the following license:
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Sun RPC is a product of Sun Microsystems, Inc. and is provided for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 unrestricted use provided that this legend is included on all tape}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 media and as a part of th\hich\af2\dbch\af11\loch\f2 e software program in whole or part.  Users\hich\af2\dbch\af11\loch\f2 
+  may copy or modify Sun RPC without charge, but are not authorized\hich\af2\dbch\af11\loch\f2  to license or distribute it to anyone else except as part of a product or\hich\af2\dbch\af11\loch\f2 
+  program developed by the user or with the express written conse\hich\af2\dbch\af11\loch\f2 nt of\hich\af2\dbch\af11\loch\f2  Sun Microsystems, Inc.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR\hich\af2\dbch\af11\loch\f2  PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Sun RPC is provided with no support and without any obligation on the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 part of Sun Microsystems, Inc. to assist in its use, correction,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 modification or enhancement.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 S}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 UN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 INFRING\hich\af2\dbch\af11\loch\f2 EMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC\hich\af2\dbch\af11\loch\f2 
+  OR ANY PART THEREOF.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 In no event will Sun Microsystems, Inc. be liable for any lost revenue\hich\af2\dbch\af11\loch\f2 
+  or profits or other special, indirect and consequential damages, even if}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ Sun has been ad\hich\af2\dbch\af11\loch\f2 vised of the possibility of such damages.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Sun Microsystems, Inc.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname PostalCode}}
+ \hich\af2\dbch\af11\loch\f2 2550 Garcia Avenue{\*\xmlclose}{\*\xmlclose}
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname PostalCode}}
+ \hich\af2\dbch\af11\loch\f2 Mountain View{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}California{\*\xmlclose}  {\*\xmlopen\xmlns1{\factoidname PostalCode}}94043{\*\xmlclose}{\*\xmlclose}
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 src/afs/LINUX/osi_flush.s included code under IBM Public License with permission \hich\af2\dbch\af11\loch\f2 of the author, Paul MacKerras.
+ \par }}
\ No newline at end of file
Index: openafs/src/WINNT/install/Win9x/CellServDB
diff -c openafs/src/WINNT/install/Win9x/CellServDB:1.2.2.4 openafs/src/WINNT/install/Win9x/CellServDB:1.2.2.5
*** openafs/src/WINNT/install/Win9x/CellServDB:1.2.2.4	Sat Oct 15 20:56:50 2005
--- openafs/src/WINNT/install/Win9x/CellServDB	Sun Oct  8 23:14:41 2006
***************
*** 1,15 ****
! >grand.central.org      #GCO Public CellServDB 15 Oct 2005
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #afsdb1.wu-wien.ac.at
! 137.208.8.12                    #caesar.wu-wien.ac.at
! 137.208.127.33                  #buddy.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
--- 1,19 ----
! >grand.central.org      #GCO Public CellServDB 08 Oct 2006
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #goya.wu-wien.ac.at
! 137.208.7.57                    #caravaggio.wu-wien.ac.at
! 137.208.127.57                  #vermeer.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
+ >cgv.tugraz.at          #CGV cell
+ 129.27.224.133                  #phobos.cgv.tugraz.at
+ 129.27.224.134                  #deimos.cgv.tugraz.at
+ 129.27.224.210                  #trinculo.cgv.tugraz.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
***************
*** 22,30 ****
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.2.6                     #kd1.epfl.ch
! 128.178.2.7                     #kd2.epfl.ch
! 128.178.2.8                     #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
--- 26,34 ----
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.109.111                 #kd1.epfl.ch
! 128.178.109.112                 #kd2.epfl.ch
! 128.178.109.113                 #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
***************
*** 37,44 ****
  129.129.190.142                 #afs02.psi.ch
  >extundo.com            #Simon Josefsson's cell
  195.42.214.241                  #slipsten.extundo.com
- >mekinok.com            #Mekinok, Inc.
- 4.36.43.98                      #loggerhead.mekinok.com
  >membrain.com           #membrain.com
  66.93.118.125                   #stormy
  130.85.24.11                    #weasel
--- 41,46 ----
***************
*** 105,121 ****
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 141.35.2.160                    #lc00.rz.uni-jena.de
! 141.35.7.9                      #fsuj01.rz.uni-jena.de
! 141.35.7.10                     #zaphod.rz.uni-jena
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.30                    #fileserv3.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.140.190                  #rzkbserv.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
--- 107,123 ----
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 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
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.10                    #lyra.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.141.243                  #agrippina.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
***************
*** 172,179 ****
  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.56.129                    #nihao.sbp.ri.cmu.edu
! 128.2.56.136                    #youtheman.sbp.ri.cmu.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
--- 174,181 ----
  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
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 186,191 ****
--- 188,195 ----
  129.170.16.22                   #halley.dartmouth.edu
  129.170.16.42                   #oort.dartmouth.edu
  129.170.16.43                   #cygnusx1.dartmouth.edu
+ >cs.fhm.edu             #Department Computer Science Munich University Of Applied Science
+ 129.187.208.2                   #srv1.informatik.fh-muenchen.de
  >eecs.harvard.edu       #Harvard - EECS
  140.247.60.61                   #zermelo.eecs.harvard.edu
  140.247.60.83                   #corfu.eecs.harvard.edu
***************
*** 261,266 ****
--- 265,280 ----
  134.79.18.25                    #afsdb1.slac.stanford.edu
  134.79.18.26                    #afsdb2.slac.stanford.edu
  134.79.18.27                    #afsdb3.slac.stanford.edu
+ >ucdavis.edu            #University of California at Davis
+ 169.237.104.100                 #afs1.ucdavis.edu
+ 169.237.235.176                 #afs2.ucdavis.edu
+ 169.237.247.91                  #afs3.ucdavis.edu
+ >home.ucdavis.edu       #University of California at Davis home directories
+ 169.237.105.91                  #home1.ucdavis.edu
+ 169.237.105.92                  #home2.ucdavis.edu
+ 169.237.105.93                  #home3.ucdavis.edu
+ >physics.ucsb.edu       #UC Santa Barbara, Physics Dept
+ 128.111.18.161                  #ledzeppelin.physics.ucsb.edu
  >cats.ucsc.edu          #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
  128.114.129.14                  #elan.ucsc.edu
  128.114.129.15                  #ichabod.ucsc.edu
***************
*** 291,316 ****
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.106                  #linat06.grid.umich.edu
! 141.211.43.109                  #atgrid.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >umr.edu                #University of Missouri - Rolla
! 131.151.1.59                    #afsdb1.umr.edu
! 131.151.1.70                    #afsdb3.umr.edu
! 131.151.1.146                   #afsdb2.umr.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.13.7                     #as-sm2.uncc.edu
! 152.15.30.27                    #fs-kenn3.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
--- 305,328 ----
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.103                  #linat03.grid.umich.edu
! 141.211.43.104                  #linat04.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >sph.umich.edu          #University of Michigan -- School of Public Health
! 141.211.50.41                   #afssph0.sph.umich.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.93.186                   #as-ece1.uncc.edu
! 152.15.181.175                  #as-me1.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
***************
*** 344,349 ****
--- 356,363 ----
  >dapnia.saclay.cea.fr   #CEA DAPNIA
  132.166.32.7                    #dphrsg.saclay.cea.fr
  132.166.32.12                   #dphrsl.saclay.cea.fr
+ >grif.fr                #GRIF cell
+ 192.54.208.18                   #node03.datagrid.cea.fr
  >in2p3.fr               #IN2P3 production cell
  134.158.232.11                  #ccafsdb1.in2p3.fr
  134.158.232.12                  #ccafsdb2.in2p3.fr
***************
*** 401,406 ****
--- 415,421 ----
  192.84.134.75                   #afsna.na.infn.it
  >ba.infn.it             #INFN, Sezione di Bari
  193.206.185.235                 #baafsserver.ba.infn.it
+ 193.206.185.236                 #debsrv.ba.infn.it
  >kloe.infn.it           #INFN, KLOE experiment at Laboratori di Frascati
  192.135.25.111                  #kloeafs1.lnf.infn.it
  192.135.25.112                  #kloeafs2.lnf.infn.it
***************
*** 451,461 ****
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 66.92.236.139                   #afs.sinenomine.net
  >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
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 466,478 ----
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 192.204.203.218                 #va.sinenomine.net
  >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
***************
*** 484,505 ****
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >openafs.org            #OpenAFS Project
! 18.7.14.88                      #grand-opening.mit.edu
! 128.2.191.224                   #penn.central.org
! 130.237.48.87                   #andrew.e.kth.se
! >e.kth.se               #Royal Institute of Technology, Elektro
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.141                  #rasmus13.hallf.kth.se
! 130.237.24.152                  #rasmus3.hallf.kth.se
! 130.237.24.177                  #rasmus29.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
! 130.237.202.12                  #afsdb2.isk.kth.se
! 130.237.206.13                  #afsdb1.isk.kth.se
! 130.237.209.141                 #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
--- 501,516 ----
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >kth.se                 #Royal Institute of Technology, Stockholm, Sweden
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.11                   #afs1.hallf.kth.se
! 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.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
***************
*** 543,548 ****
--- 554,566 ----
  193.2.120.2                     #solkan.p-ng.si
  >phy.bris.ac.uk         #Bristol University - phyics
  137.222.58.9                    #afs1.phy.bris.ac.uk
+ >inf.ed.ac.uk           #School of Informatics, University of Edinburgh
+ 129.215.64.16                   #afsdb0.inf.ed.ac.uk
+ 129.215.64.17                   #afsdb1.inf.ed.ac.uk
+ 129.215.64.18                   #afsdb2.inf.ed.ac.uk
+ >ic.ac.uk               #Imperial College London
+ 155.198.63.148                  #icafs2.cc.ic.ac.uk
+ 155.198.63.149                  #icafs1.cc.ic.ac.uk
  >hep.man.ac.uk          #Manchester HEP
  194.36.2.3                      #afs1.hep.man.ac.uk
  194.36.2.4                      #afs2.hep.man.ac.uk
Index: openafs/src/WINNT/install/loopback/NTMakefile
diff -c openafs/src/WINNT/install/loopback/NTMakefile:1.3 openafs/src/WINNT/install/loopback/NTMakefile:1.3.2.1
*** openafs/src/WINNT/install/loopback/NTMakefile:1.3	Thu Jun 24 00:08:57 2004
--- openafs/src/WINNT/install/loopback/NTMakefile	Tue Jun  6 10:44:53 2006
***************
*** 1,4 ****
! # rcsid : $Id: NTMakefile,v 1.3 2004/06/24 04:08:57 jaltman Exp $
  
  RELDIR=WINNT\install\loopback
  !INCLUDE ..\..\..\config\NTMakefile.$(SYS_NAME)
--- 1,4 ----
! # rcsid : $Id: NTMakefile,v 1.3.2.1 2006/06/06 14:44:53 jaltman Exp $
  
  RELDIR=WINNT\install\loopback
  !INCLUDE ..\..\..\config\NTMakefile.$(SYS_NAME)
***************
*** 57,59 ****
--- 57,60 ----
  install:  $(DLLFILE) $(EXEFILE)
  
  clean	::
+ 	$(DEL) *.pdb
Index: openafs/src/WINNT/install/loopback/wmi.cpp
diff -c openafs/src/WINNT/install/loopback/wmi.cpp:1.3.2.1 openafs/src/WINNT/install/loopback/wmi.cpp:1.3.2.2
*** openafs/src/WINNT/install/loopback/wmi.cpp:1.3.2.1	Wed Aug 31 21:56:07 2005
--- openafs/src/WINNT/install/loopback/wmi.cpp	Tue Sep 19 01:50:01 2006
***************
*** 1,6 ****
--- 1,7 ----
  /*
  
  Copyright 2004 by the Massachusetts Institute of Technology
+ Copyright 2006 by Secure Endpoints Inc.
  
  All rights reserved.
  
***************
*** 32,38 ****
  //
  // Note:
  //
! //	The EnableStatic method is notsupported on Win9x platforms.
  //
  //**************************************************************************
  
--- 33,39 ----
  //
  // Note:
  //
! //	The EnableStatic method is not supported on Win9x platforms.
  //
  //**************************************************************************
  
***************
*** 214,219 ****
--- 215,258 ----
      return hr;
  }
  
+ static BOOL
+ IsXP(void)
+ {
+     OSVERSIONINFOEX osInfoEx;
+     memset(&osInfoEx, 0, sizeof(osInfoEx));
+     osInfoEx.dwOSVersionInfoSize = sizeof(osInfoEx);
+ 
+     GetVersionEx((POSVERSIONINFO)&osInfoEx);
+ 
+     return(osInfoEx.dwMajorVersion == 5 && osInfoEx.dwMinorVersion == 1 && osInfoEx.wServicePackMajor < 2);
+ }
+ 
+ static VOID
+ FixupXPDNSRegistrations(LPCWSTR pCfgGuidString)
+ {
+     // As per http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B834440
+     // HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<NetworkAdapterGUID>
+     HKEY hkInterfaces=NULL, hkAdapter=NULL;
+     DWORD dw = 0;
+ 
+     if (!IsXP())
+ 	return;		// Nothing to do
+ 
+     RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces"),
+ 		 0, KEY_READ, &hkInterfaces);
+ 
+     RegOpenKeyEx(hkInterfaces, pCfgGuidString, 0, KEY_READ|KEY_WRITE, &hkAdapter);
+ 
+     RegDeleteValue(hkAdapter, TEXT("DisableDynamicUpdate"));
+     RegDeleteValue(hkAdapter, TEXT("EnableAdapterDomainNameRegistration"));
+     RegSetValueEx(hkAdapter, TEXT("RegistrationEnabled"), 0, REG_DWORD, (BYTE *)&dw, sizeof(DWORD));
+     RegSetValueEx(hkAdapter, TEXT("RegisterAdapterName"), 0, REG_DWORD, (BYTE *)&dw, sizeof(DWORD));
+ 
+     if (hkInterfaces)
+ 	RegCloseKey(hkInterfaces);
+     if (hkAdapter)
+ 	RegCloseKey(hkAdapter);
+ }
  
  HRESULT
  WMIEnableStatic(
***************
*** 223,241 ****
      LPCWSTR mask
      )
  {
!     HRESULT hr = 0;
  
!     IWbemLocator* pLocator = 0;
!     IWbemServices* pNamespace = 0;
!     IWbemClassObject* pClass = 0;
!     IWbemClassObject* pOutInst = 0;
!     IWbemClassObject* pInClass = 0;
!     IWbemClassObject* pInInst = 0;
! 
!     BSTR NamespacePath = 0;
!     BSTR ClassPath = 0;
!     BSTR InstancePath = 0;
!     BSTR MethodName = 0; // needs to be BSTR for ExecMethod()
  
      BOOL comInitialized = FALSE;
  
--- 262,280 ----
      LPCWSTR mask
      )
  {
!     HRESULT hr = 0, hr2 = 0;
  
!     IWbemLocator* pLocator = NULL;
!     IWbemServices* pNamespace = NULL;
!     IWbemClassObject* pClass = NULL;
!     IWbemClassObject* pOutInst = NULL;
!     IWbemClassObject* pInClass = NULL;
!     IWbemClassObject* pInInst = NULL;
! 
!     BSTR NamespacePath = NULL;
!     BSTR ClassPath = NULL;
!     BSTR InstancePath = NULL;
!     BSTR MethodName = NULL; // needs to be BSTR for ExecMethod()
  
      BOOL comInitialized = FALSE;
  
***************
*** 248,253 ****
--- 287,298 ----
      VARIANT v_ret_value;
      VariantInit(&v_ret_value);
  
+     VARIANT v_reg_enabled;
+     VariantInit(&v_reg_enabled);
+ 
+     VARIANT v_netbios;
+     VariantInit(&v_netbios);
+ 
      int count;
  
      // end of declarations & NULL initialization
***************
*** 258,266 ****
      ClassPath = SysAllocString(L"Win32_NetWorkAdapterConfiguration");
      CLEANUP_ON_AND_SET(!ClassPath, hr, E_OUTOFMEMORY);
  
-     MethodName = SysAllocString(L"EnableStatic");
-     CLEANUP_ON_AND_SET(!MethodName, hr, E_OUTOFMEMORY);
- 
      // Initialize COM and connect up to CIMOM
  
      ReportMessage(0, "Intializing COM", NULL, NULL, 0);
--- 303,308 ----
***************
*** 328,333 ****
--- 370,378 ----
      }
  #endif
  
+     MethodName = SysAllocString(L"EnableStatic");
+     CLEANUP_ON_AND_SET(!MethodName, hr, E_OUTOFMEMORY);
+ 
      // Get the input argument and set the property
      hr = pClass->GetMethod(MethodName, 0, &pInClass, NULL);
      CLEANUP_ON_FAILURE(hr);
***************
*** 348,361 ****
      hr = pInInst->Put(L"SubNetMask", 0, &v_mask_list, 0);
      CLEANUP_ON_FAILURE(hr);
  
-     // Sleep for a twenty seconds
-     ReportMessage(0,"Calling ExecMethod in 20 seconds...",NULL,NULL,0);
-     Sleep(10000);
-     ReportMessage(0,"Calling ExecMethod in 10 seconds...",NULL,NULL,0);
-     Sleep(5000);  
-     ReportMessage(0,"Calling ExecMethod in  5 seconds...",NULL,NULL,0);
-     Sleep(2000);
- 
  //    printf("Skipping ExecMethod\n");
  //    hr = 0;
  //    goto cleanup;
--- 393,398 ----
***************
*** 363,388 ****
      // Try up to five times, sleeping 3 seconds between tries
      for (count=0; count<5; count++)
      {
!         if (count>0) ReportMessage(0,"Trying again in 3 seconds...",NULL,NULL,0);
! 
! 	Sleep(3000);
    
!         ReportMessage(0,"Calling ExecMethod NOW...          ",NULL,NULL,0);     
! 
!         // Call the method
! 
          hr = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL, pInInst,
                                    &pOutInst, NULL);   
- 
          if (!SUCCEEDED(hr))
          {
!            ReportMessage(0,"ExecMethod failed",NULL,NULL, hr);
             continue;
          }
  
          // Get the EnableStatic method return value
          hr = pOutInst->Get(L"ReturnValue", 0, &v_ret_value, 0, 0);
- 
          if (!SUCCEEDED(hr))
          {
            ReportMessage(0,"WARNING: Could not determine return value for EnableStatic ",NULL,NULL, hr);
--- 400,429 ----
      // Try up to five times, sleeping 3 seconds between tries
      for (count=0; count<5; count++)
      {
! 	if (count>1) {
! 	    ReportMessage(0,"Trying again in 3 seconds...",NULL,NULL,0);
! 	    Sleep(3000);
! 	} else if (count>0) {
! 	    ReportMessage(0,"Trying again in 20 seconds...",NULL,NULL,0);
! 	    Sleep(10000);
! 	    ReportMessage(0,"Trying again in 10 seconds...",NULL,NULL,0);
! 	    Sleep(5000);  
! 	    ReportMessage(0,"Trying again in  5 seconds...",NULL,NULL,0);
! 	    Sleep(2000);
! 	}
    
!         ReportMessage(0,"Calling ExecMethod EnableStatic NOW...          ",NULL,NULL,0);     
! 	// Call the method
          hr = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL, pInInst,
                                    &pOutInst, NULL);   
          if (!SUCCEEDED(hr))
          {
!            ReportMessage(0,"ExecMethod EnableStatic failed",NULL,NULL, hr);
             continue;
          }
  
          // Get the EnableStatic method return value
          hr = pOutInst->Get(L"ReturnValue", 0, &v_ret_value, 0, 0);
          if (!SUCCEEDED(hr))
          {
            ReportMessage(0,"WARNING: Could not determine return value for EnableStatic ",NULL,NULL, hr);
***************
*** 390,397 ****
          }
  
          hr = V_I4(&v_ret_value);                
- 
- 
          if(hr != 0)
              ReportMessage(0,"EnableStatic failed ", NULL,NULL,hr);
          else
--- 431,436 ----
***************
*** 399,414 ****
--- 438,563 ----
              ReportMessage(0,"EnableStatic succeeded",NULL,NULL,0);
              break;
          }
+     }
+ 
+     /* if failure, skip SetDynamicDNSRegistration */
+     if (hr)
+ 	goto cleanup;
+ 
+     /* Cleanup and Prepare for SetDynamicDNSRegistration */
+     if (pInClass) {
+ 	pInClass->Release();
+ 	pInClass = NULL;
+     }
+     if (pInInst) {
+ 	pInInst->Release();
+ 	pInInst = NULL;
+     }
+     SysFreeString(MethodName);
+     VariantClear(&v_ret_value);
+ 
+     MethodName = SysAllocString(L"SetDynamicDNSRegistration");
+     CLEANUP_ON_AND_SET(!MethodName, hr2, E_OUTOFMEMORY);
+ 
+     // Get the input argument and set the property
+     hr2 = pClass->GetMethod(MethodName, 0, &pInClass, NULL);
+     CLEANUP_ON_FAILURE(hr2);
+ 
+     hr2 = pInClass->SpawnInstance(0, &pInInst);
+     CLEANUP_ON_FAILURE(hr2);
  
+     // Set up parameters
+     V_VT(&v_reg_enabled) = VT_BOOL;
+     V_BOOL(&v_reg_enabled) = VARIANT_FALSE;
+ 
+     hr2 = pInInst->Put(L"FullDNSRegistrationEnabled", 0, &v_reg_enabled, 0);
+     CLEANUP_ON_FAILURE(hr2);
+ 
+     hr2 = pInInst->Put(L"DomainDNSRegistrationEnabled", 0, &v_reg_enabled, 0);
+     CLEANUP_ON_FAILURE(hr2);
+ 
+     // Call the method
+     hr2 = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL, pInInst,
+ 				 &pOutInst, NULL);   
+     if (!SUCCEEDED(hr2))	{
+ 	ReportMessage(0,"ExecMethod SetDynamicDNSRegistration failed",NULL,NULL, hr2);
+ 	goto cleanup;
+     }
+ 
+     // Get the EnableStatic method return value
+     hr2 = pOutInst->Get(L"ReturnValue", 0, &v_ret_value, 0, 0);
+     if (!SUCCEEDED(hr2)) {
+ 	ReportMessage(0,"WARNING: Could not determine return value for SetDynamicDNSRegistration ",NULL,NULL, hr2);
+     } else {
+ 	hr2 = V_I4(&v_ret_value);                
+ 	if(hr2 != 0)
+ 	    ReportMessage(0,"SetDynamicDNSRegistration failed ", NULL,NULL,hr2);
+ 	else
+ 	    ReportMessage(0,"SetDynamicDNSRegistration succeeded",NULL,NULL,0);
+     }
+ 
+     /* if failure, skip SetTcpipNetbios */
+     if (hr)
+ 	goto cleanup;
+ 
+     /* Cleanup and Prepare for SetTcpipNetbios */
+     if (pInClass) {
+ 	pInClass->Release();
+ 	pInClass = NULL;
+     }
+     if (pInInst) {
+ 	pInInst->Release();
+ 	pInInst = NULL;
      }
+     SysFreeString(MethodName);
+     VariantClear(&v_ret_value);
  
+     ReportMessage(0,"Preparing for SetTcpipNetbios",NULL,NULL,0);
  
+     MethodName = SysAllocString(L"SetTcpipNetbios");
+     CLEANUP_ON_AND_SET(!MethodName, hr2, E_OUTOFMEMORY);
+ 
+     // Get the input argument and set the property
+     hr2 = pClass->GetMethod(MethodName, 0, &pInClass, NULL);
+     CLEANUP_ON_FAILURE(hr2);
+ 
+     hr2 = pInClass->SpawnInstance(0, &pInInst);
+     CLEANUP_ON_FAILURE(hr2);
+ 
+     // Set up parameters
+     V_VT(&v_netbios) = VT_BSTR;
+     V_BSTR(&v_netbios) = SysAllocString(L"1");	/* Use Netbios */
+ 
+     hr2 = pInInst->Put(L"TcpipNetbiosOptions", 0, &v_netbios, 0);
+     CLEANUP_ON_FAILURE(hr2);
+ 
+     // Call the method
+     hr2 = pNamespace->ExecMethod(InstancePath, MethodName, 0, NULL, pInInst,
+ 				 &pOutInst, NULL);   
+     if (!SUCCEEDED(hr2)) {
+ 	ReportMessage(0,"ExecMethod SetTcpipNetbios failed",NULL,NULL, hr2);
+ 	goto cleanup;
+     }
+ 
+     // Get the EnableStatic method return value
+     hr2 = pOutInst->Get(L"ReturnValue", 0, &v_ret_value, 0, 0);
+     if (!SUCCEEDED(hr2)) {
+ 	ReportMessage(0,"WARNING: Could not determine return value for SetTcpipNetbios ",NULL,NULL, hr2);
+     } else {
+ 	hr2 = V_I4(&v_ret_value);                
+ 	if(hr2 != 0)
+ 	    ReportMessage(0,"SetTcpipNetbios failed ", NULL,NULL,hr2);
+ 	else
+ 	    ReportMessage(0,"SetTcpipNetbios succeeded",NULL,NULL,0);
+     }
  
   cleanup:
      // Free up resources
      VariantClear(&v_ret_value);
      VariantClear(&v_ip_list);
      VariantClear(&v_mask_list);
+     VariantClear(&v_reg_enabled);
+     VariantClear(&v_netbios);
  
      // SysFreeString is NULL safe
      SysFreeString(NamespacePath);
***************
*** 447,453 ****
      LPWSTR			swName = NULL;
      GUID            g;
      wchar_t         device_guid[100];
-     DWORD			lenDeviceId;    
      
      ReportMessage(0,"Running LoopbackBindings()...",NULL,NULL,0);
      
--- 596,601 ----
***************
*** 471,477 ****
      hr = pCfg->EnumComponents( &GUID_DEVCLASS_NET, &pEnumComponent );
      CLEANUP_ON_FAILURE(hr);
      
-     
      while( pEnumComponent->Next( 1, &pAdapter, NULL ) == S_OK )
      {
          pAdapter->GetDisplayName( &swName );
--- 619,624 ----
***************
*** 581,599 ****
  }
  
          
!         extern "C"
!             DWORD
! SetIpAddress(
!     LPCWSTR guid,
!     LPCWSTR ip,
!     LPCWSTR mask
!     )
  {
      ReportMessage(0,"Running SetIpAddress()...",0,0,0);
      HRESULT hr = 0;
  
      hr = WMIEnableStatic(FindNetworkAdapterConfigurationInstanceByGUID,
                          (PVOID)guid, ip, mask);
      return hr;
  }
  
--- 728,742 ----
  }
  
          
! extern "C" DWORD SetIpAddress(LPCWSTR guid, LPCWSTR ip, LPCWSTR mask)
  {
      ReportMessage(0,"Running SetIpAddress()...",0,0,0);
      HRESULT hr = 0;
  
      hr = WMIEnableStatic(FindNetworkAdapterConfigurationInstanceByGUID,
                          (PVOID)guid, ip, mask);
+     if (hr == 0)
+ 	FixupXPDNSRegistrations(guid);
      return hr;
  }
  
Index: openafs/src/WINNT/install/wix/CellServDB
diff -c openafs/src/WINNT/install/wix/CellServDB:1.2.2.4 openafs/src/WINNT/install/wix/CellServDB:1.2.2.5
*** openafs/src/WINNT/install/wix/CellServDB:1.2.2.4	Sat Oct 15 20:56:50 2005
--- openafs/src/WINNT/install/wix/CellServDB	Sun Oct  8 23:14:41 2006
***************
*** 1,15 ****
! >grand.central.org      #GCO Public CellServDB 15 Oct 2005
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #afsdb1.wu-wien.ac.at
! 137.208.8.12                    #caesar.wu-wien.ac.at
! 137.208.127.33                  #buddy.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
--- 1,19 ----
! >grand.central.org      #GCO Public CellServDB 08 Oct 2006
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #goya.wu-wien.ac.at
! 137.208.7.57                    #caravaggio.wu-wien.ac.at
! 137.208.127.57                  #vermeer.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
+ >cgv.tugraz.at          #CGV cell
+ 129.27.224.133                  #phobos.cgv.tugraz.at
+ 129.27.224.134                  #deimos.cgv.tugraz.at
+ 129.27.224.210                  #trinculo.cgv.tugraz.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
***************
*** 22,30 ****
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.2.6                     #kd1.epfl.ch
! 128.178.2.7                     #kd2.epfl.ch
! 128.178.2.8                     #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
--- 26,34 ----
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.109.111                 #kd1.epfl.ch
! 128.178.109.112                 #kd2.epfl.ch
! 128.178.109.113                 #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
***************
*** 37,44 ****
  129.129.190.142                 #afs02.psi.ch
  >extundo.com            #Simon Josefsson's cell
  195.42.214.241                  #slipsten.extundo.com
- >mekinok.com            #Mekinok, Inc.
- 4.36.43.98                      #loggerhead.mekinok.com
  >membrain.com           #membrain.com
  66.93.118.125                   #stormy
  130.85.24.11                    #weasel
--- 41,46 ----
***************
*** 105,121 ****
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 141.35.2.160                    #lc00.rz.uni-jena.de
! 141.35.7.9                      #fsuj01.rz.uni-jena.de
! 141.35.7.10                     #zaphod.rz.uni-jena
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.30                    #fileserv3.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.140.190                  #rzkbserv.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
--- 107,123 ----
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 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
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.10                    #lyra.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.141.243                  #agrippina.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
***************
*** 172,179 ****
  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.56.129                    #nihao.sbp.ri.cmu.edu
! 128.2.56.136                    #youtheman.sbp.ri.cmu.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
--- 174,181 ----
  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
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 186,191 ****
--- 188,195 ----
  129.170.16.22                   #halley.dartmouth.edu
  129.170.16.42                   #oort.dartmouth.edu
  129.170.16.43                   #cygnusx1.dartmouth.edu
+ >cs.fhm.edu             #Department Computer Science Munich University Of Applied Science
+ 129.187.208.2                   #srv1.informatik.fh-muenchen.de
  >eecs.harvard.edu       #Harvard - EECS
  140.247.60.61                   #zermelo.eecs.harvard.edu
  140.247.60.83                   #corfu.eecs.harvard.edu
***************
*** 261,266 ****
--- 265,280 ----
  134.79.18.25                    #afsdb1.slac.stanford.edu
  134.79.18.26                    #afsdb2.slac.stanford.edu
  134.79.18.27                    #afsdb3.slac.stanford.edu
+ >ucdavis.edu            #University of California at Davis
+ 169.237.104.100                 #afs1.ucdavis.edu
+ 169.237.235.176                 #afs2.ucdavis.edu
+ 169.237.247.91                  #afs3.ucdavis.edu
+ >home.ucdavis.edu       #University of California at Davis home directories
+ 169.237.105.91                  #home1.ucdavis.edu
+ 169.237.105.92                  #home2.ucdavis.edu
+ 169.237.105.93                  #home3.ucdavis.edu
+ >physics.ucsb.edu       #UC Santa Barbara, Physics Dept
+ 128.111.18.161                  #ledzeppelin.physics.ucsb.edu
  >cats.ucsc.edu          #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
  128.114.129.14                  #elan.ucsc.edu
  128.114.129.15                  #ichabod.ucsc.edu
***************
*** 291,316 ****
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.106                  #linat06.grid.umich.edu
! 141.211.43.109                  #atgrid.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >umr.edu                #University of Missouri - Rolla
! 131.151.1.59                    #afsdb1.umr.edu
! 131.151.1.70                    #afsdb3.umr.edu
! 131.151.1.146                   #afsdb2.umr.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.13.7                     #as-sm2.uncc.edu
! 152.15.30.27                    #fs-kenn3.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
--- 305,328 ----
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.103                  #linat03.grid.umich.edu
! 141.211.43.104                  #linat04.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >sph.umich.edu          #University of Michigan -- School of Public Health
! 141.211.50.41                   #afssph0.sph.umich.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.93.186                   #as-ece1.uncc.edu
! 152.15.181.175                  #as-me1.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
***************
*** 344,349 ****
--- 356,363 ----
  >dapnia.saclay.cea.fr   #CEA DAPNIA
  132.166.32.7                    #dphrsg.saclay.cea.fr
  132.166.32.12                   #dphrsl.saclay.cea.fr
+ >grif.fr                #GRIF cell
+ 192.54.208.18                   #node03.datagrid.cea.fr
  >in2p3.fr               #IN2P3 production cell
  134.158.232.11                  #ccafsdb1.in2p3.fr
  134.158.232.12                  #ccafsdb2.in2p3.fr
***************
*** 401,406 ****
--- 415,421 ----
  192.84.134.75                   #afsna.na.infn.it
  >ba.infn.it             #INFN, Sezione di Bari
  193.206.185.235                 #baafsserver.ba.infn.it
+ 193.206.185.236                 #debsrv.ba.infn.it
  >kloe.infn.it           #INFN, KLOE experiment at Laboratori di Frascati
  192.135.25.111                  #kloeafs1.lnf.infn.it
  192.135.25.112                  #kloeafs2.lnf.infn.it
***************
*** 451,461 ****
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 66.92.236.139                   #afs.sinenomine.net
  >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
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 466,478 ----
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 192.204.203.218                 #va.sinenomine.net
  >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
***************
*** 484,505 ****
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >openafs.org            #OpenAFS Project
! 18.7.14.88                      #grand-opening.mit.edu
! 128.2.191.224                   #penn.central.org
! 130.237.48.87                   #andrew.e.kth.se
! >e.kth.se               #Royal Institute of Technology, Elektro
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.141                  #rasmus13.hallf.kth.se
! 130.237.24.152                  #rasmus3.hallf.kth.se
! 130.237.24.177                  #rasmus29.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
! 130.237.202.12                  #afsdb2.isk.kth.se
! 130.237.206.13                  #afsdb1.isk.kth.se
! 130.237.209.141                 #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
--- 501,516 ----
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >kth.se                 #Royal Institute of Technology, Stockholm, Sweden
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.11                   #afs1.hallf.kth.se
! 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.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
***************
*** 543,548 ****
--- 554,566 ----
  193.2.120.2                     #solkan.p-ng.si
  >phy.bris.ac.uk         #Bristol University - phyics
  137.222.58.9                    #afs1.phy.bris.ac.uk
+ >inf.ed.ac.uk           #School of Informatics, University of Edinburgh
+ 129.215.64.16                   #afsdb0.inf.ed.ac.uk
+ 129.215.64.17                   #afsdb1.inf.ed.ac.uk
+ 129.215.64.18                   #afsdb2.inf.ed.ac.uk
+ >ic.ac.uk               #Imperial College London
+ 155.198.63.148                  #icafs2.cc.ic.ac.uk
+ 155.198.63.149                  #icafs1.cc.ic.ac.uk
  >hep.man.ac.uk          #Manchester HEP
  194.36.2.3                      #afs1.hep.man.ac.uk
  194.36.2.4                      #afs2.hep.man.ac.uk
Index: openafs/src/WINNT/install/wix/feature.wxi
diff -c openafs/src/WINNT/install/wix/feature.wxi:1.5.2.7 openafs/src/WINNT/install/wix/feature.wxi:1.5.2.8
*** openafs/src/WINNT/install/wix/feature.wxi:1.5.2.7	Sun Sep 25 21:20:21 2005
--- openafs/src/WINNT/install/wix/feature.wxi	Tue Jul 18 12:10:22 2006
***************
*** 8,14 ****
             <ComponentRef Id="efl_uninstall_EXE" />
  
             <ComponentRef Id="cmp_Release_Notes_en_US" />
-            <ComponentRef Id="cmp_relnotes_files_en_US"/>
             <ComponentRef Id="cmf_index2_HTM_en_US" />
             <ComponentRef Id="cmp_index_files_en_US" />
             <ComponentRef Id="cmp_logo_files_en_US" />
--- 8,13 ----
Index: openafs/src/WINNT/install/wix/files.wxi
diff -c openafs/src/WINNT/install/wix/files.wxi:1.9.2.9 openafs/src/WINNT/install/wix/files.wxi:1.9.2.11
*** openafs/src/WINNT/install/wix/files.wxi:1.9.2.9	Mon Sep 26 22:42:26 2005
--- openafs/src/WINNT/install/wix/files.wxi	Tue Jul 18 12:10:22 2006
***************
*** 138,149 ****
                  </Component>
  
                  <Directory Id="dirCommon_en_US" Name="en_US" src="$(var.SrcDir)\WINNT\doc\help\en_US\">
-                     <Component Id="cmf_afs_nt_HLP_en_US" Guid="A59FF1E3-984F-47E0-8A65-590A01B6E1C4">
-                         <File Id="fileafs_nt_HLP_en_US" Name="afs-nt.hlp" LongName="afs-nt.hlp" KeyPath="yes" DiskId="1">
- 							<Shortcut Id="scClientHelp_en_US" Directory="dirShortCut" Name="CliHelp.lnk" LongName="Client Help.lnk" Description="$(loc.StrHlpFileDesc)" Icon="ico_Help" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" />
-                         </File>
-                         <File Id="fileafs_nt2_CNT_en_US" Name="afs-nt.cnt" LongName="afs-nt.cnt" DiskId="1"  />
-                     </Component>
  
                      <Component Id="cmp_Lang_en_US" Guid="9B6B5AB2-8BD1-402D-BFC0-63255740A653">
                          <File Id="filetaafssvrmgr_CNT_en_US" Name="taafs.cnt" LongName="taafssvrmgr.cnt" DiskId="1" />
--- 138,143 ----
***************
*** 748,770 ****
                                  <File Id="fileawrns005_HTM_$(var.Language)" Name="awrns~5.htm" LongName="awrns005.htm" DiskId="1" />
                                  <File Id="fileawrns006_HTM_$(var.Language)" Name="awrns~6.htm" LongName="awrns006.htm" DiskId="1" />
                                  <File Id="fileawrns007_HTM_$(var.Language)" Name="awrns~7.htm" LongName="awrns007.htm" DiskId="1" />
!                                 <File Id="fileframes_HTM_$(var.Language)" Name="frames.htm" LongName="frames.htm" DiskId="1" />
                                  <File Id="filelogo_HTM_$(var.Language)" Name="logo.htm" LongName="logo.htm" DiskId="1" />
                                  <File Id="filerelnotes_HTM_$(var.Language)" Name="relnotes.htm" LongName="relnotes.htm" DiskId="1" />
                                  <File Id="filetoc_HTM_$(var.Language)" Name="toc.htm" LongName="toc.htm" DiskId="1" />
                              </Component>
-                             <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" LongName="filelist.xml" DiskId="1"/>
-                                     <File Id="filernheader_HTM_$(var.Language)" Name="header.htm" LongName="header.htm" DiskId="1"/>
-                                     <File Id="filernpreview_WMF_$(var.Language)" Name="preview.wmf" LongName="preview.wmf" DiskId="1"/>
-                                 </Component>
-                             </Directory> <!-- relnotes_files -->
                              <Directory Id="dirlogo_files_$(var.Language)" Name="logo" LongName="logo_files" src="$(var.SrcDir)\WINNT\doc\install\Documentation\$(var.Language)\html\ReleaseNotes\logo_files\">
                                  <Component Id="cmp_logo_files_$(var.Language)" Guid="$(var.DocHtmlLogoFilesGuid)">
-                                     <File Id="filelffilelist_XML_$(var.Language)" Name="filelist.xml" LongName="filelist.xml" DiskId="1"/>
                                      <File Id="filelfimage001_JPG_$(var.Language)" Name="image001.jpg" LongName="image001.jpg" DiskId="1"/>
-                                     <File Id="filelfimage002_JPG_$(var.Language)" Name="image002.jpg" LongName="image002.jpg" DiskId="1"/>
                                  </Component>
                              </Directory> <!-- logo_files -->
                          </Directory> <!-- Release Notes -->
--- 742,755 ----
                                  <File Id="fileawrns005_HTM_$(var.Language)" Name="awrns~5.htm" LongName="awrns005.htm" DiskId="1" />
                                  <File Id="fileawrns006_HTM_$(var.Language)" Name="awrns~6.htm" LongName="awrns006.htm" DiskId="1" />
                                  <File Id="fileawrns007_HTM_$(var.Language)" Name="awrns~7.htm" LongName="awrns007.htm" DiskId="1" />
!                                 <File Id="fileframes_HTM_$(var.Language)" Name="relnot~2.htm" LongName="relnotes-frames.htm" DiskId="1" />
                                  <File Id="filelogo_HTM_$(var.Language)" Name="logo.htm" LongName="logo.htm" DiskId="1" />
                                  <File Id="filerelnotes_HTM_$(var.Language)" Name="relnotes.htm" LongName="relnotes.htm" DiskId="1" />
                                  <File Id="filetoc_HTM_$(var.Language)" Name="toc.htm" LongName="toc.htm" DiskId="1" />
                              </Component>
                              <Directory Id="dirlogo_files_$(var.Language)" Name="logo" LongName="logo_files" src="$(var.SrcDir)\WINNT\doc\install\Documentation\$(var.Language)\html\ReleaseNotes\logo_files\">
                                  <Component Id="cmp_logo_files_$(var.Language)" Guid="$(var.DocHtmlLogoFilesGuid)">
                                      <File Id="filelfimage001_JPG_$(var.Language)" Name="image001.jpg" LongName="image001.jpg" DiskId="1"/>
                                  </Component>
                              </Directory> <!-- logo_files -->
                          </Directory> <!-- Release Notes -->
***************
*** 778,784 ****
                  </Component>
                  <Component Id="cpf_CellServDB" Guid="D5BA4C15-DBEC-4292-91FC-B54C30F24F2A">
  					<Registry Root="HKLM" Key="SOFTWARE\OpenAFS\Client" Name="CellServDBMoved" Type="integer" Value="1" Id="reg_OldCellDB" KeyPath="yes" />
!                     <CopyFile Id="copy_CellServDB" Delete="yes" DestinationDirectory="dirClient" DestinationName="CellServ|CellServDB" SourceDirectory="WindowsFolder" SourceName="afsdcell.ini" />
                      <Condition>OLDCELLSERVDB &lt;&gt; ""</Condition>
                  </Component>
                  <Directory Id="dirProgram" Name="Program" src="$(var.ClientDir)">
--- 763,769 ----
                  </Component>
                  <Component Id="cpf_CellServDB" Guid="D5BA4C15-DBEC-4292-91FC-B54C30F24F2A">
  					<Registry Root="HKLM" Key="SOFTWARE\OpenAFS\Client" Name="CellServDBMoved" Type="integer" Value="1" Id="reg_OldCellDB" KeyPath="yes" />
!                     <CopyFile Id="copy_CellServDB" Delete="yes" DestinationDirectory="dirClient" DestinationName="CelSrvDB" SourceDirectory="WindowsFolder" SourceName="afsdcell.ini" />
                      <Condition>OLDCELLSERVDB &lt;&gt; ""</Condition>
                  </Component>
                  <Directory Id="dirProgram" Name="Program" src="$(var.ClientDir)">
***************
*** 806,811 ****
--- 791,804 ----
                      <Component Id="cmf_afsdacl_EXE" Guid="215DBC86-A5E8-4622-8A95-0E5830B04D0B">
                          <File Id="fileafsdacl_EXE" Name="afsdacl.exe" KeyPath="yes" DiskId="1" />
                      </Component>
+ 
+                     <Component Id="cmf_afs_nt_HLP_en_US" Guid="E9CAF872-E71B-466E-9560-9E6F542128E4">
+                         <File Id="fileafs_nt_HLP_en_US" Name="afs-nt.hlp" LongName="afs-nt.hlp" KeyPath="yes" DiskId="1" src="$(var.SrcDir)WINNT\doc\help\en_US\afs-nt.hlp">
+ 							<Shortcut Id="scClientHelp_en_US" Directory="dirShortCut" Name="CliHelp.lnk" LongName="Client Help.lnk" Description="$(loc.StrHlpFileDesc)" Icon="ico_Help" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" />
+                         </File>
+                         <File Id="fileafs_nt2_CNT_en_US" Name="afs-nt.cnt" LongName="afs-nt.cnt" DiskId="1" src="$(var.SrcDir)WINNT\doc\help\en_US\afs-nt.cnt" />
+                     </Component>
+ 
                      <Component Id="cmf_afscreds_EXE" Guid="A17567CF-866E-49AF-A717-0B4F17CA88D4">
                          <File Id="fileafscreds_EXE" Name="afscreds.exe" LongName="afscreds.exe" KeyPath="yes" DiskId="1">
  							<Shortcut Id="scAfsCreds" Directory="dirShortCut" Name="Auth.lnk" LongName="Authentication.lnk" Description="$(loc.StrAfsCredsDesc)" Arguments="[CREDSAUTOINIT] [CREDSRENEWDRMAP] [CREDSIPCHDET] [CREDSQUIET] [CREDSSHOW]" Icon="ico_afscreds" IconIndex="0" Show="normal" WorkingDirectory="dirCommon" />
Index: openafs/src/WINNT/install/wix/licenses.rtf
diff -c /dev/null openafs/src/WINNT/install/wix/licenses.rtf:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:12 2006
--- openafs/src/WINNT/install/wix/licenses.rtf	Wed Sep  6 02:24:55 2006
***************
*** 0 ****
--- 1,679 ----
+ {\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
+ {\f11\froman\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f37\froman\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}
+ {\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+ {\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f58\fmodern\fcharset238\fprq1 Courier New CE;}
+ {\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
+ {\f64\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;
+ \red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;
+ \red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+ \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
+ \ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+ \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}
+ {\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\rsidtbl \rsid5512945\rsid16720314}{\*\generator Microsoft Word 11.0.8026;}{\info{\operator Jeffrey Altman}{\creatim\yr2006\mo9\dy6\min9}{\revtim\yr2006\mo9\dy6\min27}{\version2}{\edmins18}{\nofpages12}
+ {\nofwords5339}{\nofchars30435}{\nofcharsws35703}{\vern24609}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect 
+ \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind4\viewscale100\nolnhtadjtbl\rsidroot5512945 \fet0{\*\wgrffmtfilter 013f}
+ \ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}
+ {\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang 
+ {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 
+ \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 IBM Public License Version 1.0
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS IBM\hich\af2\dbch\af11\loch\f2  PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF\hich\af2\dbch\af11\loch\f2 
+   THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 1. DEFINITIONS
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Contribution" m\hich\af2\dbch\af11\loch\f2 eans:
+ \par \hich\af2\dbch\af11\loch\f2 a) in the case of International Business Machines Corporation ("IBM"),\hich\af2\dbch\af11\loch\f2  the Original Program, and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) in the case of each Contributor,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 i) changes to the Program, and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 ii) additions to the Program;
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 wh\hich\af2\dbch\af11\loch\f2 ere such changes and/or additions to the Program originate from and\hich\af2\dbch\af11\loch\f2  are distributed by that particular Contributor. A Contribution\hich\af2\dbch\af11\loch\f2 
+  'originates' from a Contributor if it was added to the Program by\hich\af2\dbch\af11\loch\f2  such Contributor itself or anyone acti\hich\af2\dbch\af11\loch\f2 ng on such Contributor's\hich\af2\dbch\af11\loch\f2 
+  behalf. Contributions do not include additions to the Program\hich\af2\dbch\af11\loch\f2  which: (i) are separate modules of software distributed in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 conjunction with the Program under their own license agreement,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and (ii) are not d\hich\af2\dbch\af11\loch\f2 erivative works of the Program.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 "Contributor" means IBM and any other entity that distributes the\hich\af2\dbch\af11\loch\f2  Program.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Licensed Patents " mean patent claims licensable by a Contributor\hich\af2\dbch\af11\loch\f2  which are necessarily infringed by the use or sale of its Contribution}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 alone or when combined with the Program.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Original Program" means the original version of the software}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 accompanying this Agreement as released by IBM, including source c\hich\af2\dbch\af11\loch\f2 ode,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 object code and documentation, if any.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Program" means the Original Program and Contributions.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 "Recipient" means anyone who receives the Program under this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Agreement, including all Contributors.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 2. GRANT OF RIGHTS
+ \par \hich\af2\dbch\af11\loch\f2 a) Subj\hich\af2\dbch\af11\loch\f2 ect to the terms of this Agreement, each Contributor hereby\hich\af2\dbch\af11\loch\f2  grants Recipient a non-exclusive, worldwide, royalty-free\hich\af2\dbch\af11\loch\f2 
+  copyright license to reproduce, prepare derivative works of,\hich\af2\dbch\af11\loch\f2   publicly display, publicly perform, distribute and subli\hich\af2\dbch\af11\loch\f2 cense the\hich\af2\dbch\af11\loch\f2 
+  Contribution of such Contributor, if any, and such derivative}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ works, in source code and object code form.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) Subject to the terms of this Agreement, each Contributor hereby\hich\af2\dbch\af11\loch\f2  grants Recipient a non-exclusive, worldwi\hich\af2\dbch\af11\loch\f2 de, royalty-free patent\hich\af2\dbch\af11\loch\f2 
+  license under Licensed Patents to make, use, sell, offer to sell,\hich\af2\dbch\af11\loch\f2  import and otherwise transfer the Contribution of such\hich\af2\dbch\af11\loch\f2  Contributor, if any, in source code and object code form. This
+ \hich\af2\dbch\af11\loch\f2  patent license shall\hich\af2\dbch\af11\loch\f2  apply to the combination of the Contribution\hich\af2\dbch\af11\loch\f2  and the Program if, at the time the Contribution is added by the\hich\af2\dbch\af11\loch\f2 
+  Contributor, such addition of the Contribution causes such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ combination to be covered by the Licensed Patents. The patent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ license shall not apply to any other combinations which include}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ the Contribution. No hardware per se is licensed hereunder.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 c) Recipient understands that although each Contributor grants the\hich\af2\dbch\af11\loch\f2  licenses to its Contributions set\hich\af2\dbch\af11\loch\f2  forth herein, no assurances are\hich\af2\dbch\af11\loch\f2 
+  provided by any Contributor that the Program does not infringe the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ patent or other intellectual property rights of any other entity.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ Each Contributor disclaims any liability to Recipient for claims}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ brought by any other entity based on infringement of intellectual}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ property rights or otherwise. As a condition to exercising the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ rights and licenses granted hereunder, each Recipient hereby}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ assumes sole responsibility to secure any \hich\af2\dbch\af11\loch\f2 other intellectual\hich\af2\dbch\af11\loch\f2  property rights needed, if any. For example, if a third party\hich\af2\dbch\af11\loch\f2 
+  patent license is required to allow Recipient to distribute the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ Program, it is Recipient's responsibility to acquire that license}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ before distributi\hich\af2\dbch\af11\loch\f2 ng the Program.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 d) Each Contributor represents that to its knowledge it has sufficient\hich\af2\dbch\af11\loch\f2        copyright rights in its Contribution, if any, to grant the\hich\af2\dbch\af11\loch\f2 
+  copyright license set forth in this Agreement.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 3. REQUIREMENTS
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 A Co\hich\af2\dbch\af11\loch\f2 ntributor may choose to distribute the Program in object code form\hich\af2\dbch\af11\loch\f2  under its own license agreement, provided that:}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 
+ \par 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 a) it complies with the terms and conditions of this Agreement; and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) its license agreement:
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 i) effectively disclaims on behalf of all Contributors all warranties\hich\af2\dbch\af11\loch\f2  and conditions, express and implied, including warranties or\hich\af2\dbch\af11\loch\f2 
+  conditions of title and non-infringement, and implied warranties}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ or conditions of merchantability and\hich\af2\dbch\af11\loch\f2  fitness for a particular}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 purpose;
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 ii) effectively excludes on behalf of all Contributors all liability\hich\af2\dbch\af11\loch\f2  for damages, including direct, indirect, special, incidental and\hich\af2\dbch\af11\loch\f2 
+  consequential damages, such as lost profits;
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 iii) states that any provisions which differ from this Agreement are}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 offered by that Contributor alone and not by any other party; and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 iv) states that source code for the Program is available from such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  Contributor, and informs lic\hich\af2\dbch\af11\loch\f2 ensees how to obtain it in a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 reasonable manner on or through a medium customarily used for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  s}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 oftware exchange.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 When the Program is made available in source code form:}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 a) it must be made available under this Agreement; and
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 b) a copy of this Agreement must be included with each copy of the\hich\af2\dbch\af11\loch\f2  Program.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 Each Contributor must include the following in a conspicuous location}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 in the Program:
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 \hich\f2 Copyright \'a9\loch\f2  \{date here\}\hich\af2\dbch\af11\loch\f2 , International Business Machines Corporation}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and others. All Rights Reserved.
+ \par \hich\af2\dbch\af11\loch\f2        
+ \par \hich\af2\dbch\af11\loch\f2 In addition, each Contributor must identify itself as the originator}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 of its Contribution, if any, in a manner that reasonably allows}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 subsequent Recipient\hich\af2\dbch\af11\loch\f2 s to identify the originator of the Contribution.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 4. COMMERCIAL DISTRIBUTION
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 Commercial distributors of software may accept certain}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 responsibilities with respect to end users, business partners and the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 like. While this license is intend\hich\af2\dbch\af11\loch\f2 ed to facilitate the commercial use}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 of the Program, the Contributor who includes the Program in a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 commercial product offering should do so in a manner which does not\hich\af2\dbch\af11\loch\f2  create potential liability for other Contributors. Therefore, if a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Contributor\hich\af2\dbch\af11\loch\f2  includes the Program in a commercial product offering,}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 such Contributor ("Commercial Contributor") hereby agrees to defend}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and indemnify every other Contributor ("Indemnified Contributor")}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 against any losses, damages and costs (collectively "Loss\hich\af2\dbch\af11\loch\f2 
+ es") arising}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ from claims, lawsuits and other legal actions brought by a third party}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ against the Indemnified Contributor to the extent caused by the acts}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ or omissions of such Commercial Contributor in connection with its}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ distribution of the Prog\hich\af2\dbch\af11\loch\f2 ram in a commercial product offering. The}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 obligations in this section do not apply to any claims or Losses}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 relating to any actual or alleged intellectual property infringement.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 In order to qualify, an Indemnified Contributor must: a) promptly\hich\af2\dbch\af11\loch\f2  notify the Commercial Contributor in writing of such claim, and b)}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 allow the Commercial Contributor to control, and cooperate with the\hich\af2\dbch\af11\loch\f2 
+  Commercial Contributor in, the defense and any related settlement\hich\af2\dbch\af11\loch\f2  negotiations. The Indemnified Contributor m\hich\af2\dbch\af11\loch\f2 ay participate in any such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 claim at its own expense.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 For example, a Contributor might include the Program in a commercial}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 product offering, Product X. That Contributor is then a Commercial}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Contributor. If that Commercial Contributor then ma\hich\af2\dbch\af11\loch\f2 kes performance}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 claims, or offers warranties related to Product X, those performance}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  c}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 laims and warranties are such Commercial Contributor's responsibility\hich\af2\dbch\af11\loch\f2  alone. Under this section, the Commercial Contributor would have to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 defend claims agains\hich\af2\dbch\af11\loch\f2 t the other Contributors related to those}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 performance claims and warranties, and if a court requires any other}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Contributor to pay any damages as a result, the Commercial Contributor}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 must pay those damages.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 5. NO WARRANTY
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 EXCEPT AS EX\hich\af2\dbch\af11\loch\f2 PRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY\hich\af2\dbch\af11\loch\f2  WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCH\hich\af2\dbch\af11\loch\f2 ANTABILITY}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 responsible for determining the appropriateness of using and}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 distributing the Program and assumes all risks associated with its}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 exercise of rights under this Agreement, in\hich\af2\dbch\af11\loch\f2 cluding but not limited to}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the risks and costs of program errors, compliance with applicable}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 laws, damage to or loss of data, programs or equipment, and}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 unavailability or interruption of operations.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 6. DISCLAIMER OF LIABILITY
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 WITHOUT LIMITATION LOST PROFITS), HOW\hich\af2\dbch\af11\loch\f2 EVER CAUSED AND ON ANY THEORY OF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  \hich\af2\dbch\af11\loch\f2 L}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 IABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED\hich\af2\dbch\af11\loch\f2  HEREUNDER, EVE\hich\af2\dbch\af11\loch\f2 
+ N IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 7. GENERAL
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 If any provision of this Agreement is invalid or unenforceable under}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 applicable law, it shall not affect the validity or enforceability of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the remainder of the terms of this Ag\hich\af2\dbch\af11\loch\f2 reement, and without further}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 action by the parties hereto, such provision shall be reformed to the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 minimum extent necessary to make such provision valid and enforceable.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 If Recipient institutes patent litigation against a Contributor with}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 r\hich\af2\dbch\af11\loch\f2 espect to a patent applicable to software (including a cross-claim or\hich\af2\dbch\af11\loch\f2  counterclaim in a lawsuit), then any patent licenses granted by that\hich\af2\dbch\af11\loch\f2 
+  Contributor to such Recipient under this Agreement shall terminate as\hich\af2\dbch\af11\loch\f2  of the date such litigation is filed. \hich\af2\dbch\af11\loch\f2 In addition, If Recipient}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 institutes patent litigation against any entity (including a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 cross-claim or counterclaim in a lawsuit) alleging that the Program}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 itself (excluding combinations of the Program with other software or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 hardware) infringes such Recipient's patent(s), then such Recipient's}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights granted under Section 2(b) shall terminate as of the date such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 litigation is filed.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 All Recipient's rights under this Agreement shall terminate if it}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 fails to c\hich\af2\dbch\af11\loch\f2 omply with any of the material terms or conditions of this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Agreement and does not cure such failure in a reasonable period of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 time after becoming aware of such noncompliance. If all Recipient's}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights under this Agreement terminate, Recipient agre\hich\af2\dbch\af11\loch\f2 es to cease use}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and distribution of the Program as soon as reasonably practicable.\hich\af2\dbch\af11\loch\f2   However, Recipient's obligations under this Agreement and any licenses
+ \hich\af2\dbch\af11\loch\f2  granted by Recipient relating to the Program shall continue and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 survive.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 IBM may pu\hich\af2\dbch\af11\loch\f2 blish new versions (including revisions) of this Agreement}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 from time to time. Each new version of the Agreement will be given a\hich\af2\dbch\af11\loch\f2  distinguishing version number. The Program (including Contributions)}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 may always be distributed subject to the version o\hich\af2\dbch\af11\loch\f2 f the Agreement}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under which it was received. In addition, after a new version of the}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Agreement is published, Contributor may elect to distribute the}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Program (including its Contributions) under the new version. No one}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 other than IBM has the righ\hich\af2\dbch\af11\loch\f2 t to modify this Agreement. Except as}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 expressly stated in Sections 2(a) and 2(b) above, Recipient receives}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 no rights or licenses to the intellectual property of any Contributor}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under this Agreement, whether expressly, by implication, estoppel or}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 otherwise. All rights in the Program not expressly granted under this}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Agreement are reserved.
+ \par \hich\af2\dbch\af11\loch\f2    
+ \par \hich\af2\dbch\af11\loch\f2 This Agreement is governed by the laws of the State of {\*\xmlopen\xmlns1{\factoidname State}}New York{\*\xmlclose} and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the intellectual property laws of the {\*\xmlopen\xmlns1{\factoidname place}}{\*\xmlopen\xmlns1{\factoidname country-region}}United States of America{\*\xmlclose}{\*\xmlclose}. No
+ }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 party to\hich\af2\dbch\af11\loch\f2 
+  this Agreement will bring a legal action under this Agreement}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ more than one year after the cause of action arose. Each party waives}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ its rights to a jury trial in any resulting litigation.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Kerberos 5 ticket support in rxkad is subject to the followi\hich\af2\dbch\af11\loch\f2 ng copyright:
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 \hich\f2 Copyright (c) 1995, 1996, 1997, 2002 Kungliga Tekniska H\'f6\loch\f2 gskolan
+ \par \hich\af2\dbch\af11\loch\f2 (Royal {\*\xmlopen\xmlns1{\factoidname PostalCode}}Institute{\*\xmlclose} of {\*\xmlopen\xmlns1{\factoidname PostalCode}}Technology{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname 
+ PostalCode}}Stockholm{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}Sweden{\*\xmlclose}{\*\xmlclose}).
+ \par \hich\af2\dbch\af11\loch\f2 All rights reserved.
+ \par \hich\af2\dbch\af11\loch\f2  
+ \par \hich\af2\dbch\af11\loch\f2 Redistribution and use in source a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 nd binary forms, with or \hich\af2\dbch\af11\loch\f2 without\hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 modification, a\hich\af2\dbch\af11\loch\f2 re permitted provided that the following conditions}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 are met:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1. Redistributions of source code must retain the above copyright\hich\af2\dbch\af11\loch\f2  notice, this list of conditions and the following disclaimer.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  
+ \par \hich\af2\dbch\af11\loch\f2 2. Redistributions in binary form must repro\hich\af2\dbch\af11\loch\f2 duce the above copyright\hich\af2\dbch\af11\loch\f2   notice, this list of conditions and the following disclaimer in the\hich\af2\dbch\af11\loch\f2 
+   documentation and/or other materials provided with the distribution.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  
+ \par \hich\af2\dbch\af11\loch\f2 3. Neither the name of the Institute nor the names of its contributors\hich\af2\dbch\af11\loch\f2  may be used to endorse or promote products derived from this software\hich\af2\dbch\af11\loch\f2 
+  without specific prior written permission.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND\hich\af2\dbch\af11\loch\f2  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\hich\af2\dbch\af11\loch\f2 
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\hich\af2\dbch\af11\loch\f2  ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 FOR ANY DIRECT, INDIRECT\hich\af2\dbch\af11\loch\f2 , INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\hich\af2\dbch\af11\loch\f2 
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER\hich\af2\dbch\af11\loch\f2  IN CONTRACT, STRICT\hich\af2\dbch\af11\loch\f2  LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\hich\af2\dbch\af11\loch\f2 
+  OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\hich\af2\dbch\af11\loch\f2  SUCH DAMAGE.
+ \par 
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Some code in rxkad/ticket5.c}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  and WINNT/afsd/afskfw.\hich\af2\dbch\af11\loch\f2 c}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  is subject to the following copyri\hich\af2\dbch\af11\loch\f2 ght:
+ \par 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 Copyright 1992, 2006}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  by the Massachusetts Institute of Technology.
+ \par \hich\af2\dbch\af11\loch\f2 All Rights Reserved.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Export of this software from the {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname PostalCode}}United States of America{\*\xmlclose}{\*\xmlclose} may}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 require a specific license from the United States Government.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2   It is the resp\hich\af2\dbch\af11\loch\f2 onsibility of any person or organization contemplating
+ \hich\af2\dbch\af11\loch\f2   export to obtain such a license before exporting.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 WITHIN THAT CONSTRAINT, permission to use, copy, modify, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distribute this software and its documentation for any purpose and\hich\af2\dbch\af11\loch\f2  witho\hich\af2\dbch\af11\loch\f2 ut fee is hereby granted, provided that the above copyright\hich\af2\dbch\af11\loch\f2 
+  notice appear in all copies and that both that copyright notice and\hich\af2\dbch\af11\loch\f2  this permission notice appear in supporting documentation, and that\hich\af2\dbch\af11\loch\f2 
+  the name of M.I.T. not be used in advertising or publicity pertaining\hich\af2\dbch\af11\loch\f2  to distribution of the software without specific, written prior\hich\af2\dbch\af11\loch\f2 
+  permission.  Furthermore if you modify this software you must label\hich\af2\dbch\af11\loch\f2  your software as modified software and not\hich\af2\dbch\af11\loch\f2  distribute it in such a\hich\af2\dbch\af11\loch\f2 
+  fashion that it might be confused with the original M.I.T. software.\hich\af2\dbch\af11\loch\f2  M.I.T. makes no representations about the suitability of\hich\af2\dbch\af11\loch\f2  this software for any purpose.  It is provided "as is" without express
+ \hich\af2\dbch\af11\loch\f2  or implied warranty.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 afssettings is subject to the following license:
+ \par \hich\af2\dbch\af11\loch\f2 APPLE PUBLIC SOURCE LICENSE
+ \par \hich\af2\dbch\af11\loch\f2 Version 2.0 - August 6, 2003
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Please read this License carefully before downloading this software.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 By downloading or using this software, you are agreeing to be bound by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the t\hich\af2\dbch\af11\loch\f2 erms of this License. If you do not or cannot agree to the terms}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 of this License, please do not download or use the software.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1. General; Definitions. This License applies to any program or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 work which Apple Computer, Inc. ("Apple") makes publicly av\hich\af2\dbch\af11\loch\f2 ailable and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 which contains a notice placed by Apple identifying such program or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 work as "Original Code" and stating that it is subject to the terms of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this Apple Public Source License version 2.0 ("License"). As used in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this License:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.1 "Applicable Patent Rights" mean: (a) in the case where Apple is}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the grantor of rights, (i) claims of patents that are now or hereafter}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 acquired, owned by or assigned to Apple and (ii) that cover subject}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 matter contained in the Original Code, but only t\hich\af2\dbch\af11\loch\f2 o the extent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 necessary to use, reproduce and/or distribute the Original Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 without infringement; and (b) in the case where You are the grantor of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights, (i) claims of patents that are now or hereafter acquired,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 owned by or assigned to You and (ii) that \hich\af2\dbch\af11\loch\f2 cover subject matter in Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, taken alone or in combination with Original Code.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.2 "Contributor" means any person or entity that creates or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 contributes to the creation of Modifications.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.3 "Covered Code" means the Original Code, Modificat\hich\af2\dbch\af11\loch\f2 ions, the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 combination of Original Code and any Modifications, and/or any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 respective portions thereof.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.4 "Externally Deploy" means: (a) to sublicense, distribute or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 otherwise make Covered Code available, directly or indirectly, to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 anyone other than You; \hich\af2\dbch\af11\loch\f2 and/or (b) to use Covered Code, alone or as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 part of a Larger Work, in any way to provide a service, including but}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 not limited to delivery of content, through electronic communication}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 with a client other than You.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.5 "Larger Work" means a work which combi\hich\af2\dbch\af11\loch\f2 nes Covered Code or portions}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 thereof with code not governed by the terms of this License.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 1.6 "Modifications" mean any addition to, deletion fr}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 o}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 m, and/or change}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 to, the substance and/or structure of the Original Code, any previous}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Modifications, the combination of Original Code and any previous}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Modifications, and/or any respective portions thereof. When code is}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 released as a series of files, a Modification is: (a) any addition to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 or deletion from the contents of a file containing Co\hich\af2\dbch\af11\loch\f2 vered Code;}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and/or (b) any new file or other representation of computer program}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 statements that contains any part of Covered Code.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.7 "Original Code" means (a) the Source Code of a program or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 work as originally made available by Apple under this Li\hich\af2\dbch\af11\loch\f2 cense,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 including the Source Code of any updates or upgrades to such programs}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 or works made available by Apple under this License, and that has been}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 expressly identified by Apple as such in the header file(s) of such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 work; and (b) the object code compiled f\hich\af2\dbch\af11\loch\f2 rom such Source Code and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 originally made available by Apple under this License.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.8 "Source Code" means the human readable form of a program or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 work that is suitable for making modifications to it, including all}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 modules it contains, plus any associa\hich\af2\dbch\af11\loch\f2 ted interface definition files,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 scripts used to control compilation and installation of an executable}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 (object code).
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 1.9 "You" or "Your" means an individual or a legal entity exercising}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 rights under this License. For legal entities, "You" or "Your"}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 includ\hich\af2\dbch\af11\loch\f2 es any entity which controls, is controlled by, or is under}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 common control with, You, where "control" means (a) the power, direct}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 or indirect, to cause the direction or management of such entity,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 whether by contract or otherwise, or (b) ownership of fifty \hich\af2\dbch\af11\loch\f2 percent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 (50%) or more of the outstanding shares or beneficial ownership of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 such entity.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 2. Permitted Uses; Conditions & Restrictions. Subject to the terms}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 and conditions of this License, Apple hereby grants You, effective on}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the date You accept this License and download the Original Code, a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 world-wide, royalty-free, non-exclusive license, to the extent of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Apple's Applicable Patent Rights and copyrights covering the Original}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Code, to do the following:
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 2.1 Unmodified Code. You \hich\af2\dbch\af11\loch\f2 may use, reproduce, display, perform,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 internally distribute within Your organization, and Externally Deploy}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 verbatim, unmodified copies of the Original Code, for commercial or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 non-commercial purposes, provided that in each instance:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (a) You must retain an\hich\af2\dbch\af11\loch\f2 d reproduce in all copies of Original Code the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 copyright and other proprietary notices and disclaimers of Apple as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 they appear in the Original Code, and keep intact all notices in the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Original Code that refer to this License; and
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (b) You must include a co\hich\af2\dbch\af11\loch\f2 py of this License with every copy of Source}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Code of Covered Code and documentation You distribute or Externally}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Deploy, and You may not offer or impose any terms on such Source Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 that alter or restrict this License or the recipients' rights}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 hereunder, \hich\af2\dbch\af11\loch\f2 except as permitted under Section 6.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 2.2 Modified Code. You may modify Covered Code and use, reproduce,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 display, perform, internally distribute within Your organization, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Externally Deploy Your Modifications and Covered Code, for commercial}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 or non-commercial purposes, provided that in each instance You also}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 meet all of these conditions:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (a) You must satisfy all the conditions of Section 2.1 with respect to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the Source Code of the Covered Code;
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (b) You must duplicate, to the extent it does no\hich\af2\dbch\af11\loch\f2 t already exist, the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 notice in Exhibit A in each file of the Source Code of all Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, and cause the modified files to carry prominent notices}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 stating that You changed the files and the date of any change; and
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (c) If You Externally Deploy You\hich\af2\dbch\af11\loch\f2 r Modifications, You must make}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Source Code of all Your Externally Deployed Modifications either}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 available to those to whom You have Externally Deployed Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, or publicly available. Source Code of Your Externally}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Deployed Modifications must be\hich\af2\dbch\af11\loch\f2  released under the terms set forth in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this License, including the license grants set forth in Section 3}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 below, for as long as you Externally Deploy the Covered Code or twelve}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 (12) months from the date of initial External Deployment, whichever is}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 longer. Y\hich\af2\dbch\af11\loch\f2 ou should preferably distribute the Source Code of Your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Externally Deployed Modifications electronically (e.g. download from a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 web site).
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 2.3 Distribution of Executable Versions. In addition, if You}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Externally Deploy Covered Code (Original Code and/or Mod\hich\af2\dbch\af11\loch\f2 ifications) in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 object code, executable form only, You must include a prominent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 notice, in the code itself as well as in related documentation,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 stating that Source Code of the Covered Code is available under the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 terms of this License with information on how and where to obtain such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Source Code.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par \hich\af2\dbch\af11\loch\f2 2}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 .4 Third Party Rights. You expressly acknowledge and agree that}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 although Apple and each Contributor grants the licenses to their}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 respective portions of the Covered Code s\hich\af2\dbch\af11\loch\f2 et forth herein, no}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 assurances are provided by Apple or any Contributor that the Covered}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Code does not infringe the patent or other intellectual property}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights of any other entity. Apple and each Contributor disclaim any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 liability to You for claims brough\hich\af2\dbch\af11\loch\f2 t by any other entity based on}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 infringement of intellectual property rights or otherwise. As a}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 condition to exercising the rights and licenses granted hereunder, You}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 hereby assume sole responsibility to secure any other intellectual}{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 property rights needed,\hich\af2\dbch\af11\loch\f2  if any. For example, if a third party patent}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 license is required to allow You to distribute the Covered Code, it is}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Your responsibility to acquire that license before distributing the}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Covered Code.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 3. Your Grants. In consideration of, and as a condition \hich\af2\dbch\af11\loch\f2 to, the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 licenses granted to You under this License, You hereby grant to any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 person or entity receiving or distributing Covered Code under this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License a non-exclusive, royalty-free, perpetual, irrevocable license,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under Your Applicable Patent Rights and ot\hich\af2\dbch\af11\loch\f2 her intellectual property}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights (other than patent) owned or controlled by You, to use,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 reproduce, display, perform, modify, sublicense, distribute and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Externally Deploy Your Modifications of the same scope and extent as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Apple's licenses under Sections 2.\hich\af2\dbch\af11\loch\f2 1 and 2.2 above.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 4. Larger Works. You may create a Larger Work by combining Covered}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Code with other code not governed by the terms of this License and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distribute the Larger Work as a single product. In each such instance,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 You must make sure the requirements of this License are fulfilled for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the Covered Code or any portion thereof.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 5. Limitations on Patent License. Except as expressly stated in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Section 2, no other patent rights, express or implied, are granted by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Apple here\hich\af2\dbch\af11\loch\f2 in. Modifications and/or Larger Works may require additional}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 patent licenses from Apple which Apple may grant in its sole}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 discretion.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 6. Additional Terms. You may choose to offer, and to charge a fee for,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 warranty, support, indemnity or liability obligati\hich\af2\dbch\af11\loch\f2 ons and/or other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rights consistent with the scope of the license granted herein}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ("Additional Terms") to one or more recipients of Covered Code.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 However, You may do so only on Your own behalf and as Your sole}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 responsibility, and not on behalf of Apple or an\hich\af2\dbch\af11\loch\f2 y Contributor. You}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 must obtain the recipient's agreement that any such Additional Terms
+ \par \hich\af2\dbch\af11\loch\f2 are offered by You alone, and You hereby agree to indemnify, defend}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 and hold Apple and every Contributor harmless for any liability}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 incurred by or claims asserted again\hich\af2\dbch\af11\loch\f2 st Apple or such Contributor by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 reason of any such Additional Terms.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 7. Versions of the License. Apple may publish revised and/or new}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 versions of this License from time to time. Each version will be given}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 a distinguishing version number. Once Original Cod\hich\af2\dbch\af11\loch\f2 e has been published}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under a particular version of this License, You may continue to use it}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 under the terms of that version. You may also choose to use such}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Original Code under the terms of any subsequent version of this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License published by Apple. No one other than Apple has the right to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 modify the terms applicable to Covered Code created under this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 8. NO WARRANTY OR SUPPORT. The Covered Code may contain in whole or in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 part pre-release, untested, or not fully te\hich\af2\dbch\af11\loch\f2 sted works. The Covered}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Code may contain errors that could cause failures or loss of data, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  \hich\af2\dbch\af11\loch\f2 m}{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ay be incomplete or contain inaccuracies. You expressly acknowledge}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and agree that use of the Covered Code, or any portion thereof, is at}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Your sole and entire r\hich\af2\dbch\af11\loch\f2 isk. THE COVERED CODE IS PROVIDED "AS IS" AND}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 WITHOUT WARRANTY, UPGRADES OR SUPPORT OF ANY KIND AND APPLE AND}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE" FOR THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ALL WARRANT\hich\af2\dbch\af11\loch\f2 IES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 NOT LIMITED TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 MERCHANTABILITY, OF SATISFACTORY QUALITY, OF FITNESS FOR A PARTICULAR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT, AND NONINFRINGEMENT OF THI\hich\af2\dbch\af11\loch\f2 RD}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 PARTY RIGHTS. APPLE AND EACH CONTRIBUTOR DOES NOT WARRANT AGAINST
+ \par \hich\af2\dbch\af11\loch\f2 INTERF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 E}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ RENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ THAT THE OPERATION OF THE COVERED CODE WILL BE UNINTERR\hich\af2\dbch\af11\loch\f2 UPTED OR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 ERROR-FREE, OR THAT DEFECTS IN THE COVERED CODE WILL BE CORRECTED. NO}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY APPLE, AN APPLE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR SHALL CREATE A WARRANTY.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 You acknowledge that the Covered Code is not\hich\af2\dbch\af11\loch\f2  intended for use in the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 operation of nuclear facilities, aircraft navigation, communication}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 systems, or air traffic control machines in which case the failure of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the Covered Code could lead to death, personal injury, or severe
+ \par \hich\af2\dbch\af11\loch\f2 physical or environmental damage.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 9. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 EVENT SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 TO THIS LICEN\hich\af2\dbch\af11\loch\f2 SE OR YOUR USE OR INABILITY TO USE THE COVERED CODE, OR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 ANY PORTION THEREOF, WHETHER UNDER A THEORY OF CONTRACT, WARRANTY,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR OTHERWISE, EVEN IF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY O\hich\af2\dbch\af11\loch\f2 F SUCH}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 TO YOU. In no event shall Apple's total \hich\af2\dbch\af11\loch\f2 liability to You for all}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 damages (other than as may be required by applicable law) under this}{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License exceed the amount of fifty dollars ($50.00).
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 10. Trademarks. This License does not grant any rights to use the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 trademarks or trade names "Apple", "Apple \hich\af2\dbch\af11\loch\f2 Computer", "Mac", "Mac OS",}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 "QuickTime", "QuickTime Streaming Server" or any other trademarks,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 service marks, logos or trade names belonging to Apple (collectively}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 "Apple Marks") or to any trademark, service mark, logo or trade name}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 belonging to any Contri\hich\af2\dbch\af11\loch\f2 butor. You agree not to use any Apple Marks in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 or as part of the name of products derived from the Original Code or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 to endorse or promote products derived from the Original Code other}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 than as expressly permitted by and in strict compliance at all times}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 with Apple's third party trademark usage guidelines which are posted}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 at}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 http://www.apple.com/legal/guidelinesfor3rdparties.html.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 11. Ownership. Subject to the licenses granted under this License,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 each Contributor retains all rights, title and interest in \hich\af2\dbch\af11\loch\f2 and to any}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications made by such Contributor. Apple retains all rights,
+ \par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 itle and interest in and to the Original Code and any Modifications}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 made by or on behalf of Apple ("Apple Modifications"), and such Apple}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications will not be automatically \hich\af2\dbch\af11\loch\f2 subject to this License. Apple
+ \par \hich\af2\dbch\af11\loch\f2 m\hich\af2\dbch\af11\loch\f2 ay, at its sole discretion, choose to license such Apple}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications under this License, or on different terms from those}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 contained in this License or may choose not to license them at all.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 12. Termination.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 12.1 Terminat\hich\af2\dbch\af11\loch\f2 ion. This License and the rights granted hereunder will}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 terminate:
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (a) automatically without notice from Apple if You fail to comply with}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 any term(s) of this License and fail to cure such breach within 30}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 days of becoming aware of such breach;
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (b) immedi\hich\af2\dbch\af11\loch\f2 ately in the event of the circumstances described in Section}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 13.5(b); or
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 (c) automatically without notice from Apple if You, at any time during}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 the term of this License, commence an action for patent infringement}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 against Apple; provided that Apple did not\hich\af2\dbch\af11\loch\f2  first commence}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 an action for patent infringement against You in that instance.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 12.2 Effect of Termination. Upon termination, You agree to immediately}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 stop any further use, reproduction, modification, sublicensing and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distribution of the Covered Code. All sublicenses to the Covered Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 which have been properly granted prior to termination shall survive}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 any termination of this License. Provisions which, by their nature,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 should remain in effect beyond the termination of \hich\af2\dbch\af11\loch\f2 this License shall}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 survive, including but not limited to Sections 3, 5, 8, 9, 10, 11,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 12.2 and 13. No party will be liable to any other for compensation,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 indemnity or damages of any sort solely as a result of terminating}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 this License in accordance with its\hich\af2\dbch\af11\loch\f2  terms, and termination of this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 License will be without prejudice to any other right or remedy of
+ \par \hich\af2\dbch\af11\loch\f2 any p}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2 a}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 rty.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13. Miscellaneous.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.1 Government End Users. The Covered Code is a "commercial item" as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 defined in FAR 2.101. Government software and technical \hich\af2\dbch\af11\loch\f2 data rights in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the Covered Code include only those rights customarily provided to the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 public as defined in this License. This customary commercial license}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 in technical data and software is provided in accordance with FAR}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 12.211 (Technical Data) and 12.212 \hich\af2\dbch\af11\loch\f2 (Computer Software) and, for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Department of Defense purchases, DFAR 252.227-7015 (Technical Data --}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Commercial Items) and 227.7202-3 (Rights in Commercial Computer}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Software or Computer Software Documentation). Accordingly, all U.S.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Government End Users acqu\hich\af2\dbch\af11\loch\f2 ire Covered Code with only those rights set}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 forth herein.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.2 Relationship of Parties. This License will not be construed as}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 creating an agency, partnership, joint venture or any other form of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 legal association between or among You, Apple or any Contributor, and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 You will not represent to the contrary, whether expressly, by}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 implication, appearance or otherwise.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.3 Independent Development. Nothing in this License will impair}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Apple's right to ac\hich\af2\dbch\af11\loch\f2 quire, license, develop, have others develop for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 it, market and/or distribute technology or products that perform the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 same or similar functions as, or otherwise compete with,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Modifications, Larger Works, technology or products that You may}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 develop, produce\hich\af2\dbch\af11\loch\f2 , market or distribute.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.4 Waiver; Construction. Failure by Apple or any Contributor to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 enforce any provision of this License will not be deemed a waiver of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 future enforcement of that or any other provision. Any law or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 regulation which provides that the\hich\af2\dbch\af11\loch\f2  language of a contract shall be}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 construed against the drafter will not apply to this License.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.5 Severability. (a) If for any reason a court of competent}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 jurisdiction finds any provision of this License, or portion thereof,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 to be unenforceable, that pr\hich\af2\dbch\af11\loch\f2 ovision of the License will be enforced to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the maximum extent permissible so as to effect the economic benefits}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 and intent of the parties, and the remainder of this License will}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 continue in full force and effect. (b) Notwithstanding the foregoing,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 if appli\hich\af2\dbch\af11\loch\f2 cable law prohibits or restricts You from fully and/or}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 specifically complying with Sections 2 and/or 3 or prevents the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 
+ \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 enforceability of either of those Sections, this License will
+ \par \hich\af2\dbch\af11\loch\f2 immediately \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 erminate and You must immediately discontinue any use of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the Covered Code and destroy all copies of it that are in your}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 
+ \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 possession or control.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.6 Dispute Resolution. Any litigation or other dispute resolution}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 between You and Apple relating to this License shall take place in the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Northern District of Californi\hich\af2\dbch\af11\loch\f2 a, and You and Apple hereby consent to}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 the personal jurisdiction of, and venue in, the state and federal}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 courts within that District with respect to this License. The}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 application of the United Nations Convention on Contracts for the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 International Sale of G\hich\af2\dbch\af11\loch\f2 oods is expressly excluded.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 13.7 Entire Agreement; Governing Law. This License constitutes the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 entire agreement between the parties with respect to the subject}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 matter hereof. This License shall be governed by the laws of the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 United States and the State of\hich\af2\dbch\af11\loch\f2  California, except that body of}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 California law concerning conflicts of law.
+ \par \hich\af2\dbch\af11\loch\f2 Where You are located in the {\*\xmlopen\xmlns1{\factoidname PostalCode}}province{\*\xmlclose} of {\*\xmlopen\xmlns1{\factoidname PostalCode}}Quebec{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}
+ {\*\xmlopen\xmlns1{\factoidname PostalCode}}Canada{\*\xmlclose}{\*\xmlclose}, the following}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 clause applies: The parties hereby confirm that they have requested}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 that this License and all related docum\hich\af2\dbch\af11\loch\f2 ents be drafted in English. Les}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 parties ont exige que le present contrat et tous les documents}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 connexes soient rediges en anglais.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 EXHIBIT A.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 "Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Reserved.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 This file contains Original Code and/or Modifications of Original Code}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 as defined in and that are subject to the Apple Public Source License}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 Version 2.0 (the 'License'). You may not use this file except in}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 compliance with the License. Please obtain a copy \hich\af2\dbch\af11\loch\f2 of the License at}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 http://www.opensource.apple.com/apsl/ and read it before using this}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 
+ \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 file.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 The Original Code and all software distributed under the License are}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 E\hich\af2\dbch\af11\loch\f2 XPRESS OR IMPLIED, AND \hich\af2\dbch\af11\loch\f2 APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Please see the License for the specific language governing rights and}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 limita\hich\af2\dbch\af11\loch\f2 tions under the License."
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 Some portions of Rx are subject to the following license:
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Sun RPC is a product of Sun Microsystems, Inc. and is provided for}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 unrestricted use provided that this legend is included on all tape}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 media and as a part of th\hich\af2\dbch\af11\loch\f2 e software program in whole or part.  Users\hich\af2\dbch\af11\loch\f2 
+  may copy or modify Sun RPC without charge, but are not authorized\hich\af2\dbch\af11\loch\f2  to license or distribute it to anyone else except as part of a product or\hich\af2\dbch\af11\loch\f2 
+  program developed by the user or with the express written conse\hich\af2\dbch\af11\loch\f2 nt of\hich\af2\dbch\af11\loch\f2  Sun Microsystems, Inc.
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 
+ \hich\af2\dbch\af11\loch\f2 WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR\hich\af2\dbch\af11\loch\f2  PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Sun RPC is provided with no support and without any obligation on the}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 part of Sun Microsystems, Inc. to assist in its use, correction,}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{
+ \rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 modification or enhancement.}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 S}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 UN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 INFRING\hich\af2\dbch\af11\loch\f2 EMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC\hich\af2\dbch\af11\loch\f2 
+  OR ANY PART THEREOF.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 In no event will Sun Microsystems, Inc. be liable for any lost revenue\hich\af2\dbch\af11\loch\f2 
+  or profits or other special, indirect and consequential damages, even if}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 
+ Sun has been ad\hich\af2\dbch\af11\loch\f2 vised of the possibility of such damages.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 
+ \par \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 \hich\af2\dbch\af11\loch\f2 Sun Microsystems, Inc.
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname PostalCode}}
+ \hich\af2\dbch\af11\loch\f2 2550 Garcia Avenue{\*\xmlclose}{\*\xmlclose}
+ \par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid5512945 \hich\af2\dbch\af11\loch\f2  }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid16720314 {\*\xmlopen\xmlns1{\factoidname PostalCode}}{\*\xmlopen\xmlns1{\factoidname PostalCode}}
+ \hich\af2\dbch\af11\loch\f2 Mountain View{\*\xmlclose}, {\*\xmlopen\xmlns1{\factoidname PostalCode}}California{\*\xmlclose}  {\*\xmlopen\xmlns1{\factoidname PostalCode}}94043{\*\xmlclose}{\*\xmlclose}
+ \par 
+ \par \hich\af2\dbch\af11\loch\f2 src/afs/LINUX/osi_flush.s included code under IBM Public License with permission \hich\af2\dbch\af11\loch\f2 of the author, Paul MacKerras.
+ \par }}
\ No newline at end of file
Index: openafs/src/WINNT/install/wix/property.wxi
diff -c openafs/src/WINNT/install/wix/property.wxi:1.6.2.2 openafs/src/WINNT/install/wix/property.wxi:1.6.2.3
*** openafs/src/WINNT/install/wix/property.wxi:1.6.2.2	Wed Dec  8 04:58:53 2004
--- openafs/src/WINNT/install/wix/property.wxi	Tue Jul 18 13:00:35 2006
***************
*** 45,119 ****
      <Property Id="InstallMode">Typical</Property>
  
      <Property Id="AFSCCPATCH">
!       <RegistrySearch Id="rl_AFSCC_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="PatchLevel" Type="registry" />
      </Property>
      <Property Id="AFSCCMAJOR">
!       <RegistrySearch Id="rl_AFSCC_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="MajorVersion" Type="registry" />
      </Property>
      <Property Id="AFSCCMINOR">
!       <RegistrySearch Id="rl_AFSCC_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="MinorVersion" Type="registry" />
      </Property>
      <Property Id="AFSCCPATH">
!       <RegistrySearch Id="rl_AFSCC_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="PathName" Type="registry" />
      </Property>
      
      <Property Id="AFSCLIENTPATCH">
!       <RegistrySearch Id="rl_AFSClient_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="PatchLevel" Type="registry" />
      </Property>
      <Property Id="AFSCLIENTMAJOR">
!       <RegistrySearch Id="rl_AFSClient_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="MajorVersion" Type="registry" />
      </Property>
      <Property Id="AFSCLIENTMINOR">
!       <RegistrySearch Id="rl_AFSClient_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="MinorVersion" Type="registry" />
      </Property>
      <Property Id="AFSCLIENTPATH">
!       <RegistrySearch Id="rl_AFSClient_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="PathName" Type="registry" />
      </Property>
  
      <Property Id="AFSDOCPATCH">
!       <RegistrySearch Id="rl_AFSDoc_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="PatchLevel" Type="registry" />
      </Property>
      <Property Id="AFSDOCMAJOR">
!       <RegistrySearch Id="rl_AFSDoc_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="MajorVersion" Type="registry" />
      </Property>
      <Property Id="AFSDOCMINOR">
!       <RegistrySearch Id="rl_AFSDoc_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="MinorVersion" Type="registry" />
      </Property>
      <Property Id="AFSDOCPATH">
!       <RegistrySearch Id="rl_AFSDoc_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="PathName" Type="registry" />
      </Property>
  
      <Property Id="AFSSERVERPATCH">
!       <RegistrySearch Id="rl_AFSServer_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="PatchLevel" Type="registry" />
      </Property>
      <Property Id="AFSSERVERMAJOR">
!       <RegistrySearch Id="rl_AFSServer_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="MajorVersion" Type="registry" />
      </Property>
      <Property Id="AFSSERVERMINOR">
!       <RegistrySearch Id="rl_AFSServer_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="MinorVersion" Type="registry" />
      </Property>
      <Property Id="AFSSERVERPATH">
!       <RegistrySearch Id="rl_AFSServer_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="PathName" Type="registry" />
      </Property>
      
      <Property Id="AFSSDKPATCH">
!       <RegistrySearch Id="rl_AFSSDK_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="PatchLevel" Type="registry" />
      </Property>
      <Property Id="AFSSDKMAJOR">
!       <RegistrySearch Id="rl_AFSSDK_major" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="MajorVersion" Type="registry" />
      </Property>
      <Property Id="AFSSDKMINOR">
!       <RegistrySearch Id="rl_AFSSDK_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="MinorVersion" Type="registry" />
      </Property>
      <Property Id="AFSSDKPATH">
!       <RegistrySearch Id="rl_AFSSDK_path" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="PathName" Type="registry" />
      </Property>
  
  	<Property Id="NSISVERSION">
! 	  <RegistrySearch Id="rl_NSIS_Ver" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" Name="DisplayVersion" Type="registry" />
  	</Property>
      <Property Id="NSISUNINSTALL">
! 	  <RegistrySearch Id="rl_NSIS_Uninst" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" Name="UninstallString" Type="registry" />
      </Property>
      
      <Property Id="ABORTREASON">$(loc.StrNsisAbortReason)</Property>
--- 45,119 ----
      <Property Id="InstallMode">Typical</Property>
  
      <Property Id="AFSCCPATCH">
!       <RegistrySearch Id="rl_AFSCC_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="PatchLevel" Type="raw" />
      </Property>
      <Property Id="AFSCCMAJOR">
!       <RegistrySearch Id="rl_AFSCC_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="MajorVersion" Type="raw" />
      </Property>
      <Property Id="AFSCCMINOR">
!       <RegistrySearch Id="rl_AFSCC_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="MinorVersion" Type="raw" />
      </Property>
      <Property Id="AFSCCPATH">
!       <RegistrySearch Id="rl_AFSCC_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Control Center\CurrentVersion" Name="PathName" Type="directory" />
      </Property>
      
      <Property Id="AFSCLIENTPATCH">
!       <RegistrySearch Id="rl_AFSClient_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="PatchLevel" Type="raw" />
      </Property>
      <Property Id="AFSCLIENTMAJOR">
!       <RegistrySearch Id="rl_AFSClient_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="MajorVersion" Type="raw" />
      </Property>
      <Property Id="AFSCLIENTMINOR">
!       <RegistrySearch Id="rl_AFSClient_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="MinorVersion" Type="raw" />
      </Property>
      <Property Id="AFSCLIENTPATH">
!       <RegistrySearch Id="rl_AFSClient_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Client\CurrentVersion" Name="PathName" Type="directory" />
      </Property>
  
      <Property Id="AFSDOCPATCH">
!       <RegistrySearch Id="rl_AFSDoc_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="PatchLevel" Type="raw" />
      </Property>
      <Property Id="AFSDOCMAJOR">
!       <RegistrySearch Id="rl_AFSDoc_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="MajorVersion" Type="raw" />
      </Property>
      <Property Id="AFSDOCMINOR">
!       <RegistrySearch Id="rl_AFSDoc_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="MinorVersion" Type="raw" />
      </Property>
      <Property Id="AFSDOCPATH">
!       <RegistrySearch Id="rl_AFSDoc_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Supplemental Documentation\CurrentVersion" Name="PathName" Type="directory" />
      </Property>
  
      <Property Id="AFSSERVERPATCH">
!       <RegistrySearch Id="rl_AFSServer_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="PatchLevel" Type="raw" />
      </Property>
      <Property Id="AFSSERVERMAJOR">
!       <RegistrySearch Id="rl_AFSServer_major" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="MajorVersion" Type="raw" />
      </Property>
      <Property Id="AFSSERVERMINOR">
!       <RegistrySearch Id="rl_AFSServer_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="MinorVersion" Type="raw" />
      </Property>
      <Property Id="AFSSERVERPATH">
!       <RegistrySearch Id="rl_AFSServer_path" Root="HKLM" Key="Software\TransarcCorporation\AFS Server\CurrentVersion" Name="PathName" Type="directory" />
      </Property>
      
      <Property Id="AFSSDKPATCH">
!       <RegistrySearch Id="rl_AFSSDK_patch" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="PatchLevel" Type="raw" />
      </Property>
      <Property Id="AFSSDKMAJOR">
!       <RegistrySearch Id="rl_AFSSDK_major" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="MajorVersion" Type="raw" />
      </Property>
      <Property Id="AFSSDKMINOR">
!       <RegistrySearch Id="rl_AFSSDK_minor" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="MinorVersion" Type="raw" />
      </Property>
      <Property Id="AFSSDKPATH">
!       <RegistrySearch Id="rl_AFSSDK_path" Root="HKLM" Key="Software\TransarcCorporation\AFS SDK\CurrentVersion" Name="PathName" Type="directory" />
      </Property>
  
  	<Property Id="NSISVERSION">
! 	  <RegistrySearch Id="rl_NSIS_Ver" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" Name="DisplayVersion" Type="raw" />
  	</Property>
      <Property Id="NSISUNINSTALL">
! 	  <RegistrySearch Id="rl_NSIS_Uninst" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\OpenAFS" Name="UninstallString" Type="file" />
      </Property>
      
      <Property Id="ABORTREASON">$(loc.StrNsisAbortReason)</Property>
Index: openafs/src/WINNT/install/wix/lang/de_DE/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/de_DE/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/de_DE/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/de_DE/ActionText.wxi:1.1	Mon Jun 21 01:21:49 2004
--- openafs/src/WINNT/install/wix/lang/de_DE/ActionText.wxi	Tue Jul 18 12:10:23 2006
***************
*** 1,64 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Anwendungsprogramm wird angeboten</ProgressText>
  
  <ProgressText Action="AllocateRegistrySpace" Template="Freier Speicherplatz: [1]">In der Registrierung wird Speicherplatz reserviert</ProgressText>
  
  <ProgressText Action="AppSearch" Template="Eigenschaft: [1], Signatur: [2]">Installierte Anwendungsprogramme werden gesucht</ProgressText>
  
! <ProgressText Action="BindImage" Template="Datei: [1]">Ausführbare Dateien werden gebunden</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">Kompatible Produkte werden gesucht</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">Speicherbedarf wird berechnet</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">Speicherbedarf wird berechnet</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Ordner: [1]">Ordner werden erstellt</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="Verknüpfung: [1]">Verknüpfungen werden erstellt</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="Dienst: [1]">Dienste werden gelöscht</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Datei: [1], Ordner: [9], Größe: [6]">Dateien werden dupliziert</ProgressText>
  
! <ProgressText Action="FileCost" Template="">Speicherbedarf wird berechnet</ProgressText>
  
  <ProgressText Action="FindRelatedProducts" Template="Anwendung gefunden: [1]">Verwandte Anwendungen werden gesucht</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Skriptoperationen werden generiert für Aktion:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Datei: [1], Ordner: [9], Größe: [6]">Netzwerkinstallationsdateien werden kopiert</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Datei: [1], Ordner: [9], Größe: [6]">Neue Dateien werden kopiert</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">ODBC-Komponenten werden installiert</ProgressText>
  
  <ProgressText Action="InstallServices" Template="Dienst: [2]">Neue Dienste werden installiert</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Datei: [1],  Abhängigkeiten: [2]">Systemkatalog wird installiert</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">Die Installation wird überprüft</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">Die Startbedingungen werden überprüft</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Anwendung: [1]">Funktionszustände verwandter Anwendungen werden migriert</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Datei: [1], Ordner: [9], Größe: [6]">Dateien werden verschoben</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Anwendungskontext:[1], Assemblierungsname:[2]">Assemblierungsinformationen werden veröffentlicht</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Anwendungskontext:[1], Assemblierungsname:[2]">Veröffentlichung der Assemblierungsinformationen wird aufgehoben</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Datei: [1], Ordner: [2], Größe: [3]">Dateien werden gepatcht</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">Registrierung der Komponente(n) wird aktualisiert</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Komponentenkennung: [1], Kennzeichner: [2]">Qualifizierte Komponenten werden veröffentlicht</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="Funktion: [1]">Produktfunktionen werden veröffentlicht</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">Produktinformation wird veröffentlicht</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Klassenkennung: [1]">Klassenserver werden registriert</ProgressText>
  
--- 1,64 ----
  <Include>
  
! <ProgressText Action="Advertise">Anwendungsprogramm wird angeboten</ProgressText>
  
  <ProgressText Action="AllocateRegistrySpace" Template="Freier Speicherplatz: [1]">In der Registrierung wird Speicherplatz reserviert</ProgressText>
  
  <ProgressText Action="AppSearch" Template="Eigenschaft: [1], Signatur: [2]">Installierte Anwendungsprogramme werden gesucht</ProgressText>
  
! <ProgressText Action="BindImage" Template="Datei: [1]">AusfÃ¼hrbare Dateien werden gebunden</ProgressText>
  
! <ProgressText Action="CCPSearch">Kompatible Produkte werden gesucht</ProgressText>
  
! <ProgressText Action="CostFinalize">Speicherbedarf wird berechnet</ProgressText>
  
! <ProgressText Action="CostInitialize">Speicherbedarf wird berechnet</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Ordner: [1]">Ordner werden erstellt</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="VerknÃ¼pfung: [1]">VerknÃ¼pfungen werden erstellt</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="Dienst: [1]">Dienste werden gelÃ¶scht</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Datei: [1], Ordner: [9], GrÃ¶ÃŸe: [6]">Dateien werden dupliziert</ProgressText>
  
! <ProgressText Action="FileCost">Speicherbedarf wird berechnet</ProgressText>
  
  <ProgressText Action="FindRelatedProducts" Template="Anwendung gefunden: [1]">Verwandte Anwendungen werden gesucht</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Skriptoperationen werden generiert fÃ¼r Aktion:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Datei: [1], Ordner: [9], GrÃ¶ÃŸe: [6]">Netzwerkinstallationsdateien werden kopiert</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Datei: [1], Ordner: [9], GrÃ¶ÃŸe: [6]">Neue Dateien werden kopiert</ProgressText>
  
! <ProgressText Action="InstallODBC">ODBC-Komponenten werden installiert</ProgressText>
  
  <ProgressText Action="InstallServices" Template="Dienst: [2]">Neue Dienste werden installiert</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Datei: [1],  AbhÃ¤ngigkeiten: [2]">Systemkatalog wird installiert</ProgressText>
  
! <ProgressText Action="InstallValidate">Die Installation wird Ã¼berprÃ¼ft</ProgressText>
  
! <ProgressText Action="LaunchConditions">Die Startbedingungen werden Ã¼berprÃ¼ft</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Anwendung: [1]">FunktionszustÃ¤nde verwandter Anwendungen werden migriert</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Datei: [1], Ordner: [9], GrÃ¶ÃŸe: [6]">Dateien werden verschoben</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Anwendungskontext:[1], Assemblierungsname:[2]">Assemblierungsinformationen werden verÃ¶ffentlicht</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Anwendungskontext:[1], Assemblierungsname:[2]">VerÃ¶ffentlichung der Assemblierungsinformationen wird aufgehoben</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Datei: [1], Ordner: [2], GrÃ¶ÃŸe: [3]">Dateien werden gepatcht</ProgressText>
  
! <ProgressText Action="ProcessComponents">Registrierung der Komponente(n) wird aktualisiert</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Komponentenkennung: [1], Kennzeichner: [2]">Qualifizierte Komponenten werden verÃ¶ffentlicht</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="Funktion: [1]">Produktfunktionen werden verÃ¶ffentlicht</ProgressText>
  
! <ProgressText Action="PublishProduct">Produktinformation wird verÃ¶ffentlicht</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Klassenkennung: [1]">Klassenserver werden registriert</ProgressText>
  
***************
*** 88,104 ****
  
  <ProgressText Action="RemoveFolders" Template="Ordner: [1]">Ordner werden entfernt</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Datei: [1], Abschnitt: [2], Schlüssel: [3], Wert: [4]">INI-Dateieinträge werden entfernt</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">ODBC-Komponenten werden entfernt</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="Schlüssel: [1], Name: [2]">Werte werden aus der Systemregistrierung entfernt</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="Verknüpfungen: [1]">Verknüpfungen werden entfernt</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">Kompatible Produkte werden gesucht</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Aktion wird rückgängig gemacht:</ProgressText>
  
  <ProgressText Action="RollbackCleanup" Template="Datei: [1]">Sicherungsdateien werden entfernt</ProgressText>
  
--- 88,104 ----
  
  <ProgressText Action="RemoveFolders" Template="Ordner: [1]">Ordner werden entfernt</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Datei: [1], Abschnitt: [2], SchlÃ¼ssel: [3], Wert: [4]">INI-DateieintrÃ¤ge werden entfernt</ProgressText>
  
! <ProgressText Action="RemoveODBC">ODBC-Komponenten werden entfernt</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="SchlÃ¼ssel: [1], Name: [2]">Werte werden aus der Systemregistrierung entfernt</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="VerknÃ¼pfungen: [1]">VerknÃ¼pfungen werden entfernt</ProgressText>
  
! <ProgressText Action="RMCCPSearch">Kompatible Produkte werden gesucht</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Aktion wird rÃ¼ckgÃ¤ngig gemacht:</ProgressText>
  
  <ProgressText Action="RollbackCleanup" Template="Datei: [1]">Sicherungsdateien werden entfernt</ProgressText>
  
***************
*** 106,112 ****
  
  <ProgressText Action="SelfUnregModules" Template="Datei: [1], Ordner: [2]">Module werden aus der Registrierung entfernt</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">ODBC-Ordner werden initialisiert</ProgressText>
  
  <ProgressText Action="StartServices" Template="Dienst: [1]">Dienste werden gestartet</ProgressText>
  
--- 106,112 ----
  
  <ProgressText Action="SelfUnregModules" Template="Datei: [1], Ordner: [2]">Module werden aus der Registrierung entfernt</ProgressText>
  
! <ProgressText Action="SetODBCFolders">ODBC-Ordner werden initialisiert</ProgressText>
  
  <ProgressText Action="StartServices" Template="Dienst: [1]">Dienste werden gestartet</ProgressText>
  
***************
*** 114,124 ****
  
  <ProgressText Action="UnmoveFiles" Template="Datei: [1], Ordner: [9]">Verschobene Dateien werden entfernt</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Komponentenkennung: [1], Kennzeichner: [2]">Veröffentlichung qualifizierter Komponenten wird rückgängig gemacht</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Funktion: [1]">Veröffentlichung von Produktfunktionen wird rückgängig gemacht</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">Veröffentlichung von Produktinformation wird rückgängig gemacht</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Klassenkennung: [1]">Klassenserver werden aus der Registrierung entfernt</ProgressText>
  
--- 114,124 ----
  
  <ProgressText Action="UnmoveFiles" Template="Datei: [1], Ordner: [9]">Verschobene Dateien werden entfernt</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Komponentenkennung: [1], Kennzeichner: [2]">VerÃ¶ffentlichung qualifizierter Komponenten wird rÃ¼ckgÃ¤ngig gemacht</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Funktion: [1]">VerÃ¶ffentlichung von Produktfunktionen wird rÃ¼ckgÃ¤ngig gemacht</ProgressText>
  
! <ProgressText Action="UnpublishProduct">VerÃ¶ffentlichung von Produktinformation wird rÃ¼ckgÃ¤ngig gemacht</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Klassenkennung: [1]">Klassenserver werden aus der Registrierung entfernt</ProgressText>
  
***************
*** 136,143 ****
  
  <ProgressText Action="WriteEnvironmentStrings" Template="Name: [1], Wert: [2], Aktion [3]">Umgebungsstrings werden aktualisiert</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Datei: [1], Abschnitt: [2], Schlüssel: [3], Wert: [4]">INI-Dateiwerte werden geschrieben</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="Schlüssel: [1], Name: [2], Wert: [3]">Werte werden in die Systemregistrierung geschrieben</ProgressText>
  
  </Include>
--- 136,143 ----
  
  <ProgressText Action="WriteEnvironmentStrings" Template="Name: [1], Wert: [2], Aktion [3]">Umgebungsstrings werden aktualisiert</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Datei: [1], Abschnitt: [2], SchlÃ¼ssel: [3], Wert: [4]">INI-Dateiwerte werden geschrieben</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="SchlÃ¼ssel: [1], Name: [2], Wert: [3]">Werte werden in die Systemregistrierung geschrieben</ProgressText>
  
  </Include>
Index: openafs/src/WINNT/install/wix/lang/en_US/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/en_US/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/en_US/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/en_US/ActionText.wxi:1.1	Mon Jun 21 01:21:50 2004
--- openafs/src/WINNT/install/wix/lang/en_US/ActionText.wxi	Tue Jul 18 12:10:23 2006
***************
*** 1,6 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Advertising application</ProgressText>
  
  <ProgressText Action="AppSearch" Template="Property: [1], Signature: [2]">Searching for installed applications</ProgressText>
  
--- 1,6 ----
  <Include>
  
! <ProgressText Action="Advertise">Advertising application</ProgressText>
  
  <ProgressText Action="AppSearch" Template="Property: [1], Signature: [2]">Searching for installed applications</ProgressText>
  
***************
*** 8,18 ****
  
  <ProgressText Action="BindImage" Template="File: [1]">Binding executables</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">Searching for qualifying products</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">Computing space requirements</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">Computing space requirements</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Folder: [1]">Creating folders</ProgressText>
  
--- 8,18 ----
  
  <ProgressText Action="BindImage" Template="File: [1]">Binding executables</ProgressText>
  
! <ProgressText Action="CCPSearch">Searching for qualifying products</ProgressText>
  
! <ProgressText Action="CostFinalize">Computing space requirements</ProgressText>
  
! <ProgressText Action="CostInitialize">Computing space requirements</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Folder: [1]">Creating folders</ProgressText>
  
***************
*** 22,28 ****
  
  <ProgressText Action="DuplicateFiles" Template="File: [1],  Directory: [9],  Size: [6]">Creating duplicate files</ProgressText>
  
! <ProgressText Action="FileCost" Template="">Computing space requirements</ProgressText>
  
  <ProgressText Action="FindRelatedProducts" Template="Found application: [1]">Searching for related applications</ProgressText>
  
--- 22,28 ----
  
  <ProgressText Action="DuplicateFiles" Template="File: [1],  Directory: [9],  Size: [6]">Creating duplicate files</ProgressText>
  
! <ProgressText Action="FileCost">Computing space requirements</ProgressText>
  
  <ProgressText Action="FindRelatedProducts" Template="Found application: [1]">Searching for related applications</ProgressText>
  
***************
*** 32,44 ****
  
  <ProgressText Action="InstallFiles" Template="File: [1],  Directory: [9],  Size: [6]">Copying new files</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">Installing ODBC components</ProgressText>
  
  <ProgressText Action="InstallServices" Template="Service: [2]">Installing new services</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">Validating install</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">Evaluating launch conditions</ProgressText>
  
  <ProgressText Action="MigrateFeatureStates" Template="Application: [1]">Migrating feature states from related applications</ProgressText>
  
--- 32,44 ----
  
  <ProgressText Action="InstallFiles" Template="File: [1],  Directory: [9],  Size: [6]">Copying new files</ProgressText>
  
! <ProgressText Action="InstallODBC">Installing ODBC components</ProgressText>
  
  <ProgressText Action="InstallServices" Template="Service: [2]">Installing new services</ProgressText>
  
! <ProgressText Action="InstallValidate">Validating install</ProgressText>
  
! <ProgressText Action="LaunchConditions">Evaluating launch conditions</ProgressText>
  
  <ProgressText Action="MigrateFeatureStates" Template="Application: [1]">Migrating feature states from related applications</ProgressText>
  
***************
*** 46,58 ****
  
  <ProgressText Action="PatchFiles" Template="File: [1],  Directory: [2],  Size: [3]">Patching files</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">Updating component registration</ProgressText>
  
  <ProgressText Action="PublishComponents" Template="Component ID: [1], Qualifier: [2]">Publishing Qualified Components</ProgressText>
  
  <ProgressText Action="PublishFeatures" Template="Feature: [1]">Publishing Product Features</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">Publishing product information</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Registering Class servers</ProgressText>
  
--- 46,58 ----
  
  <ProgressText Action="PatchFiles" Template="File: [1],  Directory: [2],  Size: [3]">Patching files</ProgressText>
  
! <ProgressText Action="ProcessComponents">Updating component registration</ProgressText>
  
  <ProgressText Action="PublishComponents" Template="Component ID: [1], Qualifier: [2]">Publishing Qualified Components</ProgressText>
  
  <ProgressText Action="PublishFeatures" Template="Feature: [1]">Publishing Product Features</ProgressText>
  
! <ProgressText Action="PublishProduct">Publishing product information</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Registering Class servers</ProgressText>
  
***************
*** 84,96 ****
  
  <ProgressText Action="RemoveIniValues" Template="File: [1],  Section: [2],  Key: [3], Value: [4]">Removing INI files entries</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">Removing ODBC components</ProgressText>
  
  <ProgressText Action="RemoveRegistryValues" Template="Key: [1], Name: [2]">Removing system registry values</ProgressText>
  
  <ProgressText Action="RemoveShortcuts" Template="Shortcut: [1]">Removing shortcuts</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">Searching for qualifying products</ProgressText>
  
  <ProgressText Action="Rollback" Template="[1]">Rolling back action:</ProgressText>
  
--- 84,96 ----
  
  <ProgressText Action="RemoveIniValues" Template="File: [1],  Section: [2],  Key: [3], Value: [4]">Removing INI files entries</ProgressText>
  
! <ProgressText Action="RemoveODBC">Removing ODBC components</ProgressText>
  
  <ProgressText Action="RemoveRegistryValues" Template="Key: [1], Name: [2]">Removing system registry values</ProgressText>
  
  <ProgressText Action="RemoveShortcuts" Template="Shortcut: [1]">Removing shortcuts</ProgressText>
  
! <ProgressText Action="RMCCPSearch">Searching for qualifying products</ProgressText>
  
  <ProgressText Action="Rollback" Template="[1]">Rolling back action:</ProgressText>
  
***************
*** 100,106 ****
  
  <ProgressText Action="SelfUnregModules" Template="File: [1], Folder: [2]">Unregistering modules</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">Initializing ODBC directories</ProgressText>
  
  <ProgressText Action="StartServices" Template="Service: [1]">Starting services</ProgressText>
  
--- 100,106 ----
  
  <ProgressText Action="SelfUnregModules" Template="File: [1], Folder: [2]">Unregistering modules</ProgressText>
  
! <ProgressText Action="SetODBCFolders">Initializing ODBC directories</ProgressText>
  
  <ProgressText Action="StartServices" Template="Service: [1]">Starting services</ProgressText>
  
***************
*** 112,118 ****
  
  <ProgressText Action="UnpublishFeatures" Template="Feature: [1]">Unpublishing Product Features</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">Unpublishing product information</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Unregister Class servers</ProgressText>
  
--- 112,118 ----
  
  <ProgressText Action="UnpublishFeatures" Template="Feature: [1]">Unpublishing Product Features</ProgressText>
  
! <ProgressText Action="UnpublishProduct">Unpublishing product information</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Unregister Class servers</ProgressText>
  
Index: openafs/src/WINNT/install/wix/lang/en_US/ui.wxi
diff -c openafs/src/WINNT/install/wix/lang/en_US/ui.wxi:1.6.2.4 openafs/src/WINNT/install/wix/lang/en_US/ui.wxi:1.6.2.6
*** openafs/src/WINNT/install/wix/lang/en_US/ui.wxi:1.6.2.4	Mon Nov 21 10:53:12 2005
--- openafs/src/WINNT/install/wix/lang/en_US/ui.wxi	Wed Sep  6 02:24:55 2006
***************
*** 440,446 ****
          </Control>
          <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="374" Height="44" FixedSize="yes" TabSkip="no" Text="[BannerBitmap]" />
          <Control Id="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="120" Sunken="yes" TabSkip="no">
!           <Text>{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} {\f23\froman\fcharset128\fprq1{\*\panose 00000000000000000000}MS Mincho{\*\falt MS ??};}{\f54\froman\fcharset128\fprq1{\*\panose 00000000000000000000}@MS Mincho;}{\f55\froman\fcharset238\fprq2 Times New Roman CE;} {\f56\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f58\froman\fcharset161\fprq2 Times New Roman Greek;}{\f59\froman\fcharset162\fprq2 Times New Roman Tur;}{\f60\froman\fcharset177\fprq2 Times New Roman (Hebrew);} {\f61\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f62\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f71\fmodern\fcharset238\fprq1 Courier New CE;}{\f72\fmodern\fcharset204\fprq1 Courier New Cyr;} {\f74\fmodern\fcharset161\fprq1 Courier New Greek;}{\f75\fmodern\fcharset162\fprq1 Courier New Tur;}{\f76\fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f77\fmodern\fcharset178\fprq1 Courier New (Arabic);} {\f78\fmodern\fcharset186\fprq1 Courier New Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255; \red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{ \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive Default Paragraph Font;}{ \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 Plain Text;}}{\info{\title Copyright 1998-2000 by the Massachusetts Institute of Technology} {\author Jamie Rasmussen}{\operator Jamie Rasmussen}{\creatim\yr2000\mo9\dy29\hr16\min17}{\revtim\yr2000\mo9\dy29\hr16\min17}{\version2}{\edmins0}{\nofpages1}{\nofwords0}{\nofchars0}{\*\company MIT Information Systems}{\nofcharsws0}{\vern8269}} \margl1319\margr1319 \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1701\dgvorigin1984\dghshow1\dgvshow1 \jexpand\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule \fet0\sectd \linex0\endnhere\sectlinegrid360\sectdefaultcl {\*\pnseclvl1 \pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5 \pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain \s15\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\dbch\af23  \hich\af2\dbch\af23\loch\f2 Copyright 1998-2000 by the Massachusetts Institute of Technology. \par \hich\af2\dbch\af23\loch\f2 All Rights Reserved. \par \hich\af2\dbch\af23\loch\f2  \par \hich\af2\dbch\af23\loch\f2 Export of this software from the United States of America may require a specific license from the United States Government. It is the responsibility of any person o\hich\af2\dbch\af23\loch\f2r organization contemplating export to obtain such a license before exporting.\par \hich\af2\dbch\af23\loch\f2  \par \hich\af2\dbch\af23\loch\f2 WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that \hich\af2\dbch\af23\loch\f2 the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the softwa\hich\af2\dbch\af23\loch\f2 r\hich\af2\dbch\af23\loch\f2 e without specific, written prior permission.  M.I.T. makes no representations about the suitability of this software for any purpose.  It is provided "as is" without express or implied warranty. \par \par }}</Text>
          </Control>
          <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
            <Text>Please read the following license agreement carefully</Text>
--- 440,446 ----
          </Control>
          <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="374" Height="44" FixedSize="yes" TabSkip="no" Text="[BannerBitmap]" />
          <Control Id="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="120" Sunken="yes" TabSkip="no">
!           <Text src="licenses.rtf"></Text>
          </Control>
          <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes">
            <Text>Please read the following license agreement carefully</Text>
***************
*** 759,780 ****
          <Control Id="DNSLabel" Type="Text"						X="45"	Y="160"	Width="100" Height="15" Text="Lookup cells in DNS" />
          <Control Id="DNSSel" Type="RadioButtonGroup"			X="150"	Y="160"	Width="120" Height="20" Property="USEDNS" />
        </Dialog>
!       <RadioGroup Property="SECURITYLEVEL">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioGroup>
!       <RadioGroup Property="FREELANCEMODE">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioGroup>
!       <RadioGroup Property="USEDNS">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioGroup>
!       <RadioGroup Property="LOGONOPTIONS">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioGroup>
  
        <Dialog Id="ConfigCredsDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
          <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="[ButtonText_Back]">
--- 759,780 ----
          <Control Id="DNSLabel" Type="Text"						X="45"	Y="160"	Width="100" Height="15" Text="Lookup cells in DNS" />
          <Control Id="DNSSel" Type="RadioButtonGroup"			X="150"	Y="160"	Width="120" Height="20" Property="USEDNS" />
        </Dialog>
!       <RadioButtonGroup Property="SECURITYLEVEL">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioButtonGroup>
!       <RadioButtonGroup Property="FREELANCEMODE">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioButtonGroup>
!       <RadioButtonGroup Property="USEDNS">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioButtonGroup>
!       <RadioButtonGroup Property="LOGONOPTIONS">
  		<RadioButton X="5" Y="0" Width="55" Height="15" Text="Disable" Value="0"></RadioButton>
  		<RadioButton X="65" Y="0" Width="55" Height="15" Text="Enable" Value="1"></RadioButton>
!       </RadioButtonGroup>
  
        <Dialog Id="ConfigCredsDlg" Width="370" Height="270" Title="[ProductName] [Setup]" NoMinimize="yes">
          <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="[ButtonText_Back]">
***************
*** 969,978 ****
            <Text>{\VerdanaBold13}Welcome to the [ProductName] [Wizard]</Text>
          </Control>
        </Dialog>
!       <RadioGroup Property="IAgree">
          <RadioButton Text="{\DlgFont8}I &amp;accept the terms in the License Agreement" X="5" Y="0" Width="250" Height="15" Value="yes"></RadioButton>
          <RadioButton Text="{\DlgFont8}I &amp;do not accept the terms in the License Agreement" X="5" Y="20" Width="250" Height="15" Value="no"></RadioButton>
!       </RadioGroup>
        <TextStyle Id="DlgFont8" FaceName="Tahoma" Size="8" />
        <TextStyle Id="DlgFontBold8" FaceName="Tahoma" Size="8" Bold="yes" />
        <TextStyle Id="VerdanaBold13" FaceName="Verdana" Size="13" Bold="yes" />
--- 969,978 ----
            <Text>{\VerdanaBold13}Welcome to the [ProductName] [Wizard]</Text>
          </Control>
        </Dialog>
!       <RadioButtonGroup Property="IAgree">
          <RadioButton Text="{\DlgFont8}I &amp;accept the terms in the License Agreement" X="5" Y="0" Width="250" Height="15" Value="yes"></RadioButton>
          <RadioButton Text="{\DlgFont8}I &amp;do not accept the terms in the License Agreement" X="5" Y="20" Width="250" Height="15" Value="no"></RadioButton>
!       </RadioButtonGroup>
        <TextStyle Id="DlgFont8" FaceName="Tahoma" Size="8" />
        <TextStyle Id="DlgFontBold8" FaceName="Tahoma" Size="8" Bold="yes" />
        <TextStyle Id="VerdanaBold13" FaceName="Verdana" Size="13" Bold="yes" />
Index: openafs/src/WINNT/install/wix/lang/es_ES/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/es_ES/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/es_ES/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/es_ES/ActionText.wxi:1.1	Mon Jun 21 01:21:50 2004
--- openafs/src/WINNT/install/wix/lang/es_ES/ActionText.wxi	Tue Jul 18 12:10:23 2006
***************
*** 1,6 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Mostrar aplicación</ProgressText>
  
  <ProgressText Action="AllocateRegistrySpace" Template="Espacio disponible: [1]">Asignando espacio del registro</ProgressText>
  
--- 1,6 ----
  <Include>
  
! <ProgressText Action="Advertise">Mostrar aplicaciÃ³n</ProgressText>
  
  <ProgressText Action="AllocateRegistrySpace" Template="Espacio disponible: [1]">Asignando espacio del registro</ProgressText>
  
***************
*** 8,18 ****
  
  <ProgressText Action="BindImage" Template="Archivo: [1]">Enlazando archivos ejecutables</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">Buscando productos necesarios</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">Calculando el espacio necesario</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">Calculando el espacio necesario</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Carpeta: [1]">Creando carpetas</ProgressText>
  
--- 8,18 ----
  
  <ProgressText Action="BindImage" Template="Archivo: [1]">Enlazando archivos ejecutables</ProgressText>
  
! <ProgressText Action="CCPSearch">Buscando productos necesarios</ProgressText>
  
! <ProgressText Action="CostFinalize">Calculando el espacio necesario</ProgressText>
  
! <ProgressText Action="CostInitialize">Calculando el espacio necesario</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Carpeta: [1]">Creando carpetas</ProgressText>
  
***************
*** 20,74 ****
  
  <ProgressText Action="DeleteServices" Template="Servicio: [1]">Eliminando servicios</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Archivo: [1], directorio: [9], tamaño: [6]">Creando archivos duplicados</ProgressText>
  
! <ProgressText Action="FileCost" Template="">Calculando el espacio necesario</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Se encontró esta aplicación: [1]">Buscando aplicaciones relacionadas</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Generando operaciones de secuencias de comandos para la acción:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Archivo: [1], directorio: [9], tamaño: [6]">Copiando archivos de instalación de la red</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Archivo: [1], directorio: [9], tamaño: [6]">Copiando archivos nuevos</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">Instalando componentes ODBC</ProgressText>
  
  <ProgressText Action="InstallServices" Template="Servicio: [2]">Instalando servicios nuevos</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Archivo: [1],  dependencias: [2]">Instalar catálogo de sistema</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">Validando la instalación</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">Evaluando condiciones de inicio</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Aplicación: [1]">Transfiriendo los estados de las características desde las aplicaciones relacionadas</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Archivo: [1], directorio: [9], tamaño: [6]">Moviendo archivos</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Contexto de aplicación:[1], Nombre de asamblea:[2]">Publicar información de la asamblea</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Contexto de aplicación:[1], Nombre de asamblea:[2]">No publicar información de la asamblea</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Archivo: [1], directorio: [2], tamaño: [3]">Revisando archivos</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">Actualizando el registro de componentes</ProgressText>
  
  <ProgressText Action="PublishComponents" Template="Id. del componente: [1], capacitador: [2]">Publicar componentes aceptables</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="Función: [1]">Publicar funciones del producto</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">Publicar información del producto</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Id. de clase: [1]">Registrando servidores de clases</ProgressText>
  
  <ProgressText Action="RegisterComPlus" Template="IdApl: [1]{{, Tipo de apl.: [2], Usuarios: [3], RSN: [4]}}">Registrando aplicaciones y componentes COM+</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="Extensión: [1]">Registrando servidores de extensiones</ProgressText>
  
  <ProgressText Action="RegisterFonts" Template="Fuente: [1]">Registrando fuentes</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="Tipo de contenido MIME: [1], extensión: [2]">Registrando información MIME</ProgressText>
  
  <ProgressText Action="RegisterProduct" Template="[1]">Registrando el producto</ProgressText>
  
--- 20,74 ----
  
  <ProgressText Action="DeleteServices" Template="Servicio: [1]">Eliminando servicios</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Archivo: [1], directorio: [9], tamaÃ±o: [6]">Creando archivos duplicados</ProgressText>
  
! <ProgressText Action="FileCost">Calculando el espacio necesario</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Se encontrÃ³ esta aplicaciÃ³n: [1]">Buscando aplicaciones relacionadas</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Generando operaciones de secuencias de comandos para la acciÃ³n:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Archivo: [1], directorio: [9], tamaÃ±o: [6]">Copiando archivos de instalaciÃ³n de la red</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Archivo: [1], directorio: [9], tamaÃ±o: [6]">Copiando archivos nuevos</ProgressText>
  
! <ProgressText Action="InstallODBC">Instalando componentes ODBC</ProgressText>
  
  <ProgressText Action="InstallServices" Template="Servicio: [2]">Instalando servicios nuevos</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Archivo: [1],  dependencias: [2]">Instalar catÃ¡logo de sistema</ProgressText>
  
! <ProgressText Action="InstallValidate">Validando la instalaciÃ³n</ProgressText>
  
! <ProgressText Action="LaunchConditions">Evaluando condiciones de inicio</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="AplicaciÃ³n: [1]">Transfiriendo los estados de las caracterÃ­sticas desde las aplicaciones relacionadas</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Archivo: [1], directorio: [9], tamaÃ±o: [6]">Moviendo archivos</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Contexto de aplicaciÃ³n:[1], Nombre de asamblea:[2]">Publicar informaciÃ³n de la asamblea</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Contexto de aplicaciÃ³n:[1], Nombre de asamblea:[2]">No publicar informaciÃ³n de la asamblea</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Archivo: [1], directorio: [2], tamaÃ±o: [3]">Revisando archivos</ProgressText>
  
! <ProgressText Action="ProcessComponents">Actualizando el registro de componentes</ProgressText>
  
  <ProgressText Action="PublishComponents" Template="Id. del componente: [1], capacitador: [2]">Publicar componentes aceptables</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="FunciÃ³n: [1]">Publicar funciones del producto</ProgressText>
  
! <ProgressText Action="PublishProduct">Publicar informaciÃ³n del producto</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Id. de clase: [1]">Registrando servidores de clases</ProgressText>
  
  <ProgressText Action="RegisterComPlus" Template="IdApl: [1]{{, Tipo de apl.: [2], Usuarios: [3], RSN: [4]}}">Registrando aplicaciones y componentes COM+</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="ExtensiÃ³n: [1]">Registrando servidores de extensiones</ProgressText>
  
  <ProgressText Action="RegisterFonts" Template="Fuente: [1]">Registrando fuentes</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="Tipo de contenido MIME: [1], extensiÃ³n: [2]">Registrando informaciÃ³n MIME</ProgressText>
  
  <ProgressText Action="RegisterProduct" Template="[1]">Registrando el producto</ProgressText>
  
***************
*** 80,112 ****
  
  <ProgressText Action="RemoveDuplicateFiles" Template="Archivo: [1], directorio: [9]">Quitando archivos duplicados</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Nombre: [1], valor: [2], acción [3]">Actualizando cadenas de entorno</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="Aplicación: [1], Línea de comandos: [2]">Quitando aplicaciones</ProgressText>
  
  <ProgressText Action="RemoveFiles" Template="Archivo: [1], directorio: [9]">Quitando archivos</ProgressText>
  
  <ProgressText Action="RemoveFolders" Template="Carpeta: [1]">Quitando carpetas</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Archivo: [1], sección: [2], clave: [3], valor: [4]">Quitando entradas de archivos INI</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">Quitando componentes ODBC</ProgressText>
  
  <ProgressText Action="RemoveRegistryValues" Template="Clave: [1], nombre: [2]">Quitando valores del registro del sistema</ProgressText>
  
  <ProgressText Action="RemoveShortcuts" Template="Acceso directo: [1]">Quitando accesos directos</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">Buscando productos necesarios</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Acción de restauración:</ProgressText>
  
  <ProgressText Action="RollbackCleanup" Template="Archivo: [1]">Quitando copias de seguridad</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Archivo: [1], carpeta: [2]">Registrando módulos</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Archivo: [1], carpeta: [2]">Eliminando módulos del registro</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">Inicializando directorios ODBC</ProgressText>
  
  <ProgressText Action="StartServices" Template="Servicio: [1]">Iniciando servicios</ProgressText>
  
--- 80,112 ----
  
  <ProgressText Action="RemoveDuplicateFiles" Template="Archivo: [1], directorio: [9]">Quitando archivos duplicados</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Nombre: [1], valor: [2], acciÃ³n [3]">Actualizando cadenas de entorno</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="AplicaciÃ³n: [1], LÃ­nea de comandos: [2]">Quitando aplicaciones</ProgressText>
  
  <ProgressText Action="RemoveFiles" Template="Archivo: [1], directorio: [9]">Quitando archivos</ProgressText>
  
  <ProgressText Action="RemoveFolders" Template="Carpeta: [1]">Quitando carpetas</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Archivo: [1], secciÃ³n: [2], clave: [3], valor: [4]">Quitando entradas de archivos INI</ProgressText>
  
! <ProgressText Action="RemoveODBC">Quitando componentes ODBC</ProgressText>
  
  <ProgressText Action="RemoveRegistryValues" Template="Clave: [1], nombre: [2]">Quitando valores del registro del sistema</ProgressText>
  
  <ProgressText Action="RemoveShortcuts" Template="Acceso directo: [1]">Quitando accesos directos</ProgressText>
  
! <ProgressText Action="RMCCPSearch">Buscando productos necesarios</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">AcciÃ³n de restauraciÃ³n:</ProgressText>
  
  <ProgressText Action="RollbackCleanup" Template="Archivo: [1]">Quitando copias de seguridad</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Archivo: [1], carpeta: [2]">Registrando mÃ³dulos</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Archivo: [1], carpeta: [2]">Eliminando mÃ³dulos del registro</ProgressText>
  
! <ProgressText Action="SetODBCFolders">Inicializando directorios ODBC</ProgressText>
  
  <ProgressText Action="StartServices" Template="Servicio: [1]">Iniciando servicios</ProgressText>
  
***************
*** 114,142 ****
  
  <ProgressText Action="UnmoveFiles" Template="Archivo: [1], directorio: [9]">Quitando archivos movidos</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Id. del componente: [1], capacitador: [2]">Anular publicación de componentes aceptables</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Función: [1]">Anular publicación de funciones del producto</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">Anular publicación de información del producto</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Id. de clase: [1]">Eliminar del registro los servidores de clases</ProgressText>
  
  <ProgressText Action="UnregisterComPlus" Template="IdApl: [1]{{, Tipo de apl.: [2]}}">Quitando aplicaciones y componentes COM+ del registro</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="Extensión: [1]">Eliminando del registro los servidores de extensiones</ProgressText>
  
  <ProgressText Action="UnregisterFonts" Template="Fuente: [1]">Eliminando del registro las fuentes</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="Tipo de contenido MIME: [1], extensión: [2]">Eliminando del registro información MIME</ProgressText>
  
  <ProgressText Action="UnregisterProgIdInfo" Template="IdProg: [1]">Eliminando identificadores de programa del registro</ProgressText>
  
  <ProgressText Action="UnregisterTypeLibraries" Template="Id. de la biblioteca: [1]">Eliminando del registro bibliotecas de tipos</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Nombre: [1], valor: [2], acción [3]">Actualizando cadenas de entorno</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Archivo: [1], sección: [2], clave: [3], valor: [4]">Escribiendo valores de los archivos INI</ProgressText>
  
  <ProgressText Action="WriteRegistryValues" Template="Clave: [1], nombre: [2], valor: [3]">Escribiendo valores del registro del sistema</ProgressText>
  
--- 114,142 ----
  
  <ProgressText Action="UnmoveFiles" Template="Archivo: [1], directorio: [9]">Quitando archivos movidos</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Id. del componente: [1], capacitador: [2]">Anular publicaciÃ³n de componentes aceptables</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="FunciÃ³n: [1]">Anular publicaciÃ³n de funciones del producto</ProgressText>
  
! <ProgressText Action="UnpublishProduct">Anular publicaciÃ³n de informaciÃ³n del producto</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Id. de clase: [1]">Eliminar del registro los servidores de clases</ProgressText>
  
  <ProgressText Action="UnregisterComPlus" Template="IdApl: [1]{{, Tipo de apl.: [2]}}">Quitando aplicaciones y componentes COM+ del registro</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="ExtensiÃ³n: [1]">Eliminando del registro los servidores de extensiones</ProgressText>
  
  <ProgressText Action="UnregisterFonts" Template="Fuente: [1]">Eliminando del registro las fuentes</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="Tipo de contenido MIME: [1], extensiÃ³n: [2]">Eliminando del registro informaciÃ³n MIME</ProgressText>
  
  <ProgressText Action="UnregisterProgIdInfo" Template="IdProg: [1]">Eliminando identificadores de programa del registro</ProgressText>
  
  <ProgressText Action="UnregisterTypeLibraries" Template="Id. de la biblioteca: [1]">Eliminando del registro bibliotecas de tipos</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Nombre: [1], valor: [2], acciÃ³n [3]">Actualizando cadenas de entorno</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Archivo: [1], secciÃ³n: [2], clave: [3], valor: [4]">Escribiendo valores de los archivos INI</ProgressText>
  
  <ProgressText Action="WriteRegistryValues" Template="Clave: [1], nombre: [2], valor: [3]">Escribiendo valores del registro del sistema</ProgressText>
  
Index: openafs/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi:1.1	Mon Jun 21 01:21:51 2004
--- openafs/src/WINNT/install/wix/lang/ja_JP/ActionText.wxi	Tue Jul 18 12:10:23 2006
***************
*** 1,143 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Œã‚ÅŽg—p‚·‚é‚½‚ß‚ÉƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðÝ’è‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="‹ó‚«—Ìˆæ: [1]">ƒŒƒWƒXƒgƒŠ—Ìˆæ‚ðŠ„‚è“–‚Ä‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="AppSearch" Template="ƒvƒƒpƒeƒB: [1]A –¼: [2]">ƒCƒ“ƒXƒg[ƒ‹‚³‚ê‚Ä‚¢‚éƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="BindImage" Template="ƒtƒ@ƒCƒ‹: [1]">ŽÀsƒtƒ@ƒCƒ‹‚ðƒoƒCƒ“ƒh‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">ðŒ‚É‡‚¤»•i‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">•K—v‚È—Ìˆæ‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">•K—v‚È—Ìˆæ‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="ƒtƒHƒ‹ƒ_: [1]">ƒtƒHƒ‹ƒ_‚ðì¬‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="ƒVƒ‡[ƒgƒJƒbƒg: [1]">ƒVƒ‡[ƒgƒJƒbƒg‚ðì¬‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="ƒT[ƒrƒX: [1]">ƒT[ƒrƒX‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="ƒtƒ@ƒCƒ‹: [1]A  ƒfƒBƒŒƒNƒgƒŠ: [9]A  ƒTƒCƒY: [6]">d•¡‚µ‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ðì¬‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="FileCost" Template="">•K—v‚È—Ìˆæ‚ðŒvŽZ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Œ©‚Â‚©‚Á‚½ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ : [1]">ŠÖ˜A‚ÌƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">‘€ì‚Ì‚½‚ß‚ÌƒXƒNƒŠƒvƒg‘€ì‚ðì¬‚µ‚Ä‚¢‚Ü‚·:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="ƒtƒ@ƒCƒ‹: [1]A ƒfƒBƒŒƒNƒgƒŠ: [9]A ƒTƒCƒY: [6]">ƒlƒbƒgƒ[ƒN ƒCƒ“ƒXƒg[ƒ‹ ƒtƒ@ƒCƒ‹‚ðƒRƒs[‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="ƒtƒ@ƒCƒ‹: [1]A  ƒfƒBƒŒƒNƒgƒŠ: [9]A  ƒTƒCƒY: [6]">V‚µ‚¢ƒtƒ@ƒCƒ‹‚ðƒRƒs[‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">ODBC ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="InstallServices" Template="ƒT[ƒrƒX: [2]">V‚µ‚¢ƒT[ƒrƒX‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="ƒtƒ@ƒCƒ‹: [1],  ˆË‘¶ŠÖŒW: [2]">ƒVƒXƒeƒ€ ƒJƒ^ƒƒO‚ðƒCƒ“ƒXƒg[ƒ‹‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">ƒCƒ“ƒXƒg[ƒ‹‚ðŒŸØ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">‹N“®ó‘Ô‚ðŒŸØ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ : [1]">ŠÖ˜A‚ÌƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚©‚ç‹@”\‚Ìó‘Ô‚ðˆÚs‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="ƒtƒ@ƒCƒ‹: [1]A  ƒfƒBƒŒƒNƒgƒŠ: [9]A  ƒTƒCƒY: [6]">ƒtƒ@ƒCƒ‹‚ðˆÚ“®‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒRƒ“ƒeƒLƒXƒg:[1], ƒAƒZƒ“ƒuƒŠ–¼:[2]">ƒAƒZƒ“ƒuƒŠî•ñ‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ ƒRƒ“ƒeƒLƒXƒg:[1], ƒAƒZƒ“ƒuƒŠ–¼:[2]">ƒAƒZƒ“ƒuƒŠî•ñ‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="ƒtƒ@ƒCƒ‹: [1]A  ƒfƒBƒŒƒNƒgƒŠ: [2]A  ƒTƒCƒY: [3]">ƒtƒ@ƒCƒ‹‚ðC³‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">ƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì“o˜^‚ðXV‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="ƒRƒ“ƒ|[ƒlƒ“ƒg ID: [1]ACüŽq: [2]">ðŒ‚É‡‚¤ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="‹@”\: [1]">»•i‹@”\‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">»•iî•ñ‚ðŒöŠJ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="ƒNƒ‰ƒX ID: [1]">ƒNƒ‰ƒX ƒT[ƒo[‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId : [1]{{, AppType : [2], Users : [3], RSN : [4]}}">COM+ ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÆƒRƒ“ƒ|[ƒlƒ“ƒg‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="ƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“: [1]">ƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“ ƒT[ƒo[‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="ƒtƒHƒ“ƒg: [1]">ƒtƒHƒ“ƒg‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME ƒRƒ“ƒeƒ“ƒg ƒ^ƒCƒv: [1]AƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“: [2]">MIME î•ñ‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">»•i‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ƒvƒƒOƒ‰ƒ€ ID: [1]">ƒvƒƒOƒ‰ƒ€Ž¯•ÊŽq‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="ƒ‰ƒCƒuƒ‰ƒŠ ID: [1]">Ží—Þ‚Ìƒ‰ƒCƒuƒ‰ƒŠ‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">ƒ†[ƒU[‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="ƒtƒ@ƒCƒ‹: [1]A ƒfƒBƒŒƒNƒgƒŠ: [9]">d•¡‚µ‚Ä‚¢‚éƒtƒ@ƒCƒ‹‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="–¼‘O: [1]A’l: [2]A‘€ì [3]">ŠÂ‹«ƒXƒgƒŠƒ“ƒO‚ðXV‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="ƒAƒvƒŠƒP[ƒVƒ‡ƒ“ : [1], ƒRƒ}ƒ“ƒh ƒ‰ƒCƒ“ : [2]">ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="ƒtƒ@ƒCƒ‹: [1]A ƒfƒBƒŒƒNƒgƒŠ: [9]">ƒtƒ@ƒCƒ‹‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="ƒtƒHƒ‹ƒ_: [1]">ƒtƒHƒ‹ƒ_‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="ƒtƒ@ƒCƒ‹: [1]AƒZƒNƒVƒ‡ƒ“: [2]AƒL[: [3]A’l: [4]">INI ƒtƒ@ƒCƒ‹‚ÌƒGƒ“ƒgƒŠ‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">ODBC ƒRƒ“ƒ|[ƒlƒ“ƒg‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="ƒL[: [1]A–¼‘O: [2]">ƒVƒXƒeƒ€ ƒŒƒWƒXƒgƒŠ‚Ì’l‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="ƒVƒ‡[ƒgƒJƒbƒg: [1]">ƒVƒ‡[ƒgƒJƒbƒg‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">ðŒ‚É‡‚¤»•i‚ðŒŸõ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">‘€ì‚ðŒ³‚É–ß‚µ‚Ä‚¢‚Ü‚·:</ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="ƒtƒ@ƒCƒ‹: [1]">ƒoƒbƒNƒAƒbƒv ƒtƒ@ƒCƒ‹‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="ƒtƒ@ƒCƒ‹: [1]AƒtƒHƒ‹ƒ_: [2]">ƒ‚ƒWƒ…[ƒ‹‚ð“o˜^‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="ƒtƒ@ƒCƒ‹: [1]AƒtƒHƒ‹ƒ_: [2]">ƒ‚ƒWƒ…[ƒ‹‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">ODBC ƒfƒBƒŒƒNƒgƒŠ‚ð‰Šú‰»‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="StartServices" Template="ƒT[ƒrƒX: [1]">ƒT[ƒrƒX‚ðŠJŽn‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="StopServices" Template="ƒT[ƒrƒX: [1]">ƒT[ƒrƒX‚ð’âŽ~‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="ƒtƒ@ƒCƒ‹: [1]A ƒfƒBƒŒƒNƒgƒŠ: [9]">ˆÚ“®‚µ‚½ƒtƒ@ƒCƒ‹‚ðíœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="ƒRƒ“ƒ|[ƒlƒ“ƒg ID: [1]ACüŽq: [2]">ðŒ‚É‡‚¤ƒRƒ“ƒ|[ƒlƒ“ƒg‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="‹@”\: [1]">»•i‹@”\‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">»•iî•ñ‚ð”ñŒöŠJ‚É‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="ƒNƒ‰ƒX ID: [1]">ƒNƒ‰ƒX ƒT[ƒo[‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId : [1]{{, AppType : [2]}}">COM+ ƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ÆƒRƒ“ƒ|[ƒlƒ“ƒg‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="ƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“: [1]">ƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“ ƒT[ƒo[‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="ƒtƒHƒ“ƒg: [1]">ƒtƒHƒ“ƒg‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME ƒRƒ“ƒeƒ“ƒg ƒ^ƒCƒv: [1]AƒGƒNƒXƒeƒ“ƒVƒ‡ƒ“: [2]">MIME î•ñ‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ƒvƒƒOƒ‰ƒ€ ID: [1]">ƒvƒƒOƒ‰ƒ€Ž¯•ÊŽq‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="ƒ‰ƒCƒuƒ‰ƒŠ ID: [1]">Ží—Þ‚Ìƒ‰ƒCƒuƒ‰ƒŠ‚Ì“o˜^‚ð‰ðœ‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="–¼‘O: [1]A’l: [2]A‘€ì [3]">ŠÂ‹«ƒXƒgƒŠƒ“ƒO‚ðXV‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="ƒtƒ@ƒCƒ‹: [1]AƒZƒNƒVƒ‡ƒ“: [2]AƒL[: [3]A’l: [4]">INI ƒtƒ@ƒCƒ‹‚É’l‚ð‘‚«ž‚ñ‚Å‚¢‚Ü‚·</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="ƒL[: [1]A –¼‘O: [2]A ’l: [3]">Œã‚ÅŽg—p‚·‚é‚½‚ß‚ÉƒAƒvƒŠƒP[ƒVƒ‡ƒ“‚ðÝ’è‚µ‚Ä‚¢‚Ü‚·</ProgressText>
  
  </Include>
--- 1,143 ----
  <Include>
  
! <ProgressText Action="Advertise">Å’Ã£â€šÃ…Å½gâ€”pâ€šÂ·â€šÃ©â€šÂ½â€šÃŸâ€šÃ‰Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ°ÂÃâ€™Ã¨â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="â€¹Ã³â€šÂ«â€”ÃŒË†Ã¦: [1]">Æ’Å’Æ’WÆ’XÆ’gÆ’Å â€”ÃŒË†Ã¦â€šÃ°Å â€žâ€šÃ¨â€œâ€“â€šÃ„â€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="AppSearch" Template="Æ’vÆ’ÂÆ’pÆ’eÆ’B: [1]ÂA ÂÂâ€“Â¼: [2]">Æ’CÆ’â€œÆ’XÆ’gÂ[Æ’â€¹â€šÂ³â€šÃªâ€šÃ„â€šÂ¢â€šÃ©Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ°Å’Å¸ÂÃµâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="BindImage" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]">Å½Ã€ÂsÆ’tÆ’@Æ’CÆ’â€¹â€šÃ°Æ’oÆ’CÆ’â€œÆ’hâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="CCPSearch">ÂÃ°Å’Ââ€šÃ‰Ââ€¡â€šÂ¤ÂÂ»â€¢iâ€šÃ°Å’Å¸ÂÃµâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="CostFinalize">â€¢Kâ€”vâ€šÃˆâ€”ÃŒË†Ã¦â€šÃ°Å’vÅ½Zâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="CostInitialize">â€¢Kâ€”vâ€šÃˆâ€”ÃŒË†Ã¦â€šÃ°Å’vÅ½Zâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="Æ’tÆ’HÆ’â€¹Æ’_: [1]">Æ’tÆ’HÆ’â€¹Æ’_â€šÃ°ÂÃ¬ÂÂ¬â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="Æ’VÆ’â€¡Â[Æ’gÆ’JÆ’bÆ’g: [1]">Æ’VÆ’â€¡Â[Æ’gÆ’JÆ’bÆ’gâ€šÃ°ÂÃ¬ÂÂ¬â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="Æ’TÂ[Æ’rÆ’X: [1]">Æ’TÂ[Æ’rÆ’Xâ€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA  Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]ÂA  Æ’TÆ’CÆ’Y: [6]">Âdâ€¢Â¡â€šÂµâ€šÃ„â€šÂ¢â€šÃ©Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°ÂÃ¬ÂÂ¬â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="FileCost">â€¢Kâ€”vâ€šÃˆâ€”ÃŒË†Ã¦â€šÃ°Å’vÅ½Zâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Å’Â©â€šÃ‚â€šÂ©â€šÃâ€šÂ½Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œ : [1]">Å Ã–ËœAâ€šÃŒÆ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ°Å’Å¸ÂÃµâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">â€˜â‚¬ÂÃ¬â€šÃŒâ€šÂ½â€šÃŸâ€šÃŒÆ’XÆ’NÆ’Å Æ’vÆ’gâ€˜â‚¬ÂÃ¬â€šÃ°ÂÃ¬ÂÂ¬â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]ÂA Æ’TÆ’CÆ’Y: [6]">Æ’lÆ’bÆ’gÆ’ÂÂ[Æ’N Æ’CÆ’â€œÆ’XÆ’gÂ[Æ’â€¹ Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°Æ’RÆ’sÂ[â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA  Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]ÂA  Æ’TÆ’CÆ’Y: [6]">ÂVâ€šÂµâ€šÂ¢Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°Æ’RÆ’sÂ[â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="InstallODBC">ODBC Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃ°Æ’CÆ’â€œÆ’XÆ’gÂ[Æ’â€¹â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="InstallServices" Template="Æ’TÂ[Æ’rÆ’X: [2]">ÂVâ€šÂµâ€šÂ¢Æ’TÂ[Æ’rÆ’Xâ€šÃ°Æ’CÆ’â€œÆ’XÆ’gÂ[Æ’â€¹â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1],  Ë†Ã‹â€˜Â¶Å Ã–Å’W: [2]">Æ’VÆ’XÆ’eÆ’â‚¬ Æ’JÆ’^Æ’ÂÆ’Oâ€šÃ°Æ’CÆ’â€œÆ’XÆ’gÂ[Æ’â€¹â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="InstallValidate">Æ’CÆ’â€œÆ’XÆ’gÂ[Æ’â€¹â€šÃ°Å’Å¸ÂÃ˜â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="LaunchConditions">â€¹Nâ€œÂ®ÂÃ³â€˜Ã”â€šÃ°Å’Å¸ÂÃ˜â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œ : [1]">Å Ã–ËœAâ€šÃŒÆ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÂ©â€šÃ§â€¹@â€\â€šÃŒÂÃ³â€˜Ã”â€šÃ°Ë†ÃšÂsâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA  Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]ÂA  Æ’TÆ’CÆ’Y: [6]">Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°Ë†Ãšâ€œÂ®â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œ Æ’RÆ’â€œÆ’eÆ’LÆ’XÆ’g:[1], Æ’AÆ’ZÆ’â€œÆ’uÆ’Å â€“Â¼:[2]">Æ’AÆ’ZÆ’â€œÆ’uÆ’Å ÂÃ®â€¢Ã±â€šÃ°Å’Ã¶Å Jâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œ Æ’RÆ’â€œÆ’eÆ’LÆ’XÆ’g:[1], Æ’AÆ’ZÆ’â€œÆ’uÆ’Å â€“Â¼:[2]">Æ’AÆ’ZÆ’â€œÆ’uÆ’Å ÂÃ®â€¢Ã±â€šÃ°â€Ã±Å’Ã¶Å Jâ€šÃ‰â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA  Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [2]ÂA  Æ’TÆ’CÆ’Y: [3]">Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°ÂCÂÂ³â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="ProcessComponents">Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃŒâ€œoËœ^â€šÃ°ÂXÂVâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’g ID: [1]ÂAÂCÂÃ¼Å½q: [2]">ÂÃ°Å’Ââ€šÃ‰Ââ€¡â€šÂ¤Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃ°Å’Ã¶Å Jâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="â€¹@â€\: [1]">ÂÂ»â€¢iâ€¹@â€\â€šÃ°Å’Ã¶Å Jâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="PublishProduct">ÂÂ»â€¢iÂÃ®â€¢Ã±â€šÃ°Å’Ã¶Å Jâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Æ’NÆ’â€°Æ’X ID: [1]">Æ’NÆ’â€°Æ’X Æ’TÂ[Æ’oÂ[â€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId : [1]{{, AppType : [2], Users : [3], RSN : [4]}}">COM+ Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ†Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="Æ’GÆ’NÆ’XÆ’eÆ’â€œÆ’VÆ’â€¡Æ’â€œ: [1]">Æ’GÆ’NÆ’XÆ’eÆ’â€œÆ’VÆ’â€¡Æ’â€œ Æ’TÂ[Æ’oÂ[â€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="Æ’tÆ’HÆ’â€œÆ’g: [1]">Æ’tÆ’HÆ’â€œÆ’gâ€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME Æ’RÆ’â€œÆ’eÆ’â€œÆ’g Æ’^Æ’CÆ’v: [1]ÂAÆ’GÆ’NÆ’XÆ’eÆ’â€œÆ’VÆ’â€¡Æ’â€œ: [2]">MIME ÂÃ®â€¢Ã±â€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">ÂÂ»â€¢iâ€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="Æ’vÆ’ÂÆ’OÆ’â€°Æ’â‚¬ ID: [1]">Æ’vÆ’ÂÆ’OÆ’â€°Æ’â‚¬Å½Â¯â€¢ÃŠÅ½qâ€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="Æ’â€°Æ’CÆ’uÆ’â€°Æ’Å  ID: [1]">Å½Ã­â€”Ãžâ€šÃŒÆ’â€°Æ’CÆ’uÆ’â€°Æ’Å â€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">Æ’â€ Â[Æ’UÂ[â€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]">Âdâ€¢Â¡â€šÂµâ€šÃ„â€šÂ¢â€šÃ©Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="â€“Â¼â€˜O: [1]ÂAâ€™l: [2]ÂAâ€˜â‚¬ÂÃ¬ [3]">Å Ã‚â€¹Â«Æ’XÆ’gÆ’Å Æ’â€œÆ’Oâ€šÃ°ÂXÂVâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œ : [1], Æ’RÆ’}Æ’â€œÆ’h Æ’â€°Æ’CÆ’â€œ : [2]">Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]">Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="Æ’tÆ’HÆ’â€¹Æ’_: [1]">Æ’tÆ’HÆ’â€¹Æ’_â€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂAÆ’ZÆ’NÆ’VÆ’â€¡Æ’â€œ: [2]ÂAÆ’LÂ[: [3]ÂAâ€™l: [4]">INI Æ’tÆ’@Æ’CÆ’â€¹â€šÃŒÆ’GÆ’â€œÆ’gÆ’Å â€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveODBC">ODBC Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="Æ’LÂ[: [1]ÂAâ€“Â¼â€˜O: [2]">Æ’VÆ’XÆ’eÆ’â‚¬ Æ’Å’Æ’WÆ’XÆ’gÆ’Å â€šÃŒâ€™lâ€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="Æ’VÆ’â€¡Â[Æ’gÆ’JÆ’bÆ’g: [1]">Æ’VÆ’â€¡Â[Æ’gÆ’JÆ’bÆ’gâ€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="RMCCPSearch">ÂÃ°Å’Ââ€šÃ‰Ââ€¡â€šÂ¤ÂÂ»â€¢iâ€šÃ°Å’Å¸ÂÃµâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">â€˜â‚¬ÂÃ¬â€šÃ°Å’Â³â€šÃ‰â€“ÃŸâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·:</ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]">Æ’oÆ’bÆ’NÆ’AÆ’bÆ’v Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂAÆ’tÆ’HÆ’â€¹Æ’_: [2]">Æ’â€šÆ’WÆ’â€¦Â[Æ’â€¹â€šÃ°â€œoËœ^â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂAÆ’tÆ’HÆ’â€¹Æ’_: [2]">Æ’â€šÆ’WÆ’â€¦Â[Æ’â€¹â€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="SetODBCFolders">ODBC Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å â€šÃ°Ââ€°Å Ãºâ€°Â»â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="StartServices" Template="Æ’TÂ[Æ’rÆ’X: [1]">Æ’TÂ[Æ’rÆ’Xâ€šÃ°Å JÅ½nâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="StopServices" Template="Æ’TÂ[Æ’rÆ’X: [1]">Æ’TÂ[Æ’rÆ’Xâ€šÃ°â€™Ã¢Å½~â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂA Æ’fÆ’BÆ’Å’Æ’NÆ’gÆ’Å : [9]">Ë†Ãšâ€œÂ®â€šÂµâ€šÂ½Æ’tÆ’@Æ’CÆ’â€¹â€šÃ°ÂÃ­ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’g ID: [1]ÂAÂCÂÃ¼Å½q: [2]">ÂÃ°Å’Ââ€šÃ‰Ââ€¡â€šÂ¤Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃ°â€Ã±Å’Ã¶Å Jâ€šÃ‰â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="â€¹@â€\: [1]">ÂÂ»â€¢iâ€¹@â€\â€šÃ°â€Ã±Å’Ã¶Å Jâ€šÃ‰â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnpublishProduct">ÂÂ»â€¢iÂÃ®â€¢Ã±â€šÃ°â€Ã±Å’Ã¶Å Jâ€šÃ‰â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Æ’NÆ’â€°Æ’X ID: [1]">Æ’NÆ’â€°Æ’X Æ’TÂ[Æ’oÂ[â€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId : [1]{{, AppType : [2]}}">COM+ Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ†Æ’RÆ’â€œÆ’|Â[Æ’lÆ’â€œÆ’gâ€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="Æ’GÆ’NÆ’XÆ’eÆ’â€œÆ’VÆ’â€¡Æ’â€œ: [1]">Æ’GÆ’NÆ’XÆ’eÆ’â€œÆ’VÆ’â€¡Æ’â€œ Æ’TÂ[Æ’oÂ[â€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="Æ’tÆ’HÆ’â€œÆ’g: [1]">Æ’tÆ’HÆ’â€œÆ’gâ€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME Æ’RÆ’â€œÆ’eÆ’â€œÆ’g Æ’^Æ’CÆ’v: [1]ÂAÆ’GÆ’NÆ’XÆ’eÆ’â€œÆ’VÆ’â€¡Æ’â€œ: [2]">MIME ÂÃ®â€¢Ã±â€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="Æ’vÆ’ÂÆ’OÆ’â€°Æ’â‚¬ ID: [1]">Æ’vÆ’ÂÆ’OÆ’â€°Æ’â‚¬Å½Â¯â€¢ÃŠÅ½qâ€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="Æ’â€°Æ’CÆ’uÆ’â€°Æ’Å  ID: [1]">Å½Ã­â€”Ãžâ€šÃŒÆ’â€°Æ’CÆ’uÆ’â€°Æ’Å â€šÃŒâ€œoËœ^â€šÃ°â€°Ã°ÂÅ“â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="â€“Â¼â€˜O: [1]ÂAâ€™l: [2]ÂAâ€˜â‚¬ÂÃ¬ [3]">Å Ã‚â€¹Â«Æ’XÆ’gÆ’Å Æ’â€œÆ’Oâ€šÃ°ÂXÂVâ€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Æ’tÆ’@Æ’CÆ’â€¹: [1]ÂAÆ’ZÆ’NÆ’VÆ’â€¡Æ’â€œ: [2]ÂAÆ’LÂ[: [3]ÂAâ€™l: [4]">INI Æ’tÆ’@Æ’CÆ’â€¹â€šÃ‰â€™lâ€šÃ°Ââ€˜â€šÂ«ÂÅ¾â€šÃ±â€šÃ…â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="Æ’LÂ[: [1]ÂA â€“Â¼â€˜O: [2]ÂA â€™l: [3]">Å’Ã£â€šÃ…Å½gâ€”pâ€šÂ·â€šÃ©â€šÂ½â€šÃŸâ€šÃ‰Æ’AÆ’vÆ’Å Æ’PÂ[Æ’VÆ’â€¡Æ’â€œâ€šÃ°ÂÃâ€™Ã¨â€šÂµâ€šÃ„â€šÂ¢â€šÃœâ€šÂ·</ProgressText>
  
  </Include>
Index: openafs/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi:1.1	Mon Jun 21 01:21:51 2004
--- openafs/src/WINNT/install/wix/lang/ko_KR/ActionText.wxi	Tue Jul 18 12:10:24 2006
***************
*** 1,143 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Ã³À½ »ç¿ë ½Ã ¼³Ä¡ÇÒ ÀÀ¿ë ÇÁ·Î±×·¥</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="³²Àº °ø°£: [1]">·¹Áö½ºÆ®¸® °ø°£ ÇÒ´ç Áß</ProgressText>
  
! <ProgressText Action="AppSearch" Template="¼Ó¼º: [1], ¼­¸í: [2]">¼³Ä¡ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ È®ÀÎ Áß</ProgressText>
  
! <ProgressText Action="BindImage" Template="ÆÄÀÏ: [1]">½ÇÇà ÆÄÀÏÀ» ¹ÙÀÎµùÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">Á¦Ç°À» È®ÀÎÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">ÇÊ¿äÇÑ °ø°£À» È®ÀÎÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">ÇÊ¿äÇÑ °ø°£À» È®ÀÎÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="Æú´õ: [1]">Æú´õ ¸¸µå´Â Áß</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="¹Ù·Î °¡±â: [1]">¹Ù·Î °¡±â ¸¸µå´Â Áß</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="¼­ºñ½º: [1]">¼­ºñ½º »èÁ¦ Áß</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="ÆÄÀÏ: [1],  µð·ºÅÍ¸®: [9],  Å©±â: [6]">Áßº¹ ÆÄÀÏÀ» ¸¸µå´Â Áß</ProgressText>
  
! <ProgressText Action="FileCost" Template="">ÇÊ¿äÇÑ °ø°£À» È®ÀÎÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="´ÙÀ½ ÀÀ¿ë ÇÁ·Î±×·¥À» Ã£¾Ò½À´Ï´Ù: [1]">°ü·Ã ÀÀ¿ë ÇÁ·Î±×·¥À» °Ë»öÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">¼öÇàÇÒ ½ºÅ©¸³Æ® ÀÛ¾÷À» »ý¼ºÇÏ´Â Áß:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="ÆÄÀÏ: [1], µð·ºÅÍ¸®: [9], Å©±â: [6]">³×Æ®¿öÅ© ¼³Ä¡ ÆÄÀÏÀ» º¹»çÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="ÆÄÀÏ: [1],  µð·ºÅÍ¸®: [9],  Å©±â: [6]">»õ ÆÄÀÏÀ» º¹»çÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">ODBC ±¸¼º ¿ä¼Ò ¼³Ä¡ Áß</ProgressText>
  
! <ProgressText Action="InstallServices" Template="¼­ºñ½º: [2]">»õ ¼­ºñ½º ¼³Ä¡ Áß</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="ÆÄÀÏ: [1],  Á¾¼Ó¼º: [2]">½Ã½ºÅÛ Ä«Å»·Î±× ¼³Ä¡ Áß</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">¼³Ä¡¸¦ À¯È¿È­ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">½ÇÇà Á¶°Ç È®ÀÎ Áß</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="ÀÀ¿ë ÇÁ·Î±×·¥: [1]">°ü·Ã ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ±â´ÉÀ» ÀÌµ¿ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="ÆÄÀÏ: [1],  µð·ºÅÍ¸®: [9],  Å©±â: [6]">ÆÄÀÏÀ» ¿Å±â´Â Áß</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="ÀÀ¿ë ÇÁ·Î±×·¥ ÄÁÅØ½ºÆ®:[1], ¾î¼Àºí¸® ÀÌ¸§:[2]">¾î¼Àºí¸® Á¤º¸¸¦ °Ô½ÃÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="ÀÀ¿ë ÇÁ·Î±×·¥ ÄÁÅØ½ºÆ®:[1], ¾î¼Àºí¸® ÀÌ¸§:[2]">¾î¼Àºí¸® Á¤º¸¸¦ °Ô½Ã Ãë¼ÒÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="ÆÄÀÏ: [1], µð·ºÅÍ¸®: [2], Å©±â: [3]">ÆÄÀÏ ÆÐÄ¡ Áß</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">±¸¼º ¿ä¼Ò µî·ÏÀ» ¾÷µ¥ÀÌÆ®ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="±¸¼º ¿ä¼Ò ID: [1], Á¦ÇÑÀÚ: [2]">ÇØ´ç ±¸¼º ¿ä¼Ò¸¦ °Ô½ÃÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="±â´É: [1]">Á¦Ç° ±â´ÉÀ» °Ô½ÃÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">Á¦Ç° Á¤º¸¸¦ °Ô½ÃÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Class ¼­¹ö¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}">COM+ ÀÀ¿ë ÇÁ·Î±×·¥°ú ±¸¼º ¿ä¼Ò¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="ÀÍ½ºÅÙ¼Ç: [1]">ÀÍ½ºÅÙ¼Ç ¼­¹ö¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="±Û²Ã: [1]">±Û²ÃÀ» µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME ÄÁÅÙÆ® À¯Çü: [1], ÀÍ½ºÅÙ¼Ç: [2]">MIME Á¤º¸¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">Á¦Ç°À» µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ProgId: [1]">ÇÁ·Î±×·¥ È®ÀÎÀÚ¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">Çü½Ä ¶óÀÌºê·¯¸®¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">»ç¿ëÀÚ¸¦ µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="ÆÄÀÏ: [1], µð·ºÅÍ¸®: [9]">Áßº¹ ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="ÀÌ¸§: [1], °ª: [2], ¼öÇà [3]">È¯°æ ¹®ÀÚ¿­À» ¾÷µ¥ÀÌÆ®ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="ÀÀ¿ë ÇÁ·Î±×·¥: [1], ¸í·ÉÁÙ: [2]">ÀÀ¿ë ÇÁ·Î±×·¥À» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="ÆÄÀÏ: [1], µð·ºÅÍ¸®: [9]">ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="Æú´õ: [1]">Æú´õ¸¦ Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Å°: [1],  ¼½¼Ç: [2],  Å°: [3], °ª: [4]">INI ÆÄÀÏ Ç×¸ñÀ» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">ODBC ±¸¼º ¿ä¼Ò Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="Å°: [1], ÀÌ¸§: [2]">½Ã½ºÅÛ ·¹Áö½ºÆ®¸® °ªÀ» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="¹Ù·Î °¡±â: [1]">¹Ù·Î °¡±â¸¦ Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">Á¦Ç°À» È®ÀÎÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">·Ñ¹éÀ» ¼öÇàÇÏ´Â Áß:</ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="ÆÄÀÏ: [1]">¹é¾÷ ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="ÆÄÀÏ: [1], Æú´õ: [2]">¸ðµâÀ» µî·ÏÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="ÆÄÀÏ: [1], Æú´õ: [2]">¸ðµâ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">ODBC µð·ºÅÍ¸®¸¦ ÃÊ±âÈ­ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="StartServices" Template="¼­ºñ½º: [1]">¼­ºñ½º¸¦ ½ÃÀÛÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="StopServices" Template="¼­ºñ½º: [1]">¼­ºñ½º¸¦ ÁßÁöÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="ÆÄÀÏ: [1], µð·ºÅÍ¸®: [9]">ÀÌµ¿ÇÑ ÆÄÀÏÀ» Á¦°ÅÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="±¸¼º ¿ä¼Ò ID: [1], Á¦ÇÑÀÚ: [2]">ÇØ´ç ±¸¼º ¿ä¼ÒÀÇ °Ô½Ã¸¦ ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="±â´É: [1]">Á¦Ç° ±â´ÉÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">Á¦Ç° Á¤º¸ÀÇ °Ô½Ã¸¦ ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Class ¼­¹öÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">COM+ ÀÀ¿ë ÇÁ·Î±×·¥°ú ±¸¼º ¿ä¼ÒÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="ÀÍ½ºÅÙ¼Ç: [1]">extension ¼­¹öÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="±Û²Ã: [1]">±Û²Ã µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME ÄÁÅÙÆ® À¯Çü: [1], ÀÍ½ºÅÙ¼Ç: [2]">MIME Á¤º¸ÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">ÇÁ·Î±×·¥ È®ÀÎÀÚÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">Çü½Ä ¶óÀÌºê·¯¸®ÀÇ µî·ÏÀ» ÇØÁ¦ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="ÀÌ¸§: [1], °ª: [2], ¼öÇà [3]">È¯°æ ¹®ÀÚ¿­À» ¾÷µ¥ÀÌÆ®ÇÏ´Â Áß</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Å°: [1],  ¼½¼Ç: [2],  Å°: [3], °ª: [4]">INI ÆÄÀÏ °ªÀ» ¾²´Â Áß</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="Å°: [1], ÀÌ¸§: [2], °ª: [3]">½Ã½ºÅÛ ·¹Áö½ºÆ®¸® °ªÀ» ¾²´Â Áß</ProgressText>
  
  </Include>
--- 1,143 ----
  <Include>
  
! <ProgressText Action="Advertise">ÃƒÂ³Ã€Â½ Â»Ã§Â¿Ã« Â½Ãƒ Â¼Â³Ã„Â¡Ã‡Ã’ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="Â³Â²Ã€Âº Â°Ã¸Â°Â£: [1]">Â·Â¹ÃÃ¶Â½ÂºÃ†Â®Â¸Â® Â°Ã¸Â°Â£ Ã‡Ã’Â´Ã§ ÃÃŸ</ProgressText>
  
! <ProgressText Action="AppSearch" Template="Â¼Ã“Â¼Âº: [1], Â¼Â­Â¸Ã­: [2]">Â¼Â³Ã„Â¡Ã‡Ã‘ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥ ÃˆÂ®Ã€ÃŽ ÃÃŸ</ProgressText>
  
! <ProgressText Action="BindImage" Template="Ã†Ã„Ã€Ã: [1]">Â½Ã‡Ã‡Ã  Ã†Ã„Ã€ÃÃ€Â» Â¹Ã™Ã€ÃŽÂµÃ¹Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="CCPSearch">ÃÂ¦Ã‡Â°Ã€Â» ÃˆÂ®Ã€ÃŽÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="CostFinalize">Ã‡ÃŠÂ¿Ã¤Ã‡Ã‘ Â°Ã¸Â°Â£Ã€Â» ÃˆÂ®Ã€ÃŽÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="CostInitialize">Ã‡ÃŠÂ¿Ã¤Ã‡Ã‘ Â°Ã¸Â°Â£Ã€Â» ÃˆÂ®Ã€ÃŽÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="Ã†ÃºÂ´Ãµ: [1]">Ã†ÃºÂ´Ãµ Â¸Â¸ÂµÃ¥Â´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="Â¹Ã™Â·ÃŽ Â°Â¡Â±Ã¢: [1]">Â¹Ã™Â·ÃŽ Â°Â¡Â±Ã¢ Â¸Â¸ÂµÃ¥Â´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="Â¼Â­ÂºÃ±Â½Âº: [1]">Â¼Â­ÂºÃ±Â½Âº Â»Ã¨ÃÂ¦ ÃÃŸ</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Ã†Ã„Ã€Ã: [1],  ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9],  Ã…Â©Â±Ã¢: [6]">ÃÃŸÂºÂ¹ Ã†Ã„Ã€ÃÃ€Â» Â¸Â¸ÂµÃ¥Â´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="FileCost">Ã‡ÃŠÂ¿Ã¤Ã‡Ã‘ Â°Ã¸Â°Â£Ã€Â» ÃˆÂ®Ã€ÃŽÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Â´Ã™Ã€Â½ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥Ã€Â» ÃƒÂ£Â¾Ã’Â½Ã€Â´ÃÂ´Ã™: [1]">Â°Ã¼Â·Ãƒ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥Ã€Â» Â°Ã‹Â»Ã¶Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Â¼Ã¶Ã‡Ã Ã‡Ã’ Â½ÂºÃ…Â©Â¸Â³Ã†Â® Ã€Ã›Â¾Ã·Ã€Â» Â»Ã½Â¼ÂºÃ‡ÃÂ´Ã‚ ÃÃŸ:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Ã†Ã„Ã€Ã: [1], ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9], Ã…Â©Â±Ã¢: [6]">Â³Ã—Ã†Â®Â¿Ã¶Ã…Â© Â¼Â³Ã„Â¡ Ã†Ã„Ã€ÃÃ€Â» ÂºÂ¹Â»Ã§Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Ã†Ã„Ã€Ã: [1],  ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9],  Ã…Â©Â±Ã¢: [6]">Â»Ãµ Ã†Ã„Ã€ÃÃ€Â» ÂºÂ¹Â»Ã§Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="InstallODBC">ODBC Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’ Â¼Â³Ã„Â¡ ÃÃŸ</ProgressText>
  
! <ProgressText Action="InstallServices" Template="Â¼Â­ÂºÃ±Â½Âº: [2]">Â»Ãµ Â¼Â­ÂºÃ±Â½Âº Â¼Â³Ã„Â¡ ÃÃŸ</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Ã†Ã„Ã€Ã: [1],  ÃÂ¾Â¼Ã“Â¼Âº: [2]">Â½ÃƒÂ½ÂºÃ…Ã› Ã„Â«Ã…Â»Â·ÃŽÂ±Ã— Â¼Â³Ã„Â¡ ÃÃŸ</ProgressText>
  
! <ProgressText Action="InstallValidate">Â¼Â³Ã„Â¡Â¸Â¦ Ã€Â¯ÃˆÂ¿ÃˆÂ­Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="LaunchConditions">Â½Ã‡Ã‡Ã  ÃÂ¶Â°Ã‡ ÃˆÂ®Ã€ÃŽ ÃÃŸ</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥: [1]">Â°Ã¼Â·Ãƒ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥Â¿Â¡Â¼Â­ Â±Ã¢Â´Ã‰Ã€Â» Ã€ÃŒÂµÂ¿Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Ã†Ã„Ã€Ã: [1],  ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9],  Ã…Â©Â±Ã¢: [6]">Ã†Ã„Ã€ÃÃ€Â» Â¿Ã…Â±Ã¢Â´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥ Ã„ÃÃ…Ã˜Â½ÂºÃ†Â®:[1], Â¾Ã®Â¼Ã€ÂºÃ­Â¸Â® Ã€ÃŒÂ¸Â§:[2]">Â¾Ã®Â¼Ã€ÂºÃ­Â¸Â® ÃÂ¤ÂºÂ¸Â¸Â¦ Â°Ã”Â½ÃƒÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥ Ã„ÃÃ…Ã˜Â½ÂºÃ†Â®:[1], Â¾Ã®Â¼Ã€ÂºÃ­Â¸Â® Ã€ÃŒÂ¸Â§:[2]">Â¾Ã®Â¼Ã€ÂºÃ­Â¸Â® ÃÂ¤ÂºÂ¸Â¸Â¦ Â°Ã”Â½Ãƒ ÃƒÃ«Â¼Ã’Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Ã†Ã„Ã€Ã: [1], ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [2], Ã…Â©Â±Ã¢: [3]">Ã†Ã„Ã€Ã Ã†ÃÃ„Â¡ ÃÃŸ</ProgressText>
  
! <ProgressText Action="ProcessComponents">Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’ ÂµÃ®Â·ÃÃ€Â» Â¾Ã·ÂµÂ¥Ã€ÃŒÃ†Â®Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’ ID: [1], ÃÂ¦Ã‡Ã‘Ã€Ãš: [2]">Ã‡Ã˜Â´Ã§ Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’Â¸Â¦ Â°Ã”Â½ÃƒÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="Â±Ã¢Â´Ã‰: [1]">ÃÂ¦Ã‡Â° Â±Ã¢Â´Ã‰Ã€Â» Â°Ã”Â½ÃƒÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="PublishProduct">ÃÂ¦Ã‡Â° ÃÂ¤ÂºÂ¸Â¸Â¦ Â°Ã”Â½ÃƒÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Class Â¼Â­Â¹Ã¶Â¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}">COM+ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥Â°Ãº Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’Â¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="Ã€ÃÂ½ÂºÃ…Ã™Â¼Ã‡: [1]">Ã€ÃÂ½ÂºÃ…Ã™Â¼Ã‡ Â¼Â­Â¹Ã¶Â¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="Â±Ã›Â²Ãƒ: [1]">Â±Ã›Â²ÃƒÃ€Â» ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME Ã„ÃÃ…Ã™Ã†Â® Ã€Â¯Ã‡Ã¼: [1], Ã€ÃÂ½ÂºÃ…Ã™Â¼Ã‡: [2]">MIME ÃÂ¤ÂºÂ¸Â¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">ÃÂ¦Ã‡Â°Ã€Â» ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ProgId: [1]">Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥ ÃˆÂ®Ã€ÃŽÃ€ÃšÂ¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">Ã‡Ã¼Â½Ã„ Â¶Ã³Ã€ÃŒÂºÃªÂ·Â¯Â¸Â®Â¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">Â»Ã§Â¿Ã«Ã€ÃšÂ¸Â¦ ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="Ã†Ã„Ã€Ã: [1], ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9]">ÃÃŸÂºÂ¹ Ã†Ã„Ã€ÃÃ€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Ã€ÃŒÂ¸Â§: [1], Â°Âª: [2], Â¼Ã¶Ã‡Ã  [3]">ÃˆÂ¯Â°Ã¦ Â¹Â®Ã€ÃšÂ¿Â­Ã€Â» Â¾Ã·ÂµÂ¥Ã€ÃŒÃ†Â®Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥: [1], Â¸Ã­Â·Ã‰ÃÃ™: [2]">Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥Ã€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="Ã†Ã„Ã€Ã: [1], ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9]">Ã†Ã„Ã€ÃÃ€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="Ã†ÃºÂ´Ãµ: [1]">Ã†ÃºÂ´ÃµÂ¸Â¦ ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Ã…Â°: [1],  Â¼Â½Â¼Ã‡: [2],  Ã…Â°: [3], Â°Âª: [4]">INI Ã†Ã„Ã€Ã Ã‡Ã—Â¸Ã±Ã€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveODBC">ODBC Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’ ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="Ã…Â°: [1], Ã€ÃŒÂ¸Â§: [2]">Â½ÃƒÂ½ÂºÃ…Ã› Â·Â¹ÃÃ¶Â½ÂºÃ†Â®Â¸Â® Â°ÂªÃ€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="Â¹Ã™Â·ÃŽ Â°Â¡Â±Ã¢: [1]">Â¹Ã™Â·ÃŽ Â°Â¡Â±Ã¢Â¸Â¦ ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="RMCCPSearch">ÃÂ¦Ã‡Â°Ã€Â» ÃˆÂ®Ã€ÃŽÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Â·Ã‘Â¹Ã©Ã€Â» Â¼Ã¶Ã‡Ã Ã‡ÃÂ´Ã‚ ÃÃŸ:</ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="Ã†Ã„Ã€Ã: [1]">Â¹Ã©Â¾Ã· Ã†Ã„Ã€ÃÃ€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Ã†Ã„Ã€Ã: [1], Ã†ÃºÂ´Ãµ: [2]">Â¸Ã°ÂµÃ¢Ã€Â» ÂµÃ®Â·ÃÃ‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Ã†Ã„Ã€Ã: [1], Ã†ÃºÂ´Ãµ: [2]">Â¸Ã°ÂµÃ¢ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="SetODBCFolders">ODBC ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®Â¸Â¦ ÃƒÃŠÂ±Ã¢ÃˆÂ­Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="StartServices" Template="Â¼Â­ÂºÃ±Â½Âº: [1]">Â¼Â­ÂºÃ±Â½ÂºÂ¸Â¦ Â½ÃƒÃ€Ã›Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="StopServices" Template="Â¼Â­ÂºÃ±Â½Âº: [1]">Â¼Â­ÂºÃ±Â½ÂºÂ¸Â¦ ÃÃŸÃÃ¶Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="Ã†Ã„Ã€Ã: [1], ÂµÃ°Â·ÂºÃ…ÃÂ¸Â®: [9]">Ã€ÃŒÂµÂ¿Ã‡Ã‘ Ã†Ã„Ã€ÃÃ€Â» ÃÂ¦Â°Ã…Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’ ID: [1], ÃÂ¦Ã‡Ã‘Ã€Ãš: [2]">Ã‡Ã˜Â´Ã§ Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’Ã€Ã‡ Â°Ã”Â½ÃƒÂ¸Â¦ Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Â±Ã¢Â´Ã‰: [1]">ÃÂ¦Ã‡Â° Â±Ã¢Â´Ã‰Ã€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnpublishProduct">ÃÂ¦Ã‡Â° ÃÂ¤ÂºÂ¸Ã€Ã‡ Â°Ã”Â½ÃƒÂ¸Â¦ Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Class Â¼Â­Â¹Ã¶Ã€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">COM+ Ã€Ã€Â¿Ã« Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥Â°Ãº Â±Â¸Â¼Âº Â¿Ã¤Â¼Ã’Ã€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="Ã€ÃÂ½ÂºÃ…Ã™Â¼Ã‡: [1]">extension Â¼Â­Â¹Ã¶Ã€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="Â±Ã›Â²Ãƒ: [1]">Â±Ã›Â²Ãƒ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME Ã„ÃÃ…Ã™Ã†Â® Ã€Â¯Ã‡Ã¼: [1], Ã€ÃÂ½ÂºÃ…Ã™Â¼Ã‡: [2]">MIME ÃÂ¤ÂºÂ¸Ã€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">Ã‡ÃÂ·ÃŽÂ±Ã—Â·Â¥ ÃˆÂ®Ã€ÃŽÃ€ÃšÃ€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">Ã‡Ã¼Â½Ã„ Â¶Ã³Ã€ÃŒÂºÃªÂ·Â¯Â¸Â®Ã€Ã‡ ÂµÃ®Â·ÃÃ€Â» Ã‡Ã˜ÃÂ¦Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Ã€ÃŒÂ¸Â§: [1], Â°Âª: [2], Â¼Ã¶Ã‡Ã  [3]">ÃˆÂ¯Â°Ã¦ Â¹Â®Ã€ÃšÂ¿Â­Ã€Â» Â¾Ã·ÂµÂ¥Ã€ÃŒÃ†Â®Ã‡ÃÂ´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Ã…Â°: [1],  Â¼Â½Â¼Ã‡: [2],  Ã…Â°: [3], Â°Âª: [4]">INI Ã†Ã„Ã€Ã Â°ÂªÃ€Â» Â¾Â²Â´Ã‚ ÃÃŸ</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="Ã…Â°: [1], Ã€ÃŒÂ¸Â§: [2], Â°Âª: [3]">Â½ÃƒÂ½ÂºÃ…Ã› Â·Â¹ÃÃ¶Â½ÂºÃ†Â®Â¸Â® Â°ÂªÃ€Â» Â¾Â²Â´Ã‚ ÃÃŸ</ProgressText>
  
  </Include>
Index: openafs/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi:1.1	Mon Jun 21 01:21:52 2004
--- openafs/src/WINNT/install/wix/lang/pt_BR/ActionText.wxi	Tue Jul 18 12:10:24 2006
***************
*** 1,74 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Aplicativo de anúncio</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="Espaço livre: [1]">Alocando espaço no Registro</ProgressText>
  
  <ProgressText Action="AppSearch" Template="Propriedade: [1], Assinatura: [2]">Procurando aplicativos instalados</ProgressText>
  
! <ProgressText Action="BindImage" Template="Arquivo: [1]">Vinculando executáveis</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">Procurando produtos qualificados</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">Calculando requisitos de espaço</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">Calculando requisitos de espaço</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Pasta: [1]">Criando pastas</ProgressText>
  
  <ProgressText Action="CreateShortcuts" Template="Atalho: [1]">Criando atalhos</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="Serviço: [1]">Excluindo serviços</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Arquivo: [1], Diretório: [9], Tamanho: [6]">Criando arquivos duplicados</ProgressText>
  
! <ProgressText Action="FileCost" Template="">Calculando requisitos de espaço</ProgressText>
  
  <ProgressText Action="FindRelatedProducts" Template="Aplicativo localizado: [1]">Procurando por aplicativos relacionados</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Gerando operações de script para ação:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Arquivo: [1], Diretório: [9], Tamanho: [6]">Copiando arquivos de instalação em rede</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Arquivo: [1], Diretório: [9], Tamanho: [6]">Copiando novos arquivos</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">Instalando componentes de ODBC</ProgressText>
  
! <ProgressText Action="InstallServices" Template="Serviço: [2]">Instalando novos serviços</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Arquivo: [1],  dependências: [2]">Instalando catálogo do sistema</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">Validando instalação</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">Avaliando condições de inicialização</ProgressText>
  
  <ProgressText Action="MigrateFeatureStates" Template="Aplicativo: [1]">Migrando estados do recurso de aplicativos relacionados</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Arquivo: [1], Diretório: [9], Tamanho: [6]">Movendo arquivos</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Contexto do aplicativo:[1], Nome de montagem:[2]">Publicando informações de montagem</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Contexto do aplicativo:[1], Nome de montagem:[2]">Cancelando publicação de informações de montagem</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Arquivo: [1], Diretório: [2], Tamanho: [3]">Corrigindo arquivos</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">Atualizando registro do componente</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Identificação do componente: [1], Qualificador: [2]">Publicando componentes qualificados</ProgressText>
  
  <ProgressText Action="PublishFeatures" Template="Recurso: [1]">Publicando recursos do produto</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">Publicando informações sobre o produto</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Registrando servidores de classes</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Usuários: [3], RSN: [4]}}">Registrando componentes e aplicativos do COM+</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="Extensão: [1]">Registrando servidores de extensão</ProgressText>
  
  <ProgressText Action="RegisterFonts" Template="Fonte: [1]">Registrando fontes</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="Tipo de conteúdo MIME: [1], Extensão: [2]">Registrando informações sobre MIME</ProgressText>
  
  <ProgressText Action="RegisterProduct" Template="[1]">Registrando produto</ProgressText>
  
--- 1,74 ----
  <Include>
  
! <ProgressText Action="Advertise">Aplicativo de anÃºncio</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="EspaÃ§o livre: [1]">Alocando espaÃ§o no Registro</ProgressText>
  
  <ProgressText Action="AppSearch" Template="Propriedade: [1], Assinatura: [2]">Procurando aplicativos instalados</ProgressText>
  
! <ProgressText Action="BindImage" Template="Arquivo: [1]">Vinculando executÃ¡veis</ProgressText>
  
! <ProgressText Action="CCPSearch">Procurando produtos qualificados</ProgressText>
  
! <ProgressText Action="CostFinalize">Calculando requisitos de espaÃ§o</ProgressText>
  
! <ProgressText Action="CostInitialize">Calculando requisitos de espaÃ§o</ProgressText>
  
  <ProgressText Action="CreateFolders" Template="Pasta: [1]">Criando pastas</ProgressText>
  
  <ProgressText Action="CreateShortcuts" Template="Atalho: [1]">Criando atalhos</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="ServiÃ§o: [1]">Excluindo serviÃ§os</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Arquivo: [1], DiretÃ³rio: [9], Tamanho: [6]">Criando arquivos duplicados</ProgressText>
  
! <ProgressText Action="FileCost">Calculando requisitos de espaÃ§o</ProgressText>
  
  <ProgressText Action="FindRelatedProducts" Template="Aplicativo localizado: [1]">Procurando por aplicativos relacionados</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Gerando operaÃ§Ãµes de script para aÃ§Ã£o:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Arquivo: [1], DiretÃ³rio: [9], Tamanho: [6]">Copiando arquivos de instalaÃ§Ã£o em rede</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Arquivo: [1], DiretÃ³rio: [9], Tamanho: [6]">Copiando novos arquivos</ProgressText>
  
! <ProgressText Action="InstallODBC">Instalando componentes de ODBC</ProgressText>
  
! <ProgressText Action="InstallServices" Template="ServiÃ§o: [2]">Instalando novos serviÃ§os</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Arquivo: [1],  dependÃªncias: [2]">Instalando catÃ¡logo do sistema</ProgressText>
  
! <ProgressText Action="InstallValidate">Validando instalaÃ§Ã£o</ProgressText>
  
! <ProgressText Action="LaunchConditions">Avaliando condiÃ§Ãµes de inicializaÃ§Ã£o</ProgressText>
  
  <ProgressText Action="MigrateFeatureStates" Template="Aplicativo: [1]">Migrando estados do recurso de aplicativos relacionados</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Arquivo: [1], DiretÃ³rio: [9], Tamanho: [6]">Movendo arquivos</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Contexto do aplicativo:[1], Nome de montagem:[2]">Publicando informaÃ§Ãµes de montagem</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Contexto do aplicativo:[1], Nome de montagem:[2]">Cancelando publicaÃ§Ã£o de informaÃ§Ãµes de montagem</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Arquivo: [1], DiretÃ³rio: [2], Tamanho: [3]">Corrigindo arquivos</ProgressText>
  
! <ProgressText Action="ProcessComponents">Atualizando registro do componente</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="IdentificaÃ§Ã£o do componente: [1], Qualificador: [2]">Publicando componentes qualificados</ProgressText>
  
  <ProgressText Action="PublishFeatures" Template="Recurso: [1]">Publicando recursos do produto</ProgressText>
  
! <ProgressText Action="PublishProduct">Publicando informaÃ§Ãµes sobre o produto</ProgressText>
  
  <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Registrando servidores de classes</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], UsuÃ¡rios: [3], RSN: [4]}}">Registrando componentes e aplicativos do COM+</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="ExtensÃ£o: [1]">Registrando servidores de extensÃ£o</ProgressText>
  
  <ProgressText Action="RegisterFonts" Template="Fonte: [1]">Registrando fontes</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="Tipo de conteÃºdo MIME: [1], ExtensÃ£o: [2]">Registrando informaÃ§Ãµes sobre MIME</ProgressText>
  
  <ProgressText Action="RegisterProduct" Template="[1]">Registrando produto</ProgressText>
  
***************
*** 76,142 ****
  
  <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">Registrando bibliotecas de tipos</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">Registrando usuário</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="Arquivo: [1], Diretório: [9]">Removendo arquivos duplicados</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Nome: [1], Valor: [2], Ação [3]">Atualizando seqüências de ambiente</ProgressText>
  
  <ProgressText Action="RemoveExistingProducts" Template="Aplicativo: [1], Linha de comando: [2]">Removendo aplicativos</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="Arquivo: [1], Diretório: [9]">Removendo arquivos</ProgressText>
  
  <ProgressText Action="RemoveFolders" Template="Pasta: [1]">Removendo pastas</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Arquivo: [1], Seção: [2], Chave: [3], Valor: [4]">Removendo entradas dos arquivos INI</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">Removendo componentes de ODBC</ProgressText>
  
  <ProgressText Action="RemoveRegistryValues" Template="Chave: [1], Nome: [2]">Removendo valores do Registro do sistema</ProgressText>
  
  <ProgressText Action="RemoveShortcuts" Template="Atalho: [1]">Removendo atalhos</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">Procurando produtos qualificados</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Repetindo a ação:</ProgressText>
  
  <ProgressText Action="RollbackCleanup" Template="Arquivo: [1]">Removendo arquivos de backup</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Arquivo: [1], Pasta: [2]">Registrando módulos</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Arquivo: [1], Pasta: [2]">Removendo registro de módulos</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">Inicializando diretórios de ODBC</ProgressText>
  
! <ProgressText Action="StartServices" Template="Serviço: [1]">Iniciando serviços</ProgressText>
  
! <ProgressText Action="StopServices" Template="Serviço: [1]">Interrompendo serviços</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="Arquivo: [1], Diretório: [9]">Removendo arquivos movidos</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Identificação do componente: [1], Qualificador: [2]">Cancelando publicação de componentes qualificados</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Recurso: [1]">Cancelando publicação de recursos do produto</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">Cancelando publicação de informações sobre o produto</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Remover o registro de servidores de classes</ProgressText>
  
  <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">Removendo registro de componentes e aplicativos do COM+</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="Extensão: [1]">Removendo o registro de servidores de extensão</ProgressText>
  
  <ProgressText Action="UnregisterFonts" Template="Fonte: [1]">Removendo o registro de fontes</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="Tipo de conteúdo MIME: [1], Extensão: [2]">Removendo registro de informações sobre MIME</ProgressText>
  
  <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">Removendo registro de identificadores de programas</ProgressText>
  
  <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">Removendo registro de bibliotecas de tipos</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Nome: [1], Valor: [2], Ação [3]">Atualizando seqüências de ambiente</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Arquivo: [1], Seção: [2], Chave: [3], Valor: [4]">Gravando valores de arquivos INI</ProgressText>
  
  <ProgressText Action="WriteRegistryValues" Template="Chave: [1], Nome: [2], Valor: [3]">Gravando valores de Registro do sistema</ProgressText>
  
--- 76,142 ----
  
  <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">Registrando bibliotecas de tipos</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">Registrando usuÃ¡rio</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="Arquivo: [1], DiretÃ³rio: [9]">Removendo arquivos duplicados</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Nome: [1], Valor: [2], AÃ§Ã£o [3]">Atualizando seqÃ¼Ãªncias de ambiente</ProgressText>
  
  <ProgressText Action="RemoveExistingProducts" Template="Aplicativo: [1], Linha de comando: [2]">Removendo aplicativos</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="Arquivo: [1], DiretÃ³rio: [9]">Removendo arquivos</ProgressText>
  
  <ProgressText Action="RemoveFolders" Template="Pasta: [1]">Removendo pastas</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Arquivo: [1], SeÃ§Ã£o: [2], Chave: [3], Valor: [4]">Removendo entradas dos arquivos INI</ProgressText>
  
! <ProgressText Action="RemoveODBC">Removendo componentes de ODBC</ProgressText>
  
  <ProgressText Action="RemoveRegistryValues" Template="Chave: [1], Nome: [2]">Removendo valores do Registro do sistema</ProgressText>
  
  <ProgressText Action="RemoveShortcuts" Template="Atalho: [1]">Removendo atalhos</ProgressText>
  
! <ProgressText Action="RMCCPSearch">Procurando produtos qualificados</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Repetindo a aÃ§Ã£o:</ProgressText>
  
  <ProgressText Action="RollbackCleanup" Template="Arquivo: [1]">Removendo arquivos de backup</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Arquivo: [1], Pasta: [2]">Registrando mÃ³dulos</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Arquivo: [1], Pasta: [2]">Removendo registro de mÃ³dulos</ProgressText>
  
! <ProgressText Action="SetODBCFolders">Inicializando diretÃ³rios de ODBC</ProgressText>
  
! <ProgressText Action="StartServices" Template="ServiÃ§o: [1]">Iniciando serviÃ§os</ProgressText>
  
! <ProgressText Action="StopServices" Template="ServiÃ§o: [1]">Interrompendo serviÃ§os</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="Arquivo: [1], DiretÃ³rio: [9]">Removendo arquivos movidos</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="IdentificaÃ§Ã£o do componente: [1], Qualificador: [2]">Cancelando publicaÃ§Ã£o de componentes qualificados</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Recurso: [1]">Cancelando publicaÃ§Ã£o de recursos do produto</ProgressText>
  
! <ProgressText Action="UnpublishProduct">Cancelando publicaÃ§Ã£o de informaÃ§Ãµes sobre o produto</ProgressText>
  
  <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Remover o registro de servidores de classes</ProgressText>
  
  <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">Removendo registro de componentes e aplicativos do COM+</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="ExtensÃ£o: [1]">Removendo o registro de servidores de extensÃ£o</ProgressText>
  
  <ProgressText Action="UnregisterFonts" Template="Fonte: [1]">Removendo o registro de fontes</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="Tipo de conteÃºdo MIME: [1], ExtensÃ£o: [2]">Removendo registro de informaÃ§Ãµes sobre MIME</ProgressText>
  
  <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">Removendo registro de identificadores de programas</ProgressText>
  
  <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">Removendo registro de bibliotecas de tipos</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Nome: [1], Valor: [2], AÃ§Ã£o [3]">Atualizando seqÃ¼Ãªncias de ambiente</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Arquivo: [1], SeÃ§Ã£o: [2], Chave: [3], Valor: [4]">Gravando valores de arquivos INI</ProgressText>
  
  <ProgressText Action="WriteRegistryValues" Template="Chave: [1], Nome: [2], Valor: [3]">Gravando valores de Registro do sistema</ProgressText>
  
Index: openafs/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi:1.1	Mon Jun 21 01:21:52 2004
--- openafs/src/WINNT/install/wix/lang/zh_CN/ActionText.wxi	Tue Jul 18 12:10:24 2006
***************
*** 1,143 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">Í¨ÖªÓ¦ÓÃ³ÌÐò</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="×ÔÓÉ¿Õ¼ä: [1]">ÕýÔÚ·ÖÅä×¢²á±í¿Õ¼ä</ProgressText>
  
! <ProgressText Action="AppSearch" Template="ÊôÐÔ: [1]£¬Ç©Ãû: [2]">ÕýÔÚËÑË÷ÒÑ°²×°µÄÓ¦ÓÃ³ÌÐò</ProgressText>
  
! <ProgressText Action="BindImage" Template="ÎÄ¼þ: [1]">°ó¶¨¿ÉÖ´ÐÐÎÄ¼þ</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">ÕýÔÚËÑË÷·ûºÏ×Ê¸ñµÄ²úÆ·</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">ÕýÔÚ¼ÆËã¿Õ¼äÐèÇó</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">ÕýÔÚ¼ÆËã¿Õ¼äÐèÇó</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="ÎÄ¼þ¼Ð: [1]">ÕýÔÚ´´½¨ÎÄ¼þ¼Ð</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="¿ì½Ý·½Ê½: [1]">ÕýÔÚ´´½¨¿ì½Ý·½Ê½</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="·þÎñ: [1]">ÕýÔÚÉ¾³ý·þÎñ</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]£¬´óÐ¡: [6]">ÕýÔÚ´´½¨ÖØ¸´ÎÄ¼þ</ProgressText>
  
! <ProgressText Action="FileCost" Template="">ÕýÔÚ¼ÆËã¿Õ¼äÐèÇó</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="ÕÒµ½Ó¦ÓÃ³ÌÐò: [1]">ÕýÔÚËÑË÷Ïà¹Ø²úÆ·</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">ÕýÔÚÉú³É½Å±¾²Ù×÷£¬ÓÃÓÚ£º</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]£¬´óÐ¡: [6]">ÕýÔÚ¸´ÖÆÍøÂç°²×°ÎÄ¼þ</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]£¬´óÐ¡: [6]">ÕýÔÚ¸´ÖÆÐÂÎÄ¼þ</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">ÕýÔÚ°²×° ODBC ×é¼þ</ProgressText>
  
! <ProgressText Action="InstallServices" Template="·þÎñ: [2]">ÕýÔÚ°²×°ÐÂ·þÎñ</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="ÎÄ¼þ: [1]£¬ ÒÀ´æ¹ØÏµ: [2]">ÕýÔÚ°²×°ÏµÍ³Ä¿Â¼</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">ÕýÔÚÑéÖ¤°²×°</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">ÕýÔÚÆÀ¹ÀÆô¶¯Ìõ¼þ</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Ó¦ÓÃ³ÌÐò: [1]">ÕýÔÚ´ÓÏà¹ØÓ¦ÓÃ³ÌÐòÇ¨ÒÆ¹¦ÄÜ</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]£¬´óÐ¡: [6]">ÕýÔÚÒÆ¶¯ÎÄ¼þ</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Ó¦ÓÃ³ÌÐò»·¾³:[1], »ã±àÃû:[2]">·¢ÐÐ»ã±àÐÅÏ¢</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Ó¦ÓÃ³ÌÐò»·¾³:[1], »ã±àÃû:[2]">Í£Ö¹·¢ÐÐ»ã±àÐÅÏ¢</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [2]£¬´óÐ¡: [3]">ÕýÔÚÐÞ²¹ÎÄ¼þ</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">ÕýÔÚ¸üÐÂ×é¼þ×¢²á±í</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="×é¼þ ID: [1]£¬×Ê¸ñÈÏÖ¤Õß: [2]">ÕýÔÚ·¢²¼ºÏ¸ñµÄ×é¼þ</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="¹¦ÄÜ: [1]">ÕýÔÚ·¢²¼²úÆ·¹¦ÄÜ</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">ÕýÔÚ·¢²¼²úÆ·ÐÅÏ¢</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">ÕýÔÚ×¢²áÀà·þÎñÆ÷</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}">ÕýÔÚ×¢²á COM+ Ó¦ÓÃ³ÌÐòºÍ×é¼þ</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="À©Õ¹: [1]">ÕýÔÚ×¢²áÀ©Õ¹·þÎñÆ÷</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="×ÖÌå: [1]">ÕýÔÚ×¢²á×ÖÌå</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME ÄÚÈÝÀàÐÍ: [1]£¬À©Õ¹: [2]">ÕýÔÚ×¢²á MIME ÐÅÏ¢</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">ÕýÔÚ×¢²á²úÆ·</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ProgId: [1]">ÕýÔÚ×¢²á³ÌÐò±êÊ¶·û</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">ÕýÔÚ×¢²áÀàÐÍ¿â</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">ÕýÔÚ×¢²áÓÃ»§</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]">ÕýÔÚÉ¾³ýÖØ¸´µÄÎÄ¼þ</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Ãû³Æ: [1]£¬ÊýÖµ: [2]£¬¶¯×÷ [3]">ÕýÔÚ¸üÐÂ»·¾³×Ö·û´®</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="Ó¦ÓÃ³ÌÐò: [1]£¬ÃüÁîÐÐ: [2]">ÕýÔÚÉ¾³ýÓ¦ÓÃ³ÌÐò</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]">ÕýÔÚÉ¾³ýÎÄ¼þ</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="ÎÄ¼þ¼Ð: [1]">ÕýÔÚÉ¾³ýÎÄ¼þ¼Ð</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="ÎÄ¼þ: [1]£¬½Ú: [2]£¬¼ü: [3]£¬ÊýÖµ: [4]">ÕýÔÚÉ¾³ý INI ÎÄ¼þÌõÄ¿</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">ÕýÔÚÉ¾³ý ODBC ×é¼þ</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="¼üÖµ: [1]£¬Ãû³Æ: [2]">ÕýÔÚÉ¾³ýÏµÍ³×¢²á±íÖµ</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="¿ì½Ý·½Ê½: [1]">ÕýÔÚÉ¾³ý¿ì½Ý·½Ê½</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">ÕýÔÚËÑË÷·ûºÏ×Ê¸ñµÄ²úÆ·</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">»Ø¹ö²Ù×÷: </ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="ÎÄ¼þ: [1]">ÕýÔÚÉ¾³ý±¸·ÝÎÄ¼þ</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="ÎÄ¼þ: [1]£¬ÎÄ¼þ¼Ð: [2]">ÕýÔÚ×¢²áÄ£¿é</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="ÎÄ¼þ: [1]£¬ÎÄ¼þ¼Ð: [2]">ÕýÔÚ³·ÏúÄ£¿éµÄ×¢²á</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">ÕýÔÚ³õÊ¼»¯ ODBC Ä¿Â¼</ProgressText>
  
! <ProgressText Action="StartServices" Template="·þÎñ: [1]">ÕýÔÚÆô¶¯·þÎñ</ProgressText>
  
! <ProgressText Action="StopServices" Template="·þÎñ: [1]">ÕýÔÚÍ£Ö¹·þÎñ</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="ÎÄ¼þ: [1]£¬Ä¿Â¼: [9]">ÕýÔÚÉ¾³ýÒÆ¶¯¹ýµÄÎÄ¼þ</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="×é¼þ ID: [1]£¬×Ê¸ñÈÏÖ¤Õß: [2]">ÕýÔÚÈ¡ÏûºÏ¸ñ×é¼þµÄ·¢²¼</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="¹¦ÄÜ: [1]">ÕýÔÚÈ¡Ïû²úÆ·¹¦ÄÜµÄ·¢²¼</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">ÕýÔÚÈ¡Ïû²úÆ·ÐÅÏ¢µÄ·¢²¼</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">ÕýÔÚ³·ÏúÀà·þÎñÆ÷µÄ×¢²á</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">ÕýÔÚ³·Ïú COM+ Ó¦ÓÃ³ÌÐòºÍ×é¼þµÄ×¢²á</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="À©Õ¹: [1]">ÕýÔÚ³·ÏúÀ©Õ¹·þÎñÆ÷µÄ×¢²á</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="×ÖÌå: [1]">ÕýÔÚ³·Ïú×ÖÌåµÄ×¢²á</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME ÄÚÈÝÀàÐÍ: [1]£¬À©Õ¹: [2]">ÕýÔÚ³·Ïú MIME ÐÅÏ¢µÄ×¢²á</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">ÕýÔÚ³·Ïú³ÌÐò±êÊ¶·ûµÄ×¢²á</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">ÕýÔÚ³·ÏúÀàÐÍ¿âµÄ×¢²á</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Ãû³Æ: [1]£¬ÊýÖµ: [2]£¬¶¯×÷ [3]">ÕýÔÚ¸üÐÂ»·¾³×Ö·û´®</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="ÎÄ¼þ: [1]£¬½Ú: [2]£¬¼ü: [3]£¬ÊýÖµ: [4]">ÕýÔÚÐ´Èë INI ÎÄ¼þÊýÖµ</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="¼ü: [1]£¬Ãû³Æ: [2]£¬ÊýÖµ: [3]">ÕýÔÚÐ´ÈëÏµÍ³×¢²á±íÖµ</ProgressText>
  
  </Include>
--- 1,143 ----
  <Include>
  
! <ProgressText Action="Advertise">ÃÂ¨Ã–ÂªÃ“Â¦Ã“ÃƒÂ³ÃŒÃÃ²</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="Ã—Ã”Ã“Ã‰Â¿Ã•Â¼Ã¤: [1]">Ã•Ã½Ã”ÃšÂ·Ã–Ã…Ã¤Ã—Â¢Â²Ã¡Â±Ã­Â¿Ã•Â¼Ã¤</ProgressText>
  
! <ProgressText Action="AppSearch" Template="ÃŠÃ´ÃÃ”: [1]Â£Â¬Ã‡Â©ÃƒÃ»: [2]">Ã•Ã½Ã”ÃšÃ‹Ã‘Ã‹Ã·Ã’Ã‘Â°Â²Ã—Â°ÂµÃ„Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²</ProgressText>
  
! <ProgressText Action="BindImage" Template="ÃŽÃ„Â¼Ã¾: [1]">Â°Ã³Â¶Â¨Â¿Ã‰Ã–Â´ÃÃÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="CCPSearch">Ã•Ã½Ã”ÃšÃ‹Ã‘Ã‹Ã·Â·Ã»ÂºÃÃ—ÃŠÂ¸Ã±ÂµÃ„Â²ÃºÃ†Â·</ProgressText>
  
! <ProgressText Action="CostFinalize">Ã•Ã½Ã”ÃšÂ¼Ã†Ã‹Ã£Â¿Ã•Â¼Ã¤ÃÃ¨Ã‡Ã³</ProgressText>
  
! <ProgressText Action="CostInitialize">Ã•Ã½Ã”ÃšÂ¼Ã†Ã‹Ã£Â¿Ã•Â¼Ã¤ÃÃ¨Ã‡Ã³</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="ÃŽÃ„Â¼Ã¾Â¼Ã: [1]">Ã•Ã½Ã”ÃšÂ´Â´Â½Â¨ÃŽÃ„Â¼Ã¾Â¼Ã</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="Â¿Ã¬Â½ÃÂ·Â½ÃŠÂ½: [1]">Ã•Ã½Ã”ÃšÂ´Â´Â½Â¨Â¿Ã¬Â½ÃÂ·Â½ÃŠÂ½</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="Â·Ã¾ÃŽÃ±: [1]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½Â·Ã¾ÃŽÃ±</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]Â£Â¬Â´Ã³ÃÂ¡: [6]">Ã•Ã½Ã”ÃšÂ´Â´Â½Â¨Ã–Ã˜Â¸Â´ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="FileCost">Ã•Ã½Ã”ÃšÂ¼Ã†Ã‹Ã£Â¿Ã•Â¼Ã¤ÃÃ¨Ã‡Ã³</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Ã•Ã’ÂµÂ½Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²: [1]">Ã•Ã½Ã”ÃšÃ‹Ã‘Ã‹Ã·ÃÃ Â¹Ã˜Â²ÃºÃ†Â·</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Ã•Ã½Ã”ÃšÃ‰ÃºÂ³Ã‰Â½Ã…Â±Â¾Â²Ã™Ã—Ã·Â£Â¬Ã“ÃƒÃ“ÃšÂ£Âº</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]Â£Â¬Â´Ã³ÃÂ¡: [6]">Ã•Ã½Ã”ÃšÂ¸Â´Ã–Ã†ÃÃ¸Ã‚Ã§Â°Â²Ã—Â°ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]Â£Â¬Â´Ã³ÃÂ¡: [6]">Ã•Ã½Ã”ÃšÂ¸Â´Ã–Ã†ÃÃ‚ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="InstallODBC">Ã•Ã½Ã”ÃšÂ°Â²Ã—Â° ODBC Ã—Ã©Â¼Ã¾</ProgressText>
  
! <ProgressText Action="InstallServices" Template="Â·Ã¾ÃŽÃ±: [2]">Ã•Ã½Ã”ÃšÂ°Â²Ã—Â°ÃÃ‚Â·Ã¾ÃŽÃ±</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬ Ã’Ã€Â´Ã¦Â¹Ã˜ÃÂµ: [2]">Ã•Ã½Ã”ÃšÂ°Â²Ã—Â°ÃÂµÃÂ³Ã„Â¿Ã‚Â¼</ProgressText>
  
! <ProgressText Action="InstallValidate">Ã•Ã½Ã”ÃšÃ‘Ã©Ã–Â¤Â°Â²Ã—Â°</ProgressText>
  
! <ProgressText Action="LaunchConditions">Ã•Ã½Ã”ÃšÃ†Ã€Â¹Ã€Ã†Ã´Â¶Â¯ÃŒÃµÂ¼Ã¾</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²: [1]">Ã•Ã½Ã”ÃšÂ´Ã“ÃÃ Â¹Ã˜Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²Ã‡Â¨Ã’Ã†Â¹Â¦Ã„Ãœ</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]Â£Â¬Â´Ã³ÃÂ¡: [6]">Ã•Ã½Ã”ÃšÃ’Ã†Â¶Â¯ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²Â»Â·Â¾Â³:[1], Â»Ã£Â±Ã ÃƒÃ»:[2]">Â·Â¢ÃÃÂ»Ã£Â±Ã ÃÃ…ÃÂ¢</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²Â»Â·Â¾Â³:[1], Â»Ã£Â±Ã ÃƒÃ»:[2]">ÃÂ£Ã–Â¹Â·Â¢ÃÃÂ»Ã£Â±Ã ÃÃ…ÃÂ¢</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [2]Â£Â¬Â´Ã³ÃÂ¡: [3]">Ã•Ã½Ã”ÃšÃÃžÂ²Â¹ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="ProcessComponents">Ã•Ã½Ã”ÃšÂ¸Ã¼ÃÃ‚Ã—Ã©Â¼Ã¾Ã—Â¢Â²Ã¡Â±Ã­</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Ã—Ã©Â¼Ã¾ ID: [1]Â£Â¬Ã—ÃŠÂ¸Ã±ÃˆÃÃ–Â¤Ã•ÃŸ: [2]">Ã•Ã½Ã”ÃšÂ·Â¢Â²Â¼ÂºÃÂ¸Ã±ÂµÃ„Ã—Ã©Â¼Ã¾</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="Â¹Â¦Ã„Ãœ: [1]">Ã•Ã½Ã”ÃšÂ·Â¢Â²Â¼Â²ÃºÃ†Â·Â¹Â¦Ã„Ãœ</ProgressText>
  
! <ProgressText Action="PublishProduct">Ã•Ã½Ã”ÃšÂ·Â¢Â²Â¼Â²ÃºÃ†Â·ÃÃ…ÃÂ¢</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Ã€Ã Â·Ã¾ÃŽÃ±Ã†Ã·</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡ COM+ Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²ÂºÃÃ—Ã©Â¼Ã¾</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="Ã€Â©Ã•Â¹: [1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Ã€Â©Ã•Â¹Â·Ã¾ÃŽÃ±Ã†Ã·</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="Ã—Ã–ÃŒÃ¥: [1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Ã—Ã–ÃŒÃ¥</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME Ã„ÃšÃˆÃÃ€Ã ÃÃ: [1]Â£Â¬Ã€Â©Ã•Â¹: [2]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡ MIME ÃÃ…ÃÂ¢</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Â²ÃºÃ†Â·</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ProgId: [1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Â³ÃŒÃÃ²Â±ÃªÃŠÂ¶Â·Ã»</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Ã€Ã ÃÃÂ¿Ã¢</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Ã“ÃƒÂ»Â§</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½Ã–Ã˜Â¸Â´ÂµÃ„ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="ÃƒÃ»Â³Ã†: [1]Â£Â¬ÃŠÃ½Ã–Âµ: [2]Â£Â¬Â¶Â¯Ã—Ã· [3]">Ã•Ã½Ã”ÃšÂ¸Ã¼ÃÃ‚Â»Â·Â¾Â³Ã—Ã–Â·Ã»Â´Â®</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²: [1]Â£Â¬ÃƒÃ¼ÃÃ®ÃÃ: [2]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="ÃŽÃ„Â¼Ã¾Â¼Ã: [1]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½ÃŽÃ„Â¼Ã¾Â¼Ã</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Â½Ãš: [2]Â£Â¬Â¼Ã¼: [3]Â£Â¬ÃŠÃ½Ã–Âµ: [4]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½ INI ÃŽÃ„Â¼Ã¾ÃŒÃµÃ„Â¿</ProgressText>
  
! <ProgressText Action="RemoveODBC">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½ ODBC Ã—Ã©Â¼Ã¾</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="Â¼Ã¼Ã–Âµ: [1]Â£Â¬ÃƒÃ»Â³Ã†: [2]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½ÃÂµÃÂ³Ã—Â¢Â²Ã¡Â±Ã­Ã–Âµ</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="Â¿Ã¬Â½ÃÂ·Â½ÃŠÂ½: [1]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½Â¿Ã¬Â½ÃÂ·Â½ÃŠÂ½</ProgressText>
  
! <ProgressText Action="RMCCPSearch">Ã•Ã½Ã”ÃšÃ‹Ã‘Ã‹Ã·Â·Ã»ÂºÃÃ—ÃŠÂ¸Ã±ÂµÃ„Â²ÃºÃ†Â·</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Â»Ã˜Â¹Ã¶Â²Ã™Ã—Ã·: </ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="ÃŽÃ„Â¼Ã¾: [1]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½Â±Â¸Â·ÃÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬ÃŽÃ„Â¼Ã¾Â¼Ã: [2]">Ã•Ã½Ã”ÃšÃ—Â¢Â²Ã¡Ã„Â£Â¿Ã©</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬ÃŽÃ„Â¼Ã¾Â¼Ã: [2]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃºÃ„Â£Â¿Ã©ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="SetODBCFolders">Ã•Ã½Ã”ÃšÂ³ÃµÃŠÂ¼Â»Â¯ ODBC Ã„Â¿Ã‚Â¼</ProgressText>
  
! <ProgressText Action="StartServices" Template="Â·Ã¾ÃŽÃ±: [1]">Ã•Ã½Ã”ÃšÃ†Ã´Â¶Â¯Â·Ã¾ÃŽÃ±</ProgressText>
  
! <ProgressText Action="StopServices" Template="Â·Ã¾ÃŽÃ±: [1]">Ã•Ã½Ã”ÃšÃÂ£Ã–Â¹Â·Ã¾ÃŽÃ±</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Ã„Â¿Ã‚Â¼: [9]">Ã•Ã½Ã”ÃšÃ‰Â¾Â³Ã½Ã’Ã†Â¶Â¯Â¹Ã½ÂµÃ„ÃŽÃ„Â¼Ã¾</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Ã—Ã©Â¼Ã¾ ID: [1]Â£Â¬Ã—ÃŠÂ¸Ã±ÃˆÃÃ–Â¤Ã•ÃŸ: [2]">Ã•Ã½Ã”ÃšÃˆÂ¡ÃÃ»ÂºÃÂ¸Ã±Ã—Ã©Â¼Ã¾ÂµÃ„Â·Â¢Â²Â¼</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Â¹Â¦Ã„Ãœ: [1]">Ã•Ã½Ã”ÃšÃˆÂ¡ÃÃ»Â²ÃºÃ†Â·Â¹Â¦Ã„ÃœÂµÃ„Â·Â¢Â²Â¼</ProgressText>
  
! <ProgressText Action="UnpublishProduct">Ã•Ã½Ã”ÃšÃˆÂ¡ÃÃ»Â²ÃºÃ†Â·ÃÃ…ÃÂ¢ÂµÃ„Â·Â¢Â²Â¼</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃºÃ€Ã Â·Ã¾ÃŽÃ±Ã†Ã·ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">Ã•Ã½Ã”ÃšÂ³Â·ÃÃº COM+ Ã“Â¦Ã“ÃƒÂ³ÃŒÃÃ²ÂºÃÃ—Ã©Â¼Ã¾ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="Ã€Â©Ã•Â¹: [1]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃºÃ€Â©Ã•Â¹Â·Ã¾ÃŽÃ±Ã†Ã·ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="Ã—Ã–ÃŒÃ¥: [1]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃºÃ—Ã–ÃŒÃ¥ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME Ã„ÃšÃˆÃÃ€Ã ÃÃ: [1]Â£Â¬Ã€Â©Ã•Â¹: [2]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃº MIME ÃÃ…ÃÂ¢ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃºÂ³ÃŒÃÃ²Â±ÃªÃŠÂ¶Â·Ã»ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">Ã•Ã½Ã”ÃšÂ³Â·ÃÃºÃ€Ã ÃÃÂ¿Ã¢ÂµÃ„Ã—Â¢Â²Ã¡</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="ÃƒÃ»Â³Ã†: [1]Â£Â¬ÃŠÃ½Ã–Âµ: [2]Â£Â¬Â¶Â¯Ã—Ã· [3]">Ã•Ã½Ã”ÃšÂ¸Ã¼ÃÃ‚Â»Â·Â¾Â³Ã—Ã–Â·Ã»Â´Â®</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="ÃŽÃ„Â¼Ã¾: [1]Â£Â¬Â½Ãš: [2]Â£Â¬Â¼Ã¼: [3]Â£Â¬ÃŠÃ½Ã–Âµ: [4]">Ã•Ã½Ã”ÃšÃÂ´ÃˆÃ« INI ÃŽÃ„Â¼Ã¾ÃŠÃ½Ã–Âµ</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="Â¼Ã¼: [1]Â£Â¬ÃƒÃ»Â³Ã†: [2]Â£Â¬ÃŠÃ½Ã–Âµ: [3]">Ã•Ã½Ã”ÃšÃÂ´ÃˆÃ«ÃÂµÃÂ³Ã—Â¢Â²Ã¡Â±Ã­Ã–Âµ</ProgressText>
  
  </Include>
Index: openafs/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi
diff -c openafs/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi:1.1 openafs/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi:1.1.2.1
*** openafs/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi:1.1	Mon Jun 21 01:21:54 2004
--- openafs/src/WINNT/install/wix/lang/zh_TW/ActionText.wxi	Tue Jul 18 12:10:24 2006
***************
*** 1,143 ****
  <Include>
  
! <ProgressText Action="Advertise" Template="">¥¿¦b«Å¶ÇÀ³¥Îµ{¦¡</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="¥i¥ÎªÅ¶¡: [1]">¾ã²zµn¿ý­ÈªÅ¶¡</ProgressText>
  
! <ProgressText Action="AppSearch" Template="ÄÝ©Ê: [1], Ã±¦W: [2]">·j´M¤w¦w¸ËªºÀ³¥Îµ{¦¡</ProgressText>
  
! <ProgressText Action="BindImage" Template="ÀÉ®×: [1]">¥¿¦bµ²¦X¥i°õÀÉ</ProgressText>
  
! <ProgressText Action="CCPSearch" Template="">¥¿¦b·j´M²Å¦X±ø¥óªº²£«~</ProgressText>
  
! <ProgressText Action="CostFinalize" Template="">­pºâ©Ò»ÝªÅ¶¡</ProgressText>
  
! <ProgressText Action="CostInitialize" Template="">­pºâ©Ò»ÝªÅ¶¡</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="¸ê®Æ§¨: [1]">¥¿¦b«Ø¥ß¸ê®Æ§¨</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="±¶®|: [1]">¥¿¦b«Ø¥ß±¶®|</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="ªA°È: [1]">§R°£ªA°È</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="ÀÉ®×: [1], ¥Ø¿ý: [9],  ¤j¤p: [6]">«Ø¥ß­«½ÆÀÉ®×</ProgressText>
  
! <ProgressText Action="FileCost" Template="">­pºâ©Ò»ÝªÅ¶¡</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="¤w§ä¨ì¤§À³¥Îµ{¦¡: [1]">·j´M¬ÛÃöÀ³¥Îµ{¦¡</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">¥¿¦b¬°°Ê§@²£¥Í script ¾Þ§@:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="ÀÉ®×: [1], ¥Ø¿ý: [9], ¤j¤p: [6]">¥¿¦b½Æ»sºô¸ô¦w¸ËÀÉ®×</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="ÀÉ®×: [1], ¥Ø¿ý: [9],  ¤j¤p: [6]">¥¿¦b½Æ»s·sªºÀÉ®×</ProgressText>
  
! <ProgressText Action="InstallODBC" Template="">¦w¸Ë ODBC ¤¸¥ó</ProgressText>
  
! <ProgressText Action="InstallServices" Template="ªA°È: [2]">¦w¸Ë</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="ÀÉ®×: [1]¡A¨Ì¦s©Ê: [2]">¥¿¦b¦w¸Ë¨t²ÎÃþ§O¥Ø¿ý</ProgressText>
  
! <ProgressText Action="InstallValidate" Template="">ÅçÃÒ¦w¸Ë</ProgressText>
  
! <ProgressText Action="LaunchConditions" Template="">ÀËÅç°õ¦æ±ø¥ó</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="À³¥Îµ{¦¡: [1]">±q¬ÛÃöÀ³¥Îµ{¦¡Âà´«¥\¯àª¬ºA</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="ÀÉ®×: [1], ¥Ø¿ý: [9],  ¤j¤p: [6]">¥¿¦b²¾°ÊÀÉ®×</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="À³¥Îµ{¦¡¤º®e:[1], ²Õ¦X¦WºÙ:[2]">¥¿¦b¤½§G²Õ¦X¸ê°T</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="À³¥Îµ{¦¡¤º®e:[1], ²Õ¦X¦WºÙ:[2]">¥¿¦b¸Ñ°£¤½§G²Õ¦X¸ê°T</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="ÀÉ®×: [1],  ¥Ø¿ý: [2],  ¤j¤p: [3]">­×¸ÉÀÉ®×</ProgressText>
  
! <ProgressText Action="ProcessComponents" Template="">§ó·s¤¸¥óµn¿ý</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="¤¸¥ó ID: [1], Qualifier: [2]">µo§G¦X®æ¤¸¥ó</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="¥\¯à: [1]">µo§G²£«~¥\¯à</ProgressText>
  
! <ProgressText Action="PublishProduct" Template="">µo§G²£«~¸ê°T</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">µn¿ý Class ¦øªA¾¹</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}">µn¿ý COM+ À³¥Îµ{¦¡¤Î¤¸¥ó</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="©µ¦ù: [1]">µn¿ý©µ¦ù¦øªA¾¹</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="¦r«¬: [1]">µn¿ý¦r«¬</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME Content Type: [1], Extension: [2]">µn¿ý MIME ¸ê°T</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">¥¿¦bµn¿ý²£«~</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ProgId: [1]">µn¿ýµ{¦¡ÃÑ§O</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">µn¿ý type libraries</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">¥¿¦bµn¿ý¨Ï¥ÎªÌ</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="ÀÉ®×: [1], ¥Ø¿ý: [9]">²¾°£­«½ÆÀÉ®×</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="¦W¼µ: [1], ­È: [2], °Ê§@ [3]">§ó·sÀô¹Ò¦r¦ê</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="À³¥Îµ{¦¡: [1], ©R¥O¦C: [2]">²¾°£À³¥Îµ{¦¡</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="ÀÉ®×: [1], ¥Ø¿ý: [9]">¥¿¦b²¾°£ÀÉ®×</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="¸ê®Æ§¨: [1]">¥¿¦b²¾°£¸ê®Æ§¨</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="ÀÉ®×: [1],  Section: [2],  Key: [3], Value: [4]">¥¿¦b²¾°£ INI ÀÉ®×</ProgressText>
  
! <ProgressText Action="RemoveODBC" Template="">¥¿¦b²¾°£ ODBC ¤¸¥ó</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="¾÷½X: [1], ¦WºÙ: [2]">¥¿¦b²¾°£¨t²Îµn¿ý­È</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="±¶®|: [1]">¥¿¦b²¾°£±¶®|</ProgressText>
  
! <ProgressText Action="RMCCPSearch" Template="">¥¿¦b·j´M²Å¦X±ø¥óªº²£«~</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">´_­ì°Ê§@:</ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="ÀÉ®×: [1]">¥¿¦b²¾°£³Æ¥÷ÀÉ®×</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="ÀÉ®×: [1], ¸ê®Æ§¨: [2]">¥¿¦bµn¿ý¼Ò²Õ</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="ÀÉ®×: [1], ¸ê®Æ§¨: [2]">¸Ñ°£µn¿ý¼Ò²Õ</ProgressText>
  
! <ProgressText Action="SetODBCFolders" Template="">±Ò°Ê ODBC ¥Ø¿ý</ProgressText>
  
! <ProgressText Action="StartServices" Template="ªA°È: [1]">±Ò°ÊªA°È</ProgressText>
  
! <ProgressText Action="StopServices" Template="ªA°È: [1]">°±¤îªA°È</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="ÀÉ®×: [1], ¥Ø¿ý: [9]">¥¿¦b²¾°£³Q²¾°ÊªºÀÉ®×</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="¤¸¥ó ID: [1], Qualifier: [2]">¸Ñ°£µo§G¦X®æ¤¸¥ó</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="¥\¯à: [1]">¸Ñ°£µo§G²£«~¥\¯à</ProgressText>
  
! <ProgressText Action="UnpublishProduct" Template="">¸Ñ°£µo§G²£«~¸ê°T</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">¸Ñ°£µn¿ý Class ¦øªA¾¹</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">¸Ñ°£µn¿ý COM+ À³¥Îµ{¦¡¤Î¤¸¥ó</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="©µ¦ù: [1]">¸Ñ°£µn¿ý©µ¦ù¦øªA¾¹</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="¦r«¬: [1]">¸Ñ°£µn¿ý¦r«¬</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME Content Type: [1], Extension: [2]">¸Ñ°£µn¿ý MIME ¸ê°T</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">¸Ñ°£µn¿ýµ{¦¡ÃÑ§O</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">¸Ñ°£µn¿ý type libraries</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="¦W¼µ: [1], ­È: [2], °Ê§@ [3]">§ó·sÀô¹Ò¦r¦ê</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="ÀÉ®×: [1],  Section: [2],  Key: [3], Value: [4]">¼g¤J INI ÀÉ®×</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="¾÷½X: [1], ¦WºÙ: [2], ­È: [3]">¥¿¦b¼g¤J¨t²Îµn¿ý</ProgressText>
  
  </Include>
--- 1,143 ----
  <Include>
  
! <ProgressText Action="Advertise">Â¥Â¿Â¦bÂ«Ã…Â¶Ã‡Ã€Â³Â¥ÃŽÂµ{Â¦Â¡</ProgressText>
  
! <ProgressText Action="AllocateRegistrySpace" Template="Â¥iÂ¥ÃŽÂªÃ…Â¶Â¡: [1]">Â¾Ã£Â²zÂµnÂ¿Ã½Â­ÃˆÂªÃ…Â¶Â¡</ProgressText>
  
! <ProgressText Action="AppSearch" Template="Ã„ÃÂ©ÃŠ: [1], ÃƒÂ±Â¦W: [2]">Â·jÂ´MÂ¤wÂ¦wÂ¸Ã‹ÂªÂºÃ€Â³Â¥ÃŽÂµ{Â¦Â¡</ProgressText>
  
! <ProgressText Action="BindImage" Template="Ã€Ã‰Â®Ã—: [1]">Â¥Â¿Â¦bÂµÂ²Â¦XÂ¥iÂ°ÃµÃ€Ã‰</ProgressText>
  
! <ProgressText Action="CCPSearch">Â¥Â¿Â¦bÂ·jÂ´MÂ²Ã…Â¦XÂ±Ã¸Â¥Ã³ÂªÂºÂ²Â£Â«~</ProgressText>
  
! <ProgressText Action="CostFinalize">Â­pÂºÃ¢Â©Ã’Â»ÃÂªÃ…Â¶Â¡</ProgressText>
  
! <ProgressText Action="CostInitialize">Â­pÂºÃ¢Â©Ã’Â»ÃÂªÃ…Â¶Â¡</ProgressText>
  
! <ProgressText Action="CreateFolders" Template="Â¸ÃªÂ®Ã†Â§Â¨: [1]">Â¥Â¿Â¦bÂ«Ã˜Â¥ÃŸÂ¸ÃªÂ®Ã†Â§Â¨</ProgressText>
  
! <ProgressText Action="CreateShortcuts" Template="Â±Â¶Â®|: [1]">Â¥Â¿Â¦bÂ«Ã˜Â¥ÃŸÂ±Â¶Â®|</ProgressText>
  
! <ProgressText Action="DeleteServices" Template="ÂªAÂ°Ãˆ: [1]">Â§RÂ°Â£ÂªAÂ°Ãˆ</ProgressText>
  
! <ProgressText Action="DuplicateFiles" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9],  Â¤jÂ¤p: [6]">Â«Ã˜Â¥ÃŸÂ­Â«Â½Ã†Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="FileCost">Â­pÂºÃ¢Â©Ã’Â»ÃÂªÃ…Â¶Â¡</ProgressText>
  
! <ProgressText Action="FindRelatedProducts" Template="Â¤wÂ§Ã¤Â¨Ã¬Â¤Â§Ã€Â³Â¥ÃŽÂµ{Â¦Â¡: [1]">Â·jÂ´MÂ¬Ã›ÃƒÃ¶Ã€Â³Â¥ÃŽÂµ{Â¦Â¡</ProgressText>
  
! <ProgressText Action="GenerateScript" Template="[1]">Â¥Â¿Â¦bÂ¬Â°Â°ÃŠÂ§@Â²Â£Â¥Ã script Â¾ÃžÂ§@:</ProgressText>
  
! <ProgressText Action="InstallAdminPackage" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9], Â¤jÂ¤p: [6]">Â¥Â¿Â¦bÂ½Ã†Â»sÂºÃ´Â¸Ã´Â¦wÂ¸Ã‹Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="InstallFiles" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9],  Â¤jÂ¤p: [6]">Â¥Â¿Â¦bÂ½Ã†Â»sÂ·sÂªÂºÃ€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="InstallODBC">Â¦wÂ¸Ã‹ ODBC Â¤Â¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="InstallServices" Template="ÂªAÂ°Ãˆ: [2]">Â¦wÂ¸Ã‹</ProgressText>
  
! <ProgressText Action="InstallSFPCatalogFile" Template="Ã€Ã‰Â®Ã—: [1]Â¡AÂ¨ÃŒÂ¦sÂ©ÃŠ: [2]">Â¥Â¿Â¦bÂ¦wÂ¸Ã‹Â¨tÂ²ÃŽÃƒÃ¾Â§OÂ¥Ã˜Â¿Ã½</ProgressText>
  
! <ProgressText Action="InstallValidate">Ã…Ã§ÃƒÃ’Â¦wÂ¸Ã‹</ProgressText>
  
! <ProgressText Action="LaunchConditions">Ã€Ã‹Ã…Ã§Â°ÃµÂ¦Ã¦Â±Ã¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="MigrateFeatureStates" Template="Ã€Â³Â¥ÃŽÂµ{Â¦Â¡: [1]">Â±qÂ¬Ã›ÃƒÃ¶Ã€Â³Â¥ÃŽÂµ{Â¦Â¡Ã‚Ã Â´Â«Â¥\Â¯Ã ÂªÂ¬ÂºA</ProgressText>
  
! <ProgressText Action="MoveFiles" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9],  Â¤jÂ¤p: [6]">Â¥Â¿Â¦bÂ²Â¾Â°ÃŠÃ€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="MsiPublishAssemblies" Template="Ã€Â³Â¥ÃŽÂµ{Â¦Â¡Â¤ÂºÂ®e:[1], Â²Ã•Â¦XÂ¦WÂºÃ™:[2]">Â¥Â¿Â¦bÂ¤Â½Â§GÂ²Ã•Â¦XÂ¸ÃªÂ°T</ProgressText>
  
! <ProgressText Action="MsiUnpublishAssemblies" Template="Ã€Â³Â¥ÃŽÂµ{Â¦Â¡Â¤ÂºÂ®e:[1], Â²Ã•Â¦XÂ¦WÂºÃ™:[2]">Â¥Â¿Â¦bÂ¸Ã‘Â°Â£Â¤Â½Â§GÂ²Ã•Â¦XÂ¸ÃªÂ°T</ProgressText>
  
! <ProgressText Action="PatchFiles" Template="Ã€Ã‰Â®Ã—: [1],  Â¥Ã˜Â¿Ã½: [2],  Â¤jÂ¤p: [3]">Â­Ã—Â¸Ã‰Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="ProcessComponents">Â§Ã³Â·sÂ¤Â¸Â¥Ã³ÂµnÂ¿Ã½</ProgressText>
  
! <ProgressText Action="PublishComponents" Template="Â¤Â¸Â¥Ã³ ID: [1], Qualifier: [2]">ÂµoÂ§GÂ¦XÂ®Ã¦Â¤Â¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="PublishFeatures" Template="Â¥\Â¯Ã : [1]">ÂµoÂ§GÂ²Â£Â«~Â¥\Â¯Ã </ProgressText>
  
! <ProgressText Action="PublishProduct">ÂµoÂ§GÂ²Â£Â«~Â¸ÃªÂ°T</ProgressText>
  
! <ProgressText Action="RegisterClassInfo" Template="Class Id: [1]">ÂµnÂ¿Ã½ Class Â¦Ã¸ÂªAÂ¾Â¹</ProgressText>
  
! <ProgressText Action="RegisterComPlus" Template="AppId: [1]{{, AppType: [2], Users: [3], RSN: [4]}}">ÂµnÂ¿Ã½ COM+ Ã€Â³Â¥ÃŽÂµ{Â¦Â¡Â¤ÃŽÂ¤Â¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="RegisterExtensionInfo" Template="Â©ÂµÂ¦Ã¹: [1]">ÂµnÂ¿Ã½Â©ÂµÂ¦Ã¹Â¦Ã¸ÂªAÂ¾Â¹</ProgressText>
  
! <ProgressText Action="RegisterFonts" Template="Â¦rÂ«Â¬: [1]">ÂµnÂ¿Ã½Â¦rÂ«Â¬</ProgressText>
  
! <ProgressText Action="RegisterMIMEInfo" Template="MIME Content Type: [1], Extension: [2]">ÂµnÂ¿Ã½ MIME Â¸ÃªÂ°T</ProgressText>
  
! <ProgressText Action="RegisterProduct" Template="[1]">Â¥Â¿Â¦bÂµnÂ¿Ã½Â²Â£Â«~</ProgressText>
  
! <ProgressText Action="RegisterProgIdInfo" Template="ProgId: [1]">ÂµnÂ¿Ã½Âµ{Â¦Â¡ÃƒÃ‘Â§O</ProgressText>
  
! <ProgressText Action="RegisterTypeLibraries" Template="LibID: [1]">ÂµnÂ¿Ã½ type libraries</ProgressText>
  
! <ProgressText Action="RegisterUser" Template="[1]">Â¥Â¿Â¦bÂµnÂ¿Ã½Â¨ÃÂ¥ÃŽÂªÃŒ</ProgressText>
  
! <ProgressText Action="RemoveDuplicateFiles" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9]">Â²Â¾Â°Â£Â­Â«Â½Ã†Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="RemoveEnvironmentStrings" Template="Â¦WÂ¼Âµ: [1], Â­Ãˆ: [2], Â°ÃŠÂ§@ [3]">Â§Ã³Â·sÃ€Ã´Â¹Ã’Â¦rÂ¦Ãª</ProgressText>
  
! <ProgressText Action="RemoveExistingProducts" Template="Ã€Â³Â¥ÃŽÂµ{Â¦Â¡: [1], Â©RÂ¥OÂ¦C: [2]">Â²Â¾Â°Â£Ã€Â³Â¥ÃŽÂµ{Â¦Â¡</ProgressText>
  
! <ProgressText Action="RemoveFiles" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9]">Â¥Â¿Â¦bÂ²Â¾Â°Â£Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="RemoveFolders" Template="Â¸ÃªÂ®Ã†Â§Â¨: [1]">Â¥Â¿Â¦bÂ²Â¾Â°Â£Â¸ÃªÂ®Ã†Â§Â¨</ProgressText>
  
! <ProgressText Action="RemoveIniValues" Template="Ã€Ã‰Â®Ã—: [1],  Section: [2],  Key: [3], Value: [4]">Â¥Â¿Â¦bÂ²Â¾Â°Â£ INI Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="RemoveODBC">Â¥Â¿Â¦bÂ²Â¾Â°Â£ ODBC Â¤Â¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="RemoveRegistryValues" Template="Â¾Ã·Â½X: [1], Â¦WÂºÃ™: [2]">Â¥Â¿Â¦bÂ²Â¾Â°Â£Â¨tÂ²ÃŽÂµnÂ¿Ã½Â­Ãˆ</ProgressText>
  
! <ProgressText Action="RemoveShortcuts" Template="Â±Â¶Â®|: [1]">Â¥Â¿Â¦bÂ²Â¾Â°Â£Â±Â¶Â®|</ProgressText>
  
! <ProgressText Action="RMCCPSearch">Â¥Â¿Â¦bÂ·jÂ´MÂ²Ã…Â¦XÂ±Ã¸Â¥Ã³ÂªÂºÂ²Â£Â«~</ProgressText>
  
! <ProgressText Action="Rollback" Template="[1]">Â´_Â­Ã¬Â°ÃŠÂ§@:</ProgressText>
  
! <ProgressText Action="RollbackCleanup" Template="Ã€Ã‰Â®Ã—: [1]">Â¥Â¿Â¦bÂ²Â¾Â°Â£Â³Ã†Â¥Ã·Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="SelfRegModules" Template="Ã€Ã‰Â®Ã—: [1], Â¸ÃªÂ®Ã†Â§Â¨: [2]">Â¥Â¿Â¦bÂµnÂ¿Ã½Â¼Ã’Â²Ã•</ProgressText>
  
! <ProgressText Action="SelfUnregModules" Template="Ã€Ã‰Â®Ã—: [1], Â¸ÃªÂ®Ã†Â§Â¨: [2]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½Â¼Ã’Â²Ã•</ProgressText>
  
! <ProgressText Action="SetODBCFolders">Â±Ã’Â°ÃŠ ODBC Â¥Ã˜Â¿Ã½</ProgressText>
  
! <ProgressText Action="StartServices" Template="ÂªAÂ°Ãˆ: [1]">Â±Ã’Â°ÃŠÂªAÂ°Ãˆ</ProgressText>
  
! <ProgressText Action="StopServices" Template="ÂªAÂ°Ãˆ: [1]">Â°Â±Â¤Ã®ÂªAÂ°Ãˆ</ProgressText>
  
! <ProgressText Action="UnmoveFiles" Template="Ã€Ã‰Â®Ã—: [1], Â¥Ã˜Â¿Ã½: [9]">Â¥Â¿Â¦bÂ²Â¾Â°Â£Â³QÂ²Â¾Â°ÃŠÂªÂºÃ€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="UnpublishComponents" Template="Â¤Â¸Â¥Ã³ ID: [1], Qualifier: [2]">Â¸Ã‘Â°Â£ÂµoÂ§GÂ¦XÂ®Ã¦Â¤Â¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="UnpublishFeatures" Template="Â¥\Â¯Ã : [1]">Â¸Ã‘Â°Â£ÂµoÂ§GÂ²Â£Â«~Â¥\Â¯Ã </ProgressText>
  
! <ProgressText Action="UnpublishProduct">Â¸Ã‘Â°Â£ÂµoÂ§GÂ²Â£Â«~Â¸ÃªÂ°T</ProgressText>
  
! <ProgressText Action="UnregisterClassInfo" Template="Class Id: [1]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½ Class Â¦Ã¸ÂªAÂ¾Â¹</ProgressText>
  
! <ProgressText Action="UnregisterComPlus" Template="AppId: [1]{{, AppType: [2]}}">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½ COM+ Ã€Â³Â¥ÃŽÂµ{Â¦Â¡Â¤ÃŽÂ¤Â¸Â¥Ã³</ProgressText>
  
! <ProgressText Action="UnregisterExtensionInfo" Template="Â©ÂµÂ¦Ã¹: [1]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½Â©ÂµÂ¦Ã¹Â¦Ã¸ÂªAÂ¾Â¹</ProgressText>
  
! <ProgressText Action="UnregisterFonts" Template="Â¦rÂ«Â¬: [1]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½Â¦rÂ«Â¬</ProgressText>
  
! <ProgressText Action="UnregisterMIMEInfo" Template="MIME Content Type: [1], Extension: [2]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½ MIME Â¸ÃªÂ°T</ProgressText>
  
! <ProgressText Action="UnregisterProgIdInfo" Template="ProgId: [1]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½Âµ{Â¦Â¡ÃƒÃ‘Â§O</ProgressText>
  
! <ProgressText Action="UnregisterTypeLibraries" Template="LibID: [1]">Â¸Ã‘Â°Â£ÂµnÂ¿Ã½ type libraries</ProgressText>
  
! <ProgressText Action="WriteEnvironmentStrings" Template="Â¦WÂ¼Âµ: [1], Â­Ãˆ: [2], Â°ÃŠÂ§@ [3]">Â§Ã³Â·sÃ€Ã´Â¹Ã’Â¦rÂ¦Ãª</ProgressText>
  
! <ProgressText Action="WriteIniValues" Template="Ã€Ã‰Â®Ã—: [1],  Section: [2],  Key: [3], Value: [4]">Â¼gÂ¤J INI Ã€Ã‰Â®Ã—</ProgressText>
  
! <ProgressText Action="WriteRegistryValues" Template="Â¾Ã·Â½X: [1], Â¦WÂºÃ™: [2], Â­Ãˆ: [3]">Â¥Â¿Â¦bÂ¼gÂ¤JÂ¨tÂ²ÃŽÂµnÂ¿Ã½</ProgressText>
  
  </Include>
Index: openafs/src/WINNT/license/NTMakefile
diff -c openafs/src/WINNT/license/NTMakefile:1.4 openafs/src/WINNT/license/NTMakefile:1.4.2.1
*** openafs/src/WINNT/license/NTMakefile:1.4	Fri Nov 21 03:00:07 2003
--- openafs/src/WINNT/license/NTMakefile	Tue Jun  6 10:44:53 2006
***************
*** 41,43 ****
--- 41,48 ----
  	cd lang
  	nmake /nologo /f ntmakefile SRC=$(SRC) OBJ=$(OBJ) mkdir
  	cd ..
+ 
+ clean ::
+ 	$(CD) lang
+ 	@$(MAKECMD) /nologo /f NTMakefile clean
+ 	$(CD) ..
Index: openafs/src/WINNT/pthread/pthread.c
diff -c openafs/src/WINNT/pthread/pthread.c:1.6.2.7 openafs/src/WINNT/pthread/pthread.c:1.6.2.8
*** openafs/src/WINNT/pthread/pthread.c:1.6.2.7	Tue Apr 19 01:13:01 2005
--- openafs/src/WINNT/pthread/pthread.c	Mon May  1 23:51:55 2006
***************
*** 260,265 ****
--- 260,283 ----
      pthread_cache_done = 1;
  }
  
+ static void cleanup_pthread_cache(void) {
+     thread_p cur = NULL, next = NULL;
+ 
+     if (pthread_cache_done) {
+ 	for(queue_Scan(&active_Q, cur, next, thread)) {
+ 	    queue_Remove(cur);
+ 	}
+ 	for(queue_Scan(&cache_Q, cur, next, thread)) {
+ 	    queue_Remove(cur);
+ 	}
+ 
+ 	pthread_mutex_destroy(&active_Q_mutex);
+ 	pthread_mutex_destroy(&cache_Q_mutex);
+ 
+ 	pthread_cache_done = 0;
+     }
+ }	
+ 
  static void put_thread(thread_p old) {
   
      CloseHandle(old->t_handle);
***************
*** 360,365 ****
--- 378,400 ----
      } while(call_more_destructors);
  }
  
+ static void cleanup_global_tsd(void)
+ {
+     thread_p cur = NULL, next = NULL;
+ 
+     if (tsd_done) {
+ 	for(queue_Scan(&active_Q, cur, next, thread)) {
+ 	    tsd_free_all(cur->tsd);
+ 	}
+ 
+ 	TlsFree(tsd_pthread_index);
+ 	tsd_pthread_index = 0xFFFFFFFF;
+ 	TlsFree(tsd_index);
+ 	tsd_index = 0xFFFFFFFF;
+ 	tsd_done = 0;
+     }
+ }
+ 
  static DWORD WINAPI afs_pthread_create_stub(LPVOID param) {
      pthread_create_t *t = (pthread_create_t *) param;
      void *rc;
***************
*** 700,709 ****
   
  static void init_waiter_cache(void) {
      InitializeCriticalSection(&waiter_cache_cs);
-     waiter_cache_init = 1;
      queue_Init(&waiter_cache);
  }
   
  static cond_waiters_t *get_waiter() {
      cond_waiters_t *new = NULL;
   
--- 735,761 ----
   
  static void init_waiter_cache(void) {
      InitializeCriticalSection(&waiter_cache_cs);
      queue_Init(&waiter_cache);
+     waiter_cache_init = 1;
  }
   
+ static void cleanup_waiter_cache(void)
+ {
+     cond_waiters_t * cur = NULL, * next = NULL;
+ 
+     if (waiter_cache_init) {
+ 	for(queue_Scan(&waiter_cache, cur, next, cond_waiter)) {
+ 	    queue_Remove(cur);
+ 
+ 	    CloseHandle(cur->event);
+ 	    free(cur);
+ 	}
+ 
+ 	DeleteCriticalSection(&waiter_cache_cs);
+ 	waiter_cache_init = 0;
+     }
+ }
+ 
  static cond_waiters_t *get_waiter() {
      cond_waiters_t *new = NULL;
   
***************
*** 1257,1259 ****
--- 1309,1345 ----
      RaiseException(PTHREAD_EXIT_EXCEPTION, 0, 0, NULL);
  
  }
+ 
+ /*
+  * DllMain() -- Entry-point function called by the DllMainCRTStartup()
+  *     function in the MSVC runtime DLL (msvcrt.dll).
+  *
+  *     Note: the system serializes calls to this function.
+  */
+ BOOL WINAPI
+ DllMain(HINSTANCE dllInstHandle,/* instance handle for this DLL module */
+         DWORD reason,           /* reason function is being called */
+         LPVOID reserved)
+ {                               /* reserved for future use */
+     switch (reason) {
+     case DLL_PROCESS_ATTACH:
+         /* library is being attached to a process */
+         /* disable thread attach/detach notifications */
+         (void)DisableThreadLibraryCalls(dllInstHandle);
+ 
+ 	pthread_once(&pthread_cache_once, create_once);
+ 	pthread_once(&global_tsd_once, tsd_once);
+ 	pthread_once(&waiter_cache_once, init_waiter_cache);
+ 	return TRUE;
+ 
+     case DLL_PROCESS_DETACH:
+ 	cleanup_waiter_cache();
+ 	cleanup_global_tsd();
+ 	cleanup_pthread_cache();
+         return TRUE;
+ 
+     default:
+         return FALSE;
+     }
+ }
+ 
Index: openafs/src/WINNT/pthread/pthread.def
diff -c openafs/src/WINNT/pthread/pthread.def:1.1 openafs/src/WINNT/pthread/pthread.def:1.1.24.1
*** openafs/src/WINNT/pthread/pthread.def:1.1	Fri Nov  3 21:21:36 2000
--- openafs/src/WINNT/pthread/pthread.def	Mon May  1 23:51:55 2006
***************
*** 25,27 ****
--- 25,28 ----
  	pthread_attr_getdetachstate			@23
  	pthread_attr_setdetachstate			@24
  	pthread_exit					@25
+ 	DllMain						@26
Index: openafs/src/WINNT/win9xpanel/CellServDB
diff -c openafs/src/WINNT/win9xpanel/CellServDB:1.1.18.4 openafs/src/WINNT/win9xpanel/CellServDB:1.1.18.5
*** openafs/src/WINNT/win9xpanel/CellServDB:1.1.18.4	Sat Oct 15 20:56:51 2005
--- openafs/src/WINNT/win9xpanel/CellServDB	Sun Oct  8 23:14:42 2006
***************
*** 1,15 ****
! >grand.central.org      #GCO Public CellServDB 15 Oct 2005
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #afsdb1.wu-wien.ac.at
! 137.208.8.12                    #caesar.wu-wien.ac.at
! 137.208.127.33                  #buddy.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
--- 1,19 ----
! >grand.central.org      #GCO Public CellServDB 08 Oct 2006
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #goya.wu-wien.ac.at
! 137.208.7.57                    #caravaggio.wu-wien.ac.at
! 137.208.127.57                  #vermeer.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
+ >cgv.tugraz.at          #CGV cell
+ 129.27.224.133                  #phobos.cgv.tugraz.at
+ 129.27.224.134                  #deimos.cgv.tugraz.at
+ 129.27.224.210                  #trinculo.cgv.tugraz.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
***************
*** 22,30 ****
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.2.6                     #kd1.epfl.ch
! 128.178.2.7                     #kd2.epfl.ch
! 128.178.2.8                     #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
--- 26,34 ----
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.109.111                 #kd1.epfl.ch
! 128.178.109.112                 #kd2.epfl.ch
! 128.178.109.113                 #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
***************
*** 37,44 ****
  129.129.190.142                 #afs02.psi.ch
  >extundo.com            #Simon Josefsson's cell
  195.42.214.241                  #slipsten.extundo.com
- >mekinok.com            #Mekinok, Inc.
- 4.36.43.98                      #loggerhead.mekinok.com
  >membrain.com           #membrain.com
  66.93.118.125                   #stormy
  130.85.24.11                    #weasel
--- 41,46 ----
***************
*** 105,121 ****
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 141.35.2.160                    #lc00.rz.uni-jena.de
! 141.35.7.9                      #fsuj01.rz.uni-jena.de
! 141.35.7.10                     #zaphod.rz.uni-jena
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.30                    #fileserv3.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.140.190                  #rzkbserv.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
--- 107,123 ----
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 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
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.10                    #lyra.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.141.243                  #agrippina.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
***************
*** 172,179 ****
  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.56.129                    #nihao.sbp.ri.cmu.edu
! 128.2.56.136                    #youtheman.sbp.ri.cmu.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
--- 174,181 ----
  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
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 186,191 ****
--- 188,195 ----
  129.170.16.22                   #halley.dartmouth.edu
  129.170.16.42                   #oort.dartmouth.edu
  129.170.16.43                   #cygnusx1.dartmouth.edu
+ >cs.fhm.edu             #Department Computer Science Munich University Of Applied Science
+ 129.187.208.2                   #srv1.informatik.fh-muenchen.de
  >eecs.harvard.edu       #Harvard - EECS
  140.247.60.61                   #zermelo.eecs.harvard.edu
  140.247.60.83                   #corfu.eecs.harvard.edu
***************
*** 261,266 ****
--- 265,280 ----
  134.79.18.25                    #afsdb1.slac.stanford.edu
  134.79.18.26                    #afsdb2.slac.stanford.edu
  134.79.18.27                    #afsdb3.slac.stanford.edu
+ >ucdavis.edu            #University of California at Davis
+ 169.237.104.100                 #afs1.ucdavis.edu
+ 169.237.235.176                 #afs2.ucdavis.edu
+ 169.237.247.91                  #afs3.ucdavis.edu
+ >home.ucdavis.edu       #University of California at Davis home directories
+ 169.237.105.91                  #home1.ucdavis.edu
+ 169.237.105.92                  #home2.ucdavis.edu
+ 169.237.105.93                  #home3.ucdavis.edu
+ >physics.ucsb.edu       #UC Santa Barbara, Physics Dept
+ 128.111.18.161                  #ledzeppelin.physics.ucsb.edu
  >cats.ucsc.edu          #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
  128.114.129.14                  #elan.ucsc.edu
  128.114.129.15                  #ichabod.ucsc.edu
***************
*** 291,316 ****
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.106                  #linat06.grid.umich.edu
! 141.211.43.109                  #atgrid.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >umr.edu                #University of Missouri - Rolla
! 131.151.1.59                    #afsdb1.umr.edu
! 131.151.1.70                    #afsdb3.umr.edu
! 131.151.1.146                   #afsdb2.umr.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.13.7                     #as-sm2.uncc.edu
! 152.15.30.27                    #fs-kenn3.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
--- 305,328 ----
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.103                  #linat03.grid.umich.edu
! 141.211.43.104                  #linat04.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >sph.umich.edu          #University of Michigan -- School of Public Health
! 141.211.50.41                   #afssph0.sph.umich.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.93.186                   #as-ece1.uncc.edu
! 152.15.181.175                  #as-me1.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
***************
*** 344,349 ****
--- 356,363 ----
  >dapnia.saclay.cea.fr   #CEA DAPNIA
  132.166.32.7                    #dphrsg.saclay.cea.fr
  132.166.32.12                   #dphrsl.saclay.cea.fr
+ >grif.fr                #GRIF cell
+ 192.54.208.18                   #node03.datagrid.cea.fr
  >in2p3.fr               #IN2P3 production cell
  134.158.232.11                  #ccafsdb1.in2p3.fr
  134.158.232.12                  #ccafsdb2.in2p3.fr
***************
*** 401,406 ****
--- 415,421 ----
  192.84.134.75                   #afsna.na.infn.it
  >ba.infn.it             #INFN, Sezione di Bari
  193.206.185.235                 #baafsserver.ba.infn.it
+ 193.206.185.236                 #debsrv.ba.infn.it
  >kloe.infn.it           #INFN, KLOE experiment at Laboratori di Frascati
  192.135.25.111                  #kloeafs1.lnf.infn.it
  192.135.25.112                  #kloeafs2.lnf.infn.it
***************
*** 451,461 ****
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 66.92.236.139                   #afs.sinenomine.net
  >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
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 466,478 ----
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 192.204.203.218                 #va.sinenomine.net
  >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
***************
*** 484,505 ****
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >openafs.org            #OpenAFS Project
! 18.7.14.88                      #grand-opening.mit.edu
! 128.2.191.224                   #penn.central.org
! 130.237.48.87                   #andrew.e.kth.se
! >e.kth.se               #Royal Institute of Technology, Elektro
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.141                  #rasmus13.hallf.kth.se
! 130.237.24.152                  #rasmus3.hallf.kth.se
! 130.237.24.177                  #rasmus29.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
! 130.237.202.12                  #afsdb2.isk.kth.se
! 130.237.206.13                  #afsdb1.isk.kth.se
! 130.237.209.141                 #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
--- 501,516 ----
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >kth.se                 #Royal Institute of Technology, Stockholm, Sweden
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.11                   #afs1.hallf.kth.se
! 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.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
***************
*** 543,548 ****
--- 554,566 ----
  193.2.120.2                     #solkan.p-ng.si
  >phy.bris.ac.uk         #Bristol University - phyics
  137.222.58.9                    #afs1.phy.bris.ac.uk
+ >inf.ed.ac.uk           #School of Informatics, University of Edinburgh
+ 129.215.64.16                   #afsdb0.inf.ed.ac.uk
+ 129.215.64.17                   #afsdb1.inf.ed.ac.uk
+ 129.215.64.18                   #afsdb2.inf.ed.ac.uk
+ >ic.ac.uk               #Imperial College London
+ 155.198.63.148                  #icafs2.cc.ic.ac.uk
+ 155.198.63.149                  #icafs1.cc.ic.ac.uk
  >hep.man.ac.uk          #Manchester HEP
  194.36.2.3                      #afs1.hep.man.ac.uk
  194.36.2.4                      #afs2.hep.man.ac.uk
Index: openafs/src/afs/afs_call.c
diff -c openafs/src/afs/afs_call.c:1.74.2.12 openafs/src/afs/afs_call.c:1.74.2.15
*** openafs/src/afs/afs_call.c:1.74.2.12	Tue Jan 17 12:09:47 2006
--- openafs/src/afs/afs_call.c	Wed Oct 11 09:24:39 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_call.c,v 1.74.2.12 2006/01/17 17:09:47 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.74.2.15 2006/10/11 13:24:39 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 50,56 ****
  
  #if defined(AFS_SUN5_ENV) || defined(AFS_SGI_ENV)
  kmutex_t afs_global_lock;
- kmutex_t afs_rxglobal_lock;
  #endif
  
  #if defined(AFS_SGI_ENV) && !defined(AFS_SGI64_ENV)
--- 50,55 ----
***************
*** 1299,1305 ****
  
  #ifdef AFS_SPARC64_LINUX26_ENV
      if (test_thread_flag(TIF_32BIT))
! #elif AFS_SPARC64_LINUX24_ENV
      if (current->thread.flags & SPARC_FLAG_32BIT)
  #elif defined(AFS_SPARC64_LINUX20_ENV)
      if (current->tss.flags & SPARC_FLAG_32BIT)
--- 1298,1304 ----
  
  #ifdef AFS_SPARC64_LINUX26_ENV
      if (test_thread_flag(TIF_32BIT))
! #elif defined(AFS_SPARC64_LINUX24_ENV)
      if (current->thread.flags & SPARC_FLAG_32BIT)
  #elif defined(AFS_SPARC64_LINUX20_ENV)
      if (current->tss.flags & SPARC_FLAG_32BIT)
***************
*** 2394,2400 ****
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p1)->low);
  	} else if (t1 == ICL_TYPE_INT64) {
! #ifdef AFSLITTLE_ENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]);
--- 2393,2399 ----
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p1)->low);
  	} else if (t1 == ICL_TYPE_INT64) {
! #ifndef WORDS_BIGENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p1)[0]);
***************
*** 2434,2440 ****
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p2)->low);
  	} else if (t2 == ICL_TYPE_INT64) {
! #ifdef AFSLITTLE_ENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]);
--- 2433,2439 ----
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p2)->low);
  	} else if (t2 == ICL_TYPE_INT64) {
! #ifndef WORDS_BIGENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p2)[0]);
***************
*** 2474,2480 ****
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p3)->low);
  	} else if (t3 == ICL_TYPE_INT64) {
! #ifdef AFSLITTLE_ENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]);
--- 2473,2479 ----
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p3)->low);
  	} else if (t3 == ICL_TYPE_INT64) {
! #ifndef WORDS_BIGENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p3)[0]);
***************
*** 2514,2520 ****
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p4)->low);
  	} else if (t4 == ICL_TYPE_INT64) {
! #ifdef AFSLITTLE_ENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]);
--- 2513,2519 ----
  	    ICL_APPENDINT32(logp,
  			    (afs_int32) ((struct afs_hyper_t *)p4)->low);
  	} else if (t4 == ICL_TYPE_INT64) {
! #ifndef WORDS_BIGENDIAN
  #ifdef AFS_64BIT_CLIENT
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[1]);
  	    ICL_APPENDINT32(logp, (afs_int32) ((afs_int32 *) p4)[0]);
Index: openafs/src/afs/afs_osi.c
diff -c openafs/src/afs/afs_osi.c:1.48.2.6 openafs/src/afs/afs_osi.c:1.48.2.9
*** openafs/src/afs/afs_osi.c:1.48.2.6	Wed Feb 15 15:55:11 2006
--- openafs/src/afs/afs_osi.c	Wed Sep 27 17:14:27 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_osi.c,v 1.48.2.6 2006/02/15 20:55:11 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_osi.c,v 1.48.2.9 2006/09/27 21:14:27 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 71,77 ****
      /* Linux initialization in osi directory. Should move the others. */
      mutex_init(&afs_global_lock, "afs_global_lock", MUTEX_DEFAULT, NULL);
  #endif
-     /* afs_rxglobal_lock is initialized in rx_Init. */
  #endif /* AFS_GLOBAL_SUNLOCK */
  #endif /* AFS_HPUX_ENV */
  
--- 71,76 ----
***************
*** 806,818 ****
  #endif
  
  #if defined(AFS_LINUX22_ENV)
- extern rwlock_t tasklist_lock __attribute__((weak));
  void
  afs_osi_TraverseProcTable()
  {
      struct task_struct *p;
      if (&tasklist_lock)
         read_lock(&tasklist_lock);
  #ifdef DEFINED_FOR_EACH_PROCESS
      for_each_process(p) if (p->pid) {
  #ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE
--- 805,824 ----
  #endif
  
  #if defined(AFS_LINUX22_ENV)
  void
  afs_osi_TraverseProcTable()
  {
+ #if !defined(LINUX_KEYRING_SUPPORT)
+     extern rwlock_t tasklist_lock __attribute__((weak));
      struct task_struct *p;
+ 
      if (&tasklist_lock)
         read_lock(&tasklist_lock);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+     else
+ 	rcu_read_lock();
+ #endif
+ 
  #ifdef DEFINED_FOR_EACH_PROCESS
      for_each_process(p) if (p->pid) {
  #ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE
***************
*** 838,843 ****
--- 844,854 ----
  #endif
      if (&tasklist_lock)
         read_unlock(&tasklist_lock);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+     else
+ 	rcu_read_unlock();
+ #endif
+ #endif
  }
  #endif
  
Index: openafs/src/afs/afs_osi.h
diff -c openafs/src/afs/afs_osi.h:1.22.2.14 openafs/src/afs/afs_osi.h:1.22.2.17
*** openafs/src/afs/afs_osi.h:1.22.2.14	Fri Dec 23 20:09:52 2005
--- openafs/src/afs/afs_osi.h	Thu Aug 31 00:54:52 2006
***************
*** 220,226 ****
  
  #ifdef AFS_GLOBAL_SUNLOCK
  #define AFS_ASSERT_GLOCK() \
!     (ISAFS_GLOCK() || (osi_Panic("afs global lock not held at %s:%d\n", __FILE__, __LINE__), 0))
  #endif /* AFS_GLOBAL_SUNLOCK */
  
  #ifdef RX_ENABLE_LOCKS
--- 220,226 ----
  
  #ifdef AFS_GLOBAL_SUNLOCK
  #define AFS_ASSERT_GLOCK() \
!     do { if (!ISAFS_GLOCK()) osi_Panic("afs global lock not held at %s:%d\n", __FILE__, __LINE__); } while (0)
  #endif /* AFS_GLOBAL_SUNLOCK */
  
  #ifdef RX_ENABLE_LOCKS
***************
*** 397,403 ****
  #endif /* AFS_GLOBAL_SUNLOCK */
  
  #ifdef AFS_DARWIN80_ENV
! #define AFS_UIO_OFFSET(uio) (int)uio_offset(uio)
  #define AFS_UIO_RESID(uio) (int)uio_resid(uio)
  #define AFS_UIO_SETOFFSET(uio, off) uio_setoffset(uio, off)
  #define AFS_UIO_SETRESID(uio, val) uio_setresid(uio, val)
--- 397,403 ----
  #endif /* AFS_GLOBAL_SUNLOCK */
  
  #ifdef AFS_DARWIN80_ENV
! #define AFS_UIO_OFFSET(uio) uio_offset(uio)
  #define AFS_UIO_RESID(uio) (int)uio_resid(uio)
  #define AFS_UIO_SETOFFSET(uio, off) uio_setoffset(uio, off)
  #define AFS_UIO_SETRESID(uio, val) uio_setresid(uio, val)
Index: openafs/src/afs/afs_osi_pag.c
diff -c openafs/src/afs/afs_osi_pag.c:1.21.2.5 openafs/src/afs/afs_osi_pag.c:1.21.2.7
*** openafs/src/afs/afs_osi_pag.c:1.21.2.5	Wed Oct  5 01:58:27 2005
--- openafs/src/afs/afs_osi_pag.c	Thu Aug 17 09:56:29 2006
***************
*** 23,29 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_osi_pag.c,v 1.21.2.5 2005/10/05 05:58:27 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 23,29 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_osi_pag.c,v 1.21.2.7 2006/08/17 13:56:29 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 453,460 ****
  	/* Additional testing */
  	if (((ret >> 24) & 0xff) == 'A')
  	    return ret;
- 	else
- 	    return NOPAG;
  #endif /* UKERNEL && AFS_WEB_ENHANCEMENTS */
      }
      return NOPAG;
--- 453,458 ----
***************
*** 487,493 ****
      gid_t g0, g1;
  
      AFS_STATCNT(PagInCred);
!     if (cred == NULL) {
  	return NOPAG;
      }
  #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
--- 485,491 ----
      gid_t g0, g1;
  
      AFS_STATCNT(PagInCred);
!     if (cred == NULL || cred == afs_osi_credp) {
  	return NOPAG;
      }
  #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
***************
*** 509,519 ****
  	return NOPAG;
      }
  #elif defined(AFS_LINUX26_ENV)
!     if (cred->cr_group_info->ngroups < 2)
! 	return NOPAG;
  #elif defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_DUX40_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_XBSD_ENV)
!     if (cred->cr_ngroups < 2)
! 	return NOPAG;
  #endif
  #if defined(AFS_AIX51_ENV)
      g0 = cred->cr_groupset.gs_union.un_groups[0];
--- 507,521 ----
  	return NOPAG;
      }
  #elif defined(AFS_LINUX26_ENV)
!     if (cred->cr_group_info->ngroups < 2) {
! 	pag = NOPAG;
! 	goto out;
!     }
  #elif defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_DUX40_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_XBSD_ENV)
!     if (cred->cr_ngroups < 2) {
! 	pag = NOPAG;
! 	goto out;
!     }
  #endif
  #if defined(AFS_AIX51_ENV)
      g0 = cred->cr_groupset.gs_union.un_groups[0];
***************
*** 527,531 ****
--- 529,551 ----
  #endif
  #endif
      pag = (afs_int32) afs_get_pag_from_groups(g0, g1);
+ out:
+ #if defined(AFS_LINUX26_ENV) && defined(LINUX_KEYRING_SUPPORT)
+     if (pag == NOPAG) {
+ 	struct key *key;
+ 	afs_uint32 pag, newpag;
+ 
+ 	key = request_key(&key_type_afs_pag, "_pag", NULL);
+ 	if (!IS_ERR(key)) {
+ 	    if (key_validate(key) == 0 && key->uid == 0) {	/* also verify in the session keyring? */
+ 
+ 		pag = (afs_uint32) key->payload.value;
+ 		if (((pag >> 24) & 0xff) == 'A')
+ 		    __setpag(&cred, pag, &newpag, 0);
+ 	    }
+ 	    key_put(key);
+ 	} 
+     }
+ #endif
      return pag;
  }
Index: openafs/src/afs/afs_prototypes.h
diff -c openafs/src/afs/afs_prototypes.h:1.53.2.16 openafs/src/afs/afs_prototypes.h:1.53.2.17
*** openafs/src/afs/afs_prototypes.h:1.53.2.16	Fri Feb 17 23:59:31 2006
--- openafs/src/afs/afs_prototypes.h	Mon Aug 14 18:12:22 2006
***************
*** 725,730 ****
--- 725,732 ----
  extern int osi_dnlc_init(void);
  extern int osi_dnlc_shutdown(void);
  
+ /* afs_pag_cred.c */
+ extern void afspag_SetPrimaryCell(char *acell);
  
  /* afs_stat.c */
  extern struct afs_CMStats afs_cmstats;
Index: openafs/src/afs/sysincludes.h
diff -c openafs/src/afs/sysincludes.h:1.28.2.10 openafs/src/afs/sysincludes.h:1.28.2.12
*** openafs/src/afs/sysincludes.h:1.28.2.10	Thu Mar  9 16:41:53 2006
--- openafs/src/afs/sysincludes.h	Wed Sep  6 16:57:17 2006
***************
*** 70,75 ****
--- 70,82 ----
  #include <linux/security.h>
  #endif
  #include <linux/suspend.h>
+ #if defined(LINUX_KEYRING_SUPPORT)
+ #include <linux/rwsem.h>
+ #include <linux/key.h>
+ #ifndef KEY_ALLOC_IN_QUOTA
+ #define KEY_ALLOC_IN_QUOTA 1
+ #endif
+ #endif
  #endif
  /* Avoid conflicts with coda overloading AFS type namespace. Must precede
   * inclusion of uaccess.h.
Index: openafs/src/afs/DARWIN/osi_file.c
diff -c openafs/src/afs/DARWIN/osi_file.c:1.8.2.4 openafs/src/afs/DARWIN/osi_file.c:1.8.2.5
*** openafs/src/afs/DARWIN/osi_file.c:1.8.2.4	Mon Feb 20 23:47:07 2006
--- openafs/src/afs/DARWIN/osi_file.c	Sun Aug 20 18:16:47 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/DARWIN/osi_file.c,v 1.8.2.4 2006/02/21 04:47:07 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/DARWIN/osi_file.c,v 1.8.2.5 2006/08/20 22:16:47 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 292,298 ****
  	     afs_int32 asize)
  {
      struct AFS_UCRED *oldCred;
!     unsigned int resid;
      register afs_int32 code;
  #ifdef AFS_DARWIN80_ENV
      uio_t uio;
--- 292,298 ----
  	     afs_int32 asize)
  {
      struct AFS_UCRED *oldCred;
!     afs_size_t resid;
      register afs_int32 code;
  #ifdef AFS_DARWIN80_ENV
      uio_t uio;
***************
*** 343,349 ****
  	      afs_int32 asize)
  {
      struct AFS_UCRED *oldCred;
!     unsigned int resid;
      register afs_int32 code;
  #ifdef AFS_DARWIN80_ENV
      uio_t uio;
--- 343,349 ----
  	      afs_int32 asize)
  {
      struct AFS_UCRED *oldCred;
!     afs_size_t resid;
      register afs_int32 code;
  #ifdef AFS_DARWIN80_ENV
      uio_t uio;
Index: openafs/src/afs/DOC/afs_rwlocks
diff -c openafs/src/afs/DOC/afs_rwlocks:1.3.8.1 openafs/src/afs/DOC/afs_rwlocks:1.3.8.2
*** openafs/src/afs/DOC/afs_rwlocks:1.3.8.1	Thu Jan 26 11:04:49 2006
--- openafs/src/afs/DOC/afs_rwlocks	Mon May 22 15:08:46 2006
***************
*** 81,89 ****
  Many fine grained locks are used by Rx on the AIX4.1 platform.  These
  need to be explained.
  
- It is likely they could be used preference to the afs_rxglobal_lock on
- AFS_GLOBAL_SUNLOCK platforms.
- 
  ***** GLOBAL LOCKS
  
  98. afs_global_lock -- This lock provides a non-preemptive environment
--- 81,86 ----
***************
*** 96,105 ****
  data structures that need synchronization.  However, much existing code
  is deficient in this regard (e.g. afs_getevent).
  
- 99. afs_rxglobal_lock -- This lock is obtained after the afs_global_lock
- at process level but is obtained independently during packet arrival
- "interrupts" and during fasttimo processing.
- 
  ***** OS LOCKS
  
  100. The vnode lock on SunOS and SGI53 protects the its reference count.
--- 93,98 ----
Index: openafs/src/afs/FBSD/osi_machdep.h
diff -c openafs/src/afs/FBSD/osi_machdep.h:1.9.2.3 openafs/src/afs/FBSD/osi_machdep.h:1.9.2.5
*** openafs/src/afs/FBSD/osi_machdep.h:1.9.2.3	Mon May 23 17:09:37 2005
--- openafs/src/afs/FBSD/osi_machdep.h	Mon Jul 31 12:16:18 2006
***************
*** 25,32 ****
  #include <sys/mutex.h>
  #endif
  
- extern struct simplelock afs_rxglobal_lock;
- 
  /* 
   * Time related macros
   */
--- 25,30 ----
***************
*** 123,126 ****
--- 121,126 ----
  #define USERPRI splx(splvar)
  #endif /* KERNEL */
  
+ #define ifnet_flags(x) (x?(x)->if_flags:0)
+ 
  #endif /* _OSI_MACHDEP_H_ */
Index: openafs/src/afs/IRIX/osi_machdep.h
diff -c openafs/src/afs/IRIX/osi_machdep.h:1.7.2.3 openafs/src/afs/IRIX/osi_machdep.h:1.7.2.4
*** openafs/src/afs/IRIX/osi_machdep.h:1.7.2.3	Thu Apr 13 17:09:55 2006
--- openafs/src/afs/IRIX/osi_machdep.h	Tue Oct 10 18:21:44 2006
***************
*** 160,166 ****
  #else
  #define AFS_GLOCK() AFS_MUTEX_ENTER(&afs_global_lock)
  #endif
! #define AFS_GUNLOCK()  (AFS_ASSERT_GLOCK(),  mutex_exit(&afs_global_lock))
  #define ISAFS_GLOCK() mutex_mine(&afs_global_lock)
  #else
  extern long afs_global_owner;
--- 160,166 ----
  #else
  #define AFS_GLOCK() AFS_MUTEX_ENTER(&afs_global_lock)
  #endif
! #define AFS_GUNLOCK()  { AFS_ASSERT_GLOCK(); mutex_exit(&afs_global_lock); }
  #define ISAFS_GLOCK() mutex_mine(&afs_global_lock)
  #else
  extern long afs_global_owner;
***************
*** 170,176 ****
      afs_global_owner = osi_ThreadUnique(); \
    MACRO_END
  #define AFS_GUNLOCK() \
!     (AFS_ASSERT_GLOCK(), afs_global_owner = 0, mutex_exit(&afs_global_lock))
  #define ISAFS_GLOCK() (osi_ThreadUnique() == afs_global_owner)
  #endif /* AFS_SGI64_ENV */
  #else /* MP */
--- 170,176 ----
      afs_global_owner = osi_ThreadUnique(); \
    MACRO_END
  #define AFS_GUNLOCK() \
!     { AFS_ASSERT_GLOCK(); afs_global_owner = 0; mutex_exit(&afs_global_lock); }
  #define ISAFS_GLOCK() (osi_ThreadUnique() == afs_global_owner)
  #endif /* AFS_SGI64_ENV */
  #else /* MP */
Index: openafs/src/afs/LINUX/osi_file.c
diff -c openafs/src/afs/LINUX/osi_file.c:1.19.2.9 openafs/src/afs/LINUX/osi_file.c:1.19.2.10
*** openafs/src/afs/LINUX/osi_file.c:1.19.2.9	Wed Feb 15 16:03:38 2006
--- openafs/src/afs/LINUX/osi_file.c	Fri Aug 11 17:43:38 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_file.c,v 1.19.2.9 2006/02/15 21:03:38 shadow Exp $");
  
  #ifdef AFS_LINUX24_ENV
  #include "h/module.h" /* early to avoid printf->printk mapping */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_file.c,v 1.19.2.10 2006/08/11 21:43:38 shadow Exp $");
  
  #ifdef AFS_LINUX24_ENV
  #include "h/module.h" /* early to avoid printf->printk mapping */
***************
*** 137,143 ****
--- 137,145 ----
      AFS_STATCNT(osi_Stat);
      MObtainWriteLock(&afs_xosi, 320);
      astat->size = OSIFILE_INODE(afile)->i_size;
+ #ifdef STRUCT_INODE_HAS_I_BLKSIZE
      astat->blksize = OSIFILE_INODE(afile)->i_blksize;
+ #endif
  #if defined(AFS_LINUX26_ENV)
      astat->mtime = OSIFILE_INODE(afile)->i_mtime.tv_sec;
      astat->atime = OSIFILE_INODE(afile)->i_atime.tv_sec;
Index: openafs/src/afs/LINUX/osi_groups.c
diff -c openafs/src/afs/LINUX/osi_groups.c:1.25.2.3 openafs/src/afs/LINUX/osi_groups.c:1.25.2.7
*** openafs/src/afs/LINUX/osi_groups.c:1.25.2.3	Tue Aug  2 01:16:33 2005
--- openafs/src/afs/LINUX/osi_groups.c	Wed Sep 27 17:14:28 2006
***************
*** 15,23 ****
   */
  #include <afsconfig.h>
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.25.2.3 2005/08/02 05:16:33 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
--- 15,26 ----
   */
  #include <afsconfig.h>
  #include "afs/param.h"
+ #ifdef LINUX_KEYRING_SUPPORT
+ #include <linux/seq_file.h>
+ #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.25.2.7 2006/09/27 21:14:28 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
***************
*** 148,166 ****
  }
  #endif
  
  int
! setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag,
!        int change_parent)
  {
- #if defined(AFS_LINUX26_ENV)
      struct group_info *group_info;
      gid_t g0, g1;
      struct group_info *tmp;
      int i;
      int need_space = 0;
  
-     AFS_STATCNT(setpag);
- 
      group_info = afs_getgroups(*cr);
      if (group_info->ngroups < 2
  	||  afs_get_pag_from_groups(GROUP_AT(group_info, 0),
--- 151,167 ----
  }
  #endif
  
+ #if defined(AFS_LINUX26_ENV)
  int
! __setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
!          int change_parent)
  {
      struct group_info *group_info;
      gid_t g0, g1;
      struct group_info *tmp;
      int i;
      int need_space = 0;
  
      group_info = afs_getgroups(*cr);
      if (group_info->ngroups < 2
  	||  afs_get_pag_from_groups(GROUP_AT(group_info, 0),
***************
*** 185,197 ****
      put_group_info(group_info);
  
      return 0;
  #else
      gid_t *gidset;
      afs_int32 ngroups, code = 0;
      int j;
  
-     AFS_STATCNT(setpag);
- 
      gidset = (gid_t *) osi_Alloc(NGROUPS * sizeof(gidset[0]));
      ngroups = afs_getgroups(*cr, gidset);
  
--- 186,260 ----
      put_group_info(group_info);
  
      return 0;
+ }
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+ static struct key_type *__key_type_keyring;
+ 
+ static int
+ install_session_keyring(struct task_struct *task, struct key *keyring)
+ {
+     struct key *old;
+     char desc[20];
+     unsigned long not_in_quota;
+     int code = -EINVAL;
+ 
+     if (!__key_type_keyring)
+ 	return code;
+ 
+     if (!keyring) {
+ 
+ 	/* create an empty session keyring */
+ 	not_in_quota = KEY_ALLOC_IN_QUOTA;
+ 	sprintf(desc, "_ses.%u", task->tgid);
+ 
+ #ifdef KEY_ALLOC_NEEDS_STRUCT_TASK
+ 	keyring = key_alloc(__key_type_keyring, desc,
+ 			    task->uid, task->gid, task,
+ 			    (KEY_POS_ALL & ~KEY_POS_SETATTR) | KEY_USR_ALL,
+ 			    not_in_quota);
+ #else
+ 	keyring = key_alloc(__key_type_keyring, desc,
+ 			    task->uid, task->gid,
+ 			    (KEY_POS_ALL & ~KEY_POS_SETATTR) | KEY_USR_ALL,
+ 			    not_in_quota);
+ #endif
+ 	if (IS_ERR(keyring)) {
+ 	    code = PTR_ERR(keyring);
+ 	    goto out;
+ 	}
+     }
+ 
+     code = key_instantiate_and_link(keyring, NULL, 0, NULL, NULL);
+     if (code < 0) {
+ 	key_put(keyring);
+ 	goto out;
+     }
+ 
+     /* install the keyring */
+     spin_lock_irq(&task->sighand->siglock);
+     old = task->signal->session_keyring;
+     smp_wmb();
+     task->signal->session_keyring = keyring;
+     spin_unlock_irq(&task->sighand->siglock);
+ 
+     if (old)
+ 	    key_put(old);
+ 
+ out:
+     return code;
+ }
+ #endif /* LINUX_KEYRING_SUPPORT */
+ 
  #else
+ int
+ __setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
+          int change_parent)
+ {
      gid_t *gidset;
      afs_int32 ngroups, code = 0;
      int j;
  
      gidset = (gid_t *) osi_Alloc(NGROUPS * sizeof(gidset[0]));
      ngroups = afs_getgroups(*cr, gidset);
  
***************
*** 219,225 ****
--- 282,329 ----
  
      osi_Free((char *)gidset, NGROUPS * sizeof(int));
      return code;
+ }
  #endif
+ 
+ 
+ int
+ setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
+        int change_parent)
+ {
+     int code;
+ 
+     AFS_STATCNT(setpag);
+ 
+     code = __setpag(cr, pagvalue, newpag, change_parent);
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+     if (code == 0) {
+ 
+ 	(void) install_session_keyring(current, NULL);
+ 
+ 	if (current->signal->session_keyring) {
+ 	    struct key *key;
+ 	    key_perm_t perm;
+ 
+ 	    perm = KEY_POS_VIEW | KEY_POS_SEARCH;
+ 	    perm |= KEY_USR_VIEW | KEY_USR_SEARCH;
+ 
+ #ifdef KEY_ALLOC_NEEDS_STRUCT_TASK
+ 	    key = key_alloc(&key_type_afs_pag, "_pag", 0, 0, current, perm, 1);
+ #else
+ 	    key = key_alloc(&key_type_afs_pag, "_pag", 0, 0, perm, 1);
+ #endif
+ 
+ 	    if (!IS_ERR(key)) {
+ 		key_instantiate_and_link(key, (void *) newpag, sizeof(afs_uint32),
+ 					 current->signal->session_keyring, NULL);
+ 		key_put(key);
+ 	    }
+ 	}
+     }
+ #endif /* LINUX_KEYRING_SUPPORT */
+ 
+     return code;
  }
  
  
***************
*** 247,253 ****
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
--- 351,357 ----
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = __setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
***************
*** 282,288 ****
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
--- 386,392 ----
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = __setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
***************
*** 316,322 ****
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
--- 420,426 ----
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = __setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
***************
*** 351,357 ****
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
--- 455,461 ----
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = __setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
***************
*** 385,391 ****
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
--- 489,495 ----
      cr = crref();
      if (old_pag != NOPAG && PagInCred(cr) == NOPAG) {
  	/* re-install old pag if there's room. */
! 	code = __setpag(&cr, old_pag, &junk, 0);
      }
      crfree(cr);
      unlock_kernel();
***************
*** 396,398 ****
--- 500,605 ----
  #endif
  #endif
  
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+ static void afs_pag_describe(const struct key *key, struct seq_file *m)
+ {
+     seq_puts(m, key->description);
+ 
+     seq_printf(m, ": %u", key->datalen);
+ }
+ 
+ static int afs_pag_instantiate(struct key *key, const void *data, size_t datalen)
+ {
+     int code;
+     afs_uint32 *userpag, pag = NOPAG;
+     int g0, g1;
+ 
+     if (key->uid != 0 || key->gid != 0)
+ 	return -EPERM;
+ 
+     code = -EINVAL;
+     get_group_info(current->group_info);
+ 
+     if (datalen != sizeof(afs_uint32) || !data)
+ 	goto error;
+ 
+     if (current->group_info->ngroups < 2)
+ 	goto error;
+ 
+     /* ensure key being set matches current pag */
+ 
+     g0 = GROUP_AT(current->group_info, 0);
+     g1 = GROUP_AT(current->group_info, 1);
+ 
+     pag = afs_get_pag_from_groups(g0, g1);
+     if (pag == NOPAG)
+ 	goto error;
+ 
+     userpag = (afs_uint32 *) data;
+     if (*userpag != pag)
+ 	goto error;
+ 
+     key->payload.value = (unsigned long) *userpag;
+     key->datalen = sizeof(afs_uint32);
+     code = 0;
+ 
+ error:
+     put_group_info(current->group_info);
+     return code;
+ }
+ 
+ static int afs_pag_match(const struct key *key, const void *description)
+ {
+ 	return strcmp(key->description, description) == 0;
+ }
+ 
+ static void afs_pag_destroy(struct key *key)
+ {
+     afs_uint32 pag = key->payload.value;
+     struct unixuser *pu;
+ 
+     pu = afs_FindUser(pag, -1, READ_LOCK);
+     if (pu) {
+ 	pu->ct.EndTimestamp = 0;
+ 	pu->tokenTime = 0;
+ 	afs_PutUser(pu, READ_LOCK);
+     }
+ }
+ 
+ struct key_type key_type_afs_pag =
+ {
+     .name        = "afs_pag",
+     .describe    = afs_pag_describe,
+     .instantiate = afs_pag_instantiate,
+     .match       = afs_pag_match,
+     .destroy     = afs_pag_destroy,
+ };
+ 
+ void osi_keyring_init(void)
+ {
+     struct task_struct *p;
+ 
+     p = find_task_by_pid(1);
+     if (p && p->user->session_keyring)
+ 	__key_type_keyring = p->user->session_keyring->type;
+ 
+     register_key_type(&key_type_afs_pag);
+ }
+ 
+ void osi_keyring_shutdown(void)
+ {
+     unregister_key_type(&key_type_afs_pag);
+ }
+ 
+ #else
+ void osi_keyring_init(void)
+ {
+ 	return;
+ }
+ 
+ void osi_keyring_shutdown(void)
+ {
+ 	return;
+ }
+ #endif
Index: openafs/src/afs/LINUX/osi_machdep.h
diff -c openafs/src/afs/LINUX/osi_machdep.h:1.22.2.12 openafs/src/afs/LINUX/osi_machdep.h:1.22.2.14
*** openafs/src/afs/LINUX/osi_machdep.h:1.22.2.12	Thu Mar  9 16:41:54 2006
--- openafs/src/afs/LINUX/osi_machdep.h	Sat Sep 16 15:12:15 2006
***************
*** 26,31 ****
--- 26,33 ----
  #define getpid() current->pid
  #ifdef STRUCT_TASK_STRUCT_HAS_REAL_PARENT
  #define getppid() current->real_parent->pid
+ #elif defined(STRUCT_TASK_STRUCT_HAS_PARENT)
+ #define getppid() current->parent->pid
  #else
  #define getppid() current->p_opptr->pid
  #endif
***************
*** 225,228 ****
--- 227,292 ----
  #define AFS_ASSERT_GLOCK()
  #endif
  
+ #ifdef AFS_AMD64_LINUX20_ENV
+ /* RHEL5 beta's kernel doesn't define these. They aren't gonna change, so... */
+ 
+ #ifndef __NR_ia32_afs_syscall
+ #define __NR_ia32_afs_syscall 137
+ #endif
+ #ifndef __NR_ia32_setgroups
+ #define __NR_ia32_setgroups 81
+ #endif
+ #ifndef __NR_ia32_setgroups32
+ #define __NR_ia32_setgroups32 206
+ #endif
+ #ifndef __NR_ia32_close
+ #define __NR_ia32_close 6
+ #endif
+ #ifndef __NR_ia32_chdir
+ #define __NR_ia32_chdir 12
+ #endif
+ #ifndef __NR_ia32_break
+ #define __NR_ia32_break 17
+ #endif
+ #ifndef __NR_ia32_stty
+ #define __NR_ia32_stty 31
+ #endif
+ #ifndef __NR_ia32_gtty
+ #define __NR_ia32_gtty 32
+ #endif
+ #ifndef __NR_ia32_ftime
+ #define __NR_ia32_ftime 35
+ #endif
+ #ifndef __NR_ia32_prof
+ #define __NR_ia32_prof 44
+ #endif
+ #ifndef __NR_ia32_lock
+ #define __NR_ia32_lock 53
+ #endif
+ #ifndef __NR_ia32_mpx
+ #define __NR_ia32_mpx 56
+ #endif
+ #ifndef __NR_ia32_exit
+ #define __NR_ia32_exit 1
+ #endif
+ #ifndef __NR_ia32_mount
+ #define __NR_ia32_mount 21
+ #endif
+ #ifndef __NR_ia32_read
+ #define __NR_ia32_read 3
+ #endif
+ #ifndef __NR_ia32_write
+ #define __NR_ia32_write 4
+ #endif
+ #ifndef __NR_ia32_open
+ #define __NR_ia32_open 5
+ #endif
+ #ifndef __NR_ia32_close
+ #define __NR_ia32_close 6
+ #endif
+ #ifndef __NR_ia32_unlink
+ #define __NR_ia32_unlink 10
+ #endif
+ #endif
+ 
  #endif /* OSI_MACHDEP_H_ */
Index: openafs/src/afs/LINUX/osi_module.c
diff -c openafs/src/afs/LINUX/osi_module.c:1.52.2.23 openafs/src/afs/LINUX/osi_module.c:1.52.2.25
*** openafs/src/afs/LINUX/osi_module.c:1.52.2.23	Thu Mar  9 16:41:54 2006
--- openafs/src/afs/LINUX/osi_module.c	Sat Sep 16 15:19:36 2006
***************
*** 15,21 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.52.2.23 2006/03/09 21:41:54 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.52.2.25 2006/09/16 19:19:36 shadow Exp $");
  
  #include <linux/module.h> /* early to avoid printf->printk mapping */
  #include "afs/sysincludes.h"
***************
*** 374,379 ****
--- 374,382 ----
  	return err;
      register_filesystem(&afs_fs_type);
      osi_sysctl_init();
+ #ifdef LINUX_KEYRING_SUPPORT
+     osi_keyring_init();
+ #endif
  #ifdef AFS_LINUX24_ENV
      afsproc_init();
  #endif
***************
*** 389,394 ****
--- 392,398 ----
  cleanup_module(void)
  #endif
  {
+     osi_keyring_shutdown();
      osi_sysctl_clean();
      osi_syscall_clean();
      unregister_filesystem(&afs_fs_type);
Index: openafs/src/afs/LINUX/osi_probe.c
diff -c openafs/src/afs/LINUX/osi_probe.c:1.1.2.9 openafs/src/afs/LINUX/osi_probe.c:1.1.2.14
*** openafs/src/afs/LINUX/osi_probe.c:1.1.2.9	Fri Apr  7 01:23:11 2006
--- openafs/src/afs/LINUX/osi_probe.c	Fri Oct  6 10:01:19 2006
***************
*** 117,123 ****
  
  /* Allow the user to specify sys_call_table addresses */
  static unsigned long sys_call_table_addr[4] = { 0,0,0,0 };
! #ifdef module_param_array
  module_param_array(sys_call_table_addr, long, NULL, 0);
  #else
  MODULE_PARM(sys_call_table_addr, "1-4l");
--- 117,123 ----
  
  /* Allow the user to specify sys_call_table addresses */
  static unsigned long sys_call_table_addr[4] = { 0,0,0,0 };
! #if defined(module_param_array) && LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9)
  module_param_array(sys_call_table_addr, long, NULL, 0);
  #else
  MODULE_PARM(sys_call_table_addr, "1-4l");
***************
*** 134,140 ****
  MODULE_PARM_DESC(probe_carefully, "Probe for system call tables carefully");
  
  static int probe_ignore_syscalls[8] = { -1, -1, -1, -1, -1, -1, -1, -1 };
! #ifdef module_param_array
  module_param_array(probe_ignore_syscalls, int, NULL, 0);
  #else
  MODULE_PARM(probe_ignore_syscalls, "1-8i");
--- 134,140 ----
  MODULE_PARM_DESC(probe_carefully, "Probe for system call tables carefully");
  
  static int probe_ignore_syscalls[8] = { -1, -1, -1, -1, -1, -1, -1, -1 };
! #if defined(module_param_array) && LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9)
  module_param_array(probe_ignore_syscalls, int, NULL, 0);
  #else
  MODULE_PARM(probe_ignore_syscalls, "1-8i");
***************
*** 161,167 ****
  MODULE_PARM_DESC(probe_debug, "Debugging level");
  
  static unsigned long probe_debug_addr[4] = { 0,0,0,0 };
! #ifdef module_param_array
  module_param_array(probe_debug_addr, long, NULL, 0);
  #else
  MODULE_PARM(probe_debug_addr, "1-4l");
--- 161,167 ----
  MODULE_PARM_DESC(probe_debug, "Debugging level");
  
  static unsigned long probe_debug_addr[4] = { 0,0,0,0 };
! #if defined(module_param_array) && LINUX_VERSION_CODE > KERNEL_VERSION(2,6,9)
  module_param_array(probe_debug_addr, long, NULL, 0);
  #else
  MODULE_PARM(probe_debug_addr, "1-4l");
***************
*** 231,237 ****
--- 231,239 ----
  
  extern asmlinkage ssize_t sys_read(unsigned int fd, char __user * buf, size_t count) __attribute__((weak));
  extern asmlinkage long sys_close(unsigned int) __attribute__((weak));
+ #if defined(EXPORTED_SYS_CHDIR)
  extern asmlinkage long sys_chdir(const char *) __attribute__((weak));
+ #endif
  extern asmlinkage ssize_t sys_write(unsigned int, const char *, size_t) __attribute__((weak));
  #ifdef AFS_LINUX26_ENV
  extern asmlinkage long sys_wait4(pid_t, int *, int, struct rusage *) __attribute__((weak));
***************
*** 239,246 ****
--- 241,251 ----
  extern asmlinkage long sys_wait4(pid_t, unsigned int *, int, struct rusage *) __attribute__((weak));
  #endif
  extern asmlinkage long sys_exit (int) __attribute__((weak));
+ #if defined(EXPORTED_SYS_OPEN)
  extern asmlinkage long sys_open (const char *, int, int) __attribute__((weak));
+ #endif
  extern asmlinkage long sys_ioctl(unsigned int, unsigned int, unsigned long) __attribute__((weak));
+ extern rwlock_t tasklist_lock __attribute__((weak));
  
  
  /* Structures used to control probing.  We put all the details of which
***************
*** 300,313 ****
--- 305,324 ----
  /* On PPC64 and SPARC64, we need to omit the ones that might match both tables */
  static tryctl main_try[] = {
  #if !defined(AFS_PPC64_LINUX20_ENV) && !defined(AFS_SPARC64_LINUX20_ENV)
+ #if defined(EXPORTED_SYS_CHDIR)
      { "scan: close+chdir+write", __NR_close, &sys_close, __NR_chdir, &sys_chdir, __NR_write, &sys_write },
  #endif
+ #endif
      { "scan: close+wait4",       __NR_close, &sys_close, __NR_wait4, &sys_wait4, -1,         0          },
  #if !defined(AFS_PPC64_LINUX20_ENV) && !defined(AFS_SPARC64_LINUX20_ENV)
+ #if defined(EXPORTED_SYS_CHDIR)
      { "scan: close+chdir",       __NR_close, &sys_close, __NR_chdir, &sys_chdir, -1,         0          },
  #endif
+ #endif
      { "scan: close+ioctl",       __NR_close, &sys_close, __NR_ioctl, &sys_ioctl, -1,         0          },
+ #if defined(EXPORTED_SYS_OPEN)
      { "scan: exit+open",         __NR_exit,  &sys_exit,  __NR_open,  &sys_open,  -1,         0          },
+ #endif
      { 0 }
  };
  
***************
*** 590,597 ****
--- 601,610 ----
  
  /* syscall pairs/triplets to probe */
  static tryctl ia32_try[] = {
+ #if defined(EXPORTED_SYS_CHDIR)
      { "scan: close+chdir+write", __NR_ia32_close, &sys_close, __NR_ia32_chdir, &sys_chdir,        __NR_ia32_write, &sys_write },
      { "scan: close+chdir",       __NR_ia32_close, &sys_close, __NR_ia32_chdir, &sys_chdir,        -1,              0          },
+ #endif
      { 0 }
  };
  
***************
*** 643,649 ****
      0x3ffff,
      0x30000,
  #else
!     0, 0, 0, 0
  #endif
  
  
--- 656,662 ----
      0x3ffff,
      0x30000,
  #else
!     0, 0, 0, 0,
  #endif
  
  
***************
*** 782,788 ****
      0x3ffff,
      0x30000,
  #else
!     0, 0, 0, 0
  #endif
  
      /* number and list of unimplemented system calls */
--- 795,801 ----
      0x3ffff,
      0x30000,
  #else
!     0, 0, 0, 0,
  #endif
  
      /* number and list of unimplemented system calls */
***************
*** 877,883 ****
      0x3ffff,
      0x30000,
  #else
!     0, 0, 0, 0
  #endif
  
      /* number and list of unimplemented system calls */
--- 890,896 ----
      0x3ffff,
      0x30000,
  #else
!     0, 0, 0, 0,
  #endif
  
      /* number and list of unimplemented system calls */
***************
*** 996,1001 ****
--- 1009,1020 ----
  #else
  	ptr = aptr;
  #endif
+ 	if ((unsigned long)ptr < init_mm.start_code ||
+ 		(unsigned long)ptr > init_mm.end_data) {
+ /*	     printk("address 0x%lx (from 0x%lx %d) is out of range in check_table. wtf?\n", (unsigned long)x, (unsigned long)ptr, i);*/
+ 	     continue;
+ 	}
+ 
  	ret = check_table(P, ptr);
  	if (ret >= 0) {
  	    /* return value is number of entries to skip */
***************
*** 1100,1105 ****
--- 1119,1129 ----
  	printk("<7>osi_probe: %s                      try_harder\n", P->symbol);
  #endif
      for (offset = 0; offset < datalen; offset++, ptr++) {
+ 	if ((unsigned long)ptr < init_mm.start_code ||
+ 		(unsigned long)ptr > init_mm.end_data) {
+ /*	     printk("address 0x%lx (from 0x%lx %d) is out of range in check_table. wtf?\n", (unsigned long)x, (unsigned long)ptr, i);*/
+ 	     continue;
+ 	}
  	ret = check_table(P, ptr);
          if (ret >= 0) {
              /* return value is number of entries to skip */
Index: openafs/src/afs/LINUX/osi_prototypes.h
diff -c openafs/src/afs/LINUX/osi_prototypes.h:1.6.2.7 openafs/src/afs/LINUX/osi_prototypes.h:1.6.2.9
*** openafs/src/afs/LINUX/osi_prototypes.h:1.6.2.7	Mon Jul 11 15:29:56 2005
--- openafs/src/afs/LINUX/osi_prototypes.h	Thu Aug 17 09:56:29 2006
***************
*** 67,70 ****
--- 67,80 ----
  /* osi_vnodeops.c */
  extern void afs_fill_inode(struct inode *ip, struct vattr *vattr);
  
+ /* osi_groups.c */
+ extern void osi_keyring_init(void);
+ extern void osi_keyring_shutdown(void);
+ extern int __setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
+ 		    int change_parent);
+ #ifdef LINUX_KEYRING_SUPPORT
+ extern struct key_type key_type_afs_pag;
+ #endif /* LINUX_KEYRING_SUPPORT */
+ 
+ 
  #endif /* _OSI_PROTO_H_ */
Index: openafs/src/afs/LINUX/osi_vfsops.c
diff -c openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.12 openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.18
*** openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.12	Mon Nov 28 22:20:28 2005
--- openafs/src/afs/LINUX/osi_vfsops.c	Fri Oct  6 09:30:56 2006
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.12 2005/11/29 03:20:28 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.29.2.18 2006/10/06 13:30:56 shadow Exp $");
  
  #define __NO_VERSION__		/* don't define kernel_version in module.h */
  #include <linux/module.h> /* early to avoid printf->printk mapping */
***************
*** 49,55 ****
  static int afs_root(struct super_block *afsp);
  struct super_block *afs_read_super(struct super_block *sb, void *data, int silent);
  int afs_fill_super(struct super_block *sb, void *data, int silent);
- static struct super_block *afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data);
  
  /* afs_file_system
   * VFS entry for Linux - installed in init_module
--- 49,54 ----
***************
*** 58,68 ****
   * 2) Mount call comes to us via do_mount -> read_super -> afs_read_super.
   *    We are expected to setup the super_block. See afs_read_super.
   */
  #if defined(AFS_LINUX26_ENV)
! struct backing_dev_info afs_backing_dev_info = {
! 	.ra_pages	= (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE,
! 	.state		= 0,
! };
  
  struct file_system_type afs_fs_type = {
      .owner = THIS_MODULE,
--- 57,85 ----
   * 2) Mount call comes to us via do_mount -> read_super -> afs_read_super.
   *    We are expected to setup the super_block. See afs_read_super.
   */
+ 
+ 
+ /* afs_read_super
+  * read the "super block" for AFS - roughly eguivalent to struct vfs.
+  * dev, covered, s_rd_only, s_dirt, and s_type will be set by read_super.
+  */
  #if defined(AFS_LINUX26_ENV)
! static struct super_block *
! #ifdef GET_SB_HAS_STRUCT_VFSMOUNT
! afs_get_sb(struct file_system_type *fs_type, int flags,
! 	   const char *dev_name, void *data, struct vfsmount *mnt)
! #else
! afs_get_sb(struct file_system_type *fs_type, int flags,
! 	   const char *dev_name, void *data)
! #endif
! {
! #ifdef GET_SB_HAS_STRUCT_VFSMOUNT
!     return get_sb_nodev(fs_type, flags, data, afs_fill_super, mnt);
! #else
!     return get_sb_nodev(fs_type, flags, data, afs_fill_super);
! #endif
! }
! 
  
  struct file_system_type afs_fs_type = {
      .owner = THIS_MODULE,
***************
*** 83,98 ****
  };
  #endif
  
- /* afs_read_super
-  * read the "super block" for AFS - roughly eguivalent to struct vfs.
-  * dev, covered, s_rd_only, s_dirt, and s_type will be set by read_super.
-  */
  #if defined(AFS_LINUX26_ENV)
! static struct super_block *
! afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data)
! {
!     return get_sb_nodev(fs_type, flags, data, afs_fill_super);
! }
  
  int
  afs_fill_super(struct super_block *sb, void *data, int silent)
--- 100,110 ----
  };
  #endif
  
  #if defined(AFS_LINUX26_ENV)
! struct backing_dev_info afs_backing_dev_info = {
! 	.ra_pages	= (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE,
! 	.state		= 0,
! };
  
  int
  afs_fill_super(struct super_block *sb, void *data, int silent)
***************
*** 300,307 ****
  void
  afs_destroy_inodecache(void)
  {
!     if (kmem_cache_destroy(afs_inode_cachep))
! 	printk(KERN_INFO "afs_inode_cache: not all structures were freed\n");
  }
  #else
  int
--- 312,318 ----
  void
  afs_destroy_inodecache(void)
  {
!     (void) kmem_cache_destroy(afs_inode_cachep);
  }
  #else
  int
***************
*** 332,356 ****
  #endif
  }
  
- /* afs_put_inode
-  * Linux version of inactive.  When refcount == 2, we are about to
-  * decrement to 1 and the only reference remaining should be for
-  * the VLRU
-  */
- 
- static void
- afs_put_inode(struct inode *ip)
- {
-     struct vcache *vcp = VTOAFS(ip);
- 
-     AFS_GLOCK();
-     if (VREFCOUNT(vcp) == 2) {
- 	if (VREFCOUNT(vcp) == 2)
- 	    afs_InactiveVCache(vcp, NULL);
-     }
-     AFS_GUNLOCK();
- }
- 
  /* afs_put_super
   * Called from unmount to release super_block. */
  static void
--- 343,348 ----
***************
*** 436,442 ****
    .destroy_inode =	afs_destroy_inode,
  #endif
    .clear_inode =	afs_clear_inode,
-   .put_inode =		afs_put_inode,
    .put_super =		afs_put_super,
    .statfs =		afs_statfs,
  #if !defined(AFS_LINUX24_ENV)
--- 428,433 ----
***************
*** 496,502 ****
--- 487,495 ----
      ip->i_ino = vp->va_nodeid;
      ip->i_nlink = vp->va_nlink;
      ip->i_blocks = vp->va_blocks;
+ #ifdef STRUCT_INODE_HAS_I_BLKSIZE
      ip->i_blksize = vp->va_blocksize;
+ #endif
      ip->i_rdev = vp->va_rdev;
      ip->i_mode = vp->va_mode;
      ip->i_uid = vp->va_uid;
Index: openafs/src/afs/LINUX/osi_vnodeops.c
diff -c openafs/src/afs/LINUX/osi_vnodeops.c:1.81.2.40 openafs/src/afs/LINUX/osi_vnodeops.c:1.81.2.46
*** openafs/src/afs/LINUX/osi_vnodeops.c:1.81.2.40	Wed Jan 11 16:38:30 2006
--- openafs/src/afs/LINUX/osi_vnodeops.c	Tue Oct 10 18:01:04 2006
***************
*** 22,28 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.40 2006/01/11 21:38:30 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.81.2.46 2006/10/10 22:01:04 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
***************
*** 75,81 ****
--- 75,85 ----
      else {
  	    osi_FlushPages(vcp, credp);	/* ensure stale pages are gone */
  	    AFS_GUNLOCK();
+ #ifdef DO_SYNC_READ
+ 	    code = do_sync_read(fp, buf, count, offp);
+ #else
  	    code = generic_file_read(fp, buf, count, offp);
+ #endif
  	    AFS_GLOCK();
      }
  
***************
*** 121,127 ****
--- 125,135 ----
  	code = -code;
      else {
  	    AFS_GUNLOCK();
+ #ifdef DO_SYNC_READ
+ 	    code = do_sync_write(fp, buf, count, offp);
+ #else
  	    code = generic_file_write(fp, buf, count, offp);
+ #endif
  	    AFS_GLOCK();
      }
  
***************
*** 463,468 ****
--- 471,497 ----
      code = afs_lockctl(vcp, &flock, cmd, credp);
      AFS_GUNLOCK();
  
+ #ifdef AFS_LINUX24_ENV
+     if (code == 0 && (cmd == F_SETLK || cmd == F_SETLKW)) {
+ #ifdef AFS_LINUX26_ENV
+        struct file_lock flp2;
+        flp2 = *flp;
+        flp2.fl_flags &=~ FL_SLEEP;
+        code = posix_lock_file(fp, &flp2);
+ #else
+        code = posix_lock_file(fp, flp, 0);
+ #endif 
+        osi_Assert(code != -EAGAIN); /* there should be no conflicts */
+        if (code) {
+            struct AFS_FLOCK flock2;
+            flock2 = flock;
+            flock2.l_type = F_UNLCK;
+            AFS_GLOCK();
+            afs_lockctl(vcp, &flock2, F_SETLK, credp);
+            AFS_GUNLOCK();
+        }
+     }
+ #endif
      /* Convert flock back to Linux's file_lock */
      flp->fl_type = flock.l_type;
      flp->fl_pid = flock.l_pid;
***************
*** 544,549 ****
--- 573,582 ----
  struct file_operations afs_file_fops = {
    .read =	afs_linux_read,
    .write =	afs_linux_write,
+ #ifdef GENERIC_FILE_AIO_READ
+   .aio_read =	generic_file_aio_read,
+   .aio_write =	generic_file_aio_write,
+ #endif
  #ifdef HAVE_UNLOCKED_IOCTL
    .unlocked_ioctl = afs_unlocked_xioctl,
  #else
***************
*** 788,795 ****
      struct vcache *vcp = VTOAFS(ip);
  
      AFS_GLOCK();
!     if (vcp->states & CUnlinked)
! 	(void) afs_InactiveVCache(vcp, NULL);
      AFS_GUNLOCK();
  
      iput(ip);
--- 821,827 ----
      struct vcache *vcp = VTOAFS(ip);
  
      AFS_GLOCK();
!     (void) afs_InactiveVCache(vcp, NULL);
      AFS_GUNLOCK();
  
      iput(ip);
Index: openafs/src/afs/NBSD/osi_machdep.h
diff -c openafs/src/afs/NBSD/osi_machdep.h:1.1.8.1 openafs/src/afs/NBSD/osi_machdep.h:1.1.8.2
*** openafs/src/afs/NBSD/osi_machdep.h:1.1.8.1	Wed Apr 13 22:31:40 2005
--- openafs/src/afs/NBSD/osi_machdep.h	Mon May 22 15:08:46 2006
***************
*** 24,30 ****
  /* #include <sys/unix_defs.h> */
  
  #define getpid()		curproc
- extern struct simplelock afs_rxglobal_lock;
  
  /* 
   * Time related macros
--- 24,29 ----
Index: openafs/src/afs/OBSD/osi_file.c
diff -c openafs/src/afs/OBSD/osi_file.c:1.10 openafs/src/afs/OBSD/osi_file.c:1.10.2.1
*** openafs/src/afs/OBSD/osi_file.c:1.10	Wed Mar 10 18:01:52 2004
--- openafs/src/afs/OBSD/osi_file.c	Fri Jun 23 10:21:12 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/OBSD/osi_file.c,v 1.10 2004/03/10 23:01:52 rees Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afs/afsincludes.h"	/* Afs-based standard headers */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/OBSD/osi_file.c,v 1.10.2.1 2006/06/23 14:21:12 rees Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afs/afsincludes.h"	/* Afs-based standard headers */
***************
*** 48,54 ****
--- 48,58 ----
      }
      VOP_UNLOCK(vp, 0, curproc);
      afile->vnode = vp;
+ #ifdef AFS_OBSD39_ENV
+     afile->size = VTOI(vp)->i_ffs1_size;
+ #else
      afile->size = VTOI(vp)->i_ffs_size;
+ #endif
      afile->offset = 0;
      afile->proc = NULL;
      afile->inum = ainode;	/* for hint validity checking */
Index: openafs/src/afs/OBSD/osi_groups.c
diff -c openafs/src/afs/OBSD/osi_groups.c:1.5 openafs/src/afs/OBSD/osi_groups.c:1.5.2.1
*** openafs/src/afs/OBSD/osi_groups.c:1.5	Tue Jul 15 19:14:25 2003
--- openafs/src/afs/OBSD/osi_groups.c	Fri Jun 23 10:21:12 2006
***************
*** 19,25 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/OBSD/osi_groups.c,v 1.5 2003/07/15 23:14:25 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afs/afsincludes.h"
--- 19,25 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/OBSD/osi_groups.c,v 1.5.2.1 2006/06/23 14:21:12 rees Exp $");
  
  #include "afs/sysincludes.h"
  #include "afs/afsincludes.h"
***************
*** 47,56 ****
      struct vrequest treq;
  
      AFS_STATCNT(afs_xsetgroups);
!     AFS_GLOCK();
  
      code = afs_InitReq(&treq, p->p_rcred);
!     AFS_GUNLOCK();
      if (code)
  	return code;
  
--- 47,56 ----
      struct vrequest treq;
  
      AFS_STATCNT(afs_xsetgroups);
!     AFS_GLOCKP(p);
  
      code = afs_InitReq(&treq, p->p_rcred);
!     AFS_GUNLOCKP(p);
      if (code)
  	return code;
  
***************
*** 61,70 ****
       */
      if (PagInCred(p->p_rcred) == NOPAG) {
  	if (((treq.uid >> 24) & 0xff) == 'A') {
! 	    AFS_GLOCK();
  	    /* we've already done a setpag, so now we redo it */
  	    AddPag(p, treq.uid, &p->p_rcred);
! 	    AFS_GUNLOCK();
  	}
      }
      return code;
--- 61,70 ----
       */
      if (PagInCred(p->p_rcred) == NOPAG) {
  	if (((treq.uid >> 24) & 0xff) == 'A') {
! 	    AFS_GLOCKP(p);
  	    /* we've already done a setpag, so now we redo it */
  	    AddPag(p, treq.uid, &p->p_rcred);
! 	    AFS_GUNLOCKP(p);
  	}
      }
      return code;
Index: openafs/src/afs/OBSD/osi_machdep.h
diff -c openafs/src/afs/OBSD/osi_machdep.h:1.16.2.5 openafs/src/afs/OBSD/osi_machdep.h:1.16.2.7
*** openafs/src/afs/OBSD/osi_machdep.h:1.16.2.5	Mon May 23 17:17:29 2005
--- openafs/src/afs/OBSD/osi_machdep.h	Fri Jun 23 10:21:12 2006
***************
*** 16,30 ****
   * afs_osi.h.
   */
  
! /* $Id: osi_machdep.h,v 1.16.2.5 2005/05/23 21:17:29 shadow Exp $ */
  
  #ifndef _OSI_MACHDEP_H_
  #define _OSI_MACHDEP_H_
  
  #include <sys/lock.h>
  
- extern struct simplelock afs_rxglobal_lock;
- 
  #define M_AFSFID	(M_TEMP-1)
  #define M_AFSBUFHDR	(M_TEMP-2)
  #define M_AFSBUFFER	(M_TEMP-3)
--- 16,28 ----
   * afs_osi.h.
   */
  
! /* $Id: osi_machdep.h,v 1.16.2.7 2006/06/23 14:21:12 rees Exp $ */
  
  #ifndef _OSI_MACHDEP_H_
  #define _OSI_MACHDEP_H_
  
  #include <sys/lock.h>
  
  #define M_AFSFID	(M_TEMP-1)
  #define M_AFSBUFHDR	(M_TEMP-2)
  #define M_AFSBUFFER	(M_TEMP-3)
***************
*** 106,135 ****
  #define	gop_lookupname(fnamep, segflg, followlink, compvpp) \
  	afs_nbsd_lookupname((fnamep), (segflg), (followlink), (compvpp))
  
  #ifdef KERNEL
  
  #ifdef AFS_GLOBAL_SUNLOCK
  extern struct proc *afs_global_owner;
  extern struct lock afs_global_lock;
! #define AFS_GLOCK() \
      do { \
!         osi_Assert(curproc); \
!  	lockmgr(&afs_global_lock, LK_EXCLUSIVE, 0, curproc); \
          osi_Assert(afs_global_owner == NULL); \
!    	afs_global_owner = curproc; \
      } while (0)
! #define AFS_GUNLOCK() \
      do { \
!         osi_Assert(curproc); \
!  	osi_Assert(afs_global_owner == curproc); \
          afs_global_owner = NULL; \
!         lockmgr(&afs_global_lock, LK_RELEASE, 0, curproc); \
      } while(0)
  #define ISAFS_GLOCK() (afs_global_owner == curproc && curproc)
  #else
! extern struct simplelock afs_global_lock;
! #define AFS_GLOCK()
! #define AFS_GUNLOCK()
  #define AFS_ASSERT_GLOCK()
  #define ISAFS_GLOCK() 1
  #endif
--- 104,141 ----
  #define	gop_lookupname(fnamep, segflg, followlink, compvpp) \
  	afs_nbsd_lookupname((fnamep), (segflg), (followlink), (compvpp))
  
+ #ifdef AFS_OBSD39_ENV
+ #define afs_osi_lockmgr(l, f, i, p) lockmgr((l), (f), (i))
+ #else
+ #define afs_osi_lockmgr(l, f, i, p) lockmgr((l), (f), (i), (p))
+ #endif
+ 
  #ifdef KERNEL
  
+ #define AFS_GLOCK() AFS_GLOCKP(curproc)
+ #define AFS_GUNLOCK() AFS_GUNLOCKP(curproc)
  #ifdef AFS_GLOBAL_SUNLOCK
  extern struct proc *afs_global_owner;
  extern struct lock afs_global_lock;
! #define AFS_GLOCKP(p) \
      do { \
!         osi_Assert(p); \
!  	afs_osi_lockmgr(&afs_global_lock, LK_EXCLUSIVE, 0, (p)); \
          osi_Assert(afs_global_owner == NULL); \
!    	afs_global_owner = (p); \
      } while (0)
! #define AFS_GUNLOCKP(p) \
      do { \
!         osi_Assert(p); \
!  	osi_Assert(afs_global_owner == (p)); \
          afs_global_owner = NULL; \
!         afs_osi_lockmgr(&afs_global_lock, LK_RELEASE, 0, (p)); \
      } while(0)
  #define ISAFS_GLOCK() (afs_global_owner == curproc && curproc)
  #else
! extern struct lock afs_global_lock;
! #define AFS_GLOCKP(p)
! #define AFS_GUNLOCKP(p)
  #define AFS_ASSERT_GLOCK()
  #define ISAFS_GLOCK() 1
  #endif
Index: openafs/src/afs/OBSD/osi_vnodeops.c
diff -c openafs/src/afs/OBSD/osi_vnodeops.c:1.18.2.1 openafs/src/afs/OBSD/osi_vnodeops.c:1.18.2.2
*** openafs/src/afs/OBSD/osi_vnodeops.c:1.18.2.1	Sun Jan 30 23:18:25 2005
--- openafs/src/afs/OBSD/osi_vnodeops.c	Fri Jun 23 10:21:12 2006
***************
*** 3,9 ****
   * Original NetBSD version for Transarc afs by John Kohl <jtk@MIT.EDU>
   * OpenBSD version by Jim Rees <rees@umich.edu>
   *
!  * $Id: osi_vnodeops.c,v 1.18.2.1 2005/01/31 04:18:25 shadow Exp $
   */
  
  /*
--- 3,9 ----
   * Original NetBSD version for Transarc afs by John Kohl <jtk@MIT.EDU>
   * OpenBSD version by Jim Rees <rees@umich.edu>
   *
!  * $Id: osi_vnodeops.c,v 1.18.2.2 2006/06/23 14:21:12 rees Exp $
   */
  
  /*
***************
*** 99,105 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/OBSD/osi_vnodeops.c,v 1.18.2.1 2005/01/31 04:18:25 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afs/afsincludes.h"	/* Afs-based standard headers */
--- 99,105 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/OBSD/osi_vnodeops.c,v 1.18.2.2 2006/06/23 14:21:12 rees Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afs/afsincludes.h"	/* Afs-based standard headers */
***************
*** 933,939 ****
  
      if (!vc)
  	panic("afs_nbsd_lock: null vcache");
!     return lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, &vp->v_interlock,
  		   ap->a_p);
  }
  
--- 933,939 ----
  
      if (!vc)
  	panic("afs_nbsd_lock: null vcache");
!     return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, &vp->v_interlock,
  		   ap->a_p);
  }
  
***************
*** 950,956 ****
  
      if (!vc)
  	panic("afs_nbsd_unlock: null vcache");
!     return lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, &vp->v_interlock,
  		   ap->a_p);
  }
  
--- 950,956 ----
  
      if (!vc)
  	panic("afs_nbsd_unlock: null vcache");
!     return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, &vp->v_interlock,
  		   ap->a_p);
  }
  
Index: openafs/src/afs/SOLARIS/osi_machdep.h
diff -c openafs/src/afs/SOLARIS/osi_machdep.h:1.7.2.1 openafs/src/afs/SOLARIS/osi_machdep.h:1.7.2.2
*** openafs/src/afs/SOLARIS/osi_machdep.h:1.7.2.1	Wed Apr 13 22:31:42 2005
--- openafs/src/afs/SOLARIS/osi_machdep.h	Mon May 22 15:08:47 2006
***************
*** 69,75 ****
   */
  #include <sys/mutex.h>
  extern kmutex_t afs_global_lock;
- extern kmutex_t afs_rxglobal_lock;
  
  #define AFS_GLOCK()	mutex_enter(&afs_global_lock);
  #define AFS_GUNLOCK()	mutex_exit(&afs_global_lock);
--- 69,74 ----
Index: openafs/src/afs/SOLARIS/osi_vfsops.c
diff -c openafs/src/afs/SOLARIS/osi_vfsops.c:1.18 openafs/src/afs/SOLARIS/osi_vfsops.c:1.18.2.1
*** openafs/src/afs/SOLARIS/osi_vfsops.c:1.18	Thu Jun 24 13:38:24 2004
--- openafs/src/afs/SOLARIS/osi_vfsops.c	Fri Jun 30 10:06:11 2006
***************
*** 14,20 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vfsops.c,v 1.18 2004/06/24 17:38:24 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 14,20 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vfsops.c,v 1.18.2.1 2006/06/30 14:06:11 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 277,283 ****
  int (*afs_orig_ioctl) (), (*afs_orig_ioctl32) ();
  int (*afs_orig_setgroups) (), (*afs_orig_setgroups32) ();
  
- struct streamtab *udp_infop = 0;
  #ifndef AFS_SUN510_ENV
  struct ill_s *ill_g_headp = 0;
  #endif
--- 277,282 ----
***************
*** 297,302 ****
--- 296,315 ----
  
  extern Afs_syscall();
  
+ static void *
+ do_mod_lookup(const char * mod, const char * sym)
+ {
+     void * ptr;
+ 
+     ptr = modlookup(mod, sym);
+     if (ptr == NULL) {
+         afs_warn("modlookup failed for symbol '%s' in module '%s'\n",
+ 		 sym, mod);
+     }
+ 
+     return ptr;
+ }
+ 
  #ifdef AFS_SUN510_ENV
  afsinit(int fstype, char *dummy)
  #else
***************
*** 318,381 ****
      afs_orig_ioctl32 = sysent32[SYS_ioctl].sy_call;
      sysent32[SYS_setgroups].sy_callc = afs_xsetgroups;
      sysent32[SYS_ioctl].sy_call = afs_xioctl;
! #endif
  
  #ifdef AFS_SUN510_ENV
      vfs_setfsops(fstype, afs_vfsops_template, &afs_vfsopsp);
      afsfstype = fstype;
      vn_make_ops("afs", afs_vnodeops_template, &afs_ops);
! #else
      vfsswp->vsw_vfsops = &Afs_vfsops;
      afsfstype = fstype;
! #endif
  
  
! #if	!defined(AFS_NONFSTRANS)
!     nfs_rfsdisptab_v2 = (int (*)())modlookup("nfssrv", "rfsdisptab_v2");
!     if (!nfs_rfsdisptab_v2) {
! 	afs_warn("warning : rfsdisptab_v2 NOT FOUND\n");
!     }
!     if (nfs_rfsdisptab_v2) {
! 	nfs_acldisptab_v2 = (int (*)())modlookup("nfssrv", "acldisptab_v2");
! 	if (!nfs_acldisptab_v2) {
! 	    afs_warn("warning : acldisptab_v2 NOT FOUND\n");
! 	} else {
  	    afs_xlatorinit_v2(nfs_rfsdisptab_v2, nfs_acldisptab_v2);
  	}
      }
!     nfs_rfsdisptab_v3 = (int (*)())modlookup("nfssrv", "rfsdisptab_v3");
!     if (!nfs_rfsdisptab_v3) {
! 	afs_warn("warning : rfsdisptab_v3 NOT FOUND\n");
!     }
!     if (nfs_rfsdisptab_v3) {
! 	nfs_acldisptab_v3 = (int (*)())modlookup("nfssrv", "acldisptab_v3");
! 	if (!nfs_acldisptab_v3) {
! 	    afs_warn("warning : acldisptab_v3 NOT FOUND\n");
! 	} else {
  	    afs_xlatorinit_v3(nfs_rfsdisptab_v3, nfs_acldisptab_v3);
  	}
      }
  
!     nfs_checkauth = (int (*)())modlookup("nfssrv", "checkauth");
!     if (!nfs_checkauth)
! 	afs_warn("nfs_checkauth not initialised");
! #endif
!     ufs_iallocp = (int (*)())modlookup("ufs", "ufs_ialloc");
!     ufs_iupdatp = (void (*)())modlookup("ufs", "ufs_iupdat");
!     ufs_igetp = (int (*)())modlookup("ufs", "ufs_iget");
!     ufs_itimes_nolockp = (void (*)())modlookup("ufs", "ufs_itimes_nolock");
!     udp_infop = (struct streamtab *)modlookup("udp", "udpinfo");
! #ifdef AFS_SUN510_ENV
!     if (!ufs_iallocp || !ufs_iupdatp || !ufs_itimes_nolockp || !ufs_igetp
! 	|| !udp_infop)
! 	afs_warn("AFS to UFS mapping cannot be fully initialised\n");
! #else
!     ill_g_headp = (struct ill_s *)modlookup("ip", "ill_g_head");
  
!     if (!ufs_iallocp || !ufs_iupdatp || !ufs_itimes_nolockp || !ufs_igetp
! 	|| !udp_infop || !ill_g_headp)
  	afs_warn("AFS to UFS mapping cannot be fully initialised\n");
! #endif
  
      afs_sinited = 1;
      return 0;
--- 331,379 ----
      afs_orig_ioctl32 = sysent32[SYS_ioctl].sy_call;
      sysent32[SYS_setgroups].sy_callc = afs_xsetgroups;
      sysent32[SYS_ioctl].sy_call = afs_xioctl;
! #endif /* AFS_SUN57_64BIT_ENV */
  
  #ifdef AFS_SUN510_ENV
      vfs_setfsops(fstype, afs_vfsops_template, &afs_vfsopsp);
      afsfstype = fstype;
      vn_make_ops("afs", afs_vnodeops_template, &afs_ops);
! #else /* !AFS_SUN510_ENV */
      vfsswp->vsw_vfsops = &Afs_vfsops;
      afsfstype = fstype;
! #endif /* !AFS_SUN510_ENV */
  
  
! #if !defined(AFS_NONFSTRANS)
!     nfs_rfsdisptab_v2 = (int (*)()) do_mod_lookup("nfssrv", "rfsdisptab_v2");
!     if (nfs_rfsdisptab_v2 != NULL) {
! 	nfs_acldisptab_v2 = (int (*)()) do_mod_lookup("nfssrv", "acldisptab_v2");
! 	if (nfs_acldisptab_v2 != NULL) {
  	    afs_xlatorinit_v2(nfs_rfsdisptab_v2, nfs_acldisptab_v2);
  	}
      }
!     nfs_rfsdisptab_v3 = (int (*)()) do_mod_lookup("nfssrv", "rfsdisptab_v3");
!     if (nfs_rfsdisptab_v3 != NULL) {
! 	nfs_acldisptab_v3 = (int (*)()) do_mod_lookup("nfssrv", "acldisptab_v3");
! 	if (nfs_acldisptab_v3 != NULL) {
  	    afs_xlatorinit_v3(nfs_rfsdisptab_v3, nfs_acldisptab_v3);
  	}
      }
  
!     nfs_checkauth = (int (*)()) do_mod_lookup("nfssrv", "checkauth");
! #endif /* !AFS_NONFSTRANS */
  
!     ufs_iallocp = (int (*)()) do_mod_lookup("ufs", "ufs_ialloc");
!     ufs_iupdatp = (void (*)()) do_mod_lookup("ufs", "ufs_iupdat");
!     ufs_igetp = (int (*)()) do_mod_lookup("ufs", "ufs_iget");
!     ufs_itimes_nolockp = (void (*)()) do_mod_lookup("ufs", "ufs_itimes_nolock");
! 
!     if (!ufs_iallocp || !ufs_iupdatp || !ufs_itimes_nolockp || !ufs_igetp) {
  	afs_warn("AFS to UFS mapping cannot be fully initialised\n");
!     }
! 
! #if !defined(AFS_SUN510_ENV)
!     ill_g_headp = (struct ill_s *) do_mod_lookup("ip", "ill_g_head");
! #endif /* !AFS_SUN510_ENV */
  
      afs_sinited = 1;
      return 0;
Index: openafs/src/afs/SOLARIS/osi_vnodeops.c
diff -c openafs/src/afs/SOLARIS/osi_vnodeops.c:1.20.2.8 openafs/src/afs/SOLARIS/osi_vnodeops.c:1.20.2.9
*** openafs/src/afs/SOLARIS/osi_vnodeops.c:1.20.2.8	Mon Feb 13 13:39:11 2006
--- openafs/src/afs/SOLARIS/osi_vnodeops.c	Mon Jul  3 14:43:39 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.20.2.8 2006/02/13 18:39:11 shadow Exp $");
  
  /*
   * SOLARIS/osi_vnodeops.c
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/SOLARIS/osi_vnodeops.c,v 1.20.2.9 2006/07/03 18:43:39 jaltman Exp $");
  
  /*
   * SOLARIS/osi_vnodeops.c
***************
*** 1698,1708 ****
  	    struct vnode *vp = AFSTOV(avcp), *pvp = AFSTOV(andp);
  	    
  	    mutex_enter(&vp->v_lock);
! 	    kmem_free(vp->v_path, strlen(vp->v_path) + 1);
! 	    vp->v_path = NULL;
  	    mutex_exit(&vp->v_lock);
! 	    VN_SETPATH(afs_globalVp, pvp, vp, aname2, strlen(aname2));
! 	    
  	    AFS_RELE(avcp);
  	}
      }
--- 1698,1710 ----
  	    struct vnode *vp = AFSTOV(avcp), *pvp = AFSTOV(andp);
  	    
  	    mutex_enter(&vp->v_lock);
! 	    if (vp->v_path != NULL) {
! 		kmem_free(vp->v_path, strlen(vp->v_path) + 1);
! 		vp->v_path = NULL;
! 	    }
  	    mutex_exit(&vp->v_lock);
! 	    vn_setpath(afs_globalVp, pvp, vp, aname2, strlen(aname2));
! 
  	    AFS_RELE(avcp);
  	}
      }
Index: openafs/src/afs/UKERNEL/sysincludes.h
diff -c openafs/src/afs/UKERNEL/sysincludes.h:1.15 openafs/src/afs/UKERNEL/sysincludes.h:1.15.2.1
*** openafs/src/afs/UKERNEL/sysincludes.h:1.15	Fri Mar 12 00:56:59 2004
--- openafs/src/afs/UKERNEL/sysincludes.h	Wed Sep 27 17:14:28 2006
***************
*** 21,27 ****
--- 21,29 ----
  #include  <limits.h>
  #include  <assert.h>
  #include  <stdarg.h>
+ #if !defined(AFS_USR_DARWIN_ENV) && !defined(AFS_USR_FBSD_ENV) /* must be included after KERNEL undef'd */
  #include <setjmp.h>
+ #endif
  
  #ifdef AFS_USR_SUN5_ENV
  #include  <signal.h>
***************
*** 120,125 ****
--- 122,128 ----
  #define AFS_USR_UNDEF_KERNEL_ENV 1
  #endif
  #include  <errno.h>
+ #include  <setjmp.h>
  #include  <sys/param.h>
  #include  <sys/types.h>
  #include  <sys/socket.h>
Index: openafs/src/afs/VNOPS/afs_vnop_create.c
diff -c openafs/src/afs/VNOPS/afs_vnop_create.c:1.16.2.7 openafs/src/afs/VNOPS/afs_vnop_create.c:1.16.2.9
*** openafs/src/afs/VNOPS/afs_vnop_create.c:1.16.2.7	Sat Oct 15 10:24:27 2005
--- openafs/src/afs/VNOPS/afs_vnop_create.c	Fri Oct 13 01:15:58 2006
***************
*** 17,23 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_create.c,v 1.16.2.7 2005/10/15 14:24:27 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 17,23 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_create.c,v 1.16.2.9 2006/10/13 05:15:58 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 25,30 ****
--- 25,31 ----
  #include "afs/afs_cbqueue.h"
  #include "afs/nfsclient.h"
  #include "afs/afs_osidnlc.h"
+ #include "afs/unified_afs.h"
  
  /* question: does afs_create need to set CDirty in the adp or the avc?
   * I think we can get away without it, but I'm not sure.  Note that
***************
*** 305,311 ****
  	     (tc, code, &adp->fid, &treq, AFS_STATS_FS_RPCIDX_CREATEFILE,
  	      SHARED_LOCK, NULL));
  
!     if (code == EEXIST &&
  #ifdef AFS_SGI64_ENV
      !(flags & VEXCL)
  #else /* AFS_SGI64_ENV */
--- 306,312 ----
  	     (tc, code, &adp->fid, &treq, AFS_STATS_FS_RPCIDX_CREATEFILE,
  	      SHARED_LOCK, NULL));
  
!     if ((code == EEXIST || code == UAEEXIST) &&
  #ifdef AFS_SGI64_ENV
      !(flags & VEXCL)
  #else /* AFS_SGI64_ENV */
Index: openafs/src/afs/VNOPS/afs_vnop_flock.c
diff -c openafs/src/afs/VNOPS/afs_vnop_flock.c:1.24.2.4 openafs/src/afs/VNOPS/afs_vnop_flock.c:1.24.2.6
*** openafs/src/afs/VNOPS/afs_vnop_flock.c:1.24.2.4	Mon Feb 27 15:35:12 2006
--- openafs/src/afs/VNOPS/afs_vnop_flock.c	Fri Jun  2 17:23:52 2006
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_flock.c,v 1.24.2.4 2006/02/27 20:35:12 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 16,22 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_flock.c,v 1.24.2.6 2006/06/02 21:23:52 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 24,29 ****
--- 24,30 ----
  #include "afs/afs_cbqueue.h"
  #include "afs/nfsclient.h"
  #include "afs/afs_osidnlc.h"
+ #include "afs/unified_afs.h"
  
  /* Static prototypes */
  static int HandleGetLock(register struct vcache *avc,
***************
*** 422,428 ****
  		break;
  	    }
  	    /* now, if we got EWOULDBLOCK, and we're supposed to wait, we do */
! 	    if (((code == EWOULDBLOCK) || (code == EAGAIN))
  		&& !(acom & LOCK_NB)) {
  		/* sleep for a second, allowing interrupts */
  		ReleaseWriteLock(&avc->lock);
--- 423,430 ----
  		break;
  	    }
  	    /* now, if we got EWOULDBLOCK, and we're supposed to wait, we do */
! 	    if (((code == EWOULDBLOCK) || (code == EAGAIN) || 
! 		 (code == UAEWOULDBLOCK) || (code == UAEAGAIN))
  		&& !(acom & LOCK_NB)) {
  		/* sleep for a second, allowing interrupts */
  		ReleaseWriteLock(&avc->lock);
Index: openafs/src/afsd/afsd.c
diff -c openafs/src/afsd/afsd.c:1.43.2.17 openafs/src/afsd/afsd.c:1.43.2.18
*** openafs/src/afsd/afsd.c:1.43.2.17	Thu Mar 23 10:40:10 2006
--- openafs/src/afsd/afsd.c	Mon Aug 21 16:39:40 2006
***************
*** 58,64 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/afsd/afsd.c,v 1.43.2.17 2006/03/23 15:40:10 shadow Exp $");
  
  #define VFS 1
  
--- 58,64 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/afsd/afsd.c,v 1.43.2.18 2006/08/21 20:39:40 shadow Exp $");
  
  #define VFS 1
  
***************
*** 1666,1677 ****
--- 1666,1684 ----
  	    if (afsd_verbose)
  		printf("%s: cacheFiles autotuned to %d\n", rn, cacheFiles);
  	}
+ #if 0
+        /* This actually needs to
+           1) use powers of 2
+           2) not second-guess when a chunksize comes from the command line
+           3) be less, um, small. 2^2?? 
+        */
  	/* Sanity check chunkSize */
  	i = max(cacheBlocks / 1000, cacheBlocks / cacheFiles);
  	chunkSize = min(chunkSize, i);
  	chunkSize = max(chunkSize, 2);
  	if (afsd_verbose)
  	    printf("%s: chunkSize autotuned to %d\n", rn, chunkSize);
+ #endif
  
  	if (!sawDCacheSize) {
  	    dCacheSize = cacheFiles / 2;
Index: openafs/src/afsweb/weblog.c
diff -c openafs/src/afsweb/weblog.c:1.8 openafs/src/afsweb/weblog.c:1.8.2.1
*** openafs/src/afsweb/weblog.c:1.8	Tue Jul 15 19:14:35 2003
--- openafs/src/afsweb/weblog.c	Mon Jul 31 13:07:47 2006
***************
*** 25,31 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/afsweb/weblog.c,v 1.8 2003/07/15 23:14:35 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 25,31 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/afsweb/weblog.c,v 1.8.2.1 2006/07/31 17:07:47 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 666,672 ****
       */
      reply_p = (adk_reply_ptr) 0;
      error_p = (adk_error_ptr) 0;
!     code = ubik_Call(ADK_GetTicket, ubik_handle, 0,	/* Ubik flags */
  		     name,	/* IN:  Principal: must be exact DCE principal */
  		     nonce,	/* IN:  Input nonce */
  		     lifetime,	/* IN:  lifetime */
--- 666,672 ----
       */
      reply_p = (adk_reply_ptr) 0;
      error_p = (adk_error_ptr) 0;
!     code = ubik_ADK_GetTicket(ubik_handle, 0,	/* Ubik flags */
  		     name,	/* IN:  Principal: must be exact DCE principal */
  		     nonce,	/* IN:  Input nonce */
  		     lifetime,	/* IN:  lifetime */
Index: openafs/src/aklog/aklog.1
diff -c openafs/src/aklog/aklog.1:1.1.2.1 openafs/src/aklog/aklog.1:removed
*** openafs/src/aklog/aklog.1:1.1.2.1	Fri Dec 17 10:39:45 2004
--- openafs/src/aklog/aklog.1	Fri Oct 13 15:52:12 2006
***************
*** 1,189 ****
- .\" 
- .\" $Id: aklog.1,v 1.1.2.1 2004/12/17 15:39:45 shadow Exp $
- .\"
- .\" Copyright 1990,1991 by the Massachusetts Institute of Technology
- .\" For distribution and copying rights, see the file "mit-copyright.h"
- .\"
- .TH AKLOG 1 "August 1, 1990"
- .UC 4
- .SH NAME
- aklog \- Obtain tokens for authentication to AFS
- 
- .SH SYNOPSIS
- .B aklog 
- [ 
- .B \-d 
- ] [ 
- .B \-hosts
- ] [ 
- .B \-zsubs 
- ] [ 
- .B \-noprdb 
- ] [ [
- .B \-cell | \-c 
- ] cell [
- .B \-k 
- kerberos-realm
- ] ] [ [ 
- .B \-path | \-p 
- ] pathname ]
- 
- .SH DESCRIPTION
- The 
- .I aklog
- program is used to authenticate to a cell or directory in 
- .I AFS,
- the Andrew Filesystem, by obtaining AFS 
- .I tokens.  
- Ordinarily, aklog is not used directly but called by
- .IR attach (1).
- 
- If 
- .I aklog
- is invoked with no command line arguments, it will obtain tokens 
- for the workstation's local cell.  It is possible to invoke
- .I aklog
- with arbitrarily many cells and pathnames
- specified on the command line.  
- .I aklog 
- knows how to expand cell name abbreviations, so short
- forms of cell names can be use used.  In addition, 
- .I aklog
- understands the following command line options:
- 
- .TP 4 
- .B  \-cell | \-c \fRcell
- This flag is not ordinarily necessary since 
- .I aklog
- can usually figure out when an argument is a cell.  It can be
- used to introduce a cell name that would ordinarily be mistaken
- for a path name if this should be required.  If this flag is
- omitted, an argument will be treated as a cell name if it
- contains no slashes (/) and is neither "." nor ".." .
- 
- .TP
- .B \-k \fRkerberos-realm
- This flag is valid only when immediately following the name of a
- cell.  It is used to tell 
- .I aklog
- what kerberos realm should be used while authenticating to the
- preceding cell.  This argument is unnecessary except when the
- workstation is not properly configured.  Ordinarily, 
- .I aklog
- can determine this information on its own.
- 
- .TP
- .B \-path | \-p \fRpathname
- Like the \-cell flag, this flag is usually unnecessary.  When it
- appears, the next command line argument is always treated as a
- path name.  Ordinarily, an argument is treated as a path name
- if it is "." or ".." or if it contains a slash (/).  
- 
- .TP
- .B \-hosts
- Prints all the server addresses which may act as a single point of
- failure in accessing the specified directory path.  Each element of the
- path is examined, and as new volumes are traversed, if they are not
- replicated, the server's IP address containing the volume will be
- displayed.
- .IR Attach (1)
- invokes 
- .I aklog
- with this option.  The output is of the form
- 
- host: 
- .I IP address
- 
- .TP
- .B \-zsubs
- Causes the printing of the zephyr subscription information that a
- person using a given path or cell would want.  
- .IR Attach (1)
- invokes 
- .I aklog
- with this option.  The output is of the form
- 
- zsub: 
- .I instance
- 
- where 
- .I instance
- is the instance of a class filsrv zephyr subscription.
- 
- .TP
- .B \-noprdb
- Ordinarily, aklog looks up the AFS ID corresponding to the name
- of the person invoking the command.  Specifying this flag turns
- off this functionality.  This may be desirable if the protection
- database is unavailable for some reason and tokens are desired
- anyway.  
- 
- .TP
- .B \-d
- Turns on printing of debugging information.  This option is not
- intended for general users.
- 
- .SH EXIT CODES
- The exit status of
- .I aklog
- will be one of the following:
- .TP 5
- 0
- Success -- No error occurred.
- .TP 5
- 1
- Usage -- Bad command syntax; accompanied by a usage message.
- .TP 5
- 2
- Something failed -- More than one cell or pathname was given on
- the command line and at least one failure occurred.
- A more specific error status is returned when only one directive
- is given.
- .TP 5
- 3
- AFS -- Unable to get AFS configuration or unable to get
- information about a specific cell.
- .TP 5
- 4
- Kerberos -- Unable to get tickets for authentication.
- .TP 5
- 5
- Token -- Unable to get tokens.
- .TP 5
- 6
- Bad pathname -- The path given was not a directory or 
- .I lstat(2)
- failed on some component of the pathname.
- .TP 5
- 7
- Miscellaneous -- An internal failure occurred.  For example, 
- .I aklog
- returns this if it runs out of memory.
- 
- .SH EXAMPLES
- .br
- To get tokens for the local cell:
- .br
- % aklog
- 
- To get tokens for the athena.mit.edu cell:
- .br
- % aklog athena.mit.edu
- .br
- or
- .br
- % aklog athena
- 
- To get tokens adequate to read /afs/athena.mit.edu/user/p/potato:
- .br
- % aklog /afs/athena.mit.edu/user/p/potato
- 
- To get tokens for a test cell that is in a test Kerberos realm:
- .br
- % aklog testcell.mit.edu -k TESTREALM.MIT.EDU
- 
- .SH SEE ALSO
- attach(1), tokens(1), unlog(1)
- 
- .SH AUTHOR
- Emanuel Jay Berkenbilt (MIT-Project Athena)
--- 0 ----
Index: openafs/src/aklog/aklog_main.c
diff -c openafs/src/aklog/aklog_main.c:1.1.2.12 openafs/src/aklog/aklog_main.c:1.1.2.14
*** openafs/src/aklog/aklog_main.c:1.1.2.12	Wed Apr  5 11:42:13 2006
--- openafs/src/aklog/aklog_main.c	Tue Aug 29 15:19:05 2006
***************
*** 1,5 ****
  /* 
!  * $Id: aklog_main.c,v 1.1.2.12 2006/04/05 15:42:13 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.1.2.14 2006/08/29 19:19:05 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.1.2.12 2006/04/05 15:42:13 shadow Exp $";
  #endif /* lint || SABER */
  
  #include <afsconfig.h>
--- 7,13 ----
  
  #if !defined(lint) && !defined(SABER)
  static char *rcsid =
! 	"$Id: aklog_main.c,v 1.1.2.14 2006/08/29 19:19:05 shadow Exp $";
  #endif /* lint || SABER */
  
  #include <afsconfig.h>
***************
*** 60,76 ****
  /* #include <krb.h> */
  #endif /* 0 */
  
  #include <krb5.h>
  
  #ifdef WINDOWS
  
- #include <afs/stds.h>
  #include <afs/auth.h>
  #include <rx/rxkad.h>
  #include <afs/dirpath.h>
  
  #else /* !WINDOWS */
- #include <afs/stds.h>
  #ifndef HAVE_KERBEROSV_HEIM_ERR_H
  #include <afs/com_err.h>
  #endif
--- 60,75 ----
  /* #include <krb.h> */
  #endif /* 0 */
  
+ #include <afs/stds.h>
  #include <krb5.h>
  
  #ifdef WINDOWS
  
  #include <afs/auth.h>
  #include <rx/rxkad.h>
  #include <afs/dirpath.h>
  
  #else /* !WINDOWS */
  #ifndef HAVE_KERBEROSV_HEIM_ERR_H
  #include <afs/com_err.h>
  #endif
***************
*** 571,577 ****
  	status = get_credv5(context, name, primary_instance, realm_of_cell,
  			    &v5cred);
  
! 	if (status == KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN) {
  	    if (try_secondary) {
  		if (dflag) {
  		    printf("Principal not found, trying alternate "
--- 570,576 ----
  	status = get_credv5(context, name, primary_instance, realm_of_cell,
  			    &v5cred);
  
! 	if (status == KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN || status == KRB5KRB_ERR_GENERIC) {
  	    if (try_secondary) {
  		if (dflag) {
  		    printf("Principal not found, trying alternate "
Index: openafs/src/aklog/asetkey.c
diff -c openafs/src/aklog/asetkey.c:1.4.2.4 openafs/src/aklog/asetkey.c:1.4.2.5
*** openafs/src/aklog/asetkey.c:1.4.2.4	Mon Apr  3 15:45:26 2006
--- openafs/src/aklog/asetkey.c	Wed Aug  2 15:53:20 2006
***************
*** 1,5 ****
  /*
!  * $Id: asetkey.c,v 1.4.2.4 2006/04/03 19:45:26 shadow Exp $
   *
   * asetkey - Manipulates an AFS KeyFile
   *
--- 1,5 ----
  /*
!  * $Id: asetkey.c,v 1.4.2.5 2006/08/02 19:53:20 shadow Exp $
   *
   * asetkey - Manipulates an AFS KeyFile
   *
***************
*** 22,30 ****
  #endif /* HAVE_STRINGS_H */
  #endif /* HAVE_STRING_H */
  
  #include <krb5.h>
  
- #include <afs/stds.h>
  #include <afs/com_err.h>
  #include <afs/cellconfig.h>
  #include <afs/keys.h>
--- 22,30 ----
  #endif /* HAVE_STRINGS_H */
  #endif /* HAVE_STRING_H */
  
+ #include <afs/stds.h>
  #include <krb5.h>
  
  #include <afs/com_err.h>
  #include <afs/cellconfig.h>
  #include <afs/keys.h>
Index: openafs/src/audit/audit.c
diff -c openafs/src/audit/audit.c:1.8.2.8 openafs/src/audit/audit.c:1.8.2.12
*** openafs/src/audit/audit.c:1.8.2.8	Mon Feb 13 12:57:26 2006
--- openafs/src/audit/audit.c	Fri Oct 13 15:42:19 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/audit/audit.c,v 1.8.2.8 2006/02/13 17:57:26 jaltman Exp $");
  
  #include <fcntl.h>
  #include <stdarg.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/audit/audit.c,v 1.8.2.12 2006/10/13 19:42:19 shadow Exp $");
  
  #include <fcntl.h>
  #include <stdarg.h>
***************
*** 37,42 ****
--- 37,52 ----
  #endif
  #include <afs/afsutil.h>
  
+ /* C99 requires va_copy.  Older versions of GCC provide __va_copy.  Per t
+    Autoconf manual, memcpy is a generally portable fallback. */          
+ #ifndef va_copy              
+ # ifdef __va_copy
+ #  define va_copy(d, s)         __va_copy((d), (s))             
+ # else
+ #  define va_copy(d, s)         memcpy(&(d), &(s), sizeof(va_list)) 
+ # endif
+ #endif      
+ 
  char *bufferPtr;
  int bufferLen;
  int osi_audit_all = (-1);	/* Not determined yet */
***************
*** 87,96 ****
  	    *(afs_int32 *) bufferPtr = vaLong;
  	    bufferPtr += sizeof(vaLong);
  	    break;
- 	case AUD_LST:		/* Ptr to another list */
- 	    vaLst = va_arg(vaList, va_list);
- 	    audmakebuf(audEvent, vaLst);
- 	    break;
  	case AUD_FID:		/* AFSFid - contains 3 entries */
  	    vaFid = (struct AFSFid *)va_arg(vaList, struct AFSFid *);
  	    if (vaFid) {
--- 97,102 ----
***************
*** 137,143 ****
  }
  
  static void
! printbuf(FILE *out, int rec, char *audEvent, afs_int32 errCode, va_list vaList)
  {
      int vaEntry;
      int vaInt;
--- 143,150 ----
  }
  
  static void
! printbuf(FILE *out, int rec, char *audEvent, char *afsName, afs_int32 hostId, 
! 	 afs_int32 errCode, va_list vaList)
  {
      int vaEntry;
      int vaInt;
***************
*** 164,171 ****
  	    fprintf(out, "[%d] ", num);
      }
      
!     if (strcmp(audEvent, "VALST") != 0)
! 	fprintf(out,  "EVENT %s CODE %d ", audEvent, errCode);
  
      vaEntry = va_arg(vaList, int);
      while (vaEntry != AUD_END) {
--- 171,182 ----
  	    fprintf(out, "[%d] ", num);
      }
      
!     fprintf(out,  "EVENT %s CODE %d ", audEvent, errCode);
! 
!     if (afsName) {
! 	hostAddr.s_addr = hostId;
! 	fprintf(out,  "NAME %s HOST %s ", afsName, inet_ntoa(hostAddr));
!     }
  
      vaEntry = va_arg(vaList, int);
      while (vaEntry != AUD_END) {
***************
*** 212,221 ****
  	    vaLong = va_arg(vaList, afs_int32);
  	    fprintf(out, "LONG %d ", vaLong);
  	    break;
- 	case AUD_LST:		/* Ptr to another list */
- 	    vaLst = va_arg(vaList, va_list);
- 	    printbuf(out, 1, "VALST", 0, vaLst);
- 	    break;
  	case AUD_FID:		/* AFSFid - contains 3 entries */
  	    vaFid = va_arg(vaList, struct AFSFid *);
  	    if (vaFid)
--- 223,228 ----
***************
*** 253,260 ****
  	vaEntry = va_arg(vaList, int);
      }				/* end while */
  
!     if (strcmp(audEvent, "VALST") != 0)
! 	fprintf(out, "\n");
  }
  
  #ifdef AFS_PTHREAD_ENV
--- 260,266 ----
  	vaEntry = va_arg(vaList, int);
      }				/* end while */
  
!     fprintf(out, "\n");
  }
  
  #ifdef AFS_PTHREAD_ENV
***************
*** 284,292 ****
  /* The routine that acually does the audit call.
   * ************************************************************************** */
  int
! osi_audit(char *audEvent,	/* Event name (15 chars or less) */
! 	  afs_int32 errCode,	/* The error code */
! 	  ...)
  {
  #ifdef AFS_AIX32_ENV
      afs_int32 code;
--- 290,300 ----
  /* The routine that acually does the audit call.
   * ************************************************************************** */
  int
! osi_audit_internal(char *audEvent,	/* Event name (15 chars or less) */
! 		   afs_int32 errCode,	/* The error code */
! 		   char *afsName,
! 		   afs_int32 hostId,
! 		   va_list vaList)
  {
  #ifdef AFS_AIX32_ENV
      afs_int32 code;
***************
*** 294,300 ****
      static char BUFFER[32768];
  #endif
      int result;
!     va_list vaList;
  
  #ifdef AFS_PTHREAD_ENV
      /* i'm pretty sure all the server apps now call osi_audit_init(),
--- 302,308 ----
      static char BUFFER[32768];
  #endif
      int result;
!     va_list vaCopy;
  
  #ifdef AFS_PTHREAD_ENV
      /* i'm pretty sure all the server apps now call osi_audit_init(),
***************
*** 308,313 ****
--- 316,323 ----
      if (!osi_audit_all && !auditout)
  	return 0;
  
+     va_copy(vaCopy, vaList);
+ 
      switch (errCode) {
      case 0:
  	result = AUDIT_OK;
***************
*** 342,371 ****
      *(int *)bufferPtr = errCode;
      bufferPtr += sizeof(errCode);
  
-     va_start(vaList, errCode);
      audmakebuf(audEvent, vaList);
  #endif
  
      if (osi_echo_trail) {
! 	va_start(vaList, errCode);
! 	printbuf(stdout, 0, audEvent, errCode, vaList);
      }
  
  #ifdef AFS_AIX32_ENV
      bufferLen = (int)((afs_int32) bufferPtr - (afs_int32) & BUFFER[0]);
      code = auditlog(audEvent, result, BUFFER, bufferLen);
- #ifdef notdef
-     if (code) {
- 	err = errno;
- 	code = auditlog("AFS_Aud_Fail", result, &err, sizeof(err));
- 	if (code)
- 	    printf("Error while writing audit entry: %d.\n", errno);
-     }
- #endif /* notdef */
  #else
      if (auditout) {
! 	va_start(vaList, errCode);
! 	printbuf(auditout, 0, audEvent, errCode, vaList);
  	fflush(auditout);
      }
  #endif
--- 352,371 ----
      *(int *)bufferPtr = errCode;
      bufferPtr += sizeof(errCode);
  
      audmakebuf(audEvent, vaList);
  #endif
  
      if (osi_echo_trail) {
! 	printbuf(stdout, 0, audEvent, afsName, hostId, errCode, vaList);
      }
+     va_end(vaCopy);
  
  #ifdef AFS_AIX32_ENV
      bufferLen = (int)((afs_int32) bufferPtr - (afs_int32) & BUFFER[0]);
      code = auditlog(audEvent, result, BUFFER, bufferLen);
  #else
      if (auditout) {
! 	printbuf(auditout, 0, audEvent, afsName, hostId, errCode, vaList);
  	fflush(auditout);
      }
  #endif
***************
*** 375,380 ****
--- 375,398 ----
  
      return 0;
  }
+ int
+ osi_audit(char *audEvent,	/* Event name (15 chars or less) */
+ 	  afs_int32 errCode,	/* The error code */
+ 	  ...)
+ {
+     va_list vaList;
+ 
+     if ((osi_audit_all < 0) || (osi_echo_trail < 0))
+ 	osi_audit_check();
+     if (!osi_audit_all && !auditout)
+ 	return 0;
+ 
+     va_start(vaList, errCode);
+     osi_audit_internal(audEvent, errCode, NULL, 0, vaList);
+     va_end(vaList);
+ 
+     return 0;
+ }
  
  /* ************************************************************************** */
  /* Given a RPC call structure, this routine extracts the name and host id from the 
***************
*** 461,469 ****
  	osi_audit("AFS_Aud_NoCall", (-1), AUD_STR, audEvent, AUD_END);
      }
      va_start(vaList, errCode);
!     osi_audit(audEvent, errCode, AUD_NAME, afsName, AUD_HOST, hostId, 
!               AUD_LST, vaList, AUD_END);
! 
      return 0;
  }
  
--- 479,486 ----
  	osi_audit("AFS_Aud_NoCall", (-1), AUD_STR, audEvent, AUD_END);
      }
      va_start(vaList, errCode);
!     osi_audit_internal(audEvent, errCode, afsName, hostId, vaList);
!     va_end(vaList);
      return 0;
  }
  
Index: openafs/src/auth/Makefile.in
diff -c openafs/src/auth/Makefile.in:1.12.2.1 openafs/src/auth/Makefile.in:1.12.2.2
*** openafs/src/auth/Makefile.in:1.12.2.1	Mon Oct 18 03:11:49 2004
--- openafs/src/auth/Makefile.in	Thu Jul 13 13:19:39 2006
***************
*** 22,30 ****
  UKSRCS=${KSRCS} cellconfig.h acfg_errors.c keys.h cellconfig.c \
         ktc.c authcon.c ktc_errors.c
  
! all: ${TOP_LIBDIR}/libauth.a ${TOP_LIBDIR}/libauth.krb.a depinstall copyauth setkey
! 
! depinstall: ${TOP_INCDIR}/afs/keys.h ${TOP_INCDIR}/afs/cellconfig.h ${TOP_INCDIR}/afs/auth.h
  
  cellconfig.o: cellconfig.c ${INCLS}
  ktc.o: ktc.c ${INCLS} ${TOP_INCDIR}/afs/vice.h
--- 22,39 ----
  UKSRCS=${KSRCS} cellconfig.h acfg_errors.c keys.h cellconfig.c \
         ktc.c authcon.c ktc_errors.c
  
! all: \
! 	${TOP_LIBDIR}/libauth.a \
! 	${TOP_LIBDIR}/libauth.krb.a \
! 	depinstall \
! 	copyauth \
! 	setkey
! 
! depinstall: \
! 	${TOP_INCDIR}/afs/keys.h \
! 	${TOP_INCDIR}/afs/cellconfig.h \
! 	${TOP_INCDIR}/afs/auth.h \
! 	${TOP_INCDIR}/afs/ktc.h
  
  cellconfig.o: cellconfig.c ${INCLS}
  ktc.o: ktc.c ${INCLS} ${TOP_INCDIR}/afs/vice.h
***************
*** 69,93 ****
  #
  # Install targets
  #
! install:   ${DESTDIR}${libdir}/afs/libauth.a ${DESTDIR}${libdir}/afs/libauth.krb.a ${DESTDIR}${includedir}/afs/keys.h ${DESTDIR}${includedir}/afs/cellconfig.h ${DESTDIR}${includedir}/afs/auth.h ${DESTDIR}${sbindir}/copyauth 
! 
! ${DEST}/lib/afs/libauth.a: libauth.a
! 	${INSTALL} $? $@
! 
! ${DEST}/lib/afs/libauth.krb.a: libauth.krb.a
! 	${INSTALL} $? $@
! 
! ${DEST}/etc/copyauth: copyauth
! 	${INSTALL} $? $@
! 
! ${DEST}/include/afs/keys.h: keys.h
! 	${INSTALL} $? $@
! 
! ${DEST}/include/afs/cellconfig.h: cellconfig.h
! 	${INSTALL} $? $@
! 
! ${DEST}/include/afs/auth.h: auth.h
! 	${INSTALL} $? $@
  
  #
  # Misc. targets
--- 78,91 ----
  #
  # Install targets
  #
! install: \
! 	${DESTDIR}${libdir}/afs/libauth.a \
! 	${DESTDIR}${libdir}/afs/libauth.krb.a \
! 	${DESTDIR}${includedir}/afs/keys.h \
! 	${DESTDIR}${includedir}/afs/cellconfig.h \
! 	${DESTDIR}${includedir}/afs/auth.h \
! 	${DESTDIR}${includedir}/afs/ktc.h \
! 	${DESTDIR}${sbindir}/copyauth 
  
  #
  # Misc. targets
***************
*** 96,137 ****
  	cd test; $(MAKE)
  
  clean:
! 	$(RM) -f *.o *.a copyauth setkey auth.h cellconfig.h acfg_errors.c ktc_errors.c core\
! 	AFS_component_version_number.c
  
  include ../config/Makefile.version
  ${DESTDIR}${libdir}/afs/libauth.a: libauth.a
  	${INSTALL} $? $@
  
  ${TOP_LIBDIR}/libauth.a: libauth.a
  	${INSTALL} $? $@
  
  ${DESTDIR}${libdir}/afs/libauth.krb.a: libauth.krb.a
  	${INSTALL} $? $@
  
  ${TOP_LIBDIR}/libauth.krb.a: libauth.krb.a
  	${INSTALL} $? $@
  
  ${DESTDIR}${includedir}/afs/keys.h: keys.h
  	${INSTALL} $? $@
  
  ${TOP_INCDIR}/afs/keys.h: keys.h
  	${INSTALL} $? $@
  
  ${DESTDIR}${includedir}/afs/cellconfig.h: cellconfig.h
  	${INSTALL} $? $@
  
  ${TOP_INCDIR}/afs/cellconfig.h: cellconfig.h
  	${INSTALL} $? $@
  
  ${DESTDIR}${includedir}/afs/auth.h: auth.h
  	${INSTALL} $? $@
  
  ${TOP_INCDIR}/afs/auth.h: auth.h
  	${INSTALL} $? $@
  
  ${DESTDIR}${sbindir}/copyauth: copyauth
  	${INSTALL} $? $@
  
! dest:   ${DEST}/lib/afs/libauth.a ${DEST}/lib/afs/libauth.krb.a ${DEST}/include/afs/keys.h ${DEST}/include/afs/cellconfig.h ${DEST}/include/afs/auth.h ${DEST}/etc/copyauth 
  
--- 94,175 ----
  	cd test; $(MAKE)
  
  clean:
! 	$(RM) -f *.o *.a \
! 		copyauth setkey auth.h cellconfig.h acfg_errors.c \
! 		ktc_errors.c core AFS_component_version_number.c
  
  include ../config/Makefile.version
+ 
+ 
  ${DESTDIR}${libdir}/afs/libauth.a: libauth.a
  	${INSTALL} $? $@
  
  ${TOP_LIBDIR}/libauth.a: libauth.a
  	${INSTALL} $? $@
  
+ ${DEST}/lib/afs/libauth.a: libauth.a
+ 	${INSTALL} $? $@
+ 
  ${DESTDIR}${libdir}/afs/libauth.krb.a: libauth.krb.a
  	${INSTALL} $? $@
  
  ${TOP_LIBDIR}/libauth.krb.a: libauth.krb.a
  	${INSTALL} $? $@
  
+ ${DEST}/lib/afs/libauth.krb.a: libauth.krb.a
+ 	${INSTALL} $? $@
+ 
  ${DESTDIR}${includedir}/afs/keys.h: keys.h
  	${INSTALL} $? $@
  
  ${TOP_INCDIR}/afs/keys.h: keys.h
  	${INSTALL} $? $@
  
+ ${DEST}/include/afs/keys.h: keys.h
+ 	${INSTALL} $? $@
+ 
  ${DESTDIR}${includedir}/afs/cellconfig.h: cellconfig.h
  	${INSTALL} $? $@
  
  ${TOP_INCDIR}/afs/cellconfig.h: cellconfig.h
  	${INSTALL} $? $@
  
+ ${DEST}/include/afs/cellconfig.h: cellconfig.h
+ 	${INSTALL} $? $@
+ 
  ${DESTDIR}${includedir}/afs/auth.h: auth.h
  	${INSTALL} $? $@
  
  ${TOP_INCDIR}/afs/auth.h: auth.h
  	${INSTALL} $? $@
  
+ ${DEST}/include/afs/auth.h: auth.h
+ 	${INSTALL} $? $@
+ 
+ ${DESTDIR}${includedir}/afs/ktc.h: ktc.h
+ 	${INSTALL} $? $@
+ 
+ ${TOP_INCDIR}/afs/ktc.h: ktc.h
+ 	${INSTALL} $? $@
+ 
+ ${DEST}/include/afs/ktc.h: ktc.h
+ 	${INSTALL} $? $@
+ 
  ${DESTDIR}${sbindir}/copyauth: copyauth
  	${INSTALL} $? $@
  
! ${DEST}/etc/copyauth: copyauth
! 	${INSTALL} $? $@
! 
! 
! 
! 
! dest: \
! 	${DEST}/lib/afs/libauth.a \
! 	${DEST}/lib/afs/libauth.krb.a \
! 	${DEST}/include/afs/keys.h \
! 	${DEST}/include/afs/cellconfig.h \
! 	${DEST}/include/afs/auth.h \
! 	${DEST}/include/afs/ktc.h \
! 	${DEST}/etc/copyauth 
  
Index: openafs/src/auth/NTMakefile
diff -c openafs/src/auth/NTMakefile:1.9 openafs/src/auth/NTMakefile:1.9.2.1
*** openafs/src/auth/NTMakefile:1.9	Sat Jun 19 00:21:14 2004
--- openafs/src/auth/NTMakefile	Sun Jul  2 21:12:01 2006
***************
*** 110,116 ****
  
  install_headers: $(INCFILES)
  
! install: $(AFSAUTH_LIBFILE) $(OUT)\setkey.exe # $(COPYAUTH_EXEFILE) $(AFSAUTH_KRB_LIBFILE)
  
  install9x: install
  
--- 110,116 ----
  
  install_headers: $(INCFILES)
  
! install: $(AFSAUTH_LIBFILE) $(AFSAUTH_KRB_LIBFILE) $(OUT)\setkey.exe # $(COPYAUTH_EXEFILE)
  
  install9x: install
  
Index: openafs/src/auth/cellconfig.c
diff -c openafs/src/auth/cellconfig.c:1.40.2.6 openafs/src/auth/cellconfig.c:1.40.2.11
*** openafs/src/auth/cellconfig.c:1.40.2.6	Tue Mar 28 13:42:57 2006
--- openafs/src/auth/cellconfig.c	Tue Oct 10 16:29:18 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/auth/cellconfig.c,v 1.40.2.6 2006/03/28 18:42:57 shadow 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.40.2.11 2006/10/10 20:29:18 shadow Exp $");
  
  #include <afs/stds.h>
  #include <afs/pthread_glock.h>
***************
*** 114,119 ****
--- 114,226 ----
   * CellServDB changes.
   */
  
+ #if defined(AFS_SUN5_ENV) && !defined(__sparcv9)
+ /* Solaris through 10 in 32 bit mode will return EMFILE if fopen can't
+    get an fd <= 255. We allow the fileserver to claim more fds than that.
+    This has always been a problem since pr_Initialize would have the same
+    issue, but hpr_Initialize makes it more likely that we would see this. 
+    Work around it. This is not generic. It's coded with the needs of
+    afsconf_* in mind only.
+ 
+    http://www.opensolaris.org/os/community/onnv/flag-days/pages/2006042001/
+ */
+ 
+ #define BUFFER 4096
+ 
+ struct afsconf_iobuffer {
+     int _file;
+     char *buffer;
+     char *ptr;
+     char *endptr;
+ };
+ 
+ typedef struct afsconf_iobuffer afsconf_FILE;
+ 
+ static afsconf_FILE *
+ afsconf_fopen(const char *fname, const char *fmode)
+ {
+     int fd;
+     afsconf_FILE *iop;
+     
+     if ((fd = open(fname, O_RDONLY)) == -1) {
+ 	return NULL;
+     }
+     
+     iop = malloc(sizeof(struct afsconf_iobuffer));
+     if (iop == NULL) {
+ 	(void) close(fd);
+ 	errno = ENOMEM;
+ 	return NULL;
+     }
+     iop->_file = fd;
+     iop->buffer = malloc(BUFFER);
+     if (iop->buffer == NULL) {
+ 	(void) close(fd);
+ 	free((void *) iop);
+ 	errno = ENOMEM;
+ 	return NULL;
+     }
+     iop->ptr = iop->buffer;
+     iop->endptr = iop->buffer;
+     return iop;
+ }
+ 
+ static int
+ afsconf_fclose(afsconf_FILE *iop)
+ {
+     if (iop == NULL) {
+ 	return 0;
+     }
+     close(iop->_file);
+     free((void *)iop->buffer);
+     free((void *)iop);
+     return 0;
+ }
+ 
+ static char *
+ afsconf_fgets(char *s, int n, afsconf_FILE *iop)
+ {
+     char *p;
+     
+     p = s;
+     for (;;) {
+ 	char c;
+ 	
+ 	if (iop->ptr == iop->endptr) {
+ 	    ssize_t len;
+ 	    
+ 	    if ((len = read(iop->_file, (void *)iop->buffer, BUFFER)) == -1) {
+ 		return NULL;
+ 	    }
+ 	    if (len == 0) {
+ 		*p = 0;
+ 		if (s == p) {
+ 		    return NULL;
+ 		}
+ 		return s;
+ 	    }
+ 	    iop->ptr = iop->buffer;
+ 	    iop->endptr = iop->buffer + len;
+ 	}
+ 	c = *iop->ptr++;
+ 	*p++ = c;
+ 	if ((p - s) == (n - 1)) {
+ 	    *p = 0;
+ 	    return s;
+ 	}
+ 	if (c == '\n') {
+ 	    *p = 0;
+ 	    return s;
+ 	}
+     }
+ }
+ #define fopen afsconf_fopen
+ #define fclose afsconf_fclose
+ #define fgets afsconf_fgets
+ #else
+ #define afsconf_FILE FILE
+ #endif /* AFS_SUN5_ENV && ! __sparcv9 */
+ 
  /* return port number in network byte order in the low 16 bits of a long; return -1 if not found */
  static afs_int32
  afsconf_FindService(register const char *aname)
***************
*** 311,317 ****
  	if (!(afsconf_path = getenv("AFSCONF"))) {
  	    /* The "AFSCONF" environment (or contents of "/.AFSCONF") will be typically set to something like "/afs/<cell>/common/etc" where, by convention, the default files for "ThisCell" and "CellServDB" will reside; note that a major drawback is that a given afs client on that cell may NOT contain the same contents... */
  	    char *home_dir;
! 	    FILE *fp;
  	    size_t len;
  
  	    if (!(home_dir = getenv("HOME"))) {
--- 418,424 ----
  	if (!(afsconf_path = getenv("AFSCONF"))) {
  	    /* The "AFSCONF" environment (or contents of "/.AFSCONF") will be typically set to something like "/afs/<cell>/common/etc" where, by convention, the default files for "ThisCell" and "CellServDB" will reside; note that a major drawback is that a given afs client on that cell may NOT contain the same contents... */
  	    char *home_dir;
! 	    afsconf_FILE *fp;
  	    size_t len;
  
  	    if (!(home_dir = getenv("HOME"))) {
***************
*** 366,392 ****
      return tdir;
  }
  
- 
  static int
  GetCellUnix(struct afsconf_dir *adir)
  {
!     int rc;
      char tbuffer[256];
!     FILE *tf;
! 
      strcompose(tbuffer, 256, adir->name, "/", AFSDIR_THISCELL_FILE, NULL);
!     tf = fopen(tbuffer, "r");
!     if (tf) {
! 	/* FIXME: buffer overflow waiting to happen */
! 	rc = fscanf(tf, "%s", tbuffer);
! 	if (rc == 1) {
! 	    adir->cellName = (char *)malloc(strlen(tbuffer) + 1);
! 	    strcpy(adir->cellName, tbuffer);
! 	}
! 	fclose(tf);
!     } else {
  	return -1;
      }
      return 0;
  }
  
--- 473,499 ----
      return tdir;
  }
  
  static int
  GetCellUnix(struct afsconf_dir *adir)
  {
!     char *rc;
      char tbuffer[256];
!     char *p;
!     afsconf_FILE *fp;
!     
      strcompose(tbuffer, 256, adir->name, "/", AFSDIR_THISCELL_FILE, NULL);
!     fp = fopen(tbuffer, "r");
!     if (fp == 0) {
  	return -1;
      }
+     rc = fgets(tbuffer, 256, fp);
+     fclose(fp);
+ 
+     p = strchr(tbuffer, '\n');
+     if (p)
+ 	*p = '\0';
+ 
+     adir->cellName = strdup(tbuffer);
      return 0;
  }
  
***************
*** 410,416 ****
  afsconf_OpenInternal(register struct afsconf_dir *adir, char *cell,
  		     char clones[])
  {
!     FILE *tf;
      register char *tp, *bp;
      register struct afsconf_entry *curEntry;
      struct afsconf_aliasentry *curAlias;
--- 517,523 ----
  afsconf_OpenInternal(register struct afsconf_dir *adir, char *cell,
  		     char clones[])
  {
!     afsconf_FILE *tf;
      register char *tp, *bp;
      register struct afsconf_entry *curEntry;
      struct afsconf_aliasentry *curAlias;
Index: openafs/src/auth/ktc.c
diff -c openafs/src/auth/ktc.c:1.15.2.1 openafs/src/auth/ktc.c:1.15.2.6
*** openafs/src/auth/ktc.c:1.15.2.1	Wed Aug 25 03:09:36 2004
--- openafs/src/auth/ktc.c	Fri Oct  6 08:44:40 2006
***************
*** 17,23 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/auth/ktc.c,v 1.15.2.1 2004/08/25 07:09:36 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
--- 17,23 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/auth/ktc.c,v 1.15.2.6 2006/10/06 12:44:40 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
***************
*** 71,77 ****
  
  /* For malloc() */
  #include <stdlib.h>
! 
  
  #ifdef	notdef
  /* AFS_KERBEROS_ENV is now conditionally defined in the Makefile */
--- 71,77 ----
  
  /* For malloc() */
  #include <stdlib.h>
! #include "ktc.h"
  
  #ifdef	notdef
  /* AFS_KERBEROS_ENV is now conditionally defined in the Makefile */
***************
*** 132,138 ****
  int afs_tf_save_cred(), afs_tf_close(), afs_tf_create();
  int afs_tf_dest_tkt();
  static void ktc_LocalCell();
- char *ktc_tkt_string();
  #endif /* AFS_KERBEROS_ENV */
  
  #ifdef AFS_DUX40_ENV
--- 132,137 ----
***************
*** 1437,1443 ****
  static char krb_ticket_string[4096] = "";
  
  char *
! ktc_tkt_string()
  {
      char *env;
  
--- 1436,1448 ----
  static char krb_ticket_string[4096] = "";
  
  char *
! ktc_tkt_string(void)
! {
!     return ktc_tkt_string_uid(getuid());
! }
! 
! char *
! ktc_tkt_string_uid(afs_uint32 uid)
  {
      char *env;
  
***************
*** 1450,1456 ****
  	} else {
  	    /* 32 bits of signed integer will always fit in 11 characters
  	     * (including the sign), so no need to worry about overflow */
! 	    (void)sprintf(krb_ticket_string, "%s%d", TKT_ROOT, getuid());
  	}
      }
      UNLOCK_GLOBAL_MUTEX;
--- 1455,1461 ----
  	} else {
  	    /* 32 bits of signed integer will always fit in 11 characters
  	     * (including the sign), so no need to worry about overflow */
! 	    (void)sprintf(krb_ticket_string, "%s%d", TKT_ROOT, uid);
  	}
      }
      UNLOCK_GLOBAL_MUTEX;
***************
*** 1469,1476 ****
   */
  
  void
! ktc_set_tkt_string(val)
!      char *val;
  {
  
      LOCK_GLOBAL_MUTEX;
--- 1474,1480 ----
   */
  
  void
! ktc_set_tkt_string(char * val)
  {
  
      LOCK_GLOBAL_MUTEX;
Index: openafs/src/auth/ktc.h
diff -c /dev/null openafs/src/auth/ktc.h:1.1.4.3
*** /dev/null	Fri Oct 13 15:52:12 2006
--- openafs/src/auth/ktc.h	Thu Jul 13 13:39:44 2006
***************
*** 0 ****
--- 1,18 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #ifndef _AFS_AUTH_KTC_H
+ #define _AFS_AUTH_KTC_H
+ 
+ extern char * ktc_tkt_string(void);
+ extern char * ktc_tkt_string_uid(afs_uint32);
+ extern void ktc_set_tkt_string(char *);
+ 
+ 
+ #endif /* _AFS_AUTH_KTC_H */
Index: openafs/src/bozo/NTMakefile
diff -c openafs/src/bozo/NTMakefile:1.8.2.1 openafs/src/bozo/NTMakefile:1.8.2.2
*** openafs/src/bozo/NTMakefile:1.8.2.1	Fri Mar 11 02:03:09 2005
--- openafs/src/bozo/NTMakefile	Mon Jul 31 17:51:19 2006
***************
*** 116,124 ****
  ############################################################################
  # Definitions for generating files via RXGEN
  
! bosint.h bosint.cs.c bosint.ss.c bosint.xdr.c: bosint.xg
! 	$(RXGEN) -x $**
  
  
  ############################################################################
  # Definitions for generating files via COMPILE_ET
--- 116,132 ----
  ############################################################################
  # Definitions for generating files via RXGEN
  
! bosint.cs.c: bosint.xg bosint.h
! 	$(RXGEN) -x -C -o $@ bosint.xg
  
+ bosint.ss.c: bosint.xg bosint.h
+ 	$(RXGEN) -x -S -o $@ bosint.xg
+ 
+ bosint.xdr.c: bosint.xg bosint.h
+ 	$(RXGEN) -x -c -o $@ bosint.xg
+ 
+ bosint.h: bosint.xg
+ 	$(RXGEN) -x -h -o $@ bosint.xg
  
  ############################################################################
  # Definitions for generating files via COMPILE_ET
Index: openafs/src/bozo/bnode.c
diff -c openafs/src/bozo/bnode.c:1.17.2.1 openafs/src/bozo/bnode.c:1.17.2.3
*** openafs/src/bozo/bnode.c:1.17.2.1	Mon Jul 11 15:29:32 2005
--- openafs/src/bozo/bnode.c	Sun Aug 13 16:19:57 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bozo/bnode.c,v 1.17.2.1 2005/07/11 19:29:32 shadow Exp $");
  
  #include <stddef.h>
  #include <stdlib.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bozo/bnode.c,v 1.17.2.3 2006/08/13 20:19:57 shadow Exp $");
  
  #include <stddef.h>
  #include <stdlib.h>
***************
*** 738,750 ****
  
  #if defined(AFS_HPUX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_SGI51_ENV)
  	ec = setsid();
! #else
! #ifdef AFS_LINUX20_ENV
  	ec = setpgrp();
  #else
  	ec = setpgrp(0, 0);
  #endif
- #endif
  	fout = popen(tb->notifier, "w");
  	if (fout == NULL) {
  	    bozo_Log("BNODE: Failed to find notifier '%s'; ignored\n",
--- 738,750 ----
  
  #if defined(AFS_HPUX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_SGI51_ENV)
  	ec = setsid();
! #elif defined(AFS_DARWIN90_ENV)
! 	ec = setpgid(0, 0);
! #elif defined(AFS_LINUX20_ENV) || defined(AFS_AIX_ENV) 
  	ec = setpgrp();
  #else
  	ec = setpgrp(0, 0);
  #endif
  	fout = popen(tb->notifier, "w");
  	if (fout == NULL) {
  	    bozo_Log("BNODE: Failed to find notifier '%s'; ignored\n",
Index: openafs/src/bozo/bosserver.c
diff -c openafs/src/bozo/bosserver.c:1.23.2.7 openafs/src/bozo/bosserver.c:1.23.2.9
*** openafs/src/bozo/bosserver.c:1.23.2.7	Tue Feb 21 23:09:29 2006
--- openafs/src/bozo/bosserver.c	Tue Jun 20 16:34:59 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bozo/bosserver.c,v 1.23.2.7 2006/02/22 04:09:29 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bozo/bosserver.c,v 1.23.2.9 2006/06/20 20:34:59 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 71,76 ****
--- 71,81 ----
  
  struct ktime bozo_nextRestartKT, bozo_nextDayKT;
  int bozo_newKTs;
+ int rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
+ 
  #ifdef BOS_RESTRICTED_MODE
  int bozo_isrestricted = 0;
  int bozo_restdisable = 0;
***************
*** 719,724 ****
--- 724,730 ----
      int i;
      char namebuf[AFSDIR_PATH_MAX];
      int rxMaxMTU = -1;
+     afs_uint32 host = htonl(INADDR_ANY);
  #ifndef AFS_NT40_ENV
      int nofork = 0;
      struct stat sb;
***************
*** 813,818 ****
--- 819,827 ----
  	    bozo_isrestricted = 1;
  	}
  #endif
+ 	else if (strcmp(argv[code], "-rxbind") == 0) {
+ 	    rxBind = 1;
+ 	}
  	else if (!strcmp(argv[i], "-rxmaxmtu")) {
  	    if ((i + 1) >= argc) {
  		fprintf(stderr, "missing argument for -rxmaxmtu\n"); 
***************
*** 864,877 ****
  #ifndef AFS_NT40_ENV
  	    printf("Usage: bosserver [-noauth] [-log] "
  		   "[-auditlog <log path>] "
! 		   "[-rxmaxmtu <bytes>] "
  		   "[-syslog[=FACILITY]] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-nofork] " "[-help]\n");
  #else
  	    printf("Usage: bosserver [-noauth] [-log] "
  		   "[-auditlog <log path>] "
! 		   "[-rxmaxmtu <bytes>] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
  #endif
--- 873,886 ----
  #ifndef AFS_NT40_ENV
  	    printf("Usage: bosserver [-noauth] [-log] "
  		   "[-auditlog <log path>] "
! 		   "[-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-syslog[=FACILITY]] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-nofork] " "[-help]\n");
  #else
  	    printf("Usage: bosserver [-noauth] [-log] "
  		   "[-auditlog <log path>] "
! 		   "[-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
  #endif
***************
*** 1027,1033 ****
  	rx_SetMaxMTU(rxMaxMTU);
      }
  
!     tservice = rx_NewService( /* port */ 0, /* service id */ 1,
  			     /*service name */ "bozo",
  			     /* security classes */
  			     bozo_rxsc,
--- 1036,1061 ----
  	rx_SetMaxMTU(rxMaxMTU);
      }
  
!     if (rxBind) {
! 	afs_int32 ccode;
! #ifndef AFS_NT40_ENV
!         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
!             AFSDIR_SERVER_NETINFO_FILEPATH) {
!             char reason[1024];
!             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
!                                            ADDRSPERSITE, reason,
!                                            AFSDIR_SERVER_NETINFO_FILEPATH,
!                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
!         } else 
! #endif	
! 	{
!             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
!         }
!         if (ccode == 1) 
!             host = SHostAddrs[0];
!     }
! 
!     tservice = rx_NewServiceHost(host,  /* port */ 0, /* service id */ 1,
  			     /*service name */ "bozo",
  			     /* security classes */
  			     bozo_rxsc,
***************
*** 1037,1044 ****
      rx_SetStackSize(tservice, BOZO_LWP_STACKSIZE);	/* so gethostbyname works (in cell stuff) */
  
      tservice =
! 	rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", bozo_rxsc, 3,
! 		      RXSTATS_ExecuteRequest);
      rx_SetMinProcs(tservice, 2);
      rx_SetMaxProcs(tservice, 4);
      rx_StartServer(1);		/* donate this process */
--- 1065,1072 ----
      rx_SetStackSize(tservice, BOZO_LWP_STACKSIZE);	/* so gethostbyname works (in cell stuff) */
  
      tservice =
! 	rx_NewServiceHost(host, 0, RX_STATS_SERVICE_ID, "rpcstats", bozo_rxsc,
! 			  3, RXSTATS_ExecuteRequest);
      rx_SetMinProcs(tservice, 2);
      rx_SetMaxProcs(tservice, 4);
      rx_StartServer(1);		/* donate this process */
Index: openafs/src/bubasics/NTMakefile
diff -c openafs/src/bubasics/NTMakefile:1.4 openafs/src/bubasics/NTMakefile:1.4.2.1
*** openafs/src/bubasics/NTMakefile:1.4	Fri Nov 21 03:00:24 2003
--- openafs/src/bubasics/NTMakefile	Mon Jul 31 17:51:19 2006
***************
*** 46,57 ****
  ############################################################################
  # rxgen on butc.xg and bumon.xg
  
! butc.h butc.xdr.c butc.ss.c butc.cs.c: butc.xg
! 	$(RXGEN) $**
  
! bumon.h bumon.xdr.c bumon.ss.c bumon.cs.c: bumon.xg
! 	$(RXGEN) $**
  
  
  ############################################################################
  # compile_et on butm_errs.et and butc_errs.et 
--- 46,74 ----
  ############################################################################
  # rxgen on butc.xg and bumon.xg
  
! butc.xdr.c: butc.xg butc.h
! 	$(RXGEN) -c -o $@ butc.xg
  
! butc.ss.c: butc.xg butc.h
! 	$(RXGEN) -S -o $@ butc.xg
  
+ butc.cs.c: butc.xg butc.h
+ 	$(RXGEN) -C -o $@ butc.xg
+ 
+ butc.h: butc.xg
+ 	$(RXGEN) -h -o $@ butc.xg
+ 
+ bumon.xdr.c: bumon.xg bumon.h
+ 	$(RXGEN) -c -o $@ bumon.xg
+ 
+ bumon.ss.c: bumon.xg bumon.h
+ 	$(RXGEN) -S -o $@ bumon.xg
+ 
+ bumon.cs.c: bumon.xg bumon.h
+ 	$(RXGEN) -C -o $@ bumon.xg
+ 
+ bumon.h: bumon.xg
+ 	$(RXGEN) -h -o $@ bumon.xg
  
  ############################################################################
  # compile_et on butm_errs.et and butc_errs.et 
Index: openafs/src/bucoord/commands.c
diff -c openafs/src/bucoord/commands.c:1.14.2.3 openafs/src/bucoord/commands.c:1.14.2.6
*** openafs/src/bucoord/commands.c:1.14.2.3	Mon Jul 11 15:29:33 2005
--- openafs/src/bucoord/commands.c	Mon Jul 31 12:36:32 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/commands.c,v 1.14.2.3 2005/07/11 19:29:33 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.14.2.6 2006/07/31 16:36:32 shadow Exp $");
  
  #include <afs/stds.h>
  #if defined(AFS_LINUX24_ENV)
***************
*** 1243,1249 ****
  		       &destServ, destPartition, fromDate, newExt, oldFlag,
  		       /*parentDump */ 0, /*dumpLevel */ 0,
  		       bc_Restorer, ports, portCount,
! 		       /*dumpSched */ 0, /*append */ 0, dontExecute);
      if (code)
  	com_err(whoami, code, "; Failed to queue restore");
  
--- 1243,1249 ----
  		       &destServ, destPartition, fromDate, newExt, oldFlag,
  		       /*parentDump */ 0, /*dumpLevel */ 0,
  		       bc_Restorer, ports, portCount,
! 		       /*dumpSched */ NULL, /*append */ 0, dontExecute);
      if (code)
  	com_err(whoami, code, "; Failed to queue restore");
  
***************
*** 1406,1412 ****
  		       &destServ, destPartition, fromDate, newExt, oldFlag,
  		       /*parentDump */ 0, /*dumpLevel */ 0,
  		       bc_Restorer, ports, portCount,
! 		       /*dumpSched */ 0, /*append */ 0, dontExecute);
      if (code)
  	com_err(whoami, code, "; Failed to queue restore");
  
--- 1406,1412 ----
  		       &destServ, destPartition, fromDate, newExt, oldFlag,
  		       /*parentDump */ 0, /*dumpLevel */ 0,
  		       bc_Restorer, ports, portCount,
! 		       /*dumpSched */ NULL, /*append */ 0, dontExecute);
      if (code)
  	com_err(whoami, code, "; Failed to queue restore");
  
***************
*** 1564,1574 ****
  
      /* Perform the call to start the restore */
      code = bc_StartDmpRst(bc_globalConfig, "disk", "restore", volsToRestore,
! 			  /*destserver */ 0, /*destpartition */ 0, fromDate,
  			  newExt, oldFlag,
  			  /*parentDump */ 0, /*dumpLevel */ 0,
  			  bc_Restorer, ports, portCount,
! 			  /*dumpSched */ 0, /*append */ 0, dontExecute);
      if (code)
  	com_err(whoami, code, "; Failed to queue restore");
  
--- 1564,1574 ----
  
      /* Perform the call to start the restore */
      code = bc_StartDmpRst(bc_globalConfig, "disk", "restore", volsToRestore,
! 			  /*destserver */ NULL, /*destpartition */ 0, fromDate,
  			  newExt, oldFlag,
  			  /*parentDump */ 0, /*dumpLevel */ 0,
  			  bc_Restorer, ports, portCount,
! 			  /*dumpSched */ NULL, /*append */ 0, dontExecute);
      if (code)
  	com_err(whoami, code, "; Failed to queue restore");
  
***************
*** 1962,1970 ****
  	return (0);
  
      code = bc_StartDmpRst(bc_globalConfig, dumpPath, vsName, volsToDump,
! 			  /*destServer */ 0, /*destPartition */ 0,
  			  /*fromDate */ 0,
! 			  /*newExt */ 0, /*oldFlag */ 0,
  			  parent, level, bc_Dumper, portp, /*portCount */ 1,
  			  baseds, doAppend, dontExecute);
      if (code)
--- 1962,1970 ----
  	return (0);
  
      code = bc_StartDmpRst(bc_globalConfig, dumpPath, vsName, volsToDump,
! 			  /*destServer */ NULL, /*destPartition */ 0,
  			  /*fromDate */ 0,
! 			  /*newExt */ NULL, /*oldFlag */ 0,
  			  parent, level, bc_Dumper, portp, /*portCount */ 1,
  			  baseds, doAppend, dontExecute);
      if (code)
Index: openafs/src/bucoord/dump_sched.c
diff -c openafs/src/bucoord/dump_sched.c:1.7.2.2 openafs/src/bucoord/dump_sched.c:1.7.2.3
*** openafs/src/bucoord/dump_sched.c:1.7.2.2	Sun Apr  3 14:48:29 2005
--- openafs/src/bucoord/dump_sched.c	Mon Jul 31 13:07:49 2006
***************
*** 17,23 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/dump_sched.c,v 1.7.2.2 2005/04/03 18:48:29 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <winsock2.h>
--- 17,23 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/dump_sched.c,v 1.7.2.3 2006/07/31 17:07:49 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <winsock2.h>
***************
*** 579,585 ****
  
      /* fetch the version number */
      code =
! 	ubik_Call(BUDB_GetTextVersion, uhptr->uh_client, 0, ctPtr->textType,
  		  &ctPtr->textVersion);
      if (code)
  	ERROR(code);
--- 579,585 ----
  
      /* fetch the version number */
      code =
! 	ubik_BUDB_GetTextVersion(uhptr->uh_client, 0, ctPtr->textType,
  		  &ctPtr->textVersion);
      if (code)
  	ERROR(code);
Index: openafs/src/bucoord/tape_hosts.c
diff -c openafs/src/bucoord/tape_hosts.c:1.7 openafs/src/bucoord/tape_hosts.c:1.7.2.1
*** openafs/src/bucoord/tape_hosts.c:1.7	Tue Jul 15 19:14:47 2003
--- openafs/src/bucoord/tape_hosts.c	Mon Jul 31 13:07:49 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/tape_hosts.c,v 1.7 2003/07/15 23:14:47 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/tape_hosts.c,v 1.7.2.1 2006/07/31 17:07:49 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 397,403 ****
  
      /* fetch the version number */
      code =
! 	ubik_Call(BUDB_GetTextVersion, uhptr->uh_client, 0, ctPtr->textType,
  		  &ctPtr->textVersion);
      if (code)
  	ERROR(code);
--- 397,403 ----
  
      /* fetch the version number */
      code =
! 	ubik_BUDB_GetTextVersion(uhptr->uh_client, 0, ctPtr->textType,
  		  &ctPtr->textVersion);
      if (code)
  	ERROR(code);
Index: openafs/src/bucoord/vol_sets.c
diff -c openafs/src/bucoord/vol_sets.c:1.10.2.1 openafs/src/bucoord/vol_sets.c:1.10.2.2
*** openafs/src/bucoord/vol_sets.c:1.10.2.1	Sun Apr  3 14:48:29 2005
--- openafs/src/bucoord/vol_sets.c	Mon Jul 31 13:07:49 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/vol_sets.c,v 1.10.2.1 2005/04/03 18:48:29 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/vol_sets.c,v 1.10.2.2 2006/07/31 17:07:49 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 708,714 ****
  
      /* fetch the version number */
      code =
! 	ubik_Call(BUDB_GetTextVersion, uhptr->uh_client, 0, ctPtr->textType,
  		  &ctPtr->textVersion);
      if (code)
  	ERROR(code);
--- 708,714 ----
  
      /* fetch the version number */
      code =
! 	ubik_BUDB_GetTextVersion(uhptr->uh_client, 0, ctPtr->textType,
  		  &ctPtr->textVersion);
      if (code)
  	ERROR(code);
Index: openafs/src/bucoord/volstub.c
diff -c openafs/src/bucoord/volstub.c:1.6 openafs/src/bucoord/volstub.c:1.6.2.1
*** openafs/src/bucoord/volstub.c:1.6	Sun Dec  7 17:49:19 2003
--- openafs/src/bucoord/volstub.c	Mon Jul 31 13:07:49 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/volstub.c,v 1.6 2003/12/07 22:49:19 jaltman Exp $");
  
  #include <sys/types.h>
  #include <stdio.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/bucoord/volstub.c,v 1.6.2.1 2006/07/31 17:07:49 shadow Exp $");
  
  #include <sys/types.h>
  #include <stdio.h>
***************
*** 45,51 ****
      afs_int32 code = 0;
  
      code =
! 	ubik_Call(VL_GetEntryByID, uclient, 0, volID, volType, vldbEntryPtr);
      return (code);
  }
  
--- 45,51 ----
      afs_int32 code = 0;
  
      code =
! 	ubik_VL_GetEntryByID(uclient, 0, volID, volType, vldbEntryPtr);
      return (code);
  }
  
Index: openafs/src/budb/Makefile.in
diff -c openafs/src/budb/Makefile.in:1.10 openafs/src/budb/Makefile.in:1.10.2.1
*** openafs/src/budb/Makefile.in:1.10	Tue Jul  1 15:14:29 2003
--- openafs/src/budb/Makefile.in	Mon Jul 31 13:07:49 2006
***************
*** 74,80 ****
  	${CC} ${LDFLAGS} -o budb_server $(SERVER_OBJS) ${LIBS} ${XLIBS}
  
  budb.cs.c: budb.rg
! 	${RXGEN} -C -o $@ ${srcdir}/budb.rg
  
  budb.ss.c: budb.rg
  	${RXGEN} -S -o $@ ${srcdir}/budb.rg
--- 74,80 ----
  	${CC} ${LDFLAGS} -o budb_server $(SERVER_OBJS) ${LIBS} ${XLIBS}
  
  budb.cs.c: budb.rg
! 	${RXGEN} -u -C -o $@ ${srcdir}/budb.rg
  
  budb.ss.c: budb.rg
  	${RXGEN} -S -o $@ ${srcdir}/budb.rg
***************
*** 83,89 ****
  	${RXGEN} -c -o $@ ${srcdir}/budb.rg
  
  budb.h: budb.rg
! 	${RXGEN} -h -o $@ ${srcdir}/budb.rg
  
  budb.cs.c: budb.h
  budb.xdr.c: budb.h
--- 83,89 ----
  	${RXGEN} -c -o $@ ${srcdir}/budb.rg
  
  budb.h: budb.rg
! 	${RXGEN} -u -h -o $@ ${srcdir}/budb.rg
  
  budb.cs.c: budb.h
  budb.xdr.c: budb.h
Index: openafs/src/budb/NTMakefile
diff -c openafs/src/budb/NTMakefile:1.8.2.1 openafs/src/budb/NTMakefile:1.8.2.2
*** openafs/src/budb/NTMakefile:1.8.2.1	Fri Mar 11 02:03:14 2005
--- openafs/src/budb/NTMakefile	Mon Jul 31 17:51:19 2006
***************
*** 91,98 ****
  
  ############################################################################
  # rxgen budb.rg
! budb.xdr.c budb.cs.c budb.ss.c 	$(INCFILEDIR)\budb.h: budb.rg
! 	$(RXGEN) $**
  	$(COPY) budb.h $(INCFILEDIR)\budb.h 
  
  ############################################################################
--- 91,110 ----
  
  ############################################################################
  # rxgen budb.rg
! 
! budb.cs.c: budb.rg budb.h
! 	$(RXGEN) -u -C -o $@ budb.rg
! 
! budb.ss.c: budb.rg budb.h
! 	$(RXGEN) -S -o $@ budb.rg
! 
! budb.xdr.c: budb.rg budb.h
! 	$(RXGEN) -c -o $@ budb.rg
! 
! budb.h: budb.rg
! 	$(RXGEN) -u -h -o budb.h budb.rg
! 
! $(INCFILEDIR)\budb.h: budb.h
  	$(COPY) budb.h $(INCFILEDIR)\budb.h 
  
  ############################################################################
Index: openafs/src/budb/server.c
diff -c openafs/src/budb/server.c:1.14.2.2 openafs/src/budb/server.c:1.14.2.4
*** openafs/src/budb/server.c:1.14.2.2	Mon Feb 13 12:57:27 2006
--- openafs/src/budb/server.c	Tue Jun 20 16:35:00 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/server.c,v 1.14.2.2 2006/02/13 17:57:27 jaltman Exp $");
  
  #include <fcntl.h>
  #include <sys/stat.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/server.c,v 1.14.2.4 2006/06/20 20:35:00 jaltman Exp $");
  
  #include <fcntl.h>
  #include <sys/stat.h>
***************
*** 76,81 ****
--- 76,86 ----
  /* debugging control */
  int debugging = 0;
  
+ int rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
+ 
  #if defined(AFS_PTHREAD_ENV)
  char *
  threadNum(void)
***************
*** 357,367 ****
      struct afsconf_cell cellinfo;
      time_t currentTime;
      afs_int32 code = 0;
  
      char  clones[MAXHOSTSPERCELL];
  
- 	
- 	
      struct rx_service *tservice;
      struct rx_securityClass *sca[3];
  
--- 362,371 ----
      struct afsconf_cell cellinfo;
      time_t currentTime;
      afs_int32 code = 0;
+     afs_uint32 host = ntohl(INADDR_ANY);
  
      char  clones[MAXHOSTSPERCELL];
  
      struct rx_service *tservice;
      struct rx_securityClass *sca[3];
  
***************
*** 517,522 ****
--- 521,547 ----
  
      rx_SetRxDeadTime(60);	/* 60 seconds inactive before timeout */
  
+     if (rxBind) {
+ 	afs_int32 ccode;
+ #ifndef AFS_NT40_ENV
+         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
+             AFSDIR_SERVER_NETINFO_FILEPATH) {
+             char reason[1024];
+             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
+                                            ADDRSPERSITE, reason,
+                                            AFSDIR_SERVER_NETINFO_FILEPATH,
+                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+         } else 
+ #endif	
+ 	{
+             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
+         }
+         if (ccode == 1) {
+             host = SHostAddrs[0];
+ 	    rx_InitHost(host, htons(AFSCONF_BUDBPORT));
+ 	}
+     }
+ 
      code = ubik_ServerInitByInfo (globalConfPtr->myHost,
  				  htons(AFSCONF_BUDBPORT), 
  				  &cellinfo,
***************
*** 540,546 ****
      rx_SetNoJumbo();
  
      tservice =
! 	rx_NewService(0, BUDB_SERVICE, "BackupDatabase", sca, 3,
  		      BUDB_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	LogError(0, "Could not create backup database rx service\n");
--- 565,571 ----
      rx_SetNoJumbo();
  
      tservice =
! 	rx_NewServiceHost(host, 0, BUDB_SERVICE, "BackupDatabase", sca, 3,
  		      BUDB_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	LogError(0, "Could not create backup database rx service\n");
Index: openafs/src/butc/dbentries.c
diff -c openafs/src/butc/dbentries.c:1.8 openafs/src/butc/dbentries.c:1.8.2.1
*** openafs/src/butc/dbentries.c:1.8	Sun Dec  7 17:49:23 2003
--- openafs/src/butc/dbentries.c	Sat Jul  1 01:04:12 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/dbentries.c,v 1.8 2003/12/07 22:49:23 jaltman Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/dbentries.c,v 1.8.2.1 2006/07/01 05:04:12 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
***************
*** 46,54 ****
  int dbWatcherinprogress;
  
  afs_int32
! threadEntryDir(anEntry, size, type)
!      char *anEntry;
!      afs_int32 size, type;
  {
      dlqlinkP entryPtr;
      char *entry = NULL;
--- 46,52 ----
  int dbWatcherinprogress;
  
  afs_int32
! threadEntryDir(char *anEntry, afs_int32 size, afs_int32 type)
  {
      dlqlinkP entryPtr;
      char *entry = NULL;
***************
*** 91,99 ****
   */
  
  afs_int32
! threadEntry(anEntry, size, type)
!      char *anEntry;
!      afs_int32 size, type;
  {
      dlqlinkP entryPtr;
      char *entry = NULL;
--- 89,95 ----
   */
  
  afs_int32
! threadEntry(char *anEntry, afs_int32 size, afs_int32 type)
  {
      dlqlinkP entryPtr;
      char *entry = NULL;
***************
*** 132,139 ****
  /* ------------------------------------------------------------------ */
  
  afs_int32
! useDump(dumpEntryPtr)
!      struct budb_dumpEntry *dumpEntryPtr;
  {
      afs_int32 code = 0;
  
--- 128,134 ----
  /* ------------------------------------------------------------------ */
  
  afs_int32
! useDump(struct budb_dumpEntry *dumpEntryPtr)
  {
      afs_int32 code = 0;
  
***************
*** 147,154 ****
   *     Creates a dump entry (finished) and puts it onto the savedEntries list.
   */
  afs_int32
! finishDump(aDumpEntryPtr)
!      struct budb_dumpEntry *aDumpEntryPtr;
  {
      afs_int32 code = 0;
  
--- 142,148 ----
   *     Creates a dump entry (finished) and puts it onto the savedEntries list.
   */
  afs_int32
! finishDump(struct budb_dumpEntry *aDumpEntryPtr)
  {
      afs_int32 code = 0;
  
***************
*** 163,178 ****
   *     Creates a tape entry and puts it onto the savedEntries list.
   */
  afs_int32
! useTape(aTapeEntryPtr, dumpID, tapename, tapeSeq, useCount, written,
! 	expiration, tapepos)
!      struct budb_tapeEntry *aTapeEntryPtr;
!      afs_int32 dumpID;
!      char *tapename;
!      afs_int32 tapeSeq;
!      afs_int32 useCount;
!      Date written;
!      Date expiration;
!      afs_int32 tapepos;
  {
      afs_int32 code = 0;
  
--- 157,163 ----
   *     Creates a tape entry and puts it onto the savedEntries list.
   */
  afs_int32
! useTape(struct budb_tapeEntry *aTapeEntryPtr, afs_int32 dumpID, char *tapename, afs_int32 tapeSeq, afs_int32 useCount, Date written, Date expiration, afs_int32 tapepos)
  {
      afs_int32 code = 0;
  
***************
*** 197,205 ****
   *     Creates a tape entry (finished) and puts it onto the savedEntries list.
   */
  afs_int32
! finishTape(aTapeEntryPtr, useKBytes)
!      struct budb_tapeEntry *aTapeEntryPtr;
!      afs_int32 useKBytes;
  {
      afs_int32 code = 0;
  
--- 182,188 ----
   *     Creates a tape entry (finished) and puts it onto the savedEntries list.
   */
  afs_int32
! finishTape(struct budb_tapeEntry *aTapeEntryPtr, afs_int32 useKBytes)
  {
      afs_int32 code = 0;
  
***************
*** 217,234 ****
   *     Creates a volume entry and puts it onto the savedEntries list.
   */
  afs_int32
! addVolume(aVolEntryPtr, dumpID, tapename, volname, volid, cloneDate, startPos,
! 	  volBytes, fragment, flags)
!      struct budb_volumeEntry *aVolEntryPtr;
!      afs_int32 dumpID;
!      char *tapename;
!      char *volname;
!      afs_int32 volid;
!      Date cloneDate;
!      afs_int32 startPos;
!      afs_int32 volBytes;
!      int fragment;
!      afs_int32 flags;
  {
      afs_int32 code = 0;
      int allo = 0;
--- 200,206 ----
   *     Creates a volume entry and puts it onto the savedEntries list.
   */
  afs_int32
! addVolume(struct budb_volumeEntry *aVolEntryPtr, afs_int32 dumpID, char *tapename, char *volname, afs_int32 volid, Date cloneDate, afs_int32 startPos, afs_int32 volBytes, int fragment, afs_int32 flags)
  {
      afs_int32 code = 0;
      int allo = 0;
***************
*** 270,277 ****
   *     and tapes and volumes should not be added to the DB.
   */
  afs_int32
! flushSavedEntries(status)
!      afs_int32 status;
  {
      dlqlinkP entryPtr;
      struct budb_tapeEntry *tapePtr;
--- 242,248 ----
   *     and tapes and volumes should not be added to the DB.
   */
  afs_int32
! flushSavedEntries(afs_int32 status)
  {
      dlqlinkP entryPtr;
      struct budb_tapeEntry *tapePtr;
***************
*** 318,323 ****
--- 289,295 ----
      return (code);
  }
  
+ void
  waitDbWatcher()
  {
      int message = 0;
***************
*** 342,347 ****
--- 314,320 ----
  #define MAXVOLUMESTOADD 100
  int addvolumes = 1;
  
+ void
  dbWatcher()
  {
      dlqlinkP entryPtr;
Index: openafs/src/butc/list.c
diff -c openafs/src/butc/list.c:1.8 openafs/src/butc/list.c:1.8.2.1
*** openafs/src/butc/list.c:1.8	Sun Dec  7 17:49:23 2003
--- openafs/src/butc/list.c	Sat Jul  1 01:04:12 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/list.c,v 1.8 2003/12/07 22:49:23 jaltman Exp $");
  
  #ifndef AFS_NT40_ENV
  #include <sys/time.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/list.c,v 1.8.2.1 2006/07/01 05:04:12 shadow Exp $");
  
  #ifndef AFS_NT40_ENV
  #include <sys/time.h>
***************
*** 40,60 ****
  }
  
  
- #ifdef notdef
- void static
- DisplayNode(nodePtr)
-      struct dumpNode *nodePtr;
- {
-     TapeLog(99, nodePtr->dumpId, "Created dumpNode");
-     return;
- 
- }
- #endif
- 
  /* initialize the node list used to keep track of the active dumps */
  void
! InitNodeList(portOffset)
!      afs_int32 portOffset;
  {
      maxTaskID = (portOffset * 1000) + 1;	/* this is the first task id alotted */
      headNode.taskID = -1;
--- 40,48 ----
  }
  
  
  /* initialize the node list used to keep track of the active dumps */
  void
! InitNodeList(afs_int32 portOffset)
  {
      maxTaskID = (portOffset * 1000) + 1;	/* this is the first task id alotted */
      headNode.taskID = -1;
***************
*** 74,81 ****
   */
  
  void
! CreateNode(newNode)
!      struct dumpNode **newNode;
  {
      /* get space */
      *newNode = (struct dumpNode *)(malloc(sizeof(struct dumpNode)));
--- 62,68 ----
   */
  
  void
! CreateNode(struct dumpNode **newNode)
  {
      /* get space */
      *newNode = (struct dumpNode *)(malloc(sizeof(struct dumpNode)));
***************
*** 91,98 ****
  
  /* free the space allotted to the node with <taskID> */
  void
! FreeNode(taskID)
!      afs_int32 taskID;
  {
      struct dumpNode *oldPtr, *newPtr, *curPtr;
      int done;
--- 78,84 ----
  
  /* free the space allotted to the node with <taskID> */
  void
! FreeNode(afs_int32 taskID)
  {
      struct dumpNode *oldPtr, *newPtr, *curPtr;
      int done;
***************
*** 132,140 ****
  }
  
  afs_int32
! GetNthNode(aindex, aresult)
!      afs_int32 aindex;
!      afs_int32 *aresult;
  {
      register struct dumpNode *tn;
      register int i;
--- 118,124 ----
  }
  
  afs_int32
! GetNthNode(afs_int32 aindex, afs_int32 *aresult)
  {
      register struct dumpNode *tn;
      register int i;
***************
*** 155,163 ****
  
  /* return the node with <taskID> into <resultNode> */
  afs_int32
! GetNode(taskID, resultNode)
!      afs_int32 taskID;
!      struct dumpNode **resultNode;
  {
      struct dumpNode *tmpPtr;
      int done;
--- 139,145 ----
  
  /* return the node with <taskID> into <resultNode> */
  afs_int32
! GetNode(afs_int32 taskID, struct dumpNode **resultNode)
  {
      struct dumpNode *tmpPtr;
      int done;
Index: openafs/src/butc/recoverDb.c
diff -c openafs/src/butc/recoverDb.c:1.10.2.3 openafs/src/butc/recoverDb.c:1.10.2.4
*** openafs/src/butc/recoverDb.c:1.10.2.3	Mon Jul 11 15:29:36 2005
--- openafs/src/butc/recoverDb.c	Sat Jul  1 01:04:12 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/recoverDb.c,v 1.10.2.3 2005/07/11 19:29:36 shadow Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/recoverDb.c,v 1.10.2.4 2006/07/01 05:04:12 shadow Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
***************
*** 54,62 ****
  /* PrintDumpLabel
   *	print out the tape (dump) label.
   */
! 
! PrintDumpLabel(labelptr)
!      struct butm_tapeLabel *labelptr;
  {
      char tapeName[BU_MAXTAPELEN + 32];
      time_t t;
--- 54,61 ----
  /* PrintDumpLabel
   *	print out the tape (dump) label.
   */
! void
! PrintDumpLabel(struct butm_tapeLabel *labelptr)
  {
      char tapeName[BU_MAXTAPELEN + 32];
      time_t t;
***************
*** 87,95 ****
  /* PrintVolumeHeader
   *	print the contents of a volume header. 
   */
! static
! PrintVolumeHeader(volHeader)
!      struct volumeHeader *volHeader;
  {
      time_t t;
  
--- 86,93 ----
  /* PrintVolumeHeader
   *	print the contents of a volume header. 
   */
! static void
! PrintVolumeHeader(struct volumeHeader *volHeader)
  {
      time_t t;
  
***************
*** 115,122 ****
   */
  
  afs_int32
! Ask(st)
!      char *st;
  {
      int response;
  
--- 113,119 ----
   */
  
  afs_int32
! Ask(char *st)
  {
      int response;
  
***************
*** 152,165 ****
   */
  #define BIGCHUNK 102400
  
! static
! scanVolData(taskId, curTapePtr, tapeVersion, volumeHeader, volumeTrailer,
! 	    bytesRead)
!      afs_int32 taskId;
!      struct butm_tapeInfo *curTapePtr;
!      afs_int32 tapeVersion;
!      struct volumeHeader *volumeHeader, *volumeTrailer;
!      afs_uint32 *bytesRead;
  {
      afs_int32 headBytes, tailBytes;
      char *block = NULL;
--- 149,156 ----
   */
  #define BIGCHUNK 102400
  
! static int
! scanVolData(afs_int32 taskId, struct butm_tapeInfo *curTapePtr, afs_int32 tapeVersion, struct volumeHeader *volumeHeader, struct volumeHeader *volumeTrailer, afs_uint32 *bytesRead)
  {
      afs_int32 headBytes, tailBytes;
      char *block = NULL;
***************
*** 290,297 ****
   */
  
  char *
! nextTapeLabel(prevTapeName)
!      char *prevTapeName;
  {
      char *prevdot;
      char *retval;
--- 281,287 ----
   */
  
  char *
! nextTapeLabel(char *prevTapeName)
  {
      char *prevdot;
      char *retval;
***************
*** 331,341 ****
  
  afs_int32 RcreateDump();
  
! static
! readDump(taskId, tapeInfoPtr, scanInfoPtr)
!      afs_uint32 taskId;
!      struct butm_tapeInfo *tapeInfoPtr;
!      struct tapeScanInfo *scanInfoPtr;
  {
      int moreTapes = 1;
      afs_int32 nbytes, flags, seq;
--- 321,328 ----
  
  afs_int32 RcreateDump();
  
! static int
! readDump(afs_uint32 taskId, struct butm_tapeInfo *tapeInfoPtr, struct tapeScanInfo *scanInfoPtr)
  {
      int moreTapes = 1;
      afs_int32 nbytes, flags, seq;
***************
*** 577,586 ****
   * try to read that dump too.
   * The first tape label is the first dumpLabel.
   */
! readDumps(taskId, tapeInfoPtr, scanInfoPtr)
!      afs_uint32 taskId;
!      struct butm_tapeInfo *tapeInfoPtr;
!      struct tapeScanInfo *scanInfoPtr;
  {
      afs_int32 code, c;
  
--- 564,571 ----
   * try to read that dump too.
   * The first tape label is the first dumpLabel.
   */
! int
! readDumps(afs_uint32 taskId, struct butm_tapeInfo *tapeInfoPtr, struct tapeScanInfo *scanInfoPtr)
  {
      afs_int32 code, c;
  
***************
*** 611,623 ****
  }
  
  afs_int32
! getScanTape(taskId, tapeInfoPtr, tname, tapeId, prompt, tapeLabelPtr)
!      afs_int32 taskId;
!      struct butm_tapeInfo *tapeInfoPtr;
!      char *tname;
!      afs_int32 tapeId;
!      int prompt;
!      struct butm_tapeLabel *tapeLabelPtr;
  {
      afs_int32 code = 0;
      int tapecount = 1;
--- 596,602 ----
  }
  
  afs_int32
! getScanTape(afs_int32 taskId, struct butm_tapeInfo *tapeInfoPtr, char *tname, afs_int32 tapeId, int prompt, struct butm_tapeLabel *tapeLabelPtr)
  {
      afs_int32 code = 0;
      int tapecount = 1;
***************
*** 710,717 ****
   *	
   */
  
! ScanDumps(ptr)
!      struct scanTapeIf *ptr;
  {
      struct butm_tapeInfo curTapeInfo;
      struct tapeScanInfo tapeScanInfo;
--- 689,696 ----
   *	
   */
  
! int
! ScanDumps(struct scanTapeIf *ptr)
  {
      struct butm_tapeInfo curTapeInfo;
      struct tapeScanInfo tapeScanInfo;
***************
*** 778,786 ****
   *	0 - not ok
   *	1 - ok
   */
! validatePath(labelptr, pathptr)
!      struct butm_tapeLabel *labelptr;
!      char *pathptr;
  {
      char *up, *tp;
      char tapeName[BU_MAXTAPELEN];
--- 757,764 ----
   *	0 - not ok
   *	1 - ok
   */
! int
! validatePath(struct butm_tapeLabel *labelptr, char *pathptr)
  {
      char *up, *tp;
      char tapeName[BU_MAXTAPELEN];
***************
*** 828,835 ****
   */
  
  char *
! volumesetNamePtr(ptr)
!      char *ptr;
  {
      static char vsname[BU_MAXUNAMELEN];
      char *dotPtr;
--- 806,812 ----
   */
  
  char *
! volumesetNamePtr(char *ptr)
  {
      static char vsname[BU_MAXUNAMELEN];
      char *dotPtr;
***************
*** 850,857 ****
  }
  
  char *
! extractDumpName(ptr)
!      char *ptr;
  {
      static char dname[BU_MAXTAPELEN];
      char *dotPtr;
--- 827,833 ----
  }
  
  char *
! extractDumpName(char *ptr)
  {
      static char dname[BU_MAXTAPELEN];
      char *dotPtr;
***************
*** 882,889 ****
   *	-1 - error, couldn't extract sequence number
   */
  
! extractTapeSeq(tapename)
!      char *tapename;
  {
      char *sptr;
  
--- 858,865 ----
   *	-1 - error, couldn't extract sequence number
   */
  
! int
! extractTapeSeq(char *tapename)
  {
      char *sptr;
  
***************
*** 899,906 ****
   *   a database tape or not.
   */
  int
! databaseTape(tapeName)
!      char *tapeName;
  {
      char *sptr;
      int c;
--- 875,881 ----
   *   a database tape or not.
   */
  int
! databaseTape(char *tapeName)
  {
      char *sptr;
      int c;
***************
*** 917,925 ****
  }
  
  afs_int32
! RcreateDump(tapeScanInfoPtr, volHeaderPtr)
!      struct tapeScanInfo *tapeScanInfoPtr;
!      struct volumeHeader *volHeaderPtr;
  {
      afs_int32 code;
      struct butm_tapeLabel *dumpLabelPtr = &tapeScanInfoPtr->dumpLabel;
--- 892,898 ----
  }
  
  afs_int32
! RcreateDump(struct tapeScanInfo *tapeScanInfoPtr, struct volumeHeader *volHeaderPtr)
  {
      afs_int32 code;
      struct butm_tapeLabel *dumpLabelPtr = &tapeScanInfoPtr->dumpLabel;
Index: openafs/src/butc/tcmain.c
diff -c openafs/src/butc/tcmain.c:1.14.2.2 openafs/src/butc/tcmain.c:1.14.2.6
*** openafs/src/butc/tcmain.c:1.14.2.2	Mon Oct 18 13:43:54 2004
--- openafs/src/butc/tcmain.c	Sat Jul  1 01:04:12 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/tcmain.c,v 1.14.2.2 2004/10/18 17:43:54 shadow Exp $");
  
  #include <sys/types.h>
  #include <sys/stat.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/tcmain.c,v 1.14.2.6 2006/07/01 05:04:12 shadow Exp $");
  
  #include <sys/types.h>
  #include <sys/stat.h>
***************
*** 106,111 ****
--- 106,115 ----
  afs_int32 BufferSize;		/* Size in B stored for data */
  char *centralLogFile;
  afs_int32 lastLog;		/* Log last pass info */
+ int rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
  
  /* dummy routine for the audit work.  It should do nothing since audits */
  /* occur at the server level and bos is not a server. */
***************
*** 115,122 ****
  }
  
  static afs_int32
! SafeATOL(anum)
!      register char *anum;
  {
      register afs_int32 total;
      register int tc;
--- 119,125 ----
  }
  
  static afs_int32
! SafeATOL(register char *anum)
  {
      register afs_int32 total;
      register int tc;
***************
*** 151,160 ****
   *	should deal with signed numbers. Should signal error if no digits
   *	seen.
   */
! atocl(numstring, crunit, number)
!      char *numstring;
!      char crunit;		/* Units to report number in */
!      afs_int32 *number;
  {
      float total;
      afs_int32 runits;
--- 154,161 ----
   *	should deal with signed numbers. Should signal error if no digits
   *	seen.
   */
! int
! atocl(char *numstring, char crunit, afs_int32 *number)
  {
      float total;
      afs_int32 runits;
***************
*** 251,258 ****
  
  /* replace last two ocurrences of / by _ */
  static
! stringReplace(name)
!      char *name;
  {
      char *pos;
      char buffer[256];
--- 252,258 ----
  
  /* replace last two ocurrences of / by _ */
  static
! stringReplace(char *name)
  {
      char *pos;
      char buffer[256];
***************
*** 267,275 ****
  }
  
  static
! stringNowReplace(logFile, deviceName)
!      char *logFile, *deviceName;
! 
  {
      char *pos = 0;
      char storeDevice[256];
--- 267,273 ----
  }
  
  static
! stringNowReplace(char *logFile, char *deviceName)
  {
      char *pos = 0;
      char storeDevice[256];
***************
*** 319,328 ****
  
  #define	LINESIZE	256
  static afs_int32
! GetDeviceConfig(filename, config, portOffset)
!      char *filename;
!      struct tapeConfig *config;
!      afs_int32 portOffset;
  {
      FILE *devFile = 0;
      char line[LINESIZE];
--- 317,323 ----
  
  #define	LINESIZE	256
  static afs_int32
! GetDeviceConfig(char *filename, struct tapeConfig *config, afs_int32 portOffset)
  {
      FILE *devFile = 0;
      char line[LINESIZE];
***************
*** 411,419 ****
  /* GetConfigParams
   */
  static afs_int32
! GetConfigParams(filename, port)
!      char *filename;
!      afs_int32 port;
  {
      char paramFile[256];
      FILE *devFile = 0;
--- 406,412 ----
  /* GetConfigParams
   */
  static afs_int32
! GetConfigParams(char *filename, afs_int32 port)
  {
      char paramFile[256];
      FILE *devFile = 0;
***************
*** 836,845 ****
      return (code);
  }
  
! static
! WorkerBee(as, arock)
!      struct cmd_syndesc *as;
!      char *arock;
  {
      register afs_int32 code;
      struct rx_securityClass *(securityObjects[3]);
--- 829,836 ----
      return (code);
  }
  
! static int
! WorkerBee(struct cmd_syndesc *as, char *arock)
  {
      register afs_int32 code;
      struct rx_securityClass *(securityObjects[3]);
***************
*** 857,862 ****
--- 848,854 ----
      PROCESS dbWatcherPid;
  #endif
      time_t t;
+     afs_uint32 host = htonl(INADDR_ANY);
  
      debugLevel = 0;
  
***************
*** 1039,1046 ****
  	autoQuery = 0;
  
      localauth = (as->parms[5].items ? 1 : 0);
  
!     code = rx_Init(htons(BC_TAPEPORT + portOffset));
      if (code) {
  	TapeLog(0, 0, code, 0, "rx init failed on port %u\n",
  		BC_TAPEPORT + portOffset);
--- 1031,1058 ----
  	autoQuery = 0;
  
      localauth = (as->parms[5].items ? 1 : 0);
+     rxBind = (as->parms[8].items ? 1 : 0);
+ 
+     if (rxBind) {
+         afs_int32 ccode;
+ #ifndef AFS_NT40_ENV
+         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
+             AFSDIR_SERVER_NETINFO_FILEPATH) {
+             char reason[1024];
+             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
+                                            ADDRSPERSITE, reason,
+                                            AFSDIR_SERVER_NETINFO_FILEPATH,
+                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+         } else 
+ #endif	
+ 	{
+             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
+         }
+         if (ccode == 1) 
+             host = SHostAddrs[0];
+     }
  
!     code = rx_InitHost(host, htons(BC_TAPEPORT + portOffset));
      if (code) {
  	TapeLog(0, 0, code, 0, "rx init failed on port %u\n",
  		BC_TAPEPORT + portOffset);
***************
*** 1080,1086 ****
      }
  
      service =
! 	rx_NewService(0, 1, "BUTC", securityObjects, 3, TC_ExecuteRequest);
      if (!service) {
  	TLog(0, "rx_NewService");
  	exit(1);
--- 1092,1098 ----
      }
  
      service =
! 	rx_NewServiceHost(host, 0, 1, "BUTC", securityObjects, 3, TC_ExecuteRequest);
      if (!service) {
  	TLog(0, "rx_NewService");
  	exit(1);
***************
*** 1144,1152 ****
  #include "AFS_component_version_number.c"
  #endif
  
! main(argc, argv)
!      int argc;
!      char **argv;
  {
      register struct cmd_syndesc *ts;
      register struct cmd_item *ti;
--- 1156,1163 ----
  #include "AFS_component_version_number.c"
  #endif
  
! int
! main(int argc, char **argv)
  {
      register struct cmd_syndesc *ts;
      register struct cmd_item *ti;
***************
*** 1183,1188 ****
--- 1194,1201 ----
  		"file to restore to");
      cmd_AddParm(ts, "-xbsaforcemultiple", CMD_FLAG, (CMD_OPTIONAL | CMD_HIDE),
  		"Force multiple XBSA server support");
+     cmd_AddParm(ts, "-rxbind", CMD_FLAG, CMD_OPTIONAL,
+ 		"bind Rx socket");
  
      /* Initialize dirpaths */
      if (!(initAFSDirPath() & AFSDIR_SERVER_PATHS_OK)) {
Index: openafs/src/butc/tcprocs.c
diff -c openafs/src/butc/tcprocs.c:1.12.2.2 openafs/src/butc/tcprocs.c:1.12.2.3
*** openafs/src/butc/tcprocs.c:1.12.2.2	Sun Apr  3 14:48:29 2005
--- openafs/src/butc/tcprocs.c	Sat Jul  1 01:04:12 2006
***************
*** 13,19 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/tcprocs.c,v 1.12.2.2 2005/04/03 18:48:29 shadow Exp $");
  
  #include <sys/types.h>
  #include <errno.h>
--- 13,19 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/tcprocs.c,v 1.12.2.3 2006/07/01 05:04:12 shadow Exp $");
  
  #include <sys/types.h>
  #include <errno.h>
***************
*** 42,49 ****
  #include "error_macros.h"
  #include "butc_xbsa.h"
  
! callPermitted(call)
!      struct rx_call *call;
  {
      /* before this code can be used, the rx connection, on the bucoord side, must */
      /* be changed so that it will set up for token passing instead of using  a    */
--- 42,49 ----
  #include "error_macros.h"
  #include "butc_xbsa.h"
  
! int
! callPermitted(struct rx_call *call)
  {
      /* before this code can be used, the rx connection, on the bucoord side, must */
      /* be changed so that it will set up for token passing instead of using  a    */
***************
*** 57,65 ****
   */
  
  static int
! CopyDumpDesc(toDump, fromDump)
!      struct tc_dumpDesc *toDump;
!      tc_dumpArray *fromDump;
  {
      struct tc_dumpDesc *toPtr, *fromPtr;
      int i;
--- 57,63 ----
   */
  
  static int
! CopyDumpDesc(struct tc_dumpDesc *toDump, tc_dumpArray *fromDump)
  {
      struct tc_dumpDesc *toPtr, *fromPtr;
      int i;
***************
*** 82,90 ****
  
  
  static int
! CopyRestoreDesc(toRestore, fromRestore)
!      struct tc_restoreDesc *toRestore;
!      tc_restoreArray *fromRestore;
  {
      struct tc_restoreDesc *toPtr, *fromPtr;
      int i;
--- 80,86 ----
  
  
  static int
! CopyRestoreDesc(struct tc_restoreDesc *toRestore, tc_restoreArray *fromRestore)
  {
      struct tc_restoreDesc *toPtr, *fromPtr;
      int i;
***************
*** 112,119 ****
  }
  
  static int
! CopyTapeSetDesc(toPtr, fromPtr)
!      struct tc_tapeSet *toPtr, *fromPtr;
  {
  
      toPtr->id = fromPtr->id;
--- 108,114 ----
  }
  
  static int
! CopyTapeSetDesc(struct tc_tapeSet *toPtr, struct tc_tapeSet *fromPtr)
  {
  
      toPtr->id = fromPtr->id;
***************
*** 134,143 ****
   */
  
  afs_int32
! STC_LabelTape(acid, label, taskId)
!      struct rx_call *acid;
!      struct tc_tapeLabel *label;
!      afs_uint32 *taskId;
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
--- 129,135 ----
   */
  
  afs_int32
! STC_LabelTape(struct rx_call *acid, struct tc_tapeLabel *label, afs_uint32 *taskId)
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
***************
*** 217,227 ****
   */
  
  afs_int32
! STC_PerformDump(rxCallId, tcdiPtr, tc_dumpArrayPtr, taskId)
!      struct rx_call *rxCallId;
!      struct tc_dumpInterface *tcdiPtr;
!      tc_dumpArray *tc_dumpArrayPtr;
!      afs_int32 *taskId;
  {
      struct dumpNode *newNode = 0;
      statusP statusPtr = 0;
--- 209,215 ----
   */
  
  afs_int32
! STC_PerformDump(struct rx_call *rxCallId, struct tc_dumpInterface *tcdiPtr, tc_dumpArray *tc_dumpArrayPtr, afs_int32 *taskId)
  {
      struct dumpNode *newNode = 0;
      statusP statusPtr = 0;
***************
*** 320,330 ****
  }
  
  afs_int32
! STC_PerformRestore(acid, dumpSetName, arestores, taskID)
!      struct rx_call *acid;
!      char *dumpSetName;		/* not used */
!      tc_restoreArray *arestores;
!      afs_int32 *taskID;
  {
      struct dumpNode *newNode;
      statusP statusPtr;
--- 308,314 ----
  }
  
  afs_int32
! STC_PerformRestore(struct rx_call *acid, char *dumpSetName, tc_restoreArray *arestores, afs_int32 *taskID)
  {
      struct dumpNode *newNode;
      statusP statusPtr;
***************
*** 401,410 ****
  }
  
  afs_int32
! STC_ReadLabel(acid, label, taskId)
!      struct rx_call *acid;
!      struct tc_tapeLabel *label;
!      afs_uint32 *taskId;
  {
      afs_int32 code;
  
--- 385,391 ----
  }
  
  afs_int32
! STC_ReadLabel(struct rx_call *acid, struct tc_tapeLabel *label, afs_uint32 *taskId)
  {
      afs_int32 code;
  
***************
*** 427,435 ****
   */
  
  afs_int32
! STC_RestoreDb(rxCall, taskId)
!      struct rx_call *rxCall;
!      afs_uint32 *taskId;
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
--- 408,414 ----
   */
  
  afs_int32
! STC_RestoreDb(struct rx_call *rxCall, afs_uint32 *taskId)
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
***************
*** 499,508 ****
   */
  
  afs_int32
! STC_SaveDb(rxCall, archiveTime, taskId)
!      struct rx_call *rxCall;
!      Date archiveTime;
!      afs_uint32 *taskId;
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
--- 478,484 ----
   */
  
  afs_int32
! STC_SaveDb(struct rx_call *rxCall, Date archiveTime, afs_uint32 *taskId)
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
***************
*** 585,594 ****
   */
  
  afs_int32
! STC_ScanDumps(acid, addDbFlag, taskId)
!      struct rx_call *acid;
!      afs_int32 addDbFlag;
!      afs_uint32 *taskId;
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
--- 561,567 ----
   */
  
  afs_int32
! STC_ScanDumps(struct rx_call *acid, afs_int32 addDbFlag, afs_uint32 *taskId)
  {
  #ifdef AFS_PTHREAD_ENV
      pthread_t pid;
***************
*** 667,675 ****
   */
  
  afs_int32
! STC_TCInfo(acid, tciptr)
!      struct rx_call *acid;
!      struct tc_tcInfo *tciptr;
  {
      if (callPermitted(acid) == 0)
  	return (TC_NOTPERMITTED);
--- 640,646 ----
   */
  
  afs_int32
! STC_TCInfo(struct rx_call *acid, struct tc_tcInfo *tciptr)
  {
      if (callPermitted(acid) == 0)
  	return (TC_NOTPERMITTED);
***************
*** 681,690 ****
  /* STC_DeleteDump
   */
  afs_int32
! STC_DeleteDump(acid, dumpID, taskId)
!      struct rx_call *acid;
!      afs_uint32 dumpID;
!      afs_uint32 *taskId;
  {
      struct deleteDumpIf *ptr = 0;
      statusP statusPtr = 0;
--- 652,658 ----
  /* STC_DeleteDump
   */
  afs_int32
! STC_DeleteDump(struct rx_call *acid, afs_uint32 dumpID, afs_uint32 *taskId)
  {
      struct deleteDumpIf *ptr = 0;
      statusP statusPtr = 0;
Index: openafs/src/butc/tcudbprocs.c
diff -c openafs/src/butc/tcudbprocs.c:1.14.2.1 openafs/src/butc/tcudbprocs.c:1.14.2.2
*** openafs/src/butc/tcudbprocs.c:1.14.2.1	Sun Apr  3 14:48:29 2005
--- openafs/src/butc/tcudbprocs.c	Mon Jul 31 13:07:50 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/tcudbprocs.c,v 1.14.2.1 2005/04/03 18:48:29 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/tcudbprocs.c,v 1.14.2.2 2006/07/31 17:07:50 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
***************
*** 1168,1174 ****
  
      /* Add the database header to the database */
      code =
! 	ubik_Call(BUDB_RestoreDbHeader, udbHandle.uh_client, 0,
  		  &hostDbHeader);
      if (code) {
  	ErrorLog(0, rstTapeInfoPtr->taskId, code, 0,
--- 1168,1174 ----
  
      /* Add the database header to the database */
      code =
! 	ubik_BUDB_RestoreDbHeader(udbHandle.uh_client, 0,
  		  &hostDbHeader);
      if (code) {
  	ErrorLog(0, rstTapeInfoPtr->taskId, code, 0,
Index: openafs/src/butc/test_budb.c
diff -c openafs/src/butc/test_budb.c:1.5 openafs/src/butc/test_budb.c:1.5.2.1
*** openafs/src/butc/test_budb.c:1.5	Tue Jul 15 19:14:49 2003
--- openafs/src/butc/test_budb.c	Mon Jul 31 13:07:50 2006
***************
*** 14,20 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/test_budb.c,v 1.5 2003/07/15 23:14:49 shadow Exp $");
  
  #include <afs/auth.h>
  #include <afs/budb_client.h>
--- 14,20 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/butc/test_budb.c,v 1.5.2.1 2006/07/31 17:07:50 shadow Exp $");
  
  #include <afs/auth.h>
  #include <afs/budb_client.h>
***************
*** 55,61 ****
      }
  
      /* Get the versin */
!     code = ubik_Call(BUDB_T_GetVersion, udbHandle.uh_client, 0, &version);
      if (code) {
  	printf("Error in ubik_Call to BUDB_T_GetVersion\n");
  	ERROR(code);
--- 55,61 ----
      }
  
      /* Get the versin */
!     code = ubik_BUDB_T_GetVersion(udbHandle.uh_client, 0, &version);
      if (code) {
  	printf("Error in ubik_Call to BUDB_T_GetVersion\n");
  	ERROR(code);
***************
*** 73,79 ****
      afs_int32 status, orphans, host;
  
      code =
! 	ubik_Call(BUDB_DbVerify, udbHandle.uh_client, 0, &status, &orphans,
  		  &host);
      if (code) {
  	printf("Error in ubik_Call to BUDB_DbVerify\n");
--- 73,79 ----
      afs_int32 status, orphans, host;
  
      code =
! 	ubik_BUDB_DbVerify(udbHandle.uh_client, 0, &status, &orphans,
  		  &host);
      if (code) {
  	printf("Error in ubik_Call to BUDB_DbVerify\n");
Index: openafs/src/cf/bigendian.m4
diff -c openafs/src/cf/bigendian.m4:1.3 openafs/src/cf/bigendian.m4:1.3.2.1
*** openafs/src/cf/bigendian.m4:1.3	Thu Jun  3 01:13:29 2004
--- openafs/src/cf/bigendian.m4	Wed Aug  2 15:07:03 2006
***************
*** 1,5 ****
  dnl
! dnl $Id: bigendian.m4,v 1.3 2004/06/03 05:13:29 shadow Exp $
  dnl
  
  dnl check if this computer is little or big-endian
--- 1,5 ----
  dnl
! dnl $Id: bigendian.m4,v 1.3.2.1 2006/08/02 19:07:03 shadow Exp $
  dnl
  
  dnl check if this computer is little or big-endian
***************
*** 45,51 ****
    fi
  ])
  if test "$openafs_cv_c_bigendian" = "yes"; then
!   AC_DEFINE(WORDS_BIGENDIAN, 1, [define if target is big endian])dnl
  fi
  if test "$openafs_cv_c_bigendian_compile" = "yes"; then
    AC_DEFINE(ENDIANESS_IN_SYS_PARAM_H, 1, [define if sys/param.h defines the endiness])dnl
--- 45,51 ----
    fi
  ])
  if test "$openafs_cv_c_bigendian" = "yes"; then
!   AC_DEFINE(AUTOCONF_FOUND_BIGENDIAN, 1, [define if target is big endian])dnl
  fi
  if test "$openafs_cv_c_bigendian_compile" = "yes"; then
    AC_DEFINE(ENDIANESS_IN_SYS_PARAM_H, 1, [define if sys/param.h defines the endiness])dnl
Index: openafs/src/cf/kerberos.m4
diff -c openafs/src/cf/kerberos.m4:1.1.2.8 openafs/src/cf/kerberos.m4:1.1.2.9
*** openafs/src/cf/kerberos.m4:1.1.2.8	Mon Apr  3 15:45:27 2006
--- openafs/src/cf/kerberos.m4	Sat Jun 24 12:22:13 2006
***************
*** 1,5 ****
  dnl
! dnl $Id: kerberos.m4,v 1.1.2.8 2006/04/03 19:45:27 shadow Exp $
  dnl
  dnl Kerberos autoconf glue
  dnl
--- 1,5 ----
  dnl
! dnl $Id: kerberos.m4,v 1.1.2.9 2006/06/24 16:22:13 rra Exp $
  dnl
  dnl Kerberos autoconf glue
  dnl
***************
*** 58,64 ****
  	CPPFLAGS="$CPPFLAGS $KRB5CFLAGS"
  	save_LIBS="$LIBS"
  	LIBS="$LIBS $KRB5LIBS"
! 	AC_CHECK_FUNCS([add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string krb5_524_convert_creds krb524_convert_creds_kdc])
  	AC_CHECK_HEADERS([kerberosIV/krb.h])
  	AC_CHECK_HEADERS([kerberosV/heim_err.h])
  
--- 58,71 ----
  	CPPFLAGS="$CPPFLAGS $KRB5CFLAGS"
  	save_LIBS="$LIBS"
  	LIBS="$LIBS $KRB5LIBS"
! 	AC_CHECK_FUNCS([add_to_error_table add_error_table krb5_princ_size krb5_principal_get_comp_string])
! 	AC_CHECK_FUNCS([krb5_524_convert_creds], ,
! 	    [AC_CHECK_FUNCS([krb524_convert_creds_kdc], ,
! 		[AC_CHECK_LIB([krb524], [krb524_convert_creds_kdc],
! 		    [LIBS="-lkrb524 $LIBS"
! 		     KRB5LIBS="-lkrb524 $LIBS"
! 		     AC_DEFINE([HAVE_KRB524_CONVERT_CREDS_KDC], 1,
! 			 [Define to 1 if you have the `krb524_convert_creds_kdc' function.])])])])
  	AC_CHECK_HEADERS([kerberosIV/krb.h])
  	AC_CHECK_HEADERS([kerberosV/heim_err.h])
  
Index: openafs/src/cf/linux-test1.m4
diff -c openafs/src/cf/linux-test1.m4:1.3.2.3 openafs/src/cf/linux-test1.m4:1.3.2.5
*** openafs/src/cf/linux-test1.m4:1.3.2.3	Thu Jan 26 10:58:35 2006
--- openafs/src/cf/linux-test1.m4	Mon Aug 14 18:14:00 2006
***************
*** 1,142 ****
! AC_DEFUN([LINUX_INODE_SETATTR_RETURN_TYPE],[
! AC_MSG_CHECKING(for inode_setattr return type)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_func_inode_setattr_returns_int,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>],
! [struct inode _inode; 
! struct iattr _iattr;
! int i; 
! i = inode_setattr(&_inode, &_iattr);], 
! ac_cv_linux_func_inode_setattr_returns_int=yes,
! ac_cv_linux_func_inode_setattr_returns_int=no)])
! AC_MSG_RESULT($ac_cv_linux_func_inode_setattr_returns_int)
! CPPFLAGS="$save_CPPFLAGS"])
! 
! AC_DEFUN([LINUX_WRITE_INODE_RETURN_TYPE],[
! AC_MSG_CHECKING(for write_inode return type)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_func_write_inode_returns_int,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>],
! [struct inode _inode; 
! struct super_operations _sops;
! int i; 
! i = _sops.write_inode(&_inode, 0);], 
! ac_cv_linux_func_write_inode_returns_int=yes,
! ac_cv_linux_func_write_inode_returns_int=no)])
! AC_MSG_RESULT($ac_cv_linux_func_write_inode_returns_int)
! CPPFLAGS="$save_CPPFLAGS"])
! 
! AC_DEFUN([LINUX_IOP_NAMEIDATA],[
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_MSG_CHECKING(whether inode_operations.create takes a nameidata)
! AC_CACHE_VAL(ac_cv_linux_func_i_create_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode; 
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->create(&_inode, &_dentry, 0, &_nameidata);],
! ac_cv_linux_func_i_create_takes_nameidata=yes,
! ac_cv_linux_func_i_create_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_i_create_takes_nameidata)
! if test "x$ac_cv_linux_func_i_create_takes_nameidata" = "xyes" ; then
! AC_DEFINE(IOP_CREATE_TAKES_NAMEIDATA, 1, [define if your iops.create takes a nameidata argument])
! fi
! AC_MSG_CHECKING(whether inode_operations.lookup takes a nameidata)
! AC_CACHE_VAL(ac_cv_linux_func_i_lookup_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode; 
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->lookup(&_inode, &_dentry, &_nameidata);],
! ac_cv_linux_func_i_lookup_takes_nameidata=yes,
! ac_cv_linux_func_i_lookup_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_i_lookup_takes_nameidata)
! if test "x$ac_cv_linux_func_i_lookup_takes_nameidata" = "xyes" ; then
! AC_DEFINE(IOP_LOOKUP_TAKES_NAMEIDATA, 1, [define if your iops.lookup takes a nameidata argument])
! fi
! AC_MSG_CHECKING(whether inode_operations.permission takes a nameidata)
! AC_CACHE_VAL(ac_cv_linux_func_i_permission_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode; 
! struct nameidata _nameidata;
! (void)_inode.i_op->permission(&_inode, 0, &_nameidata);],
! ac_cv_linux_func_i_permission_takes_nameidata=yes,
! ac_cv_linux_func_i_permission_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)
! if test "x$ac_cv_linux_func_i_permission_takes_nameidata" = "xyes" ; then
! AC_DEFINE(IOP_PERMISSION_TAKES_NAMEIDATA, 1, [define if your iops.permission takes a nameidata argument])
! fi
! AC_MSG_CHECKING(whether dentry_operations.d_revalidate takes a nameidata)
! CPPFLAGS="$CPPFLAGS -Werror"
! AC_CACHE_VAL(ac_cv_linux_func_d_revalidate_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct dentry _dentry; 
! struct nameidata _nameidata;
! (void)_dentry.d_op->d_revalidate(&_dentry, &_nameidata);],
! ac_cv_linux_func_d_revalidate_takes_nameidata=yes,
! ac_cv_linux_func_d_revalidate_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_d_revalidate_takes_nameidata)
! if test "x$ac_cv_linux_func_d_revalidate_takes_nameidata" = "xyes" ; then
!   AC_DEFINE(DOP_REVALIDATE_TAKES_NAMEIDATA, 1, [define if your dops.d_revalidate takes a nameidata argument])
! fi
! CPPFLAGS="$save_CPPFLAGS"])
! 
! AC_DEFUN([LINUX_AOP_WRITEBACK_CONTROL],[
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_MSG_CHECKING(whether address_space_operations.writepage takes a writeback_control)
! AC_CACHE_VAL(ac_cv_linux_func_a_writepage_takes_writeback_control,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/mm.h>
! #include <linux/writeback.h>],
! [struct address_space_operations _aops; 
! struct page _page;
! struct writeback_control _writeback_control;
! (void)_aops.writepage(&_page, &_writeback_control);],
! ac_cv_linux_func_a_writepage_takes_writeback_control=yes,
! ac_cv_linux_func_a_writepage_takes_writeback_control=no)])
! AC_MSG_RESULT($ac_cv_linux_func_a_writepage_takes_writeback_control)
! if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then
! AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument])
! fi
! CPPFLAGS="$save_CPPFLAGS"])
! 
! AC_DEFUN([LINUX_REFRIGERATOR],[
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_MSG_CHECKING(whether refrigerator takes PF_FREEZE)
! AC_CACHE_VAL(ac_cv_linux_func_refrigerator_takes_pf_freeze,
! [
! AC_TRY_COMPILE(
! [#include <linux/sched.h>],
! [
! refrigerator(PF_FREEZE);
! ],
! ac_cv_linux_func_refrigerator_takes_pf_freeze=yes,
! ac_cv_linux_func_refrigerator_takes_pf_freeze=no)])
! AC_MSG_RESULT($ac_cv_linux_func_refrigerator_takes_pf_freeze)
! if test "x$ac_cv_linux_func_refrigerator_takes_pf_freeze" = "xyes" ; then
! AC_DEFINE(LINUX_REFRIGERATOR_TAKES_PF_FREEZE, 1, [define if your refrigerator takes PF_FREEZE])
! fi
! CPPFLAGS="$save_CPPFLAGS"])
--- 1,49 ----
! # AC_TRY_KBUILD26([INCLUDES], [FUNCTION-BODY],
! #                 [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
! #
! AC_DEFUN([AC_TRY_KBUILD26], [
!   rm -fr conftest.dir
!   if mkdir conftest.dir; then
!   cd conftest.dir
!     cat >Makefile <<_ACEOF
! CFLAGS += $CPPFLAGS
! 
! obj-m += conftest.o
! _ACEOF
!     cat >conftest.c <<\_ACEOF
! #include <linux/module.h>
! $1
! 
! void conftest(void)
! { 
! $2
! } 
! 
! MODULE_LICENSE("http://www.openafs.org/dl/license10.html");
! _ACEOF
!     cd ..
!   fi
!   AS_IF(AC_RUN_LOG([make -C $LINUX_KERNEL_PATH M=`pwd`/conftest.dir modules > /dev/null]),
!       [$3], [$4])
!   rm -fr conftest.dir])
! 
!   
! # AC_TRY_KBUILD24([INCLUDES], [FUNCTION-BODY],
! #                 [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
! #
! AC_DEFUN([AC_TRY_KBUILD24], [
!   ac_save_CPPFLAGS="$CPPFLAGS"
!   CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ $CPPFLAGS"
!   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
!   CPPFLAGS="$ac_save_CPPFLAGS"])
! 
! 
! # AC_TRY_KBUILD([INCLUDES], [FUNCTION-BODY],
! #               [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
! #
! AC_DEFUN([AC_TRY_KBUILD], [
!   if test -f $LINUX_KERNEL_PATH/scripts/Makefile.build; then
!     AC_TRY_KBUILD26([$1], [$2], [$3], [$4])
!   else
!     AC_TRY_KBUILD24([$1], [$2], [$3], [$4])
!   fi])
Index: openafs/src/cf/linux-test2.m4
diff -c openafs/src/cf/linux-test2.m4:1.9.2.3 openafs/src/cf/linux-test2.m4:1.9.2.4
*** openafs/src/cf/linux-test2.m4:1.9.2.3	Thu Jan 26 10:58:35 2006
--- openafs/src/cf/linux-test2.m4	Mon Aug 14 18:04:41 2006
***************
*** 1,79 ****
- AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [
- AC_MSG_CHECKING(for gfp_mask in struct address_space)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_address_space_has_gfp_mask, 
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct address_space _a;
- printf("%d\n", _a.gfp_mask);], 
- ac_cv_linux_fs_struct_address_space_has_gfp_mask=yes,
- ac_cv_linux_fs_struct_address_space_has_gfp_mask=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_gfp_mask)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BYTES], [
- AC_MSG_CHECKING(for i_bytes in struct inode)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_bytes, 
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct inode _inode;
- printf("%d\n", _inode.i_bytes);], 
- ac_cv_linux_fs_struct_inode_has_i_bytes=yes,
- ac_cv_linux_fs_struct_inode_has_i_bytes=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_bytes)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM], [
- AC_MSG_CHECKING(for i_alloc_sem in struct inode)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_alloc_sem,
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct inode _i;
- printf("%x\n", _i.i_alloc_sem);], 
- ac_cv_linux_fs_struct_inode_has_i_alloc_sem=yes,
- ac_cv_linux_fs_struct_inode_has_i_alloc_sem=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_alloc_sem)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM], [
- AC_MSG_CHECKING(for i_truncate_sem in struct inode)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_truncate_sem,
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct inode _i;
- printf("%x\n", _i.i_truncate_sem);], 
- ac_cv_linux_fs_struct_inode_has_i_truncate_sem=yes,
- ac_cv_linux_fs_struct_inode_has_i_truncate_sem=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_truncate_sem)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK], [
- AC_MSG_CHECKING(for page_lock in struct address_space)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_address_space_has_page_lock, 
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct address_space _a_s;
- printf("%x\n", _a_s.page_lock);], 
- ac_cv_linux_fs_struct_address_space_has_page_lock=yes,
- ac_cv_linux_fs_struct_address_space_has_page_lock=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_page_lock)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- 
  dnl LINUX_BUILD_VNODE_FROM_INODE (configdir, outputdir, tmpldir)
  dnl		defaults: (src/config, src/afs/LINUX, src/afs/linux)
  
--- 1,3 ----
Index: openafs/src/cf/linux-test3.m4
diff -c openafs/src/cf/linux-test3.m4:1.8.2.9 openafs/src/cf/linux-test3.m4:1.8.2.10
*** openafs/src/cf/linux-test3.m4:1.8.2.9	Thu Jan 26 10:58:35 2006
--- openafs/src/cf/linux-test3.m4	Mon Aug 14 18:04:41 2006
***************
*** 82,119 ****
  AC_MSG_RESULT($ac_cv_linux_kernel_is_selinux)
  CPPFLAGS="$save_CPPFLAGS"])
  
- AC_DEFUN([LINUX_KERNEL_SOCK_CREATE],[
- AC_MSG_CHECKING(for 5th argument in sock_create found in some SELinux kernels)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ -DKBUILD_BASENAME=\\"libafs\\" $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_kernel_sock_create_v,
- [
- AC_TRY_COMPILE(
-   [#include <linux/net.h>],
-   [
-   sock_create(0,0,0,0,0)
-   ],
-   ac_cv_linux_kernel_sock_create_v=yes,
-   ac_cv_linux_kernel_sock_create_v=no)])
- AC_MSG_RESULT($ac_cv_linux_kernel_sock_create_v)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK],[
- AC_MSG_CHECKING(for page_follow_link_light vs page_follow_link)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-default -Werror-implicit-function-declaration -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_kernel_page_follow_link,
- [
- AC_TRY_COMPILE(
-   [#include <linux/fs.h>],
-   [
-   page_follow_link(0,0)
-   ],
-   ac_cv_linux_kernel_page_follow_link=yes,
-   ac_cv_linux_kernel_page_follow_link=no)])
- AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)
- CPPFLAGS="$save_CPPFLAGS"])
- 
  AC_DEFUN([LINUX_KERNEL_LINUX_SEQ_FILE_H],[
    AC_MSG_CHECKING(for linux/seq_file.h in kernel)
    if test -f "${LINUX_KERNEL_PATH}/include/linux/seq_file.h"; then
--- 82,87 ----
Index: openafs/src/cf/linux-test4.m4
diff -c openafs/src/cf/linux-test4.m4:1.20.2.9 openafs/src/cf/linux-test4.m4:1.20.2.16
*** openafs/src/cf/linux-test4.m4:1.20.2.9	Tue Feb 14 19:32:54 2006
--- openafs/src/cf/linux-test4.m4	Thu Oct 12 08:23:59 2006
***************
*** 1,500 ****
  AC_DEFUN([LINUX_COMPLETION_H_EXISTS], [
! AC_MSG_CHECKING(for linux/completion.h existance)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_completion_h_exists,
! [
! AC_TRY_COMPILE(
! [#include <linux/completion.h>
! #include <linux/version.h>],
  [struct completion _c;
  #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,8)
  lose
! #endif
! ],
! ac_cv_linux_completion_h_exists=yes,
! ac_cv_linux_completion_h_exists=no)])
! AC_MSG_RESULT($ac_cv_linux_completion_h_exists)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [
! AC_MSG_CHECKING(for defined for_each_process)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_defines_for_each_process,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
! [#ifndef for_each_process(p)
  #error for_each_process not defined
  #endif],
! ac_cv_linux_defines_for_each_process=yes,
! ac_cv_linux_defines_for_each_process=no)])
! AC_MSG_RESULT($ac_cv_linux_defines_for_each_process)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_DEFINES_PREV_TASK], [
! AC_MSG_CHECKING(for defined prev_task)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_defines_prev_task,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
! [#ifndef prev_task(p)
  #error prev_task not defined
  #endif],
! ac_cv_linux_defines_prev_task=yes,
! ac_cv_linux_defines_prev_task=no)])
! AC_MSG_RESULT($ac_cv_linux_defines_prev_task)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_INIT_MM], [
! AC_MSG_CHECKING(for exported init_mm)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_init_mm,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_init_mm
  #error init_mm not exported
  #endif],
! ac_cv_linux_exports_init_mm=yes,
! ac_cv_linux_exports_init_mm=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_init_mm)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_ADDRESS], [
! AC_MSG_CHECKING(for exported kallsyms_address_to_symbol)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_kallsyms_address,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_address_to_symbol
  #error kallsyms_address_to_symbol not exported
  #endif],
! ac_cv_linux_exports_kallsyms_address=yes,
! ac_cv_linux_exports_kallsyms_address=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_address)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_SYMBOL], [
! AC_MSG_CHECKING(for exported kallsyms_symbol_to_address)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_kallsyms_symbol,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_symbol_to_address
  #error kallsyms_symbol_to_address not exported
  #endif],
! ac_cv_linux_exports_kallsyms_symbol=yes,
! ac_cv_linux_exports_kallsyms_symbol=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_symbol)
! CPPFLAGS="$save_CPPFLAGS"])
! 
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CALL_TABLE], [
! AC_MSG_CHECKING(for exported sys_call_table)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_call_table,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_call_table
  #error sys_call_table not exported
  #endif],
! ac_cv_linux_exports_sys_call_table=yes,
! ac_cv_linux_exports_sys_call_table=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_call_table)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_IA32_SYS_CALL_TABLE], [
! AC_MSG_CHECKING(for exported ia32_sys_call_table)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_ia32_sys_call_table,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_ia32_sys_call_table
  #error ia32_sys_call_table not exported
  #endif],
! ac_cv_linux_exports_ia32_sys_call_table=yes,
! ac_cv_linux_exports_ia32_sys_call_table=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_ia32_sys_call_table)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CHDIR], [
! AC_MSG_CHECKING(for exported sys_chdir)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_chdir,
! [
! AC_TRY_COMPILE(
! [#include <linux/modversions.h>],
! [#ifndef __ver_sys_chdir
! #error sys_chdir not exported
! #endif],
! ac_cv_linux_exports_sys_chdir=yes,
! ac_cv_linux_exports_sys_chdir=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_chdir)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CLOSE], [
! AC_MSG_CHECKING(for exported sys_close)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_close,
! [
! AC_TRY_COMPILE(
! [#include <linux/modversions.h>],
! [#ifndef __ver_sys_close
! #error sys_close not exported
! #endif],
! ac_cv_linux_exports_sys_close=yes,
! ac_cv_linux_exports_sys_close=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_close)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_WAIT4], [
! AC_MSG_CHECKING(for exported sys_wait4)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_wait4,
! [
! AC_TRY_COMPILE(
! [#include <linux/modversions.h>],
! [#ifndef __ver_sys_wait4
! #error sys_wait4 not exported
! #endif],
! ac_cv_linux_exports_sys_wait4=yes,
! ac_cv_linux_exports_sys_wait4=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_CDEV], [
! AC_MSG_CHECKING(for i_cdev in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_cdev, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_cdev);], 
! ac_cv_linux_fs_struct_inode_has_i_cdev=yes,
! ac_cv_linux_fs_struct_inode_has_i_cdev=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_cdev)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DEVICES], [
! AC_MSG_CHECKING(for i_devices in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_devices, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_devices);], 
! ac_cv_linux_fs_struct_inode_has_i_devices=yes,
! ac_cv_linux_fs_struct_inode_has_i_devices=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_devices)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS], [
! AC_MSG_CHECKING(for i_dirty_data_buffers in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_dirty_data_buffers);], 
! ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=yes,
! ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK], [
! AC_MSG_CHECKING(for inotify_lock in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_inotify_lock, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.inotify_lock);], 
! ac_cv_linux_fs_struct_inode_has_inotify_lock=yes,
! ac_cv_linux_fs_struct_inode_has_inotify_lock=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_lock)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM], [
! AC_MSG_CHECKING(for inotify_sem in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_inotify_sem, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%x\n", _inode.inotify_sem);], 
! ac_cv_linux_fs_struct_inode_has_inotify_sem=yes,
! ac_cv_linux_fs_struct_inode_has_inotify_sem=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_sem)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MAPPING_OVERLOAD], [
! AC_MSG_CHECKING(for i_mapping_overload in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_mapping_overload, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_mapping_overload);], 
! ac_cv_linux_fs_struct_inode_has_i_mapping_overload=yes,
! ac_cv_linux_fs_struct_inode_has_i_mapping_overload=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mapping_overload)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED], [
! AC_MSG_CHECKING(for i_mmap_shared in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_mmap_shared,
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_mmap_shared);],
! ac_cv_linux_fs_struct_inode_has_i_mmap_shared=yes,
! ac_cv_linux_fs_struct_inode_has_i_mmap_shared=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mmap_shared)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MUTEX], [
! AC_MSG_CHECKING(for i_mutex in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_mutex, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_mutex);], 
! ac_cv_linux_fs_struct_inode_has_i_mutex=yes,
! ac_cv_linux_fs_struct_inode_has_i_mutex=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mutex)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SECURITY], [
! AC_MSG_CHECKING(for i_security in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_security, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_security);], 
! ac_cv_linux_fs_struct_inode_has_i_security=yes,
! ac_cv_linux_fs_struct_inode_has_i_security=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_security)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST], [
! AC_MSG_CHECKING(for i_sb_list in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_sb_list, 
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>],
! [struct inode _inode;
! printf("%d\n", _inode.i_sb_list);], 
! ac_cv_linux_fs_struct_inode_has_i_sb_list=yes,
! ac_cv_linux_fs_struct_inode_has_i_sb_list=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_sb_list)
! CPPFLAGS="$save_CPPFLAGS"])
! 
! 
! AC_DEFUN([LINUX_RECALC_SIGPENDING_ARG_TYPE],[
! AC_MSG_CHECKING(for recalc_sigpending arg type)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_func_recalc_sigpending_takes_void,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [recalc_sigpending();],
! ac_cv_linux_func_recalc_sigpending_takes_void=yes,
! ac_cv_linux_func_recalc_sigpending_takes_void=no)])
! AC_MSG_RESULT($ac_cv_linux_func_recalc_sigpending_takes_void)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT], [
! AC_MSG_CHECKING(for parent in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_parent,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.parent);],
! ac_cv_linux_sched_struct_task_struct_has_parent=yes,
! ac_cv_linux_sched_struct_task_struct_has_parent=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_parent)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT], [
! AC_MSG_CHECKING(for real_parent in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_real_parent,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.real_parent);],
! ac_cv_linux_sched_struct_task_struct_has_real_parent=yes,
! ac_cv_linux_sched_struct_task_struct_has_real_parent=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_real_parent)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG], [
! AC_MSG_CHECKING(for sig in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_sig,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.sig);],
! ac_cv_linux_sched_struct_task_struct_has_sig=yes,
! ac_cv_linux_sched_struct_task_struct_has_sig=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sig)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK], [
! AC_MSG_CHECKING(for sigmask_lock in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_sigmask_lock,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.sigmask_lock);],
! ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=yes,
! ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sigmask_lock)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND], [
! AC_MSG_CHECKING(for sighand in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_sighand,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.sighand);],
! ac_cv_linux_sched_struct_task_struct_has_sighand=yes,
! ac_cv_linux_sched_struct_task_struct_has_sighand=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sighand)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM], [
! AC_MSG_CHECKING(for rlim in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_rlim,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.rlim);],
! ac_cv_linux_sched_struct_task_struct_has_rlim=yes,
! ac_cv_linux_sched_struct_task_struct_has_rlim=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_rlim)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
! AC_MSG_CHECKING(for signal->rlim in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_signal_rlim,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.signal->rlim);],
! ac_cv_linux_sched_struct_task_struct_has_signal_rlim=yes,
! ac_cv_linux_sched_struct_task_struct_has_signal_rlim=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_signal_rlim)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE], [
! AC_MSG_CHECKING(for exit_state in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_exit_state,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.exit_state);],
! ac_cv_linux_sched_struct_task_struct_has_exit_state=yes,
! ac_cv_linux_sched_struct_task_struct_has_exit_state=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [
! AC_MSG_CHECKING(for alloc_inode in struct super_operations)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_super_has_alloc_inode, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct super_operations _super;
! printf("%p\n", _super.alloc_inode);], 
! ac_cv_linux_fs_struct_super_has_alloc_inode=yes,
! ac_cv_linux_fs_struct_super_has_alloc_inode=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)
! CPPFLAGS="$save_CPPFLAGS"])
--- 1,679 ----
  AC_DEFUN([LINUX_COMPLETION_H_EXISTS], [
!   AC_MSG_CHECKING([for linux/completion.h existance])
!   AC_CACHE_VAL([ac_cv_linux_completion_h_exists], [
!     AC_TRY_KBUILD(
! [#include <linux/version.h>
! #include <linux/completion.h>],
  [struct completion _c;
  #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,8)
  lose
! #endif],
!       ac_cv_linux_completion_h_exists=yes,
!       ac_cv_linux_completion_h_exists=no)])
!   AC_MSG_RESULT($ac_cv_linux_completion_h_exists)])
  
  
  AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [
!   AC_MSG_CHECKING([for defined for_each_process])
!   AC_CACHE_VAL([ac_cv_linux_defines_for_each_process], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
! [#ifndef for_each_process
  #error for_each_process not defined
  #endif],
!       ac_cv_linux_defines_for_each_process=yes,
!       ac_cv_linux_defines_for_each_process=no)])
!   AC_MSG_RESULT($ac_cv_linux_defines_for_each_process)])
  
  
  AC_DEFUN([LINUX_DEFINES_PREV_TASK], [
!   AC_MSG_CHECKING([for defined prev_task])
!   AC_CACHE_VAL([ac_cv_linux_defines_prev_task], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
! [#ifndef prev_task
  #error prev_task not defined
  #endif],
!       ac_cv_linux_defines_prev_task=yes,
!       ac_cv_linux_defines_prev_task=no)])
!   AC_MSG_RESULT($ac_cv_linux_defines_prev_task)])
  
  
  AC_DEFUN([LINUX_EXPORTS_INIT_MM], [
!   AC_MSG_CHECKING([for exported init_mm])
!   AC_CACHE_VAL([ac_cv_linux_exports_init_mm], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_init_mm
  #error init_mm not exported
  #endif],
!       ac_cv_linux_exports_init_mm=yes,
!       ac_cv_linux_exports_init_mm=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_init_mm)])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_ADDRESS], [
!   AC_MSG_CHECKING([for exported kallsyms_address_to_symbol])
!   AC_CACHE_VAL([ac_cv_linux_exports_kallsyms_address], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_address_to_symbol
  #error kallsyms_address_to_symbol not exported
  #endif],
!       ac_cv_linux_exports_kallsyms_address=yes,
!       ac_cv_linux_exports_kallsyms_address=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_address)])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_SYMBOL], [
!   AC_MSG_CHECKING([for exported kallsyms_symbol_to_address])
!   AC_CACHE_VAL([ac_cv_linux_exports_kallsyms_symbol], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_symbol_to_address
  #error kallsyms_symbol_to_address not exported
  #endif],
!       ac_cv_linux_exports_kallsyms_symbol=yes,
!       ac_cv_linux_exports_kallsyms_symbol=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_symbol)])
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CALL_TABLE], [
!   AC_MSG_CHECKING([for exported sys_call_table])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_call_table], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_call_table
  #error sys_call_table not exported
  #endif],
!       ac_cv_linux_exports_sys_call_table=yes,
!       ac_cv_linux_exports_sys_call_table=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_call_table)])
  
  
  AC_DEFUN([LINUX_EXPORTS_IA32_SYS_CALL_TABLE], [
!   AC_MSG_CHECKING([for exported ia32_sys_call_table])
!   AC_CACHE_VAL([ac_cv_linux_exports_ia32_sys_call_table], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_ia32_sys_call_table
  #error ia32_sys_call_table not exported
  #endif],
!       ac_cv_linux_exports_ia32_sys_call_table=yes,
!       ac_cv_linux_exports_ia32_sys_call_table=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_ia32_sys_call_table)])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CHDIR], [
!   AC_MSG_CHECKING([for exported sys_chdir])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_chdir], [
!     AC_TRY_KBUILD(
! [extern asmlinkage long sys_chdir(void) __attribute__((weak));],
! [void *address = &sys_chdir;
! printk("%p\n", address);],
!       ac_cv_linux_exports_sys_chdir=yes,
!       ac_cv_linux_exports_sys_chdir=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_chdir)])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CLOSE], [
!   AC_MSG_CHECKING([for exported sys_close])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_close], [
!     AC_TRY_KBUILD(
! [extern asmlinkage long sys_close(void) __attribute__((weak));],
! [void *address = &sys_close;
! printk("%p\n", address);],
!       ac_cv_linux_exports_sys_close=yes,
!       ac_cv_linux_exports_sys_close=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_close)])
! 
! 
! AC_DEFUN([LINUX_EXPORTS_SYS_OPEN], [
!   AC_MSG_CHECKING([for exported sys_open])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_open], [
!     AC_TRY_KBUILD(
! [extern asmlinkage long sys_open(void) __attribute__((weak));],
! [void *address = &sys_open;
! printk("%p\n", address);],
!       ac_cv_linux_exports_sys_open=yes,
!       ac_cv_linux_exports_sys_open=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_open)])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_WAIT4], [
!   AC_MSG_CHECKING([for exported sys_wait4])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_wait4], [
!     AC_TRY_KBUILD(
! [extern asmlinkage long sys_wait4(void) __attribute__((weak));],
! [void *address = &sys_wait4;
! printk("%p\n", address);],
!       ac_cv_linux_exports_sys_wait4=yes,
!       ac_cv_linux_exports_sys_wait4=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)])
  
  
+ AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BLKSIZE], [
+   AC_MSG_CHECKING([for i_blksize in struct inode])
+   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_blksize], [
+     AC_TRY_KBUILD(
+ [#include <linux/fs.h>],
+ [struct inode _inode;
+ printk("%d\n", _inode.i_blksize);],
+       ac_cv_linux_fs_struct_inode_has_i_blksize=yes,
+       ac_cv_linux_fs_struct_inode_has_i_blksize=no)])
+   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_blksize)])
+ 
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_CDEV], [
!   AC_MSG_CHECKING([for i_cdev in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_cdev], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_cdev);],
!       ac_cv_linux_fs_struct_inode_has_i_cdev=yes,
!       ac_cv_linux_fs_struct_inode_has_i_cdev=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_cdev)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DEVICES], [
!   AC_MSG_CHECKING([for i_devices in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_devices], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_devices);],
!       ac_cv_linux_fs_struct_inode_has_i_devices=yes,
!       ac_cv_linux_fs_struct_inode_has_i_devices=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_devices)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS], [
!   AC_MSG_CHECKING([for i_dirty_data_buffers in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_dirty_data_buffers);],
!       ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=yes,
!       ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK], [
!   AC_MSG_CHECKING([for inotify_lock in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_inotify_lock], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.inotify_lock);],
!       ac_cv_linux_fs_struct_inode_has_inotify_lock=yes,
!       ac_cv_linux_fs_struct_inode_has_inotify_lock=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_lock)])
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM], [
!   AC_MSG_CHECKING([for inotify_sem in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_inotify_sem], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%x\n", _inode.inotify_sem);],
!       ac_cv_linux_fs_struct_inode_has_inotify_sem=yes,
!       ac_cv_linux_fs_struct_inode_has_inotify_sem=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_sem)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MAPPING_OVERLOAD], [
!   AC_MSG_CHECKING([for i_mapping_overload in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mapping_overload], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_mapping_overload);],
!       ac_cv_linux_fs_struct_inode_has_i_mapping_overload=yes,
!       ac_cv_linux_fs_struct_inode_has_i_mapping_overload=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mapping_overload)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED], [
!   AC_MSG_CHECKING([for i_mmap_shared in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mmap_shared], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_mmap_shared);],
!       ac_cv_linux_fs_struct_inode_has_i_mmap_shared=yes,
!       ac_cv_linux_fs_struct_inode_has_i_mmap_shared=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mmap_shared)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MUTEX], [
!   AC_MSG_CHECKING([for i_mutex in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mutex], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_mutex);],
!       ac_cv_linux_fs_struct_inode_has_i_mutex=yes,
!       ac_cv_linux_fs_struct_inode_has_i_mutex=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mutex)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SECURITY], [
!   AC_MSG_CHECKING([for i_security in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_security], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_security);],
!       ac_cv_linux_fs_struct_inode_has_i_security=yes,
!       ac_cv_linux_fs_struct_inode_has_i_security=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_security)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST], [
!   AC_MSG_CHECKING([for i_sb_list in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_sb_list], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! printk("%d\n", _inode.i_sb_list);],
!       ac_cv_linux_fs_struct_inode_has_i_sb_list=yes,
!       ac_cv_linux_fs_struct_inode_has_i_sb_list=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_sb_list)])
! 
! 
! AC_DEFUN([LINUX_RECALC_SIGPENDING_ARG_TYPE], [
!   AC_MSG_CHECKING([for recalc_sigpending arg type])
!   AC_CACHE_VAL([ac_cv_linux_func_recalc_sigpending_takes_void], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [recalc_sigpending();],
!       ac_cv_linux_func_recalc_sigpending_takes_void=yes,
!       ac_cv_linux_func_recalc_sigpending_takes_void=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_recalc_sigpending_takes_void)])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT], [
!   AC_MSG_CHECKING([for parent in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_parent], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.parent);],
!       ac_cv_linux_sched_struct_task_struct_has_parent=yes,
!       ac_cv_linux_sched_struct_task_struct_has_parent=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_parent)])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT], [
!   AC_MSG_CHECKING([for real_parent in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_real_parent], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.real_parent);],
!       ac_cv_linux_sched_struct_task_struct_has_real_parent=yes,
!       ac_cv_linux_sched_struct_task_struct_has_real_parent=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_real_parent)])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG], [
!   AC_MSG_CHECKING([for sig in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sig], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.sig);],
!       ac_cv_linux_sched_struct_task_struct_has_sig=yes,
!       ac_cv_linux_sched_struct_task_struct_has_sig=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sig)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK], [
!   AC_MSG_CHECKING([for sigmask_lock in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sigmask_lock], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.sigmask_lock);],
!       ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=yes,
!       ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sigmask_lock)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND], [
!   AC_MSG_CHECKING([for sighand in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sighand], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.sighand);],
!       ac_cv_linux_sched_struct_task_struct_has_sighand=yes,
!       ac_cv_linux_sched_struct_task_struct_has_sighand=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sighand)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM], [
!   AC_MSG_CHECKING([for rlim in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_rlim], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.rlim);],
!       ac_cv_linux_sched_struct_task_struct_has_rlim=yes,
!       ac_cv_linux_sched_struct_task_struct_has_rlim=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_rlim)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
!   AC_MSG_CHECKING([for signal->rlim in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_signal_rlim], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.signal->rlim);],
!       ac_cv_linux_sched_struct_task_struct_has_signal_rlim=yes,
!       ac_cv_linux_sched_struct_task_struct_has_signal_rlim=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_signal_rlim)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE], [
!   AC_MSG_CHECKING([for exit_state in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_exit_state], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.exit_state);],
!       ac_cv_linux_sched_struct_task_struct_has_exit_state=yes,
!       ac_cv_linux_sched_struct_task_struct_has_exit_state=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)])
! 
  
  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], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct super_operations _super;
! printk("%p\n", _super.alloc_inode);],
!       ac_cv_linux_fs_struct_super_has_alloc_inode=yes,
!       ac_cv_linux_fs_struct_super_has_alloc_inode=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)])
! 
! 
! AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
!   AC_MSG_CHECKING([for 5th argument in sock_create found in some SELinux kernels])
!   AC_CACHE_VAL([ac_cv_linux_kernel_sock_create_v], [
!     AC_TRY_KBUILD(
! [#include <linux/net.h>],
! [sock_create(0,0,0,0,0);],
!       ac_cv_linux_kernel_sock_create_v=yes,
!       ac_cv_linux_kernel_sock_create_v=no)])
!   AC_MSG_RESULT($ac_cv_linux_kernel_sock_create_v)])
! 
! 
! AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK], [
!   AC_MSG_CHECKING([for page_follow_link_light vs page_follow_link])
!   AC_CACHE_VAL([ac_cv_linux_kernel_page_follow_link], [
!     save_CPPFLAGS="$CPPFLAGS"
!     CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [page_follow_link(0,0);],
!       ac_cv_linux_kernel_page_follow_link=yes,
!       ac_cv_linux_kernel_page_follow_link=no)
!     CPPFLAGS="$save_CPPFLAGS"])
!   AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [
!   AC_MSG_CHECKING([for gfp_mask in struct address_space])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_address_space_has_gfp_mask], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct address_space _a;
! printk("%d\n", _a.gfp_mask);],
!       ac_cv_linux_fs_struct_address_space_has_gfp_mask=yes,
!       ac_cv_linux_fs_struct_address_space_has_gfp_mask=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_gfp_mask)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BYTES], [
!   AC_MSG_CHECKING([for i_bytes in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_bytes], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! printk("%d\n", _inode.i_bytes);],
!       ac_cv_linux_fs_struct_inode_has_i_bytes=yes,
!       ac_cv_linux_fs_struct_inode_has_i_bytes=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_bytes)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM], [
!   AC_MSG_CHECKING([for i_alloc_sem in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_alloc_sem], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _i;
! printk("%x\n", _i.i_alloc_sem);],
!       ac_cv_linux_fs_struct_inode_has_i_alloc_sem=yes,
!       ac_cv_linux_fs_struct_inode_has_i_alloc_sem=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_alloc_sem)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM], [
!   AC_MSG_CHECKING([for i_truncate_sem in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_truncate_sem], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _i;
! printk("%x\n", _i.i_truncate_sem);],
!       ac_cv_linux_fs_struct_inode_has_i_truncate_sem=yes,
!       ac_cv_linux_fs_struct_inode_has_i_truncate_sem=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_truncate_sem)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK], [
!   AC_MSG_CHECKING([for page_lock in struct address_space])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_address_space_has_page_lock], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct address_space _a_s;
! printk("%x\n", _a_s.page_lock);],
!       ac_cv_linux_fs_struct_address_space_has_page_lock=yes,
!       ac_cv_linux_fs_struct_address_space_has_page_lock=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_page_lock)])
! 
! 
! AC_DEFUN([LINUX_INODE_SETATTR_RETURN_TYPE], [
!   AC_MSG_CHECKING([for inode_setattr return type])
!   AC_CACHE_VAL([ac_cv_linux_func_inode_setattr_returns_int], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! struct iattr _iattr;
! int i;
! i = inode_setattr(&_inode, &_iattr);],
!       ac_cv_linux_func_inode_setattr_returns_int=yes,
!       ac_cv_linux_func_inode_setattr_returns_int=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_inode_setattr_returns_int)])
! 
! 
! AC_DEFUN([LINUX_WRITE_INODE_RETURN_TYPE], [
!   AC_MSG_CHECKING([for write_inode return type])
!   AC_CACHE_VAL([ac_cv_linux_func_write_inode_returns_int], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! struct super_operations _sops;
! int i;
! i = _sops.write_inode(&_inode, 0);],
!       ac_cv_linux_func_write_inode_returns_int=yes,
!       ac_cv_linux_func_write_inode_returns_int=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_write_inode_returns_int)])
! 
! 
! AC_DEFUN([LINUX_AOP_WRITEBACK_CONTROL], [
!   AC_MSG_CHECKING([whether address_space_operations.writepage takes a writeback_control])
!   AC_CACHE_VAL([ac_cv_linux_func_a_writepage_takes_writeback_control], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/mm.h>
! #include <linux/writeback.h>],
! [struct address_space_operations _aops;
! struct page _page;
! struct writeback_control _writeback_control;
! (void)_aops.writepage(&_page, &_writeback_control);],
!       ac_cv_linux_func_a_writepage_takes_writeback_control=yes,
!       ac_cv_linux_func_a_writepage_takes_writeback_control=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_a_writepage_takes_writeback_control)])
! 
! 
! AC_DEFUN([LINUX_REFRIGERATOR], [
!   AC_MSG_CHECKING([whether refrigerator takes PF_FREEZE])
!   AC_CACHE_VAL([ac_cv_linux_func_refrigerator_takes_pf_freeze], [
!     AC_TRY_KBUILD(
! [#include <linux/sched.h>],
! [refrigerator(PF_FREEZE);],
!       ac_cv_linux_func_refrigerator_takes_pf_freeze=yes,
!       ac_cv_linux_func_refrigerator_takes_pf_freeze=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_refrigerator_takes_pf_freeze)])
! 
! 
! AC_DEFUN([LINUX_IOP_I_CREATE_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether inode_operations.create takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_i_create_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode;
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->create(&_inode, &_dentry, 0, &_nameidata);],
!       ac_cv_linux_func_i_create_takes_nameidata=yes,
!       ac_cv_linux_func_i_create_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_i_create_takes_nameidata)])
! 
! 
! AC_DEFUN([LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether inode_operations.lookup takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_i_lookup_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode;
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->lookup(&_inode, &_dentry, &_nameidata);],
!       ac_cv_linux_func_i_lookup_takes_nameidata=yes,
!       ac_cv_linux_func_i_lookup_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_i_lookup_takes_nameidata)])
! 
! 
! AC_DEFUN([LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether inode_operations.permission takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_i_permission_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode;
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->permission(&_inode, 0, &_nameidata);],
!       ac_cv_linux_func_i_permission_takes_nameidata=yes,
!       ac_cv_linux_func_i_permission_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)])
! 
! 
! AC_DEFUN([LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether dentry_operations.d_revalidate takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_d_revalidate_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_dentry.d_op->d_revalidate(&_dentry, &_nameidata);],
!       ac_cv_linux_func_d_revalidate_takes_nameidata=yes,
!       ac_cv_linux_func_d_revalidate_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_d_revalidate_takes_nameidata)])
! 
! AC_DEFUN([LINUX_GET_SB_HAS_STRUCT_VFSMOUNT], [
!   AC_MSG_CHECKING([for struct vfsmount * in get_sb_nodev()])
!   AC_CACHE_VAL([ac_cv_linux_get_sb_has_struct_vfsmount], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [get_sb_nodev(0,0,0,0,0);],
!       ac_cv_linux_get_sb_has_struct_vfsmount=yes,
!       ac_cv_linux_get_sb_has_struct_vfsmount=no)])
!   AC_MSG_RESULT($ac_cv_linux_get_sb_has_struct_vfsmount)])
! 
! AC_DEFUN([LINUX_LINUX_KEYRING_SUPPORT], [
!   AC_MSG_CHECKING([for linux kernel keyring support])
!   AC_CACHE_VAL([ac_cv_linux_keyring_support], [
!     AC_TRY_KBUILD(
! [#include <linux/rwsem.h>
! #include <linux/key.h>
! #include <linux/keyctl.h>],
! [#ifdef CONFIG_KEYS
! request_key(NULL, NULL, NULL);
! #if !defined(KEY_POS_VIEW) || !defined(KEY_POS_SEARCH)
! #error "Your linux/key.h does not contain KEY_POS_VIEW or KEY_POS_SEARCH"
! #endif
! #else
! #error rebuild your kernel with CONFIG_KEYS
! #endif],
!       ac_cv_linux_keyring_support=yes,
!       ac_cv_linux_keyring_support=no)])
!   AC_MSG_RESULT($ac_cv_linux_keyring_support)
!   if test "x$ac_cv_linux_keyring_support" = "xyes"; then
!     AC_DEFINE([LINUX_KEYRING_SUPPORT], 1, [define if your kernel has keyring support])
!   fi])
! 
! AC_DEFUN([LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK], [
!   AC_MSG_CHECKING([if key_alloc() takes a struct task *])
!   AC_CACHE_VAL([ac_cv_key_alloc_needs_struct_task], [
!     AC_TRY_KBUILD(
! [#include <linux/rwsem.h>
! #include <linux/key.h>
! ],
! [(void) key_alloc(NULL, NULL, 0, 0, NULL, 0, 0);],
!       ac_cv_key_alloc_needs_struct_task=yes,
!       ac_cv_key_alloc_needs_struct_task=no)])
!   AC_MSG_RESULT($ac_cv_key_alloc_needs_struct_task)
!   if test "x$ac_cv_key_alloc_needs_struct_task" = "xyes"; then
!     AC_DEFINE([KEY_ALLOC_NEEDS_STRUCT_TASK], 1, [define if key_alloc takes a struct task *])
!   fi])
! 
! AC_DEFUN([LINUX_DO_SYNC_READ], [
!   AC_MSG_CHECKING([for linux do_sync_read()])
!   AC_CACHE_VAL([ac_cv_linux_do_sync_read], [
!     save_CPPFLAGS="$CPPFLAGS"
!     CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [do_sync_read(NULL, NULL, 0, NULL);],
!       ac_cv_linux_do_sync_read=yes,
!       ac_cv_linux_do_sync_read=no)
!     CPPFLAGS="$save_CPPFLAGS"])
!   AC_MSG_RESULT($ac_cv_linux_do_sync_read)
!   if test "x$ac_cv_linux_do_sync_read" = "xyes"; then
!     AC_DEFINE([DO_SYNC_READ], 1, [define if your kernel has do_sync_read()])
!   fi])
! 
! AC_DEFUN([LINUX_GENERIC_FILE_AIO_READ], [
!   AC_MSG_CHECKING([for linux generic_file_aio_read()])
!   AC_CACHE_VAL([ac_cv_linux_generic_file_aio_read], [
!     save_CPPFLAGS="$CPPFLAGS"
!     CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [generic_file_aio_read(NULL, NULL, 0, 0);],
!       ac_cv_linux_generic_file_aio_read=yes,
!       ac_cv_linux_generic_file_aio_read=no)
!     CPPFLAGS="$save_CPPFLAGS"])
!   AC_MSG_RESULT($ac_cv_linux_generic_file_aio_read)
!   if test "x$ac_cv_linux_generic_file_aio_read" = "xyes"; then
!     AC_DEFINE([GENERIC_FILE_AIO_READ], 1, [define if your kernel has generic_file_aio_read()])
!   fi])
! 
Index: openafs/src/cf/osconf.m4
diff -c openafs/src/cf/osconf.m4:1.51.2.25 openafs/src/cf/osconf.m4:1.51.2.27
*** openafs/src/cf/osconf.m4:1.51.2.25	Thu Mar  9 01:41:38 2006
--- openafs/src/cf/osconf.m4	Fri Oct  6 10:57:12 2006
***************
*** 214,220 ****
  		YACC="byacc"
  		;;
  
! 	*nbsd2*|*nbsd3*)
  		LEX="flex -l"
  		MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -D_REENTRANT '
  		MT_LIBS="-lpthread" # XXX -pthread soon
--- 214,220 ----
  		YACC="byacc"
  		;;
  
! 	*nbsd2*|*nbsd3*|*nbsd4*)
  		LEX="flex -l"
  		MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -D_REENTRANT '
  		MT_LIBS="-lpthread" # XXX -pthread soon
***************
*** 502,508 ****
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NO_PROTO -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64="#"
--- 502,508 ----
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64="#"
***************
*** 518,524 ****
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NO_PROTO -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64=""
--- 518,524 ----
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64=""
***************
*** 533,539 ****
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NO_PROTO -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64=""
--- 533,539 ----
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64=""
***************
*** 548,554 ****
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NO_PROTO -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64=""
--- 548,554 ----
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
! 		XCFLAGS="-K -D_NONSTD_TYPES -D_MBI=void"
  		XLIBS="${LIB_AFSDB} -ldl"
  		SHLIB_LINKER="${MT_CC} -bM:SRE -berok"
  		AIX64=""
Index: openafs/src/cmd/cmd.c
diff -c openafs/src/cmd/cmd.c:1.11 openafs/src/cmd/cmd.c:1.11.2.1
*** openafs/src/cmd/cmd.c:1.11	Sat Nov 29 17:08:09 2003
--- openafs/src/cmd/cmd.c	Fri Jun 30 15:45:48 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/cmd/cmd.c,v 1.11 2003/11/29 22:08:09 jaltman Exp $");
  
  #include <sys/types.h>
  #include <ctype.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/cmd/cmd.c,v 1.11.2.1 2006/06/30 19:45:48 shadow Exp $");
  
  #include <sys/types.h>
  #include <ctype.h>
***************
*** 165,170 ****
--- 165,179 ----
  	printf(" <arg>+");
  }
  
+ extern char *AFSVersion;
+ 
+ static int
+ VersionProc(register struct cmd_syndesc *as, char *arock)
+ {
+     printf("%s\n", AFSVersion);
+     return 0;
+ }
+ 
  void
  PrintSyntax(register struct cmd_syndesc *as)
  {
***************
*** 658,663 ****
--- 667,682 ----
  				  "search by help text");
  	    cmd_AddParm(ts, "-topic", CMD_SINGLE, CMD_REQUIRED,
  			"help string");
+ 	    ts = cmd_CreateSyntax("version", VersionProc, (char *)0,
+ 				  (char *)CMD_HIDDEN);
+ 	    ts = cmd_CreateSyntax("-version", VersionProc, (char *)0,
+ 				  (char *)CMD_HIDDEN);
+ 	    ts = cmd_CreateSyntax("-help", HelpProc, (char *)0,
+ 				  (char *)CMD_HIDDEN);
+ 	    ts = cmd_CreateSyntax("--version", VersionProc, (char *)0,
+ 				  (char *)CMD_HIDDEN);
+ 	    ts = cmd_CreateSyntax("--help", HelpProc, (char *)0,
+ 				  (char *)CMD_HIDDEN);
  	}
      }
  
Index: openafs/src/config/Makefile.version-NOCML.in
diff -c openafs/src/config/Makefile.version-NOCML.in:1.5 openafs/src/config/Makefile.version-NOCML.in:1.5.2.1
*** openafs/src/config/Makefile.version-NOCML.in:1.5	Sat May  8 01:15:23 2004
--- openafs/src/config/Makefile.version-NOCML.in	Wed Oct 11 09:16:24 2006
***************
*** 10,16 ****
  
  AFS_component_version_number.o: AFS_component_version_number.c
  
! AFS_component_version_number.c: 
  	echo 'char cml_version_number[]="@(#) OpenAFS ${VERSION} built ' `date +"%Y-%m-%d"` '";' >AFS_component_version_number.c
  	echo 'char* AFSVersion = "${PACKAGE} ${VERSION}"; ' >>AFS_component_version_number.c
  
--- 10,16 ----
  
  AFS_component_version_number.o: AFS_component_version_number.c
  
! AFS_component_version_number.c: @TOP_OBJDIR@/src/config/Makefile.version
  	echo 'char cml_version_number[]="@(#) OpenAFS ${VERSION} built ' `date +"%Y-%m-%d"` '";' >AFS_component_version_number.c
  	echo 'char* AFSVersion = "${PACKAGE} ${VERSION}"; ' >>AFS_component_version_number.c
  
Index: openafs/src/config/NTMakefile.amd64_w2k
diff -c openafs/src/config/NTMakefile.amd64_w2k:1.1.2.32 openafs/src/config/NTMakefile.amd64_w2k:1.1.2.43
*** openafs/src/config/NTMakefile.amd64_w2k:1.1.2.32	Sun Apr  9 01:01:58 2006
--- openafs/src/config/NTMakefile.amd64_w2k	Fri Oct  6 13:13:20 2006
***************
*** 80,86 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=0101
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 80,86 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=205
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/config/NTMakefile.i386_nt40
diff -c openafs/src/config/NTMakefile.i386_nt40:1.46.2.47 openafs/src/config/NTMakefile.i386_nt40:1.46.2.58
*** openafs/src/config/NTMakefile.i386_nt40:1.46.2.47	Sun Apr  9 01:01:58 2006
--- openafs/src/config/NTMakefile.i386_nt40	Fri Oct  6 13:13:20 2006
***************
*** 80,86 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=0101
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 80,86 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=205
  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.1.2.34 openafs/src/config/NTMakefile.i386_w2k:1.1.2.45
*** openafs/src/config/NTMakefile.i386_w2k:1.1.2.34	Sun Apr  9 01:01:58 2006
--- openafs/src/config/NTMakefile.i386_w2k	Fri Oct  6 13:13:20 2006
***************
*** 80,86 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=0101
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 80,86 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=205
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/config/afs_sysnames.h
diff -c openafs/src/config/afs_sysnames.h:1.50.2.23 openafs/src/config/afs_sysnames.h:1.50.2.25
*** openafs/src/config/afs_sysnames.h:1.50.2.23	Wed Mar 15 11:16:36 2006
--- openafs/src/config/afs_sysnames.h	Sun Oct  8 23:34:50 2006
***************
*** 181,186 ****
--- 181,187 ----
  #define SYS_NAME_ID_i386_fbsd_52        2107
  #define SYS_NAME_ID_i386_fbsd_53        2108
  #define SYS_NAME_ID_i386_fbsd_60        2112
+ #define SYS_NAME_ID_i386_fbsd_61        2113
  
  #define SYS_NAME_ID_ia64_linux2		2200
  #define SYS_NAME_ID_ia64_linux22	2201
***************
*** 212,217 ****
--- 213,232 ----
  #define SYS_NAME_ID_i386_nbsd21		2525
  #define SYS_NAME_ID_i386_nbsd30		2526
  #define SYS_NAME_ID_amd64_nbsd20	2527
+ #define SYS_NAME_ID_i386_nbsd40 2528
+ #define SYS_NAME_ID_i386_nbsd50 2529
+ #define SYS_NAME_ID_sparc64_nbsd30 2530
+ #define SYS_NAME_ID_sparc64_nbsd40 2531
+ #define SYS_NAME_ID_sparc64_nbsd50 2532
+ #define SYS_NAME_ID_amd64_nbsd30 2533
+ #define SYS_NAME_ID_amd64_nbsd40 2534
+ #define SYS_NAME_ID_amd64_nbsd50 2535
+ #define SYS_NAME_ID_alpha_nbsd30 2536
+ #define SYS_NAME_ID_alpha_nbsd40 2537
+ #define SYS_NAME_ID_alpha_nbsd50 2538
+ #define SYS_NAME_ID_macppc_nbsd30 2539
+ #define SYS_NAME_ID_macppc_nbsd40 2540
+ #define SYS_NAME_ID_macppc_nbsd50 2541
  
  #define SYS_NAME_ID_i386_obsd31		2600
  #define SYS_NAME_ID_i386_obsd32		2601
***************
*** 221,226 ****
--- 236,242 ----
  #define SYS_NAME_ID_i386_obsd36		2605
  #define SYS_NAME_ID_i386_obsd37		2606
  #define SYS_NAME_ID_i386_obsd38		2607
+ #define SYS_NAME_ID_i386_obsd39		2608
  
  #define SYS_NAME_ID_amd64_linux2        2700
  #define SYS_NAME_ID_amd64_linux22       2701
Index: openafs/src/config/param.alpha_linux_24.h
diff -c openafs/src/config/param.alpha_linux_24.h:1.5.2.2 openafs/src/config/param.alpha_linux_24.h:1.5.2.3
*** openafs/src/config/param.alpha_linux_24.h:1.5.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.alpha_linux_24.h	Mon Jun 12 12:20:53 2006
***************
*** 56,62 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME       "alpha_linux_24"
--- 56,62 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME       "alpha_linux_24"
Index: openafs/src/config/param.alpha_linux_26.h
diff -c openafs/src/config/param.alpha_linux_26.h:1.1.2.3 openafs/src/config/param.alpha_linux_26.h:1.1.2.4
*** openafs/src/config/param.alpha_linux_26.h:1.1.2.3	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.alpha_linux_26.h	Mon Jun 12 12:20:53 2006
***************
*** 61,67 ****
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
--- 61,67 ----
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
Index: openafs/src/config/param.amd64_linux24.h
diff -c openafs/src/config/param.amd64_linux24.h:1.3.2.2 openafs/src/config/param.amd64_linux24.h:1.3.2.3
*** openafs/src/config/param.amd64_linux24.h:1.3.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.amd64_linux24.h	Mon Jun 12 12:20:53 2006
***************
*** 69,75 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"amd64_linux24"
--- 69,75 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"amd64_linux24"
Index: openafs/src/config/param.amd64_linux26.h
diff -c openafs/src/config/param.amd64_linux26.h:1.1.2.4 openafs/src/config/param.amd64_linux26.h:1.1.2.5
*** openafs/src/config/param.amd64_linux26.h:1.1.2.4	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.amd64_linux26.h	Mon Jun 12 12:20:53 2006
***************
*** 57,63 ****
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
--- 57,63 ----
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
Index: openafs/src/config/param.i386_fbsd_61.h
diff -c /dev/null openafs/src/config/param.i386_fbsd_61.h:1.1.6.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/config/param.i386_fbsd_61.h	Mon Jul 31 12:06:33 2006
***************
*** 0 ****
--- 1,198 ----
+ #ifndef	AFS_PARAM_H
+ #define	AFS_PARAM_H
+ 
+ /* Machine / Operating system information */
+ #define SYS_NAME	"i386_fbsd_61"
+ #define SYS_NAME_ID	SYS_NAME_ID_i386_fbsd_61
+ 
+ #define AFSLITTLE_ENDIAN    1
+ #define AFS_HAVE_FFS        1	/* Use system's ffs. */
+ #define AFS_HAVE_STATVFS    1	/* System doesn't support statvfs */
+ #define AFS_VM_RDWR_ENV	    1	/* read/write implemented via VM */
+ 
+ #ifndef UKERNEL
+ /* This section for kernel libafs compiles only */
+ 
+ #ifndef IGNORE_STDS_H
+ #include <sys/param.h>
+ #endif
+ 
+ #define AFS_XBSD_ENV 1		/* {Free,Open,Net}BSD */
+ #define AFS_X86_XBSD_ENV 1
+ 
+ #define AFS_NAMEI_ENV     1	/* User space interface to file system */
+ #define AFS_64BIT_ENV 1
+ #define AFS_64BIT_CLIENT 1
+ #define AFS_64BIT_IOPS_ENV 1	/* Needed for NAMEI */
+ #define AFS_FBSD_ENV 1
+ #define AFS_FBSD40_ENV 1
+ #define AFS_FBSD42_ENV 1
+ #define AFS_FBSD43_ENV 1
+ #define AFS_FBSD44_ENV 1
+ #define AFS_FBSD45_ENV 1
+ #define AFS_FBSD46_ENV 1
+ #define AFS_FBSD47_ENV 1
+ #define AFS_FBSD50_ENV 1
+ #define AFS_FBSD51_ENV 1
+ #define AFS_FBSD52_ENV 1
+ #define AFS_FBSD53_ENV 1
+ #define AFS_FBSD60_ENV 1
+ #define AFS_FBSD61_ENV 1
+ #define AFS_X86_FBSD_ENV 1
+ #define AFS_X86_FBSD40_ENV 1
+ #define AFS_X86_FBSD42_ENV 1
+ #define AFS_X86_FBSD43_ENV 1
+ #define AFS_X86_FBSD46_ENV 1
+ #define AFS_X86_FBSD47_ENV 1
+ #define AFS_X86_FBSD50_ENV 1
+ #define AFS_X86_ENV 1
+ #define AFS_NONFSTRANS 1
+ #define FTRUNC O_TRUNC
+ 
+ #define IUPD 0x0010
+ #define IACC 0x0020
+ #define ICHG 0x0040
+ #define IMOD 0x0080
+ 
+ #define IN_LOCK(ip)     lockmgr(&ip->i_lock, LK_EXCLUSIVE, \
+                                 NULL, curproc)
+ #define IN_UNLOCK(ip)   lockmgr(&ip->i_lock, LK_RELEASE, \
+                                 NULL, curproc)
+ 
+ #include <afs/afs_sysnames.h>
+ 
+ #define AFS_VFS_ENV	1
+ #define AFS_VFSINCL_ENV 1
+ #define AFS_GREEDY43_ENV	1
+ #define AFS_ENV  	1
+ 
+ #define AFS_SYSCALL	339
+ #define AFS_MOUNT_AFS	"afs"
+ 
+ #ifndef MOUNT_UFS
+ #define MOUNT_UFS "ufs"
+ #endif
+ 
+ #ifndef	MOUNT_AFS
+ #define	MOUNT_AFS AFS_MOUNT_AFS
+ #endif
+ 
+ #define RXK_LISTENER_ENV 1
+ #define AFS_GCPAGS	        0	/* if nonzero, garbage collect PAGs */
+ #define AFS_USE_GETTIMEOFDAY    1	/* use gettimeofday to implement rx clock */
+ 
+ /* Extra kernel definitions (from kdefs file) */
+ #ifdef _KERNEL
+ #define AFS_GLOBAL_SUNLOCK        1
+ #define	AFS_VFS34	1	/* What is VFS34??? */
+ #define	AFS_SHORTGID	0	/* are group id's short? */
+ #define	afsio_iov	uio_iov
+ #define	afsio_iovcnt	uio_iovcnt
+ #define	afsio_offset	uio_offset
+ #define	afsio_seg	uio_segflg
+ #define	afsio_resid	uio_resid
+ #define	AFS_UIOSYS	UIO_SYSSPACE
+ #define	AFS_UIOUSER	UIO_USERSPACE
+ #define	AFS_CLBYTES	CLBYTES
+ #define	osi_GetTime(x)	microtime(x)
+ #define AFS_KALLOC(x)   osi_fbsd_alloc((x), 1)
+ #undef	AFS_KALLOC_NOSLEEP
+ #define	AFS_KALLOC_NOSLEEP(x) osi_fbsd_alloc((x), 0)
+ #define AFS_KFREE(x,y)  osi_fbsd_free((x))
+ #define	v_count		v_usecount
+ #define v_vfsp		v_mount
+ #define vfs_bsize	mnt_stat.f_bsize
+ #define vfs_fsid	mnt_stat.f_fsid
+ #define va_nodeid	va_fileid
+ #define vfs_vnodecovered mnt_vnodecovered
+ #define direct		dirent
+ #define vnode_t		struct vnode
+ 
+ #ifndef MUTEX_DEFAULT
+ #define MUTEX_DEFAULT   0
+ #endif /* MUTEX_DEFAULT */
+ 
+ #ifndef SSYS
+ #define SSYS            0x00002
+ #endif /* SSYS */
+ 
+ #define p_rcred         p_ucred
+ 
+ #if	!defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__)
+ enum vcexcl { NONEXCL, EXCL };
+ 
+ #ifdef KERNEL
+ #ifndef MIN
+ #define MIN(A,B) ((A) < (B) ? (A) : (B))
+ #endif
+ #ifndef MAX
+ #define MAX(A,B) ((A) > (B) ? (A) : (B))
+ #endif
+ #endif /* KERNEL */
+ 
+ #endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */
+ #endif /* _KERNEL */
+ 
+ #else /* !defined(UKERNEL) */
+ 
+ /* This section for user space compiles only */
+ 
+ #define UKERNEL			1	/* user space kernel */
+ #define AFS_ENV			1
+ #define AFS_VFSINCL_ENV         1
+ #define AFS_USR_FBSD40_ENV	1
+ #define AFS_USR_FBSD42_ENV	1
+ #define AFS_USR_FBSD43_ENV	1
+ #define AFS_USR_FBSD44_ENV	1
+ #define AFS_USR_FBSD45_ENV	1
+ #define AFS_USR_FBSD46_ENV	1
+ #define AFS_USR_FBSD47_ENV	1
+ #define AFS_USR_FBSD50_ENV	1
+ #define AFS_USR_FBSD51_ENV	1
+ #define AFS_USR_FBSD52_ENV	1
+ #define AFS_USR_FBSD53_ENV	1
+ #define AFS_USR_FBSD60_ENV	1
+ #define AFS_USR_FBSD61_ENV	1
+ #define AFS_USR_FBSD_ENV	1
+ #define AFS_NONFSTRANS 1
+ 
+ #define AFS_MOUNT_AFS "afs"	/* The name of the filesystem type. */
+ #define AFS_SYSCALL 339
+ #define AFS_NAMEI_ENV         1	/* User space interface to file system */
+ #define AFS_64BIT_ENV 1
+ #define AFS_64BIT_IOPS_ENV    1	/* Needed for NAMEI */
+ #define AFS_USERSPACE_IP_ADDR 1
+ #define RXK_LISTENER_ENV      1
+ #define AFS_GCPAGS	      0	/* if nonzero, garbage collect PAGs */
+ 
+ #include <afs/afs_sysnames.h>
+ 
+ #define	afsio_iov	uio_iov
+ #define	afsio_iovcnt	uio_iovcnt
+ #define	afsio_offset	uio_offset
+ #define	afsio_seg	uio_segflg
+ #define	afsio_fmode	uio_fmode
+ #define	afsio_resid	uio_resid
+ #define	AFS_UIOSYS	1
+ #define	AFS_UIOUSER	UIO_USERSPACE
+ #define	AFS_CLBYTES	MCLBYTES
+ #define	AFS_MINCHANGE	2
+ #define	VATTR_NULL	usr_vattr_null
+ 
+ #define AFS_DIRENT
+ #ifndef CMSERVERPREF
+ #define CMSERVERPREF
+ #endif
+ 
+ #include <sys/param.h>
+ #include <sys/types.h>
+ #include <sys/mount.h>
+ #include <sys/fcntl.h>
+ #include <sys/uio.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <limits.h>
+ 
+ #endif /* !defined(UKERNEL) */
+ 
+ #endif /* AFS_PARAM_H */
Index: openafs/src/config/param.i386_linux24.h
diff -c openafs/src/config/param.i386_linux24.h:1.19.2.2 openafs/src/config/param.i386_linux24.h:1.19.2.3
*** openafs/src/config/param.i386_linux24.h:1.19.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.i386_linux24.h	Mon Jun 12 12:20:53 2006
***************
*** 57,63 ****
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
--- 57,63 ----
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
Index: openafs/src/config/param.i386_linux26.h
diff -c openafs/src/config/param.i386_linux26.h:1.3.2.3 openafs/src/config/param.i386_linux26.h:1.3.2.4
*** openafs/src/config/param.i386_linux26.h:1.3.2.3	Fri Mar 31 00:53:00 2006
--- openafs/src/config/param.i386_linux26.h	Mon Jun 12 12:20:53 2006
***************
*** 58,64 ****
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
--- 58,64 ----
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
Index: openafs/src/config/param.i386_nbsd30.h
diff -c openafs/src/config/param.i386_nbsd30.h:1.1.2.1 openafs/src/config/param.i386_nbsd30.h:1.1.2.2
*** openafs/src/config/param.i386_nbsd30.h:1.1.2.1	Sun Jan 30 23:13:49 2005
--- openafs/src/config/param.i386_nbsd30.h	Fri Oct  6 10:57:12 2006
***************
*** 5,12 ****
  #define AFS_X86_ENV 1
  #define AFSLITTLE_ENDIAN 1
  
! #define SYS_NAME       "i386_nbsd30"
! #define SYS_NAME_ID    SYS_NAME_ID_i386_nbsd30
  
  #ifndef UKERNEL
  /* This section for kernel libafs compiles only */
--- 5,12 ----
  #define AFS_X86_ENV 1
  #define AFSLITTLE_ENDIAN 1
  
! #define SYS_NAME       "i386_nbsd40"
! #define SYS_NAME_ID    SYS_NAME_ID_i386_nbsd40
  
  #ifndef UKERNEL
  /* This section for kernel libafs compiles only */
Index: openafs/src/config/param.i386_obsd39.h
diff -c /dev/null openafs/src/config/param.i386_obsd39.h:1.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/config/param.i386_obsd39.h	Thu Mar  9 10:27:18 2006
***************
*** 0 ****
--- 1,69 ----
+ /*
+  * Jim Rees, University of Michigan CITI
+  */
+ 
+ #ifndef	AFS_PARAM_H
+ #define	AFS_PARAM_H
+ 
+ #ifndef IGNORE_STDS_H
+ #include <sys/param.h>
+ #endif
+ 
+ #define SYS_NAME		"i386_obsd39"
+ #define SYS_NAME_ID		SYS_NAME_ID_i386_obsd39
+ 
+ #define AFS_XBSD_ENV		1	/* {Free,Open,Net}BSD */
+ #define AFS_X86_XBSD_ENV	1
+ 
+ #define AFS_NAMEI_ENV		1	/* User space interface to file system */
+ #define AFS_64BIT_ENV		1
+ #define AFS_64BIT_CLIENT	1
+ #define AFS_64BIT_IOPS_ENV	1	/* Needed for NAMEI */
+ #define AFS_OBSD_ENV		1
+ #define AFS_OBSD34_ENV		1
+ #define AFS_OBSD35_ENV		1
+ #define AFS_OBSD36_ENV		1
+ #define AFS_OBSD37_ENV		1
+ #define AFS_OBSD38_ENV		1
+ #define AFS_OBSD39_ENV		1
+ #define AFS_NONFSTRANS		1
+ #define AFS_VM_RDWR_ENV		1
+ #define AFS_VFS_ENV		1
+ #define AFS_VFSINCL_ENV		1
+ 
+ #define FTRUNC O_TRUNC
+ 
+ #define AFS_SYSCALL		208
+ #define AFS_MOUNT_AFS		"afs"
+ 
+ #define RXK_LISTENER_ENV	1
+ #define AFS_GCPAGS	        0	/* if nonzero, garbage collect PAGs */
+ #define AFS_USE_GETTIMEOFDAY    1	/* use gettimeofday to implement rx clock */
+ 
+ #define AFSLITTLE_ENDIAN	1
+ 
+ #ifndef IGNORE_STDS_H
+ #include <afs/afs_sysnames.h>
+ #endif
+ 
+ /* Extra kernel definitions (from kdefs file) */
+ #ifdef _KERNEL
+ #ifdef MULTIPROCESSOR
+ #define AFS_GLOBAL_SUNLOCK	1
+ #endif
+ #define	AFS_SHORTGID		0	/* are group id's short? */
+ 
+ #if	!defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__)
+ enum vcexcl { NONEXCL, EXCL };
+ 
+ #ifndef MIN
+ #define MIN(A,B) ((A) < (B) ? (A) : (B))
+ #endif
+ #ifndef MAX
+ #define MAX(A,B) ((A) > (B) ? (A) : (B))
+ #endif
+ 
+ #endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */
+ #endif /* _KERNEL */
+ 
+ #endif /* AFS_PARAM_H */
Index: openafs/src/config/param.i386_umlinux24.h
diff -c openafs/src/config/param.i386_umlinux24.h:1.2.2.2 openafs/src/config/param.i386_umlinux24.h:1.2.2.3
*** openafs/src/config/param.i386_umlinux24.h:1.2.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.i386_umlinux24.h	Mon Jun 12 12:20:54 2006
***************
*** 65,71 ****
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
--- 65,71 ----
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
Index: openafs/src/config/param.i386_umlinux26.h
diff -c openafs/src/config/param.i386_umlinux26.h:1.1.2.3 openafs/src/config/param.i386_umlinux26.h:1.1.2.4
*** openafs/src/config/param.i386_umlinux26.h:1.1.2.3	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.i386_umlinux26.h	Mon Jun 12 12:20:54 2006
***************
*** 58,64 ****
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
--- 58,64 ----
  #include <afs/afs_sysnames.h>
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  #define AFSLITTLE_ENDIAN    1
  #define AFS_HAVE_FFS        1	/* Use system's ffs. */
Index: openafs/src/config/param.ia64_linux24.h
diff -c openafs/src/config/param.ia64_linux24.h:1.9.2.2 openafs/src/config/param.ia64_linux24.h:1.9.2.3
*** openafs/src/config/param.ia64_linux24.h:1.9.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.ia64_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 69,75 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"ia64_linux24"
--- 69,75 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"ia64_linux24"
Index: openafs/src/config/param.ia64_linux26.h
diff -c openafs/src/config/param.ia64_linux26.h:1.1.2.4 openafs/src/config/param.ia64_linux26.h:1.1.2.5
*** openafs/src/config/param.ia64_linux26.h:1.1.2.4	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.ia64_linux26.h	Mon Jun 12 12:20:54 2006
***************
*** 78,84 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"ia64_linux26"
--- 78,84 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"ia64_linux26"
Index: openafs/src/config/param.parisc_linux24.h
diff -c openafs/src/config/param.parisc_linux24.h:1.7.2.2 openafs/src/config/param.parisc_linux24.h:1.7.2.3
*** openafs/src/config/param.parisc_linux24.h:1.7.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.parisc_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 52,58 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME       "parisc_linux24"
--- 52,58 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME       "parisc_linux24"
Index: openafs/src/config/param.ppc64_linux24.h
diff -c openafs/src/config/param.ppc64_linux24.h:1.2.2.2 openafs/src/config/param.ppc64_linux24.h:1.2.2.3
*** openafs/src/config/param.ppc64_linux24.h:1.2.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.ppc64_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 57,63 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2 /* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc64_linux24"
--- 57,63 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc64_linux24"
Index: openafs/src/config/param.ppc64_linux26.h
diff -c openafs/src/config/param.ppc64_linux26.h:1.1.2.3 openafs/src/config/param.ppc64_linux26.h:1.1.2.4
*** openafs/src/config/param.ppc64_linux26.h:1.1.2.3	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.ppc64_linux26.h	Mon Jun 12 12:20:54 2006
***************
*** 58,64 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2 /* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc64_linux26"
--- 58,64 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc64_linux26"
Index: openafs/src/config/param.ppc_linux24.h
diff -c openafs/src/config/param.ppc_linux24.h:1.10.2.2 openafs/src/config/param.ppc_linux24.h:1.10.2.3
*** openafs/src/config/param.ppc_linux24.h:1.10.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.ppc_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 54,60 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc_linux24"
--- 54,60 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc_linux24"
Index: openafs/src/config/param.ppc_linux26.h
diff -c openafs/src/config/param.ppc_linux26.h:1.1.2.3 openafs/src/config/param.ppc_linux26.h:1.1.2.4
*** openafs/src/config/param.ppc_linux26.h:1.1.2.3	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.ppc_linux26.h	Mon Jun 12 12:20:54 2006
***************
*** 56,62 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc_linux26"
--- 56,62 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME       "ppc_linux26"
Index: openafs/src/config/param.rs_aix51.h
diff -c openafs/src/config/param.rs_aix51.h:1.6 openafs/src/config/param.rs_aix51.h:1.6.2.1
*** openafs/src/config/param.rs_aix51.h:1.6	Fri Aug  8 17:54:39 2003
--- openafs/src/config/param.rs_aix51.h	Tue Jun 20 17:31:04 2006
***************
*** 25,32 ****
  #ifdef AFS_NAMEI_ENV
  #define AFS_64BIT_IOPS_ENV	1
  #endif
- #define BITMAP_LATER		1
- #define FAST_RESTART		1
  
  #define AFS_HAVE_FLOCK_SYSID    1
  
--- 25,30 ----
Index: openafs/src/config/param.rs_aix52.h
diff -c openafs/src/config/param.rs_aix52.h:1.1 openafs/src/config/param.rs_aix52.h:1.1.2.1
*** openafs/src/config/param.rs_aix52.h:1.1	Wed Mar 24 03:38:15 2004
--- openafs/src/config/param.rs_aix52.h	Tue Jun 20 17:31:04 2006
***************
*** 26,33 ****
  #ifdef AFS_NAMEI_ENV
  #define AFS_64BIT_IOPS_ENV	1
  #endif
- #define BITMAP_LATER		1
- #define FAST_RESTART		1
  
  #define AFS_HAVE_FLOCK_SYSID    1
  
--- 26,31 ----
Index: openafs/src/config/param.rs_aix53.h
diff -c openafs/src/config/param.rs_aix53.h:1.1.2.2 openafs/src/config/param.rs_aix53.h:1.1.2.3
*** openafs/src/config/param.rs_aix53.h:1.1.2.2	Sun Apr 24 10:28:43 2005
--- openafs/src/config/param.rs_aix53.h	Tue Jun 20 17:31:04 2006
***************
*** 27,34 ****
  #ifdef AFS_NAMEI_ENV
  #define AFS_64BIT_IOPS_ENV	1
  #endif
- #define BITMAP_LATER		1
- #define FAST_RESTART		1
  
  #define AFS_HAVE_FLOCK_SYSID    1
  
--- 27,32 ----
Index: openafs/src/config/param.s390_linux24.h
diff -c openafs/src/config/param.s390_linux24.h:1.12.2.2 openafs/src/config/param.s390_linux24.h:1.12.2.3
*** openafs/src/config/param.s390_linux24.h:1.12.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.s390_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 66,72 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390_linux24"
--- 66,72 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390_linux24"
Index: openafs/src/config/param.s390_linux26.h
diff -c openafs/src/config/param.s390_linux26.h:1.1.2.2 openafs/src/config/param.s390_linux26.h:1.1.2.3
*** openafs/src/config/param.s390_linux26.h:1.1.2.2	Wed Mar 15 11:16:36 2006
--- openafs/src/config/param.s390_linux26.h	Mon Jun 12 12:20:54 2006
***************
*** 68,74 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390_linux26"
--- 68,74 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390_linux26"
Index: openafs/src/config/param.s390x_linux24.h
diff -c openafs/src/config/param.s390x_linux24.h:1.1.2.3 openafs/src/config/param.s390x_linux24.h:1.1.2.4
*** openafs/src/config/param.s390x_linux24.h:1.1.2.3	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.s390x_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 71,77 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390x_linux24"
--- 71,77 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390x_linux24"
Index: openafs/src/config/param.s390x_linux26.h
diff -c openafs/src/config/param.s390x_linux26.h:1.1.2.4 openafs/src/config/param.s390x_linux26.h:1.1.2.5
*** openafs/src/config/param.s390x_linux26.h:1.1.2.4	Mon May 30 00:23:39 2005
--- openafs/src/config/param.s390x_linux26.h	Mon Jun 12 12:20:54 2006
***************
*** 71,77 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390x_linux26"
--- 71,77 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"s390x_linux26"
Index: openafs/src/config/param.sparc64_linux24.h
diff -c openafs/src/config/param.sparc64_linux24.h:1.7.2.2 openafs/src/config/param.sparc64_linux24.h:1.7.2.3
*** openafs/src/config/param.sparc64_linux24.h:1.7.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.sparc64_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 65,71 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS		0	/* if nonzero, garbage collect PAGs */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"sparc64_linux24"
--- 65,71 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS	1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"sparc64_linux24"
Index: openafs/src/config/param.sparc64_linux26.h
diff -c openafs/src/config/param.sparc64_linux26.h:1.1.4.3 openafs/src/config/param.sparc64_linux26.h:1.1.4.4
*** openafs/src/config/param.sparc64_linux26.h:1.1.4.3	Mon Jan 30 13:19:39 2006
--- openafs/src/config/param.sparc64_linux26.h	Mon Jun 12 12:20:54 2006
***************
*** 67,73 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS		0	/* if nonzero, garbage collect PAGs */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"sparc64_linux26"
--- 67,73 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS	1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"sparc64_linux26"
Index: openafs/src/config/param.sparc_linux24.h
diff -c openafs/src/config/param.sparc_linux24.h:1.8.2.2 openafs/src/config/param.sparc_linux24.h:1.8.2.3
*** openafs/src/config/param.sparc_linux24.h:1.8.2.2	Sun Apr 24 20:02:18 2005
--- openafs/src/config/param.sparc_linux24.h	Mon Jun 12 12:20:54 2006
***************
*** 63,69 ****
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       2	/* Set to Userdisabled, allow sysctl to override */
  
  /* Machine / Operating system information */
  #define SYS_NAME	"sparc_linux24"
--- 63,69 ----
  
  #define AFS_USERSPACE_IP_ADDR 1
  #define RXK_LISTENER_ENV 1
! #define AFS_GCPAGS       1
  
  /* Machine / Operating system information */
  #define SYS_NAME	"sparc_linux24"
Index: openafs/src/dauth/Makefile.in
diff -c openafs/src/dauth/Makefile.in:1.9 openafs/src/dauth/Makefile.in:1.9.2.1
*** openafs/src/dauth/Makefile.in:1.9	Sat Jan 11 02:34:05 2003
--- openafs/src/dauth/Makefile.in	Mon Jul 31 13:07:50 2006
***************
*** 46,58 ****
  adkint.xdr.o:	adkint.xdr.c adkint.h
  
  adkint.cs.c: adkint.xg
! 	${RXGEN} -C -o $@ ${srcdir}/adkint.xg
  
  adkint.xdr.c: adkint.xg
  	${RXGEN} -c -o $@ ${srcdir}/adkint.xg
  
  adkint.h: adkint.xg
! 	${RXGEN} -h -o $@ ${srcdir}/adkint.xg
  
  dlog:		dlog.o $(VERS) $(OBJS) $(LIBS)
  		$(CC) ${LDFLAGS} -o dlog dlog.o $(VERS) $(OBJS) ${LIBS} \
--- 46,58 ----
  adkint.xdr.o:	adkint.xdr.c adkint.h
  
  adkint.cs.c: adkint.xg
! 	${RXGEN} -C -u -o $@ ${srcdir}/adkint.xg
  
  adkint.xdr.c: adkint.xg
  	${RXGEN} -c -o $@ ${srcdir}/adkint.xg
  
  adkint.h: adkint.xg
! 	${RXGEN} -h -u -o $@ ${srcdir}/adkint.xg
  
  dlog:		dlog.o $(VERS) $(OBJS) $(LIBS)
  		$(CC) ${LDFLAGS} -o dlog dlog.o $(VERS) $(OBJS) ${LIBS} \
Index: openafs/src/dauth/dlog.c
diff -c openafs/src/dauth/dlog.c:1.9 openafs/src/dauth/dlog.c:1.9.2.1
*** openafs/src/dauth/dlog.c:1.9	Tue Jul 15 19:14:58 2003
--- openafs/src/dauth/dlog.c	Mon Jul 31 13:07:50 2006
***************
*** 20,32 ****
   * to decode the decrypted result. As a side-effect of using the AFS/DFS
   * translator as the intermediary, this program also does not have to access
   * any KRB5 location/configuration information--it just contacts the servers
!  * listed in the CellServDB in the usual manner (via ubik_Call).
   *
   * This works as follows:
   * 
   * 1. dlog sends a GetTickets request to the intermediary.
   *
!  * 2. The intermediary reformats the request as an KRB5 AS request, asking
   *    for a ticket made out to the specified principal, suitable for contacting
   *    the AFS/DFS translator principal. This is determined by the server, and
   *    is by default "afs".
--- 20,32 ----
   * to decode the decrypted result. As a side-effect of using the AFS/DFS
   * translator as the intermediary, this program also does not have to access
   * any KRB5 location/configuration information--it just contacts the servers
!  * listed in the CellServDB in the usual manner (via ubik_.
   *
   * This works as follows:
   * 
   * 1. dlog sends a GetTickets request to the intermediary.
   *
!  * 2. The intermediary reformats the request as an KRB5 AS request(asking
   *    for a ticket made out to the specified principal, suitable for contacting
   *    the AFS/DFS translator principal. This is determined by the server, and
   *    is by default "afs".
***************
*** 72,78 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/dauth/Attic/dlog.c,v 1.9 2003/07/15 23:14:58 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 72,78 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/dauth/Attic/dlog.c,v 1.9.2.1 2006/07/31 17:07:50 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 665,671 ****
       */
      reply_p = (adk_reply_ptr) 0;
      error_p = (adk_error_ptr) 0;
!     code = ubik_Call(ADK_GetTicket, ubik_handle, 0,	/* Ubik flags */
  		     name,	/* IN:  Principal: must be exact DCE principal */
  		     nonce,	/* IN:  Input nonce */
  		     lifetime,	/* IN:  lifetime */
--- 665,671 ----
       */
      reply_p = (adk_reply_ptr) 0;
      error_p = (adk_error_ptr) 0;
!     code = ubik_ADK_GetTicket(ubik_handle, 0,	/* Ubik flags */
  		     name,	/* IN:  Principal: must be exact DCE principal */
  		     nonce,	/* IN:  Input nonce */
  		     lifetime,	/* IN:  lifetime */
Index: openafs/src/des/crypt.c
diff -c openafs/src/des/crypt.c:1.13.2.1 openafs/src/des/crypt.c:1.13.2.2
*** openafs/src/des/crypt.c:1.13.2.1	Wed Aug 25 03:03:38 2004
--- openafs/src/des/crypt.c	Tue Jul 25 10:46:18 2006
***************
*** 38,44 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/des/crypt.c,v 1.13.2.1 2004/08/25 07:03:38 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <windows.h>
--- 38,44 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/des/crypt.c,v 1.13.2.2 2006/07/25 14:46:18 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <windows.h>
***************
*** 963,968 ****
--- 963,969 ----
  }
  #endif
  
+ #if 0
  /*
   * "encrypt" routine (for backwards compatibility)
   */
***************
*** 993,998 ****
--- 994,1000 ----
      }
      return (0);
  }
+ #endif
  
  #ifdef CRYPT_DEBUG
  STATIC
Index: openafs/src/export/Makefile.in
diff -c openafs/src/export/Makefile.in:1.15.2.4 openafs/src/export/Makefile.in:1.15.2.6
*** openafs/src/export/Makefile.in:1.15.2.4	Sat Apr 23 20:59:03 2005
--- openafs/src/export/Makefile.in	Tue Jun 20 17:40:46 2006
***************
*** 113,119 ****
  	${CC} -q64 ${CFLAGS} -c ${srcdir}/cfgafs.c -o cfgafs64.o
  
  clean:
! 	$(RM) -f *.o *.Zlst *.map *.out cfgexport cfgafs *.ext AFS_component_version_number.c export.exp export64.exp
  
  ${DEST}/root.client/usr/vice/etc/dkload/export.ext: export.ext
  	${INSTALL} $? $@
--- 113,123 ----
  	${CC} -q64 ${CFLAGS} -c ${srcdir}/cfgafs.c -o cfgafs64.o
  
  clean:
! 	$(RM) -f *.o *.Zlst *.map *.out AFS_component_version_number.c
! 	$(RM) -f export.exp export64.exp
! 	$(RM) -f cfgexport cfgexport64
! 	$(RM) -f cfgafs cfgafs64
! 	$(RM) -f *.ext *.ext.nonfs
  
  ${DEST}/root.client/usr/vice/etc/dkload/export.ext: export.ext
  	${INSTALL} $? $@
***************
*** 127,132 ****
--- 131,148 ----
  ${DEST}/root.client/usr/vice/etc/dkload/export64.ext.nonfs: @AIX64@export64.ext.nonfs
  @AIX64@	${INSTALL} $? $@
  
+ ${DESTDIR}${afskerneldir}/export.ext: export.ext
+ 	${INSTALL} $? $@
+ 
+ ${DESTDIR}${afskerneldir}/export64.ext: @AIX64@export64.ext
+ @AIX64@	${INSTALL} $? $@
+ 
+ ${DESTDIR}${afskerneldir}/export.ext.nonfs: export.ext.nonfs
+ 	${INSTALL} $? $@
+ 
+ ${DESTDIR}${afskerneldir}/export64.ext.nonfs: @AIX64@export64.ext.nonfs
+ @AIX64@	${INSTALL} $? $@
+ 
  ${DEST}/lib/afs/export.exp: export.exp
  	${INSTALL} $? $@
  
***************
*** 168,173 ****
--- 184,201 ----
  ${DEST}/root.client/usr/vice/etc/dkload/cfgafs64: @AIX64@cfgafs64
  @AIX64@	${INSTALL} $? $@
  
+ ${DESTDIR}${afskerneldir}/cfgexport: cfgexport
+ 	${INSTALL} $? $@
+ 
+ ${DESTDIR}${afskerneldir}/cfgexport64: @AIX64@cfgexport64
+ @AIX64@	${INSTALL} $? $@
+ 
+ ${DESTDIR}${afskerneldir}/cfgafs: cfgafs
+ 	${INSTALL} $? $@
+ 
+ ${DESTDIR}${afskerneldir}/cfgafs64: @AIX64@cfgafs64
+ @AIX64@	${INSTALL} $? $@
+ 
  dest:    ${DEST}/root.client/usr/vice/etc/dkload/export.ext \
  	${DEST}/root.client/usr/vice/etc/dkload/export.ext.nonfs \
  	${DEST}/root.client/usr/vice/etc/dkload/export64.ext.nonfs \
Index: openafs/src/fsint/NTMakefile
diff -c openafs/src/fsint/NTMakefile:1.5 openafs/src/fsint/NTMakefile:1.5.2.1
*** openafs/src/fsint/NTMakefile:1.5	Fri Nov 21 03:00:47 2003
--- openafs/src/fsint/NTMakefile	Mon Jul 31 17:51:19 2006
***************
*** 37,47 ****
  	$(LIBARCH)  
  
  # use rxgen on afscbint.xg and afsint.xg
! afscbint.cs.c afscbint.ss.c afscbint.xdr.c afscbint.h : afscbint.xg common.xg
! 	$(RXGEN) -x -y afscbint.xg
  
- afsint.cs.c afsint.ss.c afsint.xdr.c afsint.h: afsint.xg common.xg
- 	$(RXGEN) -x afsint.xg
  
  # mtafsint.lib
  
--- 37,66 ----
  	$(LIBARCH)  
  
  # use rxgen on afscbint.xg and afsint.xg
! afscbint.cs.c: common.xg afscbint.xg afsint.h afscbint.h 
! 	$(RXGEN) -x -C -o afscbint.cs.c afscbint.xg
! 
! afscbint.ss.c: common.xg afscbint.xg afsint.h afscbint.h
! 	$(RXGEN) -x -S -o afscbint.ss.c afscbint.xg
! 
! afscbint.xdr.c: common.xg afscbint.xg afsint.h afscbint.h
! 	$(RXGEN) -x -y -c -o afscbint.xdr.c afscbint.xg
! 
! afscbint.h: common.xg afscbint.xg
! 	$(RXGEN) -x -h -o afscbint.h afscbint.xg
! 
! afsint.cs.c: common.xg afsint.xg afsint.h
! 	$(RXGEN) -x -C -o afsint.cs.c afsint.xg
! 
! afsint.ss.c: common.xg afsint.xg afsint.h
! 	$(RXGEN) -x -S -o afsint.ss.c afsint.xg
! 
! afsint.xdr.c: common.xg afsint.xg
! 	$(RXGEN) -x -c -o afsint.xdr.c afsint.xg
! 
! afsint.h: common.xg afsint.xg
! 	$(RXGEN) -x -h -o afsint.h afsint.xg
  
  
  # mtafsint.lib
  
Index: openafs/src/kauth/Makefile.in
diff -c openafs/src/kauth/Makefile.in:1.11.2.1 openafs/src/kauth/Makefile.in:1.11.2.2
*** openafs/src/kauth/Makefile.in:1.11.2.1	Mon Oct 18 03:11:57 2004
--- openafs/src/kauth/Makefile.in	Mon Jul 31 13:07:50 2006
***************
*** 96,102 ****
  $(UKSRCS): kauth.h
  
  kauth.cs.c: kauth.rg
! 	${RXGEN} -x -C -o $@ ${srcdir}/kauth.rg
  
  kauth.ss.c: kauth.rg
  	${RXGEN} -x -S -o $@ ${srcdir}/kauth.rg
--- 96,102 ----
  $(UKSRCS): kauth.h
  
  kauth.cs.c: kauth.rg
! 	${RXGEN} -u -x -C -o $@ ${srcdir}/kauth.rg
  
  kauth.ss.c: kauth.rg
  	${RXGEN} -x -S -o $@ ${srcdir}/kauth.rg
***************
*** 105,111 ****
  	${RXGEN} -x -c -o $@ ${srcdir}/kauth.rg
  
  kauth.h: kauth.rg
! 	${RXGEN} -x -h -o $@ ${srcdir}/kauth.rg
  
  kauth.xdr.c: kauth.h
  kauth.cs.c: kauth.h
--- 105,111 ----
  	${RXGEN} -x -c -o $@ ${srcdir}/kauth.rg
  
  kauth.h: kauth.rg
! 	${RXGEN} -u -x -h -o $@ ${srcdir}/kauth.rg
  
  kauth.xdr.c: kauth.h
  kauth.cs.c: kauth.h
Index: openafs/src/kauth/NTMakefile
diff -c openafs/src/kauth/NTMakefile:1.9.2.1 openafs/src/kauth/NTMakefile:1.9.2.2
*** openafs/src/kauth/NTMakefile:1.9.2.1	Fri Mar 11 02:03:22 2005
--- openafs/src/kauth/NTMakefile	Mon Jul 31 17:51:20 2006
***************
*** 192,199 ****
  ############################################################################
  # rxgen on kauth.rg
  
! kauth.ss.c kauth.cs.c kauth.xdr.c kauth.h: kauth.rg
! 	$(RXGEN) -x $**
  
  ############################################################################
  # compile_et on kaerrors.c 
--- 192,208 ----
  ############################################################################
  # rxgen on kauth.rg
  
! kauth.cs.c: kauth.rg kauth.h
! 	$(RXGEN) -u -x -C -o $@ kauth.rg
! 
! kauth.ss.c: kauth.rg kauth.h
! 	$(RXGEN) -x -S -o $@ kauth.rg
! 
! kauth.xdr.c: kauth.rg kauth.h
! 	$(RXGEN) -x -c -o $@ kauth.rg
! 
! kauth.h: kauth.rg
! 	$(RXGEN) -u -x -h -o $@ kauth.rg
  
  ############################################################################
  # compile_et on kaerrors.c 
Index: openafs/src/kauth/authclient.c
diff -c openafs/src/kauth/authclient.c:1.14.2.4 openafs/src/kauth/authclient.c:1.14.2.6
*** openafs/src/kauth/authclient.c:1.14.2.4	Mon Dec 13 14:38:51 2004
--- openafs/src/kauth/authclient.c	Thu Sep 21 07:39:43 2006
***************
*** 17,23 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/kauth/authclient.c,v 1.14.2.4 2004/12/13 19:38:51 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
--- 17,23 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/kauth/authclient.c,v 1.14.2.6 2006/09/21 11:39:43 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
Index: openafs/src/kauth/kaserver.c
diff -c openafs/src/kauth/kaserver.c:1.17.2.2 openafs/src/kauth/kaserver.c:1.17.2.4
*** openafs/src/kauth/kaserver.c:1.17.2.2	Mon Feb 13 12:57:28 2006
--- openafs/src/kauth/kaserver.c	Tue Jun 20 16:35:01 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/kauth/kaserver.c,v 1.17.2.2 2006/02/13 17:57:28 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/kauth/kaserver.c,v 1.17.2.4 2006/06/20 20:35:01 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 59,64 ****
--- 59,68 ----
  afs_int32 myHost = 0;
  afs_int32 verbose_track = 1;
  afs_int32 krb4_cross = 0;
+ afs_int32 rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
  
  struct afsconf_dir *KA_conf;	/* for getting cell info */
  
***************
*** 168,173 ****
--- 172,178 ----
      int level;			/* security level for Ubik */
      afs_int32 i;
      char clones[MAXHOSTSPERCELL];
+     afs_uint32 host = ntohl(INADDR_ANY);
  
      struct rx_service *tservice;
      struct rx_securityClass *sca[1];
***************
*** 203,209 ****
      if (argc == 0) {
        usage:
  	printf("Usage: kaserver [-noAuth] [-fastKeys] [-database <dbpath>] "
! 	       "[-auditlog <log path>] "
  	       "[-localfiles <lclpath>] [-minhours <n>] [-servers <serverlist>] "
  	       "[-crossrealm]"
  	       /*" [-enable_peer_stats] [-enable_process_stats] " */
--- 208,214 ----
      if (argc == 0) {
        usage:
  	printf("Usage: kaserver [-noAuth] [-fastKeys] [-database <dbpath>] "
! 	       "[-auditlog <log path>] [-rxbind] "
  	       "[-localfiles <lclpath>] [-minhours <n>] [-servers <serverlist>] "
  	       "[-crossrealm]"
  	       /*" [-enable_peer_stats] [-enable_process_stats] " */
***************
*** 305,310 ****
--- 310,317 ----
  	    verbose_track = 0;
  	else if (IsArg("-crossrealm"))
  	    krb4_cross = 1;
+ 	else if (IsArg("-rxbind"))
+ 	    rxBind = 1;
  	else if (IsArg("-minhours")) {
  	    MinHours = atoi(argv[++a]);
  	} else if (IsArg("-enable_peer_stats")) {
***************
*** 377,382 ****
--- 384,411 ----
      ubik_CheckRXSecurityRock = (char *)KA_conf;
  
      ubik_nBuffers = 80;
+ 
+     if (rxBind) {
+ 	afs_int32 ccode;
+ #ifndef AFS_NT40_ENV
+         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
+             AFSDIR_SERVER_NETINFO_FILEPATH) {
+             char reason[1024];
+             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
+                                            ADDRSPERSITE, reason,
+                                            AFSDIR_SERVER_NETINFO_FILEPATH,
+                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+         } else 
+ #endif	
+ 	{
+             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
+         }
+         if (ccode == 1) {
+             host = SHostAddrs[0];
+ 	    rx_InitHost(host, htons(AFSCONF_KAUTHPORT));
+ 	}
+     }
+ 
      if (servers)
  	code =
  	    ubik_ServerInit(myHost, htons(AFSCONF_KAUTHPORT), serverList,
***************
*** 397,404 ****
      rx_SetNoJumbo();
  
      tservice =
! 	rx_NewService(0, KA_AUTHENTICATION_SERVICE, "AuthenticationService",
! 		      sca, 1, KAA_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create Authentication rx service\n"));
  	exit(3);
--- 426,433 ----
      rx_SetNoJumbo();
  
      tservice =
! 	rx_NewServiceHost(host, 0, KA_AUTHENTICATION_SERVICE, 
! 			  "AuthenticationService", sca, 1, KAA_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create Authentication rx service\n"));
  	exit(3);
***************
*** 406,413 ****
      rx_SetMinProcs(tservice, 1);
      rx_SetMaxProcs(tservice, 1);
  
      tservice =
! 	rx_NewService(0, KA_TICKET_GRANTING_SERVICE, "TicketGrantingService",
  		      sca, 1, KAT_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create Ticket Granting rx service\n"));
--- 435,443 ----
      rx_SetMinProcs(tservice, 1);
      rx_SetMaxProcs(tservice, 1);
  
+     
      tservice =
! 	rx_NewServiceHost(host, 0, KA_TICKET_GRANTING_SERVICE, "TicketGrantingService",
  		      sca, 1, KAT_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create Ticket Granting rx service\n"));
***************
*** 421,427 ****
      scm[RX_SCINDEX_KAD] =
  	rxkad_NewServerSecurityObject(rxkad_crypt, 0, kvno_admin_key, 0);
      tservice =
! 	rx_NewService(0, KA_MAINTENANCE_SERVICE, "Maintenance", scm, 3,
  		      KAM_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create Maintenance rx service\n"));
--- 451,457 ----
      scm[RX_SCINDEX_KAD] =
  	rxkad_NewServerSecurityObject(rxkad_crypt, 0, kvno_admin_key, 0);
      tservice =
! 	rx_NewServiceHost(host, 0, KA_MAINTENANCE_SERVICE, "Maintenance", scm, 3,
  		      KAM_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create Maintenance rx service\n"));
***************
*** 432,438 ****
      rx_SetStackSize(tservice, 10000);
  
      tservice =
! 	rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", scm, 3,
  		      RXSTATS_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create rpc stats rx service\n"));
--- 462,468 ----
      rx_SetStackSize(tservice, 10000);
  
      tservice =
! 	rx_NewServiceHost(host, 0, RX_STATS_SERVICE_ID, "rpcstats", scm, 3,
  		      RXSTATS_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	ViceLog(0, ("Could not create rpc stats rx service\n"));
Index: openafs/src/libadmin/kas/NTMakefile
diff -c openafs/src/libadmin/kas/NTMakefile:1.5 openafs/src/libadmin/kas/NTMakefile:1.5.2.1
*** openafs/src/libadmin/kas/NTMakefile:1.5	Fri Nov 21 03:01:00 2003
--- openafs/src/libadmin/kas/NTMakefile	Mon Jul 31 17:51:20 2006
***************
*** 35,41 ****
  	$(DESTDIR)\lib\afs\afsadminutil.lib \
  	$(DESTDIR)\lib\afsauthent.lib \
  	$(DESTDIR)\lib\afsrpc.lib \
! 	$(DESTDIR)\lib\afspthread.lib
  
  $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
  	$(DLLCONLINK) /DEF:kasadmin.def
--- 35,42 ----
  	$(DESTDIR)\lib\afs\afsadminutil.lib \
  	$(DESTDIR)\lib\afsauthent.lib \
  	$(DESTDIR)\lib\afsrpc.lib \
! 	$(DESTDIR)\lib\afspthread.lib \
! 	$(DESTDIR)\lib\afs\afsutil.lib
  
  $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
  	$(DLLCONLINK) /DEF:kasadmin.def
Index: openafs/src/libadmin/pts/NTMakefile
diff -c openafs/src/libadmin/pts/NTMakefile:1.5 openafs/src/libadmin/pts/NTMakefile:1.5.2.1
*** openafs/src/libadmin/pts/NTMakefile:1.5	Fri Nov 21 03:01:02 2003
--- openafs/src/libadmin/pts/NTMakefile	Mon Jul 31 17:51:20 2006
***************
*** 38,44 ****
  	$(DESTDIR)\lib\afs\afsadminutil.lib \
  	$(DESTDIR)\lib\afsauthent.lib \
  	$(DESTDIR)\lib\afsrpc.lib \
! 	$(DESTDIR)\lib\afspthread.lib
  
  $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
  	$(DLLCONLINK) /DEF:ptsadmin.def
--- 38,45 ----
  	$(DESTDIR)\lib\afs\afsadminutil.lib \
  	$(DESTDIR)\lib\afsauthent.lib \
  	$(DESTDIR)\lib\afsrpc.lib \
! 	$(DESTDIR)\lib\afspthread.lib \
! 	$(DESTDIR)\lib\afs\afsutil.lib
  
  $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
  	$(DLLCONLINK) /DEF:ptsadmin.def
Index: openafs/src/libadmin/vos/NTMakefile
diff -c openafs/src/libadmin/vos/NTMakefile:1.5 openafs/src/libadmin/vos/NTMakefile:1.5.2.1
*** openafs/src/libadmin/vos/NTMakefile:1.5	Fri Nov 21 03:01:04 2003
--- openafs/src/libadmin/vos/NTMakefile	Mon Jul 31 17:51:20 2006
***************
*** 59,65 ****
  	$(DESTDIR)\lib\afspthread.lib \
  	$(DESTDIR)\lib\afs\afsadminutil.lib \
  	$(DESTDIR)\lib\afsauthent.lib \
! 	$(DESTDIR)\lib\afsrpc.lib
  
  $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
  	$(DLLCONLINK) /DEF:vosadmin.def
--- 59,66 ----
  	$(DESTDIR)\lib\afspthread.lib \
  	$(DESTDIR)\lib\afs\afsadminutil.lib \
  	$(DESTDIR)\lib\afsauthent.lib \
! 	$(DESTDIR)\lib\afsrpc.lib \
! 	$(DESTDIR)\lib\afs\afsutil.lib
  
  $(DLLFILE): $(DLLOBJS) $(DLLLIBS)
  	$(DLLCONLINK) /DEF:vosadmin.def
Index: openafs/src/libafs/Makefile.common.in
diff -c openafs/src/libafs/Makefile.common.in:1.21.2.3 openafs/src/libafs/Makefile.common.in:1.21.2.4
*** openafs/src/libafs/Makefile.common.in:1.21.2.3	Thu Mar  9 01:41:47 2006
--- openafs/src/libafs/Makefile.common.in	Tue Jun 20 17:40:46 2006
***************
*** 410,416 ****
  
  
  clean:
! 	-$(RM) -rf STATIC* MODLOAD*
  	-$(RM) -rf  h net netinet rpc ufs machine inet nfs sys afs afsint asm asm-generic config rx linux
  
  include ${TOP_OBJDIR}/src/config/Makefile.version
--- 410,416 ----
  
  
  clean:
! 	-$(RM) -rf STATIC* MODLOAD* $(AFS_OS_CLEAN)
  	-$(RM) -rf  h net netinet rpc ufs machine inet nfs sys afs afsint asm asm-generic config rx linux
  
  include ${TOP_OBJDIR}/src/config/Makefile.version
Index: openafs/src/libafs/MakefileProto.AIX.in
diff -c openafs/src/libafs/MakefileProto.AIX.in:1.23.2.1 openafs/src/libafs/MakefileProto.AIX.in:1.23.2.3
*** openafs/src/libafs/MakefileProto.AIX.in:1.23.2.1	Tue Apr 19 11:55:20 2005
--- openafs/src/libafs/MakefileProto.AIX.in	Tue Jun 20 17:40:46 2006
***************
*** 35,40 ****
--- 35,44 ----
  	osi_vfsops_iauth.o \
  	osi_vnodeops_iauth.o
  
+ AFS_OS_CLEAN = \
+ 	*.exp \
+ 	export.h
+ 
  # System specific build commands
  STRIP = /bin/strip
  DBUG  = -g
***************
*** 126,131 ****
--- 130,141 ----
  dest_afs.ext.64: $(DEST)/root.client/usr/vice/etc/dkload/afs.ext.64
  	echo Install for 64-bit Kernel Complete
  
+ install_afs.ext.32: $(DESTDIR)$(afskerneldir)/afs.ext.32
+ 	echo Install for 32-bit Kernel Complete
+ 
+ install_afs.ext.64: $(DESTDIR)$(afskerneldir)/afs.ext.64
+ 	echo Install for 64-bit Kernel Complete
+ 
  # Standard AFS->NFS translator support is removed in AFS 3.5 in favor of
  # the iauth authentication mechanism. The model was changed by IBM in the
  # middle of an OS release. So iauth is only supported on AIX 4.1.5 and 
***************
*** 133,145 ****
  # they are ever made. AIX 4.3 also uses the iauth translator.
  
  LIBAFSIAUTH = afs.ext.32.iauth
- LIBAFS = afs.ext.32
  
  DEST_LIBAFSIAUTH = $(DEST)/root.client/usr/vice/etc/dkload/$(LIBAFSIAUTH)
- DEST_LIBAFS = $(DEST)/root.client/usr/vice/etc/dkload/$(LIBAFS)
  
  INST_LIBAFSIAUTH = ${DESTDIR}${afskerneldir}/$(LIBAFSIAUTH)
- INST_LIBAFS = ${DESTDIR}${afskerneldir}/$(LIBAFS)
  
  $(DEST)/root.client/usr/vice/etc/dkload/afs.ext.32: afs.ext.32
  	$(INSTALL) -f $? $@
--- 143,152 ----
***************
*** 151,162 ****
  	-${STRIP} -X 64 $@
  	$(INSTALL) -f $?.map $@.map
  	
! $(DEST_LIBAFSIAUTH): $(LIBAFSIAUTH)
  	$(INSTALL) -f $? $@
! 	-${STRIP} $@
  	$(INSTALL) -f $?.map $@.map
! 	
! $(INST_LIBAFS): $(LIBAFS)
  	$(INSTALL) -f $? $@
  	-${STRIP} $@
  	$(INSTALL) -f $?.map $@.map
--- 158,174 ----
  	-${STRIP} -X 64 $@
  	$(INSTALL) -f $?.map $@.map
  	
! $(DESTDIR)$(afskerneldir)/afs.ext.32: afs.ext.32
  	$(INSTALL) -f $? $@
! 	-${STRIP} -X 32 $@
  	$(INSTALL) -f $?.map $@.map
! 
! $(DESTDIR)$(afskerneldir)/afs.ext.64: afs.ext.64
! 	$(INSTALL) -f $? $@
! 	-${STRIP} -X 64 $@
! 	$(INSTALL) -f $?.map $@.map
! 
! $(DEST_LIBAFSIAUTH): $(LIBAFSIAUTH)
  	$(INSTALL) -f $? $@
  	-${STRIP} $@
  	$(INSTALL) -f $?.map $@.map
Index: openafs/src/libafs/MakefileProto.SOLARIS.in
diff -c openafs/src/libafs/MakefileProto.SOLARIS.in:1.24.2.1 openafs/src/libafs/MakefileProto.SOLARIS.in:1.24.2.2
*** openafs/src/libafs/MakefileProto.SOLARIS.in:1.24.2.1	Sun Feb 20 20:15:11 2005
--- openafs/src/libafs/MakefileProto.SOLARIS.in	Mon Jul  3 14:43:39 2006
***************
*** 44,57 ****
  CFLAGS=-I. -I.. -I${TOP_OBJDIR}/src/config ${FSINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
  
  # Name of directory to hold object files and libraries.
! <all -sun4x_57 -sun4x_58 -sun4x_59 -sunx86_57 -sunx86_58 -sunx86_59>
  KOBJ = MODLOAD
! <sun4x_57 sun4x_58 sun4x_59 sun4x_510 sunx86_57 sunx86_58 sunx86_59 sunx86_510>
  KOBJ = MODLOAD32 MODLOAD64
! 
  
  # This tells Makefile.common to use it's single directory build target.
! <all -sun4x_57 -sun4x_58 -sun4x_59 -sunx86_57 -sunx86_58 -sunx86_59>
  COMPDIRS = single_compdir
  INSTDIRS = single_instdir
  DESTDIRS = single_destdir
--- 44,58 ----
  CFLAGS=-I. -I.. -I${TOP_OBJDIR}/src/config ${FSINCLUDES} $(DEFINES) $(KDEFS) $(KOPTS) ${DBUG}
  
  # Name of directory to hold object files and libraries.
! <all -sun4x_57 -sun4x_58 -sun4x_59 -sun4x_510 -sunx86_57 -sunx86_58 -sunx86_59 -sunx86_510>
  KOBJ = MODLOAD
! <sun4x_57 sun4x_58 sun4x_59 sunx86_57 sunx86_58 sunx86_59 sunx86_510>
  KOBJ = MODLOAD32 MODLOAD64
! <sun4x_510>
! KOBJ = MODLOAD64
  
  # This tells Makefile.common to use it's single directory build target.
! <all -sun4x_57 -sun4x_58 -sun4x_59 -sun4x_510 -sunx86_57 -sunx86_58 -sunx86_59 -sunx86_510>
  COMPDIRS = single_compdir
  INSTDIRS = single_instdir
  DESTDIRS = single_destdir
Index: openafs/src/libafs/afs.ppc_darwin_70.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.9 openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.16
*** openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.9	Mon Apr 10 16:29:39 2006
--- openafs/src/libafs/afs.ppc_darwin_70.plist.in	Mon Oct  9 22:47:39 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.1</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kernel.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2</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.1.2.4 openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.1.2.11
*** openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.1.2.4	Mon Apr 10 16:29:39 2006
--- openafs/src/libafs/afs.ppc_darwin_80.plist.in	Mon Oct  9 22:47:39 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.1</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2</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.2.3 openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.2.10
*** openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.2.3	Mon Apr 10 16:29:39 2006
--- openafs/src/libafs/afs.ppc_darwin_90.plist.in	Mon Oct  9 22:47:39 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.1</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2</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.2.3 openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.2.10
*** openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.2.3	Mon Apr 10 16:29:39 2006
--- openafs/src/libafs/afs.x86_darwin_80.plist.in	Mon Oct  9 22:47:39 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.1</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2</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.2.3 openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.2.10
*** openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.2.3	Mon Apr 10 16:29:39 2006
--- openafs/src/libafs/afs.x86_darwin_90.plist.in	Mon Oct  9 22:47:39 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.1</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafsauthent/afsauthent.def
diff -c openafs/src/libafsauthent/afsauthent.def:1.3 openafs/src/libafsauthent/afsauthent.def:1.3.2.3
*** openafs/src/libafsauthent/afsauthent.def:1.3	Tue Aug  3 13:27:59 2004
--- openafs/src/libafsauthent/afsauthent.def	Wed Aug 30 00:41:44 2006
***************
*** 78,86 ****
  	pioctl						@77
  	rx_Init						@78
  	ka_UserAuthenticateGeneral2			@79
!     pr_CreateUser                   @80
!     pr_SNameToId                    @81
! 
  
  	DISK_function_names				@83 DATA
  	VOTE_function_names				@84 DATA
--- 78,116 ----
  	pioctl						@77
  	rx_Init						@78
  	ka_UserAuthenticateGeneral2			@79
!     	pr_CreateUser                   		@80
!     	pr_SNameToId                    		@81
  
  	DISK_function_names				@83 DATA
  	VOTE_function_names				@84 DATA
+ 
+         pr_End                                          @85
+         PR_INewEntry                                    @86
+         PR_WhereIsIt                                    @87
+         PR_DumpEntry                                    @88
+         PR_AddToGroup                                   @89
+         PR_NameToID                                     @90
+         PR_IDToName                                     @91
+         PR_Delete                                       @92
+         PR_RemoveFromGroup                              @93
+         PR_GetCPS                                       @94
+         PR_NewEntry                                     @95
+         PR_ListMax                                      @96
+         PR_SetMax                                       @97
+         PR_ListEntry                                    @98
+         PR_ChangeEntry                                  @99
+         PR_ListElements                                 @100
+         PR_IsAMemberOf                                  @101
+         PR_SetFieldsEntry                               @102
+         PR_ListOwned                                    @103
+         PR_GetCPS2                                      @104
+         PR_GetHostCPS                                   @105
+         PR_UpdateEntry                                  @106
+         PR_ListEntries                                  @107
+         PR_ListSuperGroups                              @108
+         ka_AuthSpecificServersConn                      @109
+         ka_KeyCheckSum                                  @110
+         rx_Finalize                                     @111
+         rx_InitHost                                     @112
+         VOTE_GetSyncSite                                @113
+         ubik_RefreshConn                                @114
Index: openafs/src/libafsrpc/NTMakefile
diff -c openafs/src/libafsrpc/NTMakefile:1.9.2.1 openafs/src/libafsrpc/NTMakefile:1.9.2.2
*** openafs/src/libafsrpc/NTMakefile:1.9.2.1	Fri Mar 11 02:03:24 2005
--- openafs/src/libafsrpc/NTMakefile	Mon Jul 31 17:51:20 2006
***************
*** 30,36 ****
  	$(OUT)\xdr_rec.obj  $(OUT)\xdr_refernce.obj $(OUT)\xdr_rx.obj $(OUT)\xdr_update.obj \
  	$(OUT)\xdr_afsuuid.obj $(OUT)\xdr_int64.obj $(OUT)\xdr_int32.obj
  
! RXOBJS = $(OUT)\rx_event.obj $(OUT)\rx_user.obj $(OUT)\rx_pthread.obj $(OUT)\rx.obj \
  	$(OUT)\rx_null.obj $(OUT)\rx_globals.obj $(OUT)\rx_getaddr.obj $(OUT)\rx_misc.obj $(OUT)\rx_packet.obj \
  	$(OUT)\rx_rdwr.obj $(OUT)\rx_trace.obj $(OUT)\rx_xmit_nt.obj $(OUT)\rx_conncache.obj
  
--- 30,36 ----
  	$(OUT)\xdr_rec.obj  $(OUT)\xdr_refernce.obj $(OUT)\xdr_rx.obj $(OUT)\xdr_update.obj \
  	$(OUT)\xdr_afsuuid.obj $(OUT)\xdr_int64.obj $(OUT)\xdr_int32.obj
  
! RXOBJS = $(OUT)\rx_event.obj $(OUT)\rx_user.obj $(OUT)\rx_pthread.obj $(OUT)\rx.obj $(OUT)\rx_clock_nt.obj \
  	$(OUT)\rx_null.obj $(OUT)\rx_globals.obj $(OUT)\rx_getaddr.obj $(OUT)\rx_misc.obj $(OUT)\rx_packet.obj \
  	$(OUT)\rx_rdwr.obj $(OUT)\rx_trace.obj $(OUT)\rx_xmit_nt.obj $(OUT)\rx_conncache.obj
  
Index: openafs/src/libafsrpc/afsrpc.def
diff -c openafs/src/libafsrpc/afsrpc.def:1.3.2.7 openafs/src/libafsrpc/afsrpc.def:1.3.2.8
*** openafs/src/libafsrpc/afsrpc.def:1.3.2.7	Tue Oct  4 13:45:53 2005
--- openafs/src/libafsrpc/afsrpc.def	Tue Jun 20 17:00:18 2006
***************
*** 215,219 ****
--- 215,221 ----
          rx_StartClientThread                    @220
  	rxkad_global_stats_lock			@221 DATA
  	rxkad_stats_key				@222 DATA
+ 	rx_InitHost				@224
+ 	rx_NewServiceHost			@225
          
  
Index: openafs/src/libuafs/Makefile.common.in
diff -c openafs/src/libuafs/Makefile.common.in:1.12.2.3 openafs/src/libuafs/Makefile.common.in:1.12.2.4
*** openafs/src/libuafs/Makefile.common.in:1.12.2.3	Tue Jun 21 16:19:59 2005
--- openafs/src/libuafs/Makefile.common.in	Tue Jun 20 17:40:46 2006
***************
*** 1314,1320 ****
  
  clean:
  	-$(RM) -rf UAFS* JUAFS* AFSWEB* nsapi des afs afsint config rx
! 	-$(RM) -f  h net netinet rpc ufs machine inet nfs sys des linktest
  
  
  ${TOP_LIBDIR}/$(LIBAFSWEB): AFSWEB/$(LIBAFSWEB)
--- 1314,1320 ----
  
  clean:
  	-$(RM) -rf UAFS* JUAFS* AFSWEB* nsapi des afs afsint config rx
! 	-$(RM) -f  h net netinet rpc ufs machine inet nfs sys des linktest $(AFS_OS_CLEAN)
  
  
  ${TOP_LIBDIR}/$(LIBAFSWEB): AFSWEB/$(LIBAFSWEB)
Index: openafs/src/libuafs/MakefileProto.AIX.in
diff -c openafs/src/libuafs/MakefileProto.AIX.in:1.8.2.1 openafs/src/libuafs/MakefileProto.AIX.in:1.8.2.2
*** openafs/src/libuafs/MakefileProto.AIX.in:1.8.2.1	Tue Dec  7 11:48:42 2004
--- openafs/src/libuafs/MakefileProto.AIX.in	Tue Jun 20 17:40:46 2006
***************
*** 30,35 ****
--- 30,40 ----
  LIBAFSWEB = nsafs.a
  LIBAFSWEBKRB = nsafs.krb.a
  
+ 
+ AFS_OS_CLEAN = \
+ 	*.exp \
+ 	export.h
+ 
  # To get __file__ (afs_osi_pag.c) you need to specify language level 
  # C99 to xlc_r like this:
  OPTF=-O -qlanglvl=stdc99
Index: openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB
diff -c openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB:1.1.4.2 openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB:1.1.4.3
*** openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB:1.1.4.2	Sat Oct 15 20:56:52 2005
--- openafs/src/packaging/HP-UX/files/usr/vice/etc/CellServDB	Sun Oct  8 23:14:42 2006
***************
*** 1,15 ****
! >grand.central.org      #GCO Public CellServDB 15 Oct 2005
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #afsdb1.wu-wien.ac.at
! 137.208.8.12                    #caesar.wu-wien.ac.at
! 137.208.127.33                  #buddy.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
--- 1,19 ----
! >grand.central.org      #GCO Public CellServDB 08 Oct 2006
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #goya.wu-wien.ac.at
! 137.208.7.57                    #caravaggio.wu-wien.ac.at
! 137.208.127.57                  #vermeer.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
+ >cgv.tugraz.at          #CGV cell
+ 129.27.224.133                  #phobos.cgv.tugraz.at
+ 129.27.224.134                  #deimos.cgv.tugraz.at
+ 129.27.224.210                  #trinculo.cgv.tugraz.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
***************
*** 22,30 ****
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.2.6                     #kd1.epfl.ch
! 128.178.2.7                     #kd2.epfl.ch
! 128.178.2.8                     #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
--- 26,34 ----
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.109.111                 #kd1.epfl.ch
! 128.178.109.112                 #kd2.epfl.ch
! 128.178.109.113                 #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
***************
*** 37,44 ****
  129.129.190.142                 #afs02.psi.ch
  >extundo.com            #Simon Josefsson's cell
  195.42.214.241                  #slipsten.extundo.com
- >mekinok.com            #Mekinok, Inc.
- 4.36.43.98                      #loggerhead.mekinok.com
  >membrain.com           #membrain.com
  66.93.118.125                   #stormy
  130.85.24.11                    #weasel
--- 41,46 ----
***************
*** 105,121 ****
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 141.35.2.160                    #lc00.rz.uni-jena.de
! 141.35.7.9                      #fsuj01.rz.uni-jena.de
! 141.35.7.10                     #zaphod.rz.uni-jena
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.30                    #fileserv3.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.140.190                  #rzkbserv.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
--- 107,123 ----
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 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
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.10                    #lyra.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.141.243                  #agrippina.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
***************
*** 172,179 ****
  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.56.129                    #nihao.sbp.ri.cmu.edu
! 128.2.56.136                    #youtheman.sbp.ri.cmu.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
--- 174,181 ----
  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
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 186,191 ****
--- 188,195 ----
  129.170.16.22                   #halley.dartmouth.edu
  129.170.16.42                   #oort.dartmouth.edu
  129.170.16.43                   #cygnusx1.dartmouth.edu
+ >cs.fhm.edu             #Department Computer Science Munich University Of Applied Science
+ 129.187.208.2                   #srv1.informatik.fh-muenchen.de
  >eecs.harvard.edu       #Harvard - EECS
  140.247.60.61                   #zermelo.eecs.harvard.edu
  140.247.60.83                   #corfu.eecs.harvard.edu
***************
*** 261,266 ****
--- 265,280 ----
  134.79.18.25                    #afsdb1.slac.stanford.edu
  134.79.18.26                    #afsdb2.slac.stanford.edu
  134.79.18.27                    #afsdb3.slac.stanford.edu
+ >ucdavis.edu            #University of California at Davis
+ 169.237.104.100                 #afs1.ucdavis.edu
+ 169.237.235.176                 #afs2.ucdavis.edu
+ 169.237.247.91                  #afs3.ucdavis.edu
+ >home.ucdavis.edu       #University of California at Davis home directories
+ 169.237.105.91                  #home1.ucdavis.edu
+ 169.237.105.92                  #home2.ucdavis.edu
+ 169.237.105.93                  #home3.ucdavis.edu
+ >physics.ucsb.edu       #UC Santa Barbara, Physics Dept
+ 128.111.18.161                  #ledzeppelin.physics.ucsb.edu
  >cats.ucsc.edu          #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
  128.114.129.14                  #elan.ucsc.edu
  128.114.129.15                  #ichabod.ucsc.edu
***************
*** 291,316 ****
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.106                  #linat06.grid.umich.edu
! 141.211.43.109                  #atgrid.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >umr.edu                #University of Missouri - Rolla
! 131.151.1.59                    #afsdb1.umr.edu
! 131.151.1.70                    #afsdb3.umr.edu
! 131.151.1.146                   #afsdb2.umr.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.13.7                     #as-sm2.uncc.edu
! 152.15.30.27                    #fs-kenn3.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
--- 305,328 ----
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.103                  #linat03.grid.umich.edu
! 141.211.43.104                  #linat04.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >sph.umich.edu          #University of Michigan -- School of Public Health
! 141.211.50.41                   #afssph0.sph.umich.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.93.186                   #as-ece1.uncc.edu
! 152.15.181.175                  #as-me1.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
***************
*** 344,349 ****
--- 356,363 ----
  >dapnia.saclay.cea.fr   #CEA DAPNIA
  132.166.32.7                    #dphrsg.saclay.cea.fr
  132.166.32.12                   #dphrsl.saclay.cea.fr
+ >grif.fr                #GRIF cell
+ 192.54.208.18                   #node03.datagrid.cea.fr
  >in2p3.fr               #IN2P3 production cell
  134.158.232.11                  #ccafsdb1.in2p3.fr
  134.158.232.12                  #ccafsdb2.in2p3.fr
***************
*** 401,406 ****
--- 415,421 ----
  192.84.134.75                   #afsna.na.infn.it
  >ba.infn.it             #INFN, Sezione di Bari
  193.206.185.235                 #baafsserver.ba.infn.it
+ 193.206.185.236                 #debsrv.ba.infn.it
  >kloe.infn.it           #INFN, KLOE experiment at Laboratori di Frascati
  192.135.25.111                  #kloeafs1.lnf.infn.it
  192.135.25.112                  #kloeafs2.lnf.infn.it
***************
*** 451,461 ****
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 66.92.236.139                   #afs.sinenomine.net
  >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
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 466,478 ----
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 192.204.203.218                 #va.sinenomine.net
  >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
***************
*** 484,505 ****
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >openafs.org            #OpenAFS Project
! 18.7.14.88                      #grand-opening.mit.edu
! 128.2.191.224                   #penn.central.org
! 130.237.48.87                   #andrew.e.kth.se
! >e.kth.se               #Royal Institute of Technology, Elektro
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.141                  #rasmus13.hallf.kth.se
! 130.237.24.152                  #rasmus3.hallf.kth.se
! 130.237.24.177                  #rasmus29.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
! 130.237.202.12                  #afsdb2.isk.kth.se
! 130.237.206.13                  #afsdb1.isk.kth.se
! 130.237.209.141                 #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
--- 501,516 ----
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >kth.se                 #Royal Institute of Technology, Stockholm, Sweden
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.11                   #afs1.hallf.kth.se
! 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.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
***************
*** 543,548 ****
--- 554,566 ----
  193.2.120.2                     #solkan.p-ng.si
  >phy.bris.ac.uk         #Bristol University - phyics
  137.222.58.9                    #afs1.phy.bris.ac.uk
+ >inf.ed.ac.uk           #School of Informatics, University of Edinburgh
+ 129.215.64.16                   #afsdb0.inf.ed.ac.uk
+ 129.215.64.17                   #afsdb1.inf.ed.ac.uk
+ 129.215.64.18                   #afsdb2.inf.ed.ac.uk
+ >ic.ac.uk               #Imperial College London
+ 155.198.63.148                  #icafs2.cc.ic.ac.uk
+ 155.198.63.149                  #icafs1.cc.ic.ac.uk
  >hep.man.ac.uk          #Manchester HEP
  194.36.2.3                      #afs1.hep.man.ac.uk
  194.36.2.4                      #afs2.hep.man.ac.uk
Index: openafs/src/packaging/MacOS/CellServDB
diff -c openafs/src/packaging/MacOS/CellServDB:1.1.4.2 openafs/src/packaging/MacOS/CellServDB:1.1.4.3
*** openafs/src/packaging/MacOS/CellServDB:1.1.4.2	Sat Oct 15 20:56:53 2005
--- openafs/src/packaging/MacOS/CellServDB	Sun Oct  8 23:14:42 2006
***************
*** 1,15 ****
! >grand.central.org      #GCO Public CellServDB 15 Oct 2005
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #afsdb1.wu-wien.ac.at
! 137.208.8.12                    #caesar.wu-wien.ac.at
! 137.208.127.33                  #buddy.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
--- 1,19 ----
! >grand.central.org      #GCO Public CellServDB 08 Oct 2006
  18.7.14.88                      #grand-opening.mit.edu
  128.2.191.224                   #penn.central.org
  130.237.48.87                   #andrew.e.kth.se
  >wu-wien.ac.at          #University of Economics, Vienna, Austria
! 137.208.3.33                    #goya.wu-wien.ac.at
! 137.208.7.57                    #caravaggio.wu-wien.ac.at
! 137.208.127.57                  #vermeer.wu-wien.ac.at
  >hephy.at               #hephy-vienna
  193.170.243.10                  #mowgli.oeaw.ac.at
  193.170.243.12                  #baloo.oeaw.ac.at
  193.170.243.14                  #akela.oeaw.ac.at
+ >cgv.tugraz.at          #CGV cell
+ 129.27.224.133                  #phobos.cgv.tugraz.at
+ 129.27.224.134                  #deimos.cgv.tugraz.at
+ 129.27.224.210                  #trinculo.cgv.tugraz.at
  >itp.tugraz.at          #Institute for Theoretical Physics, TU Graz, Austria
  129.27.157.6                    #fubphsv2.tu-graz.ac.at
  129.27.161.7                    #faepsv01.tu-graz.ac.at
***************
*** 22,30 ****
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.2.6                     #kd1.epfl.ch
! 128.178.2.7                     #kd2.epfl.ch
! 128.178.2.8                     #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
--- 26,34 ----
  137.138.206.77                  #pcamsf2.cern.ch
  137.138.206.123                 #pcamsf4.cern.ch
  >epfl.ch                #Swiss Federal Institute of Technology at Lausanne
! 128.178.109.111                 #kd1.epfl.ch
! 128.178.109.112                 #kd2.epfl.ch
! 128.178.109.113                 #kd3.epfl.ch
  >ethz.ch                #Swiss Federal Inst. of Tech. - Zurich, Switzerland
  129.132.97.19                   #amalthea.ethz.ch
  129.132.97.27                   #nethzafs-001.ethz.ch
***************
*** 37,44 ****
  129.129.190.142                 #afs02.psi.ch
  >extundo.com            #Simon Josefsson's cell
  195.42.214.241                  #slipsten.extundo.com
- >mekinok.com            #Mekinok, Inc.
- 4.36.43.98                      #loggerhead.mekinok.com
  >membrain.com           #membrain.com
  66.93.118.125                   #stormy
  130.85.24.11                    #weasel
--- 41,46 ----
***************
*** 105,121 ****
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 141.35.2.160                    #lc00.rz.uni-jena.de
! 141.35.7.9                      #fsuj01.rz.uni-jena.de
! 141.35.7.10                     #zaphod.rz.uni-jena
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.30                    #fileserv3.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.140.190                  #rzkbserv.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
--- 107,123 ----
  144.41.2.3                      #rs14.serv.uni-hohenheim.de
  144.41.2.4                      #rs15.serv.uni-hohenheim.de
  >rz.uni-jena.de         #Rechenzentrum University of Jena, Germany
! 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
  >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
  >rrz.uni-koeln.de       #University of Cologne - Reg Comp Center
  134.95.19.3                     #afsdb1.rrz.uni-koeln.de
! 134.95.19.10                    #lyra.rrz.uni-koeln.de
  134.95.67.97                    #afs.thp.uni-koeln.de
! 134.95.141.243                  #agrippina.rrz.uni-koeln.de
  >physik.uni-mainz.de    #institute of physics, university Mainz, Germany
  134.93.130.93                   #hardy.physik.uni-mainz.de
  >uni-mannheim.de        #Uni Mannheim (Rechenzentrum)
***************
*** 172,179 ****
  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.56.129                    #nihao.sbp.ri.cmu.edu
! 128.2.56.136                    #youtheman.sbp.ri.cmu.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
--- 174,181 ----
  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
  >msc.cornell.edu        #Cornell University Materials Science Center
  128.84.231.242                  #miranda.ccmr.cornell.edu
  128.84.241.35                   #co.ccmr.cornell.edu
***************
*** 186,191 ****
--- 188,195 ----
  129.170.16.22                   #halley.dartmouth.edu
  129.170.16.42                   #oort.dartmouth.edu
  129.170.16.43                   #cygnusx1.dartmouth.edu
+ >cs.fhm.edu             #Department Computer Science Munich University Of Applied Science
+ 129.187.208.2                   #srv1.informatik.fh-muenchen.de
  >eecs.harvard.edu       #Harvard - EECS
  140.247.60.61                   #zermelo.eecs.harvard.edu
  140.247.60.83                   #corfu.eecs.harvard.edu
***************
*** 261,266 ****
--- 265,280 ----
  134.79.18.25                    #afsdb1.slac.stanford.edu
  134.79.18.26                    #afsdb2.slac.stanford.edu
  134.79.18.27                    #afsdb3.slac.stanford.edu
+ >ucdavis.edu            #University of California at Davis
+ 169.237.104.100                 #afs1.ucdavis.edu
+ 169.237.235.176                 #afs2.ucdavis.edu
+ 169.237.247.91                  #afs3.ucdavis.edu
+ >home.ucdavis.edu       #University of California at Davis home directories
+ 169.237.105.91                  #home1.ucdavis.edu
+ 169.237.105.92                  #home2.ucdavis.edu
+ 169.237.105.93                  #home3.ucdavis.edu
+ >physics.ucsb.edu       #UC Santa Barbara, Physics Dept
+ 128.111.18.161                  #ledzeppelin.physics.ucsb.edu
  >cats.ucsc.edu          #UC Santa Cruz, Comm. and Tech. Services, California U.S.A
  128.114.129.14                  #elan.ucsc.edu
  128.114.129.15                  #ichabod.ucsc.edu
***************
*** 291,316 ****
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.106                  #linat06.grid.umich.edu
! 141.211.43.109                  #atgrid.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >umr.edu                #University of Missouri - Rolla
! 131.151.1.59                    #afsdb1.umr.edu
! 131.151.1.70                    #afsdb3.umr.edu
! 131.151.1.146                   #afsdb2.umr.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.13.7                     #as-sm2.uncc.edu
! 152.15.30.27                    #fs-kenn3.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
--- 305,328 ----
  141.211.1.34                    #ruthless.ifs.umich.edu
  >atlas.umich.edu        #ATLAS group cell in physics at University of Michigan
  141.211.43.102                  #linat02.grid.umich.edu
! 141.211.43.103                  #linat03.grid.umich.edu
! 141.211.43.104                  #linat04.grid.umich.edu
  >citi.umich.edu         #Center for Information Technology Integration
  141.211.133.5                   #babylon.citi.umich.edu
  >lsa.umich.edu          #University of Michigan - College of LS&A
  141.211.211.53                  #gerow.lsa.umich.edu
  141.211.211.72                  #collines.lsa.umich.edu
  141.211.211.153                 #hodges.lsa.umich.edu
! >sph.umich.edu          #University of Michigan -- School of Public Health
! 141.211.50.41                   #afssph0.sph.umich.edu
  >physics.unc.edu        #Univ. of NC at Chapel Hill, Dept. of Physics
  152.2.4.1                       #who.physics.unc.edu
  152.2.4.3                       #what.physics.unc.edu
  152.2.4.5                       #when.physics.unc.edu
  >uncc.edu               #University of NC at Charlotte Mosaic AFS Cell
  152.15.10.70                    #as-sm1.uncc.edu
! 152.15.93.186                   #as-ece1.uncc.edu
! 152.15.181.175                  #as-me1.uncc.edu
  >eng.utah.edu           #University of Utah - Engineering
  155.99.222.9                    #lenny.eng.utah.edu
  155.99.222.10                   #carl.eng.utah.edu
***************
*** 344,349 ****
--- 356,363 ----
  >dapnia.saclay.cea.fr   #CEA DAPNIA
  132.166.32.7                    #dphrsg.saclay.cea.fr
  132.166.32.12                   #dphrsl.saclay.cea.fr
+ >grif.fr                #GRIF cell
+ 192.54.208.18                   #node03.datagrid.cea.fr
  >in2p3.fr               #IN2P3 production cell
  134.158.232.11                  #ccafsdb1.in2p3.fr
  134.158.232.12                  #ccafsdb2.in2p3.fr
***************
*** 401,406 ****
--- 415,421 ----
  192.84.134.75                   #afsna.na.infn.it
  >ba.infn.it             #INFN, Sezione di Bari
  193.206.185.235                 #baafsserver.ba.infn.it
+ 193.206.185.236                 #debsrv.ba.infn.it
  >kloe.infn.it           #INFN, KLOE experiment at Laboratori di Frascati
  192.135.25.111                  #kloeafs1.lnf.infn.it
  192.135.25.112                  #kloeafs2.lnf.infn.it
***************
*** 451,461 ****
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 66.92.236.139                   #afs.sinenomine.net
  >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
  >nikhef.nl              #The Dutch National Institute for High Energy Physics
  192.16.185.26                   #afs1.nikhef.nl
  192.16.185.27                   #afs2.nikhef.nl
--- 466,478 ----
  >laroia.net             #Laroia Networks
  66.66.102.254                   #supercore.laroia.net
  >sinenomine.net         #Sine Nomine Associates
! 192.204.203.218                 #va.sinenomine.net
  >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
***************
*** 484,505 ****
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >openafs.org            #OpenAFS Project
! 18.7.14.88                      #grand-opening.mit.edu
! 128.2.191.224                   #penn.central.org
! 130.237.48.87                   #andrew.e.kth.se
! >e.kth.se               #Royal Institute of Technology, Elektro
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.141                  #rasmus13.hallf.kth.se
! 130.237.24.152                  #rasmus3.hallf.kth.se
! 130.237.24.177                  #rasmus29.hallf.kth.se
  >isk.kth.se             #Royal Institute of Technology, ISK
! 130.237.202.12                  #afsdb2.isk.kth.se
! 130.237.206.13                  #afsdb1.isk.kth.se
! 130.237.209.141                 #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
--- 501,516 ----
  >oc7.org                #The OC7 Project
  128.2.122.140                   #knife.oc7.org
  207.22.77.170                   #spoon.oc7.org
! >kth.se                 #Royal Institute of Technology, Stockholm, Sweden
  130.237.32.145                  #sonen.e.kth.se
  130.237.48.7                    #anden.e.kth.se
  130.237.48.244                  #fadern.e.kth.se
  >hallf.kth.se           #Royal Institute of Technology, HALLF
! 130.237.24.11                   #afs1.hallf.kth.se
! 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.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
***************
*** 543,548 ****
--- 554,566 ----
  193.2.120.2                     #solkan.p-ng.si
  >phy.bris.ac.uk         #Bristol University - phyics
  137.222.58.9                    #afs1.phy.bris.ac.uk
+ >inf.ed.ac.uk           #School of Informatics, University of Edinburgh
+ 129.215.64.16                   #afsdb0.inf.ed.ac.uk
+ 129.215.64.17                   #afsdb1.inf.ed.ac.uk
+ 129.215.64.18                   #afsdb2.inf.ed.ac.uk
+ >ic.ac.uk               #Imperial College London
+ 155.198.63.148                  #icafs2.cc.ic.ac.uk
+ 155.198.63.149                  #icafs1.cc.ic.ac.uk
  >hep.man.ac.uk          #Manchester HEP
  194.36.2.3                      #afs1.hep.man.ac.uk
  194.36.2.4                      #afs2.hep.man.ac.uk
Index: openafs/src/packaging/MacOS/DS_Store
Index: openafs/src/packaging/MacOS/OpenAFS.Info.plist
diff -c openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.17 openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.26
*** openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.17	Mon Apr 10 16:29:43 2006
--- openafs/src/packaging/MacOS/OpenAFS.Info.plist	Mon Oct  9 22:47:41 2006
***************
*** 3,15 ****
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.4.1</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.1</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
--- 3,15 ----
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.4.2</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
***************
*** 18,23 ****
--- 18,27 ----
  	<false/>
  	<key>IFPkgFlagAuthorizationAction</key>
  	<string>RootAuthorization</string>
+ 	<key>IFPkgFlagBackgroundAlignment</key>
+ 	<string>bottomright</string>
+ 	<key>IfPkgFlagBackgroundScaling</key>
+ 	<string>proportional</string>
  	<key>IFPkgFlagDefaultLocation</key>
  	<string>/</string>
  	<key>IFPkgFlagInstallFat</key>
***************
*** 27,33 ****
  	<key>IFPkgFlagRelocatable</key>
  	<false/>
  	<key>IFPkgFlagRestartAction</key>
! 	<string>RecommendedRestart</string>
  	<key>IFPkgFlagRootVolumeOnly</key>
  	<true/>
  	<key>IFPkgFlagUpdateInstalledLanguages</key>
--- 31,37 ----
  	<key>IFPkgFlagRelocatable</key>
  	<false/>
  	<key>IFPkgFlagRestartAction</key>
! 	<string>NoRestart</string>
  	<key>IFPkgFlagRootVolumeOnly</key>
  	<true/>
  	<key>IFPkgFlagUpdateInstalledLanguages</key>
Index: openafs/src/packaging/MacOS/OpenAFS.info
diff -c openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.31 openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.39
*** openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.31	Mon Apr 10 16:29:43 2006
--- openafs/src/packaging/MacOS/OpenAFS.info	Mon Oct  9 22:47:41 2006
***************
*** 1,5 ****
  Title OpenAFS
! Version 1.4.1
  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.4.2
  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/OpenAFS.post_install
diff -c openafs/src/packaging/MacOS/OpenAFS.post_install:1.3.2.3 openafs/src/packaging/MacOS/OpenAFS.post_install:1.3.2.6
*** openafs/src/packaging/MacOS/OpenAFS.post_install:1.3.2.3	Thu Mar 23 11:08:34 2006
--- openafs/src/packaging/MacOS/OpenAFS.post_install	Tue Aug  1 23:37:56 2006
***************
*** 47,53 ****
  fi
  
  # upgrading between 2 post-1.2.7 releases (or the testing case)
! if [ -f CellServDB.master.last -a  -f CellServDB ]; then
    if cmp -s CellServDB.master.last CellServDB.master ; then
      echo No CellServDB updates
      done=1
--- 47,53 ----
  fi
  
  # upgrading between 2 post-1.2.7 releases (or the testing case)
! if [ -f CellServDB.master.last ]; then
    if cmp -s CellServDB.master.last CellServDB.master ; then
      echo No CellServDB updates
      done=1
***************
*** 59,64 ****
--- 59,67 ----
    if cmp -s CellServDB CellServDB.master ; then
      echo CellServDB is up to date.
      cp CellServDB.master CellServDB.master.last
+     if [ ! -f CellServDB ]; then
+       cp CellServDB.master CellServDB
+     fi
      done=1
    fi
  fi
***************
*** 73,79 ****
      # this is a new install, or an upgrade from pre-1.2.7
      echo "Installing new CellServDB"
      cp CellServDB.master CellServDB.master.last
!     if [ ! -e CellServDB ]; then
  	cp CellServDB.master CellServDB
      fi
    fi
--- 76,82 ----
      # this is a new install, or an upgrade from pre-1.2.7
      echo "Installing new CellServDB"
      cp CellServDB.master CellServDB.master.last
!     if [ ! -f CellServDB ]; then
  	cp CellServDB.master CellServDB
      fi
    fi
***************
*** 89,91 ****
--- 92,97 ----
    chmod a-x config/afssettings
  fi
  
+ #here we should run tools which configure the client, and then if it's enabled:
+ /Library/StartupItems/OpenAFS/OpenAFS start
+ 
Index: openafs/src/packaging/MacOS/Uninstall
diff -c /dev/null openafs/src/packaging/MacOS/Uninstall:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/MacOS/Uninstall	Tue Aug  1 18:13:34 2006
***************
*** 0 ****
--- 1,397 ----
+ #!/usr/bin/perl -w
+ # real Perl code begins here
+ #
+ # Adapted from Apple's uninstall-devtools.pl (Version 7 for Xcode Tools 1.2)
+ #
+ # BSD License: c.f. <http://www.opensource.org/licenses/bsd-license>
+ #
+ 
+ use strict;
+ use File::Basename;
+ 
+ use vars qw ($do_nothing $print_donothing_removals $receipts_dir $verbose $noisy_warnings);
+ use vars qw ($suppress_spin $spin_counter $spin_state $spin_slower_downer);
+ use vars qw (%exception_list $gen_dirs @gen_files @rmfiles @rmdirs @rmpkg);
+ 
+ #----------------------------------------------------------------------------------------
+ 
+ $do_nothing = 0;
+ $print_donothing_removals = 1;
+ $verbose = 1;
+ $noisy_warnings = 0;
+ 
+ # One of rm -rf in this script uses $receipts_dir -- change with care.
+ $receipts_dir = "/Library/Receipts";
+ 
+ %exception_list = (
+ #  '/usr/bin/aklog', '',
+ );
+ 
+ $gen_dirs = { };
+ #$gen_dirs->{"/"}->{"Library"}->{"OpenAFS"}->{"Tools"} = {};
+ 
+ @gen_files = (
+     "/var/db/openafs/etc/cacheinfo",
+     "/var/db/openafs/etc/ThisCell",
+     "/var/db/openafs/etc/config/afsd.options",
+     "/var/db/openafs/etc/CellServDB.save",
+     "/var/db/openafs/etc/CellServDB.master.last",
+     "/var/db/openafs/etc/CellServDB",
+     "/var/db/openafs/etc/config/settings.plist",
+ );
+ 
+ #----------------------------------------------------------------------------------------
+ 
+ $| = 1;
+ #if ($do_nothing == 0 && $< != 0)
+ #  {
+ #    die "ERROR: Must be run with root permissions--prefix command with 'sudo'.\n";
+ #  }
+ 
+ sub main
+   {
+     # commandline args: 
+     #     0: dir of packages to remove
+     #     1: flag indicating whether to keep package receipts
+     #     2: flag indicating whether to supress spin indicator
+ 
+     if (!@ARGV) {
+ 	use FindBin qw($Bin);
+ 	@ARGV = ("$Bin/..", 0, 0);
+     }
+     $suppress_spin = defined ($ARGV[2]) && $ARGV[2];
+ 
+     $spin_counter = 0;
+     $spin_state = 0;
+     spin_rate_slow ();
+ 
+     pre_print ();
+     print "Uninstalling OpenAFS package:\n\n";
+ 
+     remove_generated_files ();
+     remove_main_packages ();
+     remove_generated_directories ();
+ 
+     if ($do_nothing == 0) {
+     my @rmcmd = ('osascript', '-e', "do shell script \"/bin/rm -f @rmfiles; /bin/rmdir @rmdirs; /bin/rm -rf @rmpkg\" with administrator privileges");
+     system @rmcmd;
+     my $retcode = $? >> 8;
+     if ($retcode != 0) {
+            print_warning ("Warning:  There may have been a problem uninstalling\n");
+     }
+     }
+ 
+     pre_print ();
+     print "\nFinished uninstalling.\n";
+   }
+ 
+ sub remove_main_packages
+   {
+ #    opendir (DIR, $ARGV[0]) or die "ERROR: package directory $ARGV[0] not found\n";
+ #    my @pkglist = grep /\.pkg$/, readdir DIR;
+ #    closedir DIR;
+      my @pkglist = ("OpenAFS",
+ 		    );
+     
+     foreach (@pkglist)
+       {
+         s/\.pkg$//;
+         my $pkgname = $_;
+         my $pkgname_fullpath = "$receipts_dir/$pkgname.pkg";
+         my $pkgname_bom_fullpath = undef;
+ 
+         next if (! -d "$pkgname_fullpath" );
+         
+         print_verbose ("Removing package $pkgname.pkg\n");
+ 
+         my $f  = "$pkgname_fullpath/Contents/Resources/$pkgname.bom";
+         if (-f $f && -r $f) {
+             $pkgname_bom_fullpath = $f;
+         }
+ 
+         next if (!defined ($pkgname_bom_fullpath));
+         
+         my $bomroot = "";
+         open (INFO, "$pkgname_fullpath/Contents/Info.plist") or next;
+         while (<INFO>) {
+             m/IFPkgFlagDefaultLocation/ or next;
+             $bomroot = <INFO>;
+         }
+         close (INFO);
+ 
+         $bomroot =~ />(.*)</;
+ 	$bomroot = $1;
+         $bomroot =~ s/^\/$//;
+ 
+         spin_rate_slow ();
+ 
+         open (LSBOM, "/usr/bin/lsbom -l -f -p f '$pkgname_bom_fullpath' |") or next;
+         while (<LSBOM>)
+           {
+             chomp;
+             m#^\.(/.*)$#;
+             next if (!defined ($1) || $1 eq "");
+             my $filename = $bomroot . $1;
+ 
+             remove_a_file ($filename);
+           }
+         close (LSBOM);
+ 
+         my $rooth = { };
+ 
+         open (LSBOM, "/usr/bin/lsbom -d -p f '$pkgname_bom_fullpath' |") or next;
+         while (<LSBOM>)
+           {
+             chomp;
+             m#^\.(/.*)$#;
+             next if (!defined ($1) || $1 eq "");
+             my $directory = $bomroot . $1;
+             if (-d $directory)
+               {
+                 $rooth = add_directory_to_tree ($directory, $rooth);
+               }
+             else
+               {
+                 if ($noisy_warnings)
+                   {
+                     print_warning ("Warning: \"$directory\" listed in BOM but not present on system.\n");
+                   }
+               }
+           }
+         close (LSBOM);
+ 
+         spin_rate_fast ();
+         remove_empty_directories ($rooth, "/");
+ 
+         remove_package_receipts ("$pkgname.pkg") if (!defined ($ARGV[1]) || !$ARGV[1]) ;
+       }
+   }
+ 
+ sub remove_generated_files
+   {
+    foreach (@gen_files)
+      {
+        remove_a_file ($_);
+      }
+   }
+ 
+ sub remove_generated_directories
+   {
+     remove_empty_directories ($gen_dirs, "/");
+   }
+ 
+ sub add_directory_to_tree
+   {
+     my $dir = shift;
+     my $rooth = shift;
+     my $p = $rooth;
+ 
+     my @pathcomp = split /\//, $dir;
+ 
+     progress_point ();
+     foreach (@pathcomp)
+       {
+         my $cur_name = $_;
+         if ($cur_name eq "" || !defined ($cur_name))
+           {
+             $cur_name = "/";
+           }
+         if (!defined ($p->{"$cur_name"}))
+           {
+             $p->{$cur_name} = { };
+           }
+         $p = $p->{$cur_name};
+       }
+     return $rooth;
+   }
+ 
+ sub remove_empty_directories
+   {
+     my $rooth = shift;
+     my $path = shift;
+     my $children = (scalar (keys %{$rooth}));
+     my $dirs_remain = 0;
+ 
+     if ($children > 0)
+       {
+         foreach my $dirname (sort keys %{$rooth})
+           {
+             my $printpath;
+             $printpath = "$path/$dirname";
+             $printpath =~ s#^/*#/#;
+             remove_empty_directories ($rooth->{$dirname}, "$printpath");
+             $dirs_remain = 1 if (-d "$printpath");
+           } 
+       }
+ 
+      if ($dirs_remain == 0)
+        {
+          maybe_remove_ds_store ("$path");
+        }
+ 
+      remove_a_dir ("$path");
+   }
+ 
+ sub remove_a_file
+   {
+     my $fn = shift;
+     my $dirname = dirname ($fn);
+     my $basename = basename ($fn);
+     my $ufs_rsrc_file = "$dirname/._$basename";
+ 
+     progress_point ();
+     return if (!defined ($fn) || $fn eq "");
+ 
+     # Leave any files that are shared between packages alone.
+     if (defined($exception_list{$fn}))
+       {
+         if ($noisy_warnings)
+           {
+             print_warning ("Warning: file \"$fn\" intentionally not removed, even though it's in the BOM.\n");
+           }
+         return;
+       }
+ 
+     if (! -f $fn && ! -l $fn)
+       {
+         if ($noisy_warnings)
+           {
+             print_warning ("Warning: file \"$fn\" present in BOM but not found on disc.\n");
+           }
+         return;
+       }
+ 
+     if ($do_nothing == 1) 
+       {
+         print_donothing ("rm $fn\n");
+         print_donothing ("rm $ufs_rsrc_file\n") if ( -f $ufs_rsrc_file);
+       }
+     else
+       {
+ 	  unshift(@rmfiles, "$fn");
+ 	  unshift(@rmfiles, "$fn") if ( -f $ufs_rsrc_file);
+       }
+   }
+ 
+ sub remove_a_dir
+   {
+     my $dir = shift;
+ 
+     progress_point ();
+     return if (!defined ($dir) || $dir eq "" || $dir eq "/" || $dir eq "/usr");
+     if (! -d $dir)
+       {
+         if ($noisy_warnings)
+           {
+             print_warning ("Warning: directory \"$dir\" present in BOM but not found on disc.\n");
+           }
+         return;
+       }
+ 
+     if ($do_nothing == 1) 
+       {
+         print_donothing ("rmdir $dir\n");
+       }
+     else
+       {
+         push(@rmdirs, "$dir");
+       }
+   }
+ 
+ sub remove_package_receipts
+   {
+     my $pkgname = shift;
+     $pkgname =~ s#/##g;  # There shouldn't be any path seps in the pkg name...
+     return if (!defined ($pkgname) || $pkgname eq "" 
+                || $pkgname eq "." || $pkgname eq "..");
+ 
+     my $pkgdir = "$receipts_dir/$pkgname";
+     return if (!defined ($pkgdir) || $pkgdir eq "" || ! -d $pkgdir);
+ 
+     push(@rmpkg, "$pkgdir");
+   }
+ 
+ 
+ sub maybe_remove_ds_store
+   {
+     my $path = shift;
+     my $filecount = 0;
+     return if (!defined ($path) || $path eq "" || $path eq "/" || $path eq "/usr");
+     return if (! -f "$path/.DS_Store");
+ 
+     open (LS, "/bin/ls -a '$path' |");
+     while (<LS>)
+       {
+         chomp;
+         next if (m#^\.$# || m#^\.\.$#);
+         $filecount++;
+       }
+     close (LS);
+ 
+     if ($filecount == 1 && -f "$path/.DS_Store")
+       {
+         remove_a_file ("$path/.DS_Store");
+       }
+   }
+ 
+ sub print_donothing
+   {
+     my $msg = shift;
+     return if ($print_donothing_removals != 1);
+     pre_print ();
+     print $msg;
+   }
+ 
+ sub print_verbose
+   {
+     my $msg = shift;
+     return if ($verbose != 1);
+     pre_print ();
+     print $msg;
+   }
+ 
+ sub print_warning
+   {
+     my $msg = shift;
+     pre_print ();
+     print STDERR $msg;
+   }
+ 
+ sub print_error
+   {
+     my $msg = shift;
+     pre_print ();
+     print STDERR $msg;
+   }
+ 
+ sub pre_print 
+   {
+     print " " unless ($suppress_spin);
+   }
+ 
+ sub spin_rate_slow
+   {
+     $spin_slower_downer = 150;
+   }
+ 
+ sub spin_rate_fast
+   {
+     $spin_slower_downer = 75;
+   }
+ 
+ sub progress_point
+   {
+     return if ($suppress_spin);
+     $spin_counter++;
+     if (($spin_counter % $spin_slower_downer) == 0)
+       {
+         my $spin_chars = "|/-\\";
+         my $c = substr ($spin_chars, $spin_state % 4, 1);
+         $spin_state++;
+         print "[7m$c[m";
+       }
+   }
+ 
+ main ();
+ 
+ #----------------------------------------------------------------------------------------
Index: openafs/src/packaging/MacOS/afslogo.jpg
Index: openafs/src/packaging/MacOS/background.jpg
Index: openafs/src/packaging/MacOS/buildpkg.sh
diff -c openafs/src/packaging/MacOS/buildpkg.sh:1.4.2.9 openafs/src/packaging/MacOS/buildpkg.sh:1.4.2.14
*** openafs/src/packaging/MacOS/buildpkg.sh:1.4.2.9	Thu Mar 23 11:08:34 2006
--- openafs/src/packaging/MacOS/buildpkg.sh	Thu Aug 10 13:07:33 2006
***************
*** 53,65 ****
  
  if [ $firstpass = yes ]; then
      if [ -x /usr/bin/curl ]; then
- #    /usr/bin/curl -f -O http://www.central.org/dl/cellservdb/CellServDB
  	/usr/bin/curl -f -O http://dl.central.org/dl/cellservdb/CellServDB
      fi
  
      if [ ! -f CellServDB ]; then
         echo "A CellServDB file must be placed in the working directory"
         die=1
      fi
      FILES="ReadMe.rtf License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
      for f in $FILES; do
--- 53,71 ----
  
  if [ $firstpass = yes ]; then
      if [ -x /usr/bin/curl ]; then
  	/usr/bin/curl -f -O http://dl.central.org/dl/cellservdb/CellServDB
      fi
  
      if [ ! -f CellServDB ]; then
         echo "A CellServDB file must be placed in the working directory"
         die=1
+     else
+        if grep -q 'GCO Public CellServDB' CellServDB ; then
+          touch CellServDB
+        else
+           echo "A proper CellServDB file must be placed in the working directory"
+           die=1
+        fi
      fi
      FILES="ReadMe.rtf License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
      for f in $FILES; do
***************
*** 111,118 ****
      echo openafs.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
      if [ $majorvers -ge 7 ]; then
  	echo /afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
! 	(cd $CURDIR && \
! 	cp afssettings $PKGROOT/private/var/db/openafs/etc/config )
  	cp settings.plist $PKGROOT/private/var/db/openafs/etc/config/settings.plist.orig
      else
  	echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
--- 117,123 ----
      echo openafs.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
      if [ $majorvers -ge 7 ]; then
  	echo /afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
!         cp -RP $PKGROOT/Library/OpenAFS/Tools/etc/afssettings $PKGROOT/private/var/db/openafs/etc/config
  	cp settings.plist $PKGROOT/private/var/db/openafs/etc/config/settings.plist.orig
      else
  	echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
***************
*** 131,150 ****
      mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin
  
      BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
  
  # Should these be linked into /usr too?
      OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
!     OTHER_ETCLIST="vos rxdebug"
  
      for f in $BINLIST; do
         ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
      done
      ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
  
      ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
  
!     mkdir -p $PKGROOT/Library/Kerberos\ Plug-Ins
!     ln -s ../../Library/OpenAFS/Tools/root.client/Library/Kerberos\ Plug-Ins/aklog.loginLogout $PKGROOT/Library/Kerberos\ Plug-Ins/
  
      chown -R root${SEP}wheel $PKGROOT/usr
      chmod -R og-w $PKGROOT/usr
--- 136,160 ----
      mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin
  
      BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
+     ETCLIST="vos"
  
  # Should these be linked into /usr too?
      OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
!     OTHER_ETCLIST="rxdebug"
  
      for f in $BINLIST; do
         ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
      done
+     for f in $ETCLIST; do
+        ln -s ../../Library/OpenAFS/Tools/etc/$f $PKGROOT/usr/sbin/$f
+     done
+ 
      ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
  
      ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
  
! #    mkdir -p $PKGROOT/Library/Kerberos\ Plug-Ins
! #    ln -s ../../Library/OpenAFS/Tools/root.client/Library/Kerberos\ Plug-Ins/aklog.loginLogout $PKGROOT/Library/Kerberos\ Plug-Ins/
  
      chown -R root${SEP}wheel $PKGROOT/usr
      chmod -R og-w $PKGROOT/usr
***************
*** 159,164 ****
--- 169,175 ----
  	cp OpenAFS.post_install $PKGRES/postinstall
  	cp OpenAFS.pre_upgrade $PKGRES/preupgrade
  	cp OpenAFS.post_install $PKGRES/postupgrade
+ 	cp background.jpg $PKGRES/background.jpg
  	if [ $majorvers -ge 8 ]; then
  	    cp InstallationCheck $PKGRES
  	    mkdir -p $PKGRES/English.lproj
***************
*** 199,205 ****
      mkdir $CURDIR/dmg
      mv $CURDIR/OpenAFS.pkg $CURDIR/dmg
      rm -rf $CURDIR/OpenAFS.dmg
!     hdiutil create -srcfolder $CURDIR/dmg -volname OpenAFS -anyowners $CURDIR/OpenAFS.dmg
      rm -rf $CURDIR/dmg
      # Unfortunately, sudo sets $USER to root, so I can't chown the 
      #.pkg dir back to myself
--- 210,223 ----
      mkdir $CURDIR/dmg
      mv $CURDIR/OpenAFS.pkg $CURDIR/dmg
      rm -rf $CURDIR/OpenAFS.dmg
!     cp Uninstall $CURDIR/dmg/Uninstall.command
!     cp DS_Store $CURDIR/dmg/.DS_Store
!     mkdir $CURDIR/dmg/.background
!     cp afslogo.jpg $CURDIR/dmg/.background
! #    hdiutil create -srcfolder $CURDIR/dmg -volname OpenAFS -anyowners $CURDIR/OpenAFS.dmg
!     hdiutil makehybrid -hfs -hfs-volume-name OpenAFS -hfs-openfolder $CURDIR/dmg $CURDIR/dmg -o $CURDIR/TMP.dmg
!     hdiutil convert -format UDZO TMP.dmg -o $CURDIR/OpenAFS.dmg
!     rm $CURDIR/TMP.dmg
      rm -rf $CURDIR/dmg
      # Unfortunately, sudo sets $USER to root, so I can't chown the 
      #.pkg dir back to myself
Index: openafs/src/packaging/OpenBSD/buildpkg.sh
diff -c openafs/src/packaging/OpenBSD/buildpkg.sh:1.3 openafs/src/packaging/OpenBSD/buildpkg.sh:1.3.2.1
*** openafs/src/packaging/OpenBSD/buildpkg.sh:1.3	Mon Jul  7 18:30:46 2003
--- openafs/src/packaging/OpenBSD/buildpkg.sh	Fri Jun 23 10:21:12 2006
***************
*** 1,4 ****
! # $Id: buildpkg.sh,v 1.3 2003/07/07 22:30:46 rees Exp $
  
  SRC=../../../../..
  umask 022
--- 1,6 ----
! # $Id: buildpkg.sh,v 1.3.2.1 2006/06/23 14:21:12 rees Exp $
! 
! # This doesn't actually build a package any more
  
  SRC=../../../../..
  umask 022
***************
*** 30,33 ****
  
  echo '/afs:/usr/vice/cache:96000' >usr/vice/etc/cacheinfo
  
! pkg_create -v -h -f packinglist -c -OpenAFS -d desc -p / -s $PWD openafs-client
--- 32,37 ----
  
  echo '/afs:/usr/vice/cache:96000' >usr/vice/etc/cacheinfo
  
! tar chfvz openafs-client.tgz usr/vice
! 
! #pkg_create -v -h -f packinglist -c -OpenAFS -d desc -p / -s $PWD openafs-client
Index: openafs/src/packaging/OpenBSD/postinstall
diff -c openafs/src/packaging/OpenBSD/postinstall:1.3 openafs/src/packaging/OpenBSD/postinstall:1.3.2.1
*** openafs/src/packaging/OpenBSD/postinstall:1.3	Wed Mar 24 17:53:19 2004
--- openafs/src/packaging/OpenBSD/postinstall	Fri Jun 23 10:21:12 2006
***************
*** 1,10 ****
! # $Id: postinstall,v 1.3 2004/03/24 22:53:19 rees Exp $
  
  umask 022
  if [ ! -d /afs ]; then
    mkdir /afs
  fi
  
  strip -x /usr/vice/bin/*
  
  echo "Fetching CellServDB..."
--- 1,18 ----
! # $Id: postinstall,v 1.3.2.1 2006/06/23 14:21:12 rees Exp $
! 
! if [ `id -u` != "0" ]; then
!   echo "Must be root; current id="`id -u`
!   exit 1
! fi
  
  umask 022
  if [ ! -d /afs ]; then
    mkdir /afs
  fi
  
+ chown root.bin /usr/vice /usr/vice/cache
+ chown -R root.bin /usr/vice/bin /usr/vice/etc
+ 
  strip -x /usr/vice/bin/*
  
  echo "Fetching CellServDB..."
Index: openafs/src/packaging/RedHat/afs-krb5-2.0-com_err.patch
diff -c /dev/null openafs/src/packaging/RedHat/afs-krb5-2.0-com_err.patch:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/afs-krb5-2.0-com_err.patch	Mon Aug 21 15:55:20 2006
***************
*** 0 ****
--- 1,24 ----
+ diff -uNr afs-krb5.orig/src/configure.in afs-krb5/src/configure.in
+ --- afs-krb5.orig/src/configure.in	2005-04-14 16:06:15.597138000 -0400
+ +++ afs-krb5/src/configure.in	2005-04-14 16:06:44.201789856 -0400
+ @@ -143,7 +143,19 @@
+  LIBS="$ac_save_LIBS"])
+  if test "x$afs_cv_func_getDirPath" = "xyes"; then
+  	AC_MSG_RESULT([Setting compilation parameters for AFS 3.5 and later])
+ -	AKLOG_EXTRA_OBJ=adderrtable.o
+ +	AC_MSG_CHECKING([for add_to_error_table])
+ +dnl
+ +dnl We may be using libcom_err from Kerberos (shared libraries), and
+ +dnl already have add_to_error_table
+ +dnl
+ +	AC_TRY_LINK_FUNC(add_to_error_table, have_adderr=yes, have_adderr=no)
+ +	if test $have_adderr != yes; then
+ +		AC_MSG_RESULT([no, adding adderrtable.o])
+ +		AKLOG_EXTRA_OBJ=adderrtable.o
+ +	else
+ +		AC_MSG_RESULT([yes])
+ +		AKLOG_EXTRA_OBJ=
+ +	fi
+  else
+  	AC_MSG_RESULT([Setting compilation parameters for pre-AFS 3.5])
+  	AC_DEFINE(PRE_AFS35)
Index: openafs/src/packaging/RedHat/afs-krb5-2.0-krb524.patch
diff -c /dev/null openafs/src/packaging/RedHat/afs-krb5-2.0-krb524.patch:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/afs-krb5-2.0-krb524.patch	Mon Aug 21 15:55:20 2006
***************
*** 0 ****
--- 1,31 ----
+ --- afs-krb5/src/configure.in-orig	2003-03-16 20:13:34.000000000 -0500
+ +++ afs-krb5/src/configure.in	2005-09-14 17:20:46.000000000 -0400
+ @@ -179,14 +197,20 @@
+  [	EXTRA_INC="$EXTRA_INC -I$with_krb5_obj/include -I$with_krb5_obj/include/krb5"
+  	KADM_LIBS=`echo $KADM_LIBS | sed -e "s#-ldb#$with_krb5_obj/lib/libdb.a#"`])
+  dnl
+ -dnl Sigh, why is this so complicated?  Right now, just assume that 
+ -dnl the 524 library is always called krb524 and will be picked up by the
+ -dnl Kerberos link line
+ -dnl
+ -dnl AC_CHECK_LIB(krb524, krb524_convert_princs, [KRB524LIB="-lkrb524"], [
+ -dnl	AC_MSG_ERROR([Cannot find 524 library, exiting])
+ -dnl ])
+ -KRB524LIB=-lkrb524
+ +dnl The krb524 functions may be included in libkrb5 itself, or else in a 
+ +dnl separate library named libkrb524
+ +dnl
+ +ac_save_LIBS="$LIBS"
+ +KRB524LIB=
+ +AC_MSG_CHECKING([for krb524 library])
+ +AC_CHECK_FUNC(krb524_init_ets, have_krb524=yes, have_krb524=no)
+ +
+ +if test "$have_krb524" = no; then
+ +	LIBS="$LIBS -lkrb524"
+ +	AC_CHECK_LIB(krb524, krb524_init_ets, [KRB524LIB="-lkrb524"],
+ +			     [AC_MSG_ERROR([Unable to find krb524 library])])
+ +fi
+ +LIBS="$ac_save_LIBS"
+  
+  dnl AC_CHECK_LIB(kdb5, krb5_db_fetch_mkey, [KD_LIBS="-lkdb5"],[
+  dnl 	AC_MSG_WARN([Cannot find Kerberos 5 DB library, will not be able to build DB utilities])
Index: openafs/src/packaging/RedHat/afs-krb5-2.0-libsocket.patch
diff -c /dev/null openafs/src/packaging/RedHat/afs-krb5-2.0-libsocket.patch:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/afs-krb5-2.0-libsocket.patch	Mon Aug 21 15:55:20 2006
***************
*** 0 ****
--- 1,39 ----
+ diff -uNr afs-krb5.orig/src/configure.in afs-krb5/src/configure.in
+ --- afs-krb5.orig/src/configure.in	2003-03-16 20:13:34.000000000 -0500
+ +++ afs-krb5/src/configure.in	2003-07-30 11:52:55.000000000 -0400
+ @@ -44,14 +44,6 @@
+  if test $retval -ne 0; then
+  	AC_MSG_ERROR($krb5_config failed with error code of $retval)
+  fi
+ -AC_MSG_RESULT([Adding $krb5_cflags to CFLAGS])
+ -AC_MSG_RESULT([Adding $krb5_libs to LIBS])
+ -AC_MSG_RESULT([Setting KADM_CFLAGS to $krb5_cflags_kadm])
+ -AC_MSG_RESULT([Setting KADM_LIBS to $krb5_libs_kadm])
+ -CFLAGS="$CFLAGS $krb5_cflags"
+ -LIBS="$LIBS $krb5_libs"
+ -KADM_CFLAGS="$krb5_cflags_kadm"
+ -KADM_LIBS="$krb5_libs_kadm"
+  dnl
+  dnl Check for various network libraries
+  dnl
+ @@ -105,6 +97,20 @@
+  	AC_MSG_ERROR([Unable to find res_search function])
+  fi
+  LIBS="$save_LIBS"
+ +
+ +dnl
+ +dnl Don't add these to LIBS until after we've already looked for 
+ +dnl libsocket, etc. Otherwise ka-forwarder won't build properly
+ +dnl
+ +AC_MSG_RESULT([Adding $krb5_cflags to CFLAGS])
+ +AC_MSG_RESULT([Adding $krb5_libs to LIBS])
+ +AC_MSG_RESULT([Setting KADM_CFLAGS to $krb5_cflags_kadm])
+ +AC_MSG_RESULT([Setting KADM_LIBS to $krb5_libs_kadm])
+ +CFLAGS="$CFLAGS $krb5_cflags"
+ +LIBS="$LIBS $krb5_libs"
+ +KADM_CFLAGS="$krb5_cflags_kadm"
+ +KADM_LIBS="$krb5_libs_kadm"
+ +
+  dnl
+  dnl Optional support for AFS
+  dnl
Index: openafs/src/packaging/RedHat/afs-krb5-2.0-openafs1.3.patch
diff -c /dev/null openafs/src/packaging/RedHat/afs-krb5-2.0-openafs1.3.patch:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/afs-krb5-2.0-openafs1.3.patch	Mon Aug 21 15:55:20 2006
***************
*** 0 ****
--- 1,12 ----
+ diff -uNr afs-krb5.orig/src/asetkey.c afs-krb5/src/asetkey.c
+ --- afs-krb5.orig/src/asetkey.c	2005-04-08 15:55:35.637620000 -0400
+ +++ afs-krb5/src/asetkey.c	2005-04-08 15:55:57.614279120 -0400
+ @@ -81,7 +81,7 @@
+  		exit(1);
+  	}
+  
+ -	code = afsconf_AddKey(tdir, kvno, key->contents);
+ +	code = afsconf_AddKey(tdir, kvno, key->contents, 1);
+  	if (code) {
+  	    printf("setkey: failed to set key, code %ld.\n", code);
+  	    exit(1);
Index: openafs/src/packaging/RedHat/afs-krb5-2.0-res_search.patch
diff -c /dev/null openafs/src/packaging/RedHat/afs-krb5-2.0-res_search.patch:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/afs-krb5-2.0-res_search.patch	Mon Aug 21 15:55:20 2006
***************
*** 0 ****
--- 1,14 ----
+ --- afs-krb5/src/configure.in.res_search	2005-09-30 12:53:38.000000000 -0400
+ +++ afs-krb5/src/configure.in	2005-09-30 14:40:38.000000000 -0400
+ @@ -89,7 +89,10 @@
+  		if test "$have_res_search" != yes; then
+  			AC_CHECK_LIB(${lib}, res_search,
+  				     [have_res_search=yes
+ -				      NETLIBS="$NETLIBS -l${lib}"])
+ +				      NETLIBS="$NETLIBS -l${lib}"],
+ +			             [AC_CHECK_LIB(${lib}, __res_search,
+ +				       [have_res_search=yes
+ +					NETLIBS="$NETLIBS -l${lib}"])])
+  		fi
+  	done
+  fi
Index: openafs/src/packaging/RedHat/afsmodname
diff -c openafs/src/packaging/RedHat/afsmodname:1.1 openafs/src/packaging/RedHat/afsmodname:removed
*** openafs/src/packaging/RedHat/afsmodname:1.1	Mon Aug 26 16:46:51 2002
--- openafs/src/packaging/RedHat/afsmodname	Fri Oct 13 15:52:13 2006
***************
*** 1,455 ****
- #!/usr/bin/perl
- # afsmodname - return the name of the AFS module to load
- # usage: afsmodname [path]
- # THIS SCRIPT IS UNDER SOURCE CONTROL!
- # The master copy is /afs/cs/misc/openafs/src/client-support/afsmodname
- 
- use Getopt::Std;
- 
- use strict;
- use vars qw($modbase $VERSION @TrySyms @AddSyms $Prefix);
- use vars qw($DEBUG $Mode $OutFile %SymCache);
- 
- $VERSION = '$Revision: 1.1 $';
- $VERSION =~ s/^\$[a-z]*:?\s*(\S*)\s*\$$/$1/i;
- $VERSION = 'testing' unless $VERSION;
- $modbase = '/usr/vice/etc/modload';
- @TrySyms = qw(__iget iget __iget4 iget4);
- @AddSyms = qw(sock_create);
- $Prefix = 'libafs';
- 
- 
- sub vcmp {
-   my (@a, @b, @aa, @bb);
-   my ($i, $ii);
- 
-   @a = split /-/, $a;
-   @b = split /-/, $b;
-   foreach $i (0 .. ((@a > @b) ? $#b : $#a)) {
-     @aa = split /\./, $a[$i];
-     @bb = split /\./, $b[$i];  
-     foreach $ii (0 .. ((@aa > @bb) ? $#bb : $#aa)) {
-       return $aa[$ii] <=> $bb[$ii] if $aa[$ii] <=> $bb[$ii]
-                                    && $aa[$ii] =~ /^\d+$/
-                                    && $bb[$ii] =~ /^\d+$/;
-       return $aa[$ii] cmp $bb[$ii] if $aa[$ii] cmp $bb[$ii];
-     }
-     return @aa <=> @bb if @aa <=> @bb;
-   }
-   return @a <=> @b;
- }
- 
- 
- sub parse_symbol ($) {
-   my($symbol) = @_;
- 
-   if ($symbol =~ /^(.*)_R((?:smp)?(?:2gig)?_?[0-9a-f]{8})$/) {
-     ($1, $2);
-   } else {
-     ($symbol, '--none--');
-   }
- }
- 
- 
- sub get_ksym ($) {
-   my($req_sym) = @_;
-   my($addr, $symbol, $module, $version, @answer);
- 
- 
-   if (exists($SymCache{$req_sym})) {
-     print STDERR "get_ksym($req_sym) [cached]\n" if $DEBUG > 1;
-     return $SymCache{$req_sym};
-   }
- 
-   print STDERR "get_ksym($req_sym)" if $DEBUG;
-   $SymCache{$req_sym} = undef;
-   open(KSYMS, '/proc/ksyms') or die "open /proc/ksyms: $!\n";
-   while (<KSYMS>) {
-     if (/^(\w+)\s+(\w+)\s+\[(.*)\]/) {
-       ($addr, $symbol, $module) = ($1, $2, $3)
-     } elsif (/^(\w+)\s+(\w+)/) {
-       ($addr, $symbol, $module) = ($1, $2, 'KERNEL')
-     } else { next }
- 
-     ($symbol, $version) = parse_symbol($symbol);
- 
-     if ($symbol eq $req_sym) {
-       $SymCache{$req_sym} = [$addr, $version, $module];
-       print STDERR " => [addr=$addr, vers=$version, mod=$module]\n" if $DEBUG;
-       last;
-     }
-   }
-   close(KSYMS);
- 
-   print STDERR " => not found\n" if $DEBUG && !defined($SymCache{$req_sym});
-   $SymCache{$req_sym};
- }
- 
- 
- sub get_modsyms ($) {
-   my($modpath) = @_;
-   my($symbol, $version, $V);
- 
-   $V = {};
-   open(NM, "nm $modpath|") or die "nm $modpath: $!\n";
-   while (<NM>) {
-     chomp;
-     next unless /^\s+U\s+/;
-     ($symbol, $version) = parse_symbol($');
-     $$V{$symbol} = $version unless $version eq '--none--';
-   }
-   close(NM);
-   $V;
- }
- 
- 
- sub get_hdrsyms ($) {
-   my($srcpath) = @_;
-   my($moddir, @hdrs, $h);
-   my($symbol, $version, $V);
- 
- 
-   $moddir = "$srcpath/include/linux/modules";
-   opendir(HDRS, $moddir) or die "$moddir: $!\n";
-   @hdrs = readdir(HDRS);
-   closedir(HDRS);
- 
-   $V = {};
-   foreach $h (@hdrs) {
-     next unless $h =~ /\.ver$/;
-     open(HDR, "$moddir/$h") or die "$moddir/$h: $!\n";
-     while (<HDR>) {
-       chomp;
-       next unless /#define __ver_(\S+)\s+(\S+)/;
-       $$V{$1} = $2;
-     }
-     close(HDR);
-   }
-   $V;
- }
- 
- 
- sub get_cputype () {
-   my($cputype, $family, $vendor, $model);
- 
-   open(CPUINFO, '/proc/cpuinfo') or die "open /proc/cpuinfo: $!\n";
-   while (<CPUINFO>) {
-     if    (/^cpu\s*\:\s*(\S+)/)       { $cputype = $1 }
-     elsif (/^cpu family\s*:\s*(\S+)/) { $family  = $1 }
-     elsif (/^vendor_id\s*:\s*(\S+)/)  { $vendor  = $1 }
-     elsif (/^model\s*:\s*(\S+)/)      { $model   = $1 }
-   }
-   close(CPUINFO);
-   if    ($vendor eq 'GenuineIntel') { $vendor = 'intel' }
-   elsif ($vendor eq 'AuthenticAMD') { $vendor = 'amd'   }
-   $cputype = "${family}86" if !defined($cputype);
-   [$cputype, $vendor, $model];
- }
- 
- 
- sub table_lookup ($@) {
-   my($cpu, @paths) = @_;
-   my($path, $symbol, $version, $mincpu, @mincpu, $module, $info, @supp);
-   my($prev_module);     # last module line we saw
-   my($match_module);    # last matching module
-   my($prev_match);      # true if last module matches so far
- 
-   foreach $path (@paths) {
-     next unless -f $path;
-     $prev_match = 0;
-     open(TABLE, $path) or die "open $path: $!\n";
-     while (<TABLE>) {
-       # Skip comments
-       next if (/^\#/ || /^\s*$/);
- 
-       # Check supplemental requirements
-       if (/^\s*\>/) {
-         @supp = split;
-         foreach (@supp) {
-           if (/([^=]*)=([^=]*)/) {
-             ($symbol, $version) = ($1, $2);
-             $info = get_ksym($symbol);
-             $prev_match = 0 if !$info || $version ne $$info[1];
-           }
-         }
-         next;
-       }
- 
-       # This is a new module, so all supplemental requirements for the
-       # previous module have been processed.  If they all passed, then
-       # the previous module is a matching module.
-       $match_module = $prev_module if $prev_match;
- 
-       # Parse the line and remember the module name
-       ($symbol, $version, $mincpu, $module) = split;
-       $prev_module = $module;
-       $prev_match  = 0;
-       if ($DEBUG) {
-         print STDERR "Try $module ($symbol=$version)",
-                      ($mincpu ne '-') ?  " mincpu = $mincpu" : "",
-                      "\n";
-       }
- 
-       # Check mincpu requirement
-       if ($mincpu ne '-') {
-         @mincpu = split(/\./, $mincpu);
-         if ($mincpu[0] ne '' && $mincpu[0] >  $$cpu[0]) {  # min family
-           print STDERR " mincpu failed: $mincpu[0] > $$cpu[0]\n" if $DEBUG;
-           next;
-         }
-         if ($mincpu[1] ne '' && $mincpu[1] ne $$cpu[1]) {  # exact vendor
-           print STDERR " mincpu failed: $mincpu[1] != $$cpu[1]\n" if $DEBUG;
-           next;
-         }
-         if ($mincpu[2] ne '' && $mincpu[2] >  $$cpu[2]) {  # min model
-           print STDERR " mincpu failed: $mincpu[2] > $$cpu[2]\n" if $DEBUG;
-           next;
-         }
-       }
- 
-       # Check primary symbol requirement
-       $info = get_ksym($symbol);
-       next unless $info;
-       next unless $version eq $$info[1];
- 
-       # OK; it's a match so far.  There may still be some supplemental
-       # requirements that we need to check.
-       $prev_match = 1;
-     }
-     close(TABLE);
-     $match_module = $prev_module if $prev_match;
-   }
-   $match_module;
- }
- 
- 
- sub dump_versions ($) {
-   my($cpu) = @_;
-   my($version);
- 
-   print STDERR "CPU Type:       ", join('.', @$cpu), "\n";
- 
-   chomp($version = `uname -rv`);
-   print STDERR "Linux version:  $version\n";
- 
-   if (open(RHR, "/etc/redhat-release")) {
-     chomp($version = <RHR>);
-      print STDERR "RedHat release: $version\n";
-   }
- }
- 
- 
- sub dump_syms (@) {
-   my(@syms) = @_;
-   my($sym, $info);
- 
-   print STDERR "Symbol versions:\n";
-   foreach $sym (@syms) {
-     $info = get_ksym($sym);
-     printf STDERR "  %-10s %s\n", $sym, $$info[1] if $info;
-   }
- }
- 
- 
- sub gen_table (@) {
-   my(@modules) = @_;
-   my($module, $modname, $V, $sym, $count, @add);
- 
-   print <<'EOF';
- # This file describes the available AFS kernel modules and what kernel
- # versions they work with.  Each line matches against some kernel symbol
- # version, and specifies a module which may be used with kernels containing
- # that version of the specified symbol.  Only lines which match the
- # currently-running kernel are considered.
- #
- # In addition, each line may specify a minimum CPU model on which the module
- # will work.  If this value is present, the actual CPU model must be greater
- # than or equal to the version specified; otherwise, the module is assumed
- # to work on any CPU.
- #
- # The last match found will be used.
- #
- # Symbol  Version       MinCPU  Module
- #=======  ============  ======  ====================
- EOF
-   foreach $module (sort vcmp @modules) {
-     ($modname = $module) =~ s/.*\///;
-     $modname =~ s/^$Prefix[-.](.*)\.o$/$1/;
-     $V = get_modsyms($module);
-     $count = 0;
-     foreach $sym (@TrySyms) {
-       next unless exists $$V{$sym};
-       $count++;
-       printf "%-8s  %-12s  %-6s  %s\n", $sym, $$V{$sym}, '-', $modname;
-       last;
-     }
-     if (!$count) {
-       print STDERR "Unable to find a suitable symbol reference in $modname!\n";
-       next;
-     }
-     @add = ();
-     foreach $sym (@AddSyms) {
-       next unless exists $$V{$sym};
-       push(@add, "$sym=$$V{$sym}");
-     }
-     print "> ", join(' ', @add), "\n" if @add;
-   }
- }
- 
- 
- sub scan_kernels (@) {
-   my(@kernels) = @_;
-   my($kernel, $kpath, $kname, $V);
- 
- eval <<"EOF";
- format =
- @<<<<<<<<<<<<<<<<<<<<<<<< @{[' @<<<<<<<<<<<' x scalar(@TrySyms)]}
- \$kname, @{[join(',', map(q/$$V{'/ . $_ . q/'}/, @TrySyms))]}
- .
- EOF
- 
-   $kname = 'Kernel';
-   $V = { map(($_ => $_), @TrySyms) };
-   write;
- 
-   $kname = '=========================';
-   $V = { map(($_ => '============'), @TrySyms) };
-   write;
- 
-   foreach $kernel (@kernels) {
-     if    (-d "$kernel/src/include/linux/modules") { $kpath = "$kernel/src" }
-     elsif (-d "$kernel/include/linux/modules")     { $kpath = $kernel       }
-     else { next }
-     ($kname = $kpath) =~ s#/src$##;
-     $kname =~ s/.*\///;
- 
-     $V = get_hdrsyms($kpath);
-     write;
-   }
- }
- 
- 
- sub symcompare ($$) {
-   my($module, $kernel) = @_;
-   my($ksyms, $msyms, $sym, $kvers, $mvers, $info);
- 
- eval <<'EOF';
- format =
- @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<  @<<<<<<<<<<<  @<<<<<<<<<<<
- $sym, $kvers, $mvers
- .
- EOF
- 
-   if (defined($kernel)) { $ksyms = get_hdrsyms($kernel) }
-   $msyms = get_modsyms($module);
- 
-   print "Symbol                          Kernel        Module\n";
-   print "==============================  ============  ============\n";
-   foreach (keys %$msyms) {
-     $sym = $_;
-     $mvers = $$msyms{$sym};
-     if (defined($kernel)) {
-       $kvers = $$ksyms{$sym};
-     } else {
-       $info = get_ksym($sym);
-       $kvers = $$info[1];
-     }
-     next if $kvers eq $mvers;
-     write;
-   }
- }
- 
- 
- sub usage (;@) {
- 
-   print STDERR "$00: ", @_, "\n" if @_;
-   print STDERR <<"EOF";
- usage: $00 [opts] [modbase]                      (find module)
-        $00 [opts] -g modules ...                 (make table)
-        $00 [opts] -k kernels ...                 (scan kernels)
-        $00 [opts] -c module [kernel]             (check module)
-        $00 -h                                    (print help)
-        $00 -v                                    (print version)
- 
- options:
-   -d          enable debugging output
-   -f outfile  set output file (default stdout)
-   -P prefix   set module name prefix (default $Prefix)
-   -S syms...  symbols to try for -x, -k (default @TrySyms)
-   -A syms...  additional symbols to check for -x (default @AddSyms)
- 
-   Module lists for -S and -A may be space- or comma-separated.
-   For backward-compatibility, -g is a synonym for -x.
- EOF
-     exit(0);
- }
- 
- sub parse_opts () {
-   my(%opts);
- 
-   ($00 = $0) =~ s/.*\///;
-   getopts('dckgxf:hvP:S:A:', \%opts) or usage('invalid option(s)');
-   usage() if $opts{'h'};
- 
-   if ($opts{'v'}) {
-     print "afsmodname $VERSION\n";
-     exit(0);
-   }
- 
-   $opts{'g'} = 1 if $opts{'x'};
-   if ($opts{'g'} + $opts{'k'} + $opts{'c'} > 1) {
-     usage("At most one of -g, -k, -c can be used\n");
-   }
- 
-   $DEBUG++                              if exists $opts{'d'};
-   $Mode = 'g'                           if exists $opts{'g'};
-   $Mode = 'k'                           if exists $opts{'k'};
-   $Mode = 'c'                           if exists $opts{'c'};
- 
-   usage("Too many arguments")   if !$Mode && @ARGV > 1;
-   usage("Too many arguments")   if $Mode eq 'c' && @ARGV > 2;
-   usage("Module name required") if $Mode eq 'c' && !@ARGV;
- 
-   $OutFile = $opts{'f'}                 if exists $opts{'f'};
-   $Prefix  = $opts{'p'}                 if exists $opts{'P'};
-   @TrySyms = split(/[, ]+/, $opts{'S'}) if exists $opts{'S'};
-   @AddSyms = split(/[, ]+/, $opts{'A'}) if exists $opts{'A'};
- }
- 
- 
- ## MAIN PROGRAM
- 
- my($cpu, $module);
- 
- parse_opts();
- if ($Mode) {
-   if ($OutFile) {
-     open(STDOUT, ">$OutFile") or die "$OutFile: $!\n";
-   }
-   if ($Mode eq 'g') { gen_table(@ARGV)               }
-   if ($Mode eq 'k') { scan_kernels(@ARGV)            }
-   if ($Mode eq 'c') { symcompare($ARGV[0], $ARGV[1]) }
-   exit(0);
- }
- 
- $modbase = $ARGV[0] if @ARGV;
- 
- $cpu = get_cputype();
- 
- $module = table_lookup($cpu, "$modbase/SymTable", "$modbase/SymTable.local");
- 
- if ($module) {
-   print "$Prefix-$module.o";
-   exit(0);
- }
- 
- print STDERR <<'EOF';
- Hmm...  I can't seem to find an AFS kernel module suitable for your Linux
- kernel.  That means you will need to build or obtain a suitable module.
- The following information may be of some use in obtaining assistance:
- EOF
- 
- dump_versions($cpu);
- dump_syms(sort (@TrySyms, keys %SymCache));
- 
- exit(1);
--- 0 ----
Index: openafs/src/packaging/RedHat/openafs-1.2.6-rc.patch
diff -c openafs/src/packaging/RedHat/openafs-1.2.6-rc.patch:1.1 openafs/src/packaging/RedHat/openafs-1.2.6-rc.patch:removed
*** openafs/src/packaging/RedHat/openafs-1.2.6-rc.patch:1.1	Mon Aug 26 16:46:51 2002
--- openafs/src/packaging/RedHat/openafs-1.2.6-rc.patch	Fri Oct 13 15:52:13 2006
***************
*** 1,27 ****
- Index: src/afsd/afs.rc.linux
- ===================================================================
- RCS file: /cvs/openafs/src/afsd/afs.rc.linux,v
- retrieving revision 1.4
- diff -u -r1.4 afs.rc.linux
- --- src/afsd/afs.rc.linux	2001/10/10 03:16:54	1.4
- +++ src/afsd/afs.rc.linux	2001/10/13 14:42:31
- @@ -92,6 +92,19 @@
-  # LIBAFS manually.
-  choose_client() {
-  
- +        # Use the associated script to determine the module name
- +	if test -f /usr/vice/etc/afsmodname && \
- +	    test -f /usr/vice/etc/modload/SymTable ; then
- +	    
- +            LIBAFS=`/usr/vice/etc/afsmodname`
- +	    if test "x$LIBAFS" = "x" ; then
- +		echo Did not find matching module in SymTable
- +	    else
- +		echo Found $LIBAFS from SymTable... Loading...
- +		return 0
- +	    fi
- +	fi
- +
-  	# Use the second field of the uname -v output instead of just
-  	# doing a match on the whole thing to protect against matching
-  	# a timezone named SMP -- I don't know of one, but let's be
--- 0 ----
Index: openafs/src/packaging/RedHat/openafs-1.2.6.spec
diff -c openafs/src/packaging/RedHat/openafs-1.2.6.spec:1.1 openafs/src/packaging/RedHat/openafs-1.2.6.spec:removed
*** openafs/src/packaging/RedHat/openafs-1.2.6.spec:1.1	Mon Aug 26 16:46:51 2002
--- openafs/src/packaging/RedHat/openafs-1.2.6.spec	Fri Oct 13 15:52:13 2006
***************
*** 1,762 ****
- %define afsvers 1.2.6
- %define pkgrel 1
- 
- # Define your particular Red Hat and kernel versions:
- #	For Linux 2.2:  22
- #	For Linux 2.4:	24
- #
- %define osvers rh7.1
- %define kernvers 24
- 
- # This is where to look for kernel-build includes files.
- # Most likely you don't want to change this, but
- # depending on your situation you may want:
- # 	Linux 2.2:
- #		kbase = /usr/src/linux-
- #		kend = ""
- #	Linux 2.4:
- #		kbase = /lib/modules/
- #		kend = /build
- #
- %define kbase /usr/src/linux-
- %define kend ""
- 
- # Set 'debugspec' to 1 if you want to debug the spec file.  This will
- # not remove the installed tree as part of the %clean operation
- %define debugspec 0
- 
- # Set 'enterprisekernelsupport' to 1 if you want to build the
- # kernel module for the enterprise kernel
- # Note: This will only work for kernvers == 24 on i686
- %define enterprisekernelsupport 1
- 
- # Set 'bigmemkernelsupport' to 1 if you want to build the
- # kernel module for the bigmem kernel
- # Note: This will only work for kernvers == 24 on i686
- %define bigmemkernelsupport 1
- 
- # Set 'krb5support' to 1 if you want to build the openafs-krb5 package
- # to distribute aklog and asetkey
- %define krb5support 1
- 
- # OpenAFS configuration options
- %define enable_bitmap_later 0
- %define enable_bos_restricted_mode 0
- %define enable_fast_restart 0
- 
- #######################################################################
- # You probably don't need to change anything beyond this line
- # NOTE: If you do, please email me!!!
- 
- Summary: OpenAFS distributed filesystem
- Name: openafs
- Version: %{afsvers}
- Release: %{osvers}.%{pkgrel}
- Copyright: IPL
- BuildRoot: %{_tmppath}/%{name}-%{version}-root
- Packager: Derek Atkins <warlord@MIT.EDU>
- Group: Networking/Filesystems
- BuildRequires: kernel-source
- %if "%{osvers}" != "rh6.2"
- # Newer versions of Red Hat require pam-devel in order to build
- BuildRequires: pam-devel
- %endif
- 
- Source0: http://www.openafs.org/dl/openafs/${afsvers}/openafs-%{afsvers}-src.tar.gz
- Source1: http://www.openafs.org/dl/openafs/${afsvers}/openafs-%{afsvers}-doc.tar.gz
- Source2: openafs-ThisCell
- # http://grand.central.org/dl/cellservdb/CellServDB
- Source3: openafs-CellServDB
- Source4: openafs-SuidCells
- Source5: openafs-cacheinfo
- Source6: openafs-afsmodname
- Source7: openafs-LICENSE.Sun
- Source8: openafs-README
- Source10: http://www.openafs.org/dl/openafs/${afsvers}/RELNOTES-%{afsvers}
- Source11: http://www.openafs.org/dl/openafs/${afsvers}/ChangeLog
- 
- Source20: openafs-krb5-1.3.tar.gz
- 
- Patch0: openafs-%{afsvers}-rc.patch
- 
- Patch20: openafs-krb5-1.3-1.2.1.diff.gz
- Patch21: openafs-krb5-1.3-configure.patch
- 
- %description
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides common files shared across all the various
- OpenAFS packages but are not necessarily tied to a client or server.
- 
- %package client
- Requires: binutils, openafs-kernel, openafs = %{PACKAGE_VERSION}
- Summary: OpenAFS Filesystem Client
- Group: Networking/Filesystem
- 
- %description client
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides basic client support to mount and manipulate
- AFS.
- 
- %package server
- Requires: openafs-kernel, openafs = %{PACKAGE_VERSION}
- Summary: OpenAFS Filesystem Server
- Group: Networking/Filesystems
- 
- %description server
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides basic server support to host files in an AFS
- Cell.
- 
- %package devel
- Summary: OpenAFS Development Libraries and Headers
- Group: Development/Filesystems
- 
- %description devel
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides static development libraries and headers needed
- to compile AFS applications.  Note: AFS currently does not provide
- shared libraries.
- 
- %package kernel
- Summary: OpenAFS Kernel Module(s)
- Requires: openafs = %{PACKAGE_VERSION}
- Group: Networking/Filesystems
- 
- %description kernel
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides precompiled AFS kernel modules for various
- kernels.
- 
- %package kernel-source
- Summary: OpenAFS Kernel Module source tree
- Group: Networking/Filesystems
- 
- %description kernel-source
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides the source code to build your own AFS kernel
- module.
- 
- %package compat
- Summary: OpenAFS client compatibility symlinks
- Requires: openafs = %{PACKAGE_VERSION}, openafs-client = %{PACKAGE_VERSION}
- Group: Networking/Filesystems
- Obsoletes: openafs-client-compat
- 
- %description compat
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides compatibility symlinks in /usr/afsws.  It is
- completely optional, and is only necessary to support legacy
- applications and scripts that hard-code the location of AFS client
- programs.
- 
- %package kpasswd
- Summary: OpenAFS KA kpasswd support
- Requires: openafs
- Group: Networking/Filesystems
- 
- %description kpasswd
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides the compatibility symlink for kpasswd, in case
- you are using KAserver instead of Krb5.
- 
- %if %{krb5support}
- %package krb5
- Summary: OpenAFS programs to use with krb5
- Requires: openafs = %{PACKAGE_VERSION}
- Group: Networking/Filesystems
- BuildRequires: krb5-devel
- 
- %description krb5
- The AFS distributed filesystem.  AFS is a distributed filesystem
- allowing cross-platform sharing of files among multiple computers.
- Facilities are provided for access control, authentication, backup and
- administrative management.
- 
- This package provides compatibility programs so you can use krb5
- to authenticate to AFS services, instead of using AFS's homegrown
- krb4 lookalike services.
- %endif
- 
- #
- # PREP
- #
- 
- %prep
- %setup -q -b 1
- %setup -q -T -D -a 20
- 
- %patch0 -p0
- %patch20 -p0
- %patch21 -p0
- 
- ###
- ### build
- ###
- %build
- 
- %ifarch i386 i486 i586 i686 athlon
- sysbase=i386
- sysname=${sysbase}_linux%{kernvers}
- %else
- sysbase=%{_arch}
- sysname=${sysbase}_linux%{kernvers}
- %endif
- 
- if [ %{kernvers} = 22 ]; then
-    kv='2\.2\.'
- elif [ %{kernvers} = 24 ]; then
-    kv='2\.4\.'
- else
-    echo "I don't know how to build $sysname"
-    exit 1
- fi
- 
- %ifarch i386 i486 i586 i686 athlon
- archlist="i386 i586 i686 athlon"
- %else
- archlist=${sysbase}
- %endif
- 
- #
- # PrintDefine var value statements file
- #
- PrintDefine() {
-     case $3 in
-     *ifn*)
- 	echo "#ifndef $1" >> $4
- 	;;
-     esac
-     case $3 in
-     *und*)
- 	echo "#undef $1" >> $4
- 	;;
-     esac
-     case $3 in
-     *def*)
- 	echo "#define $1 $2" >> $4
- 	;;
-     esac
-     case $3 in
-     *end*)
- 	echo "#endif" >> $4
- 	;;
-     esac
-     case $3 in
-     *inc*)
- 	echo "#include $1" >> $4
- 	;;
-     esac
- 
- 
-     case $3 in
-     *nl*)
- 	echo "" >> $4
- 	;;
-     esac
- }
- 
- # PrintRedhatKernelFix arch mp file
- PrintRedhatKernelFix() {
-     arch="$1"
-     up=0
-     smp=0
-     ent=0
-     bm=0
-     if [ "$2" = "MP" ]; then
- 	smp=1
-     elif [ "$2" = "EP" ]; then
- 	ent=1
-     elif [ "$2" = "BM" ]; then
- 	bm=1
-     else
- 	up=1
-     fi
-     file="$3"
- 
-     # deal with the various boot kernels
-     boot=0
-     bootsmp=0
- 
-     # arch of 'BOOT' == 386
-     if [ "$arch" = "BOOT" ]; then
- 	if [ "$up" = 1 ]; then
- 	    boot=1
- 	    up=0
- 	elif [ "$smp" = 1 ]; then
- 	    bootsmp=1
- 	    smp=0
- 	fi
- 	arch=i386
-     fi
- 
-     rm -f $file
-     touch $file
- 
-     PrintDefine "REDHAT_FIX_H" "" ifn,def,nl $file
- 
-     PrintDefine "__BOOT_KERNEL_ENTERPRISE" $ent und,def,nl $file
-     PrintDefine "__BOOT_KERNEL_BIGMEM" $bm und,def,nl $file
-     PrintDefine "__BOOT_KERNEL_SMP" $smp und,def,nl $file
-     PrintDefine "__BOOT_KERNEL_UP" $up und,def,nl $file
-     PrintDefine "__BOOT_KERNEL_BOOT" $boot und,def,nl $file
-     PrintDefine "__BOOT_KERNEL_BOOTSMP" $bootsmp und,def,nl $file
- 
-     PrintDefine \"/boot/kernel.h\" "" inc,nl $file	# include file
- 
-     for ar in $archlist ; do
- 	if [ "$ar" = "$arch" ]; then
- 	    PrintDefine "__MODULE_KERNEL_$ar" "1" ifn,def,end $file
- 	else
- 	    PrintDefine "__MODULE_KERNEL_$ar" "" und $file	# undef
-         fi
-     done
-     echo "" >> $file
- 
-     PrintDefine "" "" end $file
- 
-     if [ %{debugspec} = 1 ] ; then
- 	echo "Kernel Configuration File for Red Hat kernels:"
- 	cat $file
-     fi
- }
- 
- # Pick up all the 'appropriate' kernels
- kvers=`ls -d %{kbase}* | sed 's^%{kbase}^^g' | grep $kv`
- 
- # Choose the last one for now.. It doesn't really matter, really.
- hdrdir=`ls -d %{kbase}*%{kend} | grep $kv | tail -1`
- 
- config_opts="--enable-redhat-buildsys \
- %if %{enable_bitmap_later}
- 	--enable-bitmap-later \
- %endif
- %if %{enable_bos_restricted_mode}
- 	--enable-bos-restricted-mode \
- %endif
- %if %{enable_fast_restart}
- 	--enable-fast-restart \
- %endif
- 	--enable-transarc-paths"
- 
- # Configure AFS
- ./configure --with-afs-sysname=${sysname} \
- 	--with-linux-kernel-headers=$hdrdir $config_opts
- 
- # Build the user-space AFS stuff
- make dest_nolibafs
- 
- # Build the libafs tree
- make only_libafs_tree
- 
- # Now build all the kernel modules
- for vers in $kvers ; do
- 
-   # Reconfigure sources for this kernel version, to catch various
-   # kernel params in the configure script.  Yes. this takes more time,
-   # but it's worth it in the long run..  But first remove config.cache
-   # to be sure we get a clean configuration.
-   rm -f config.cache
-   ./configure --with-afs-sysname=${sysname} \
- 	--with-linux-kernel-headers=%{kbase}$vers%{kend} \
- 	$config_opts
- 
-   KTL="SP MP"
- %if %{enterprisekernelsupport}
-   # See if we should build EP support
-   if grep -q -r __BOOT_KERNEL_ENTERPRISE %{kbase}$vers%{kend}/include
-   then
-     KTL="${KTL} EP"
-   fi
- %endif
- %if %{bigmemkernelsupport}
-   # See if we should build BM support
-   if grep -q -r __BOOT_KERNEL_BIGMEM %{kbase}$vers%{kend}/include
-   then
-     KTL="${KTL} BM"
-   fi
- %endif
-  
-   for mp in $KTL; do
-     # ... for all appropriate 'architectures'...
-     if [ %{kernvers} = 22 ]; then
- 	# For 2.2 kernels, just do MP and SP kernels; force EP into i686
- 
-         arch=${sysbase}
-         if [ $mp = EP -a ${sysbase} = i386 ]; then
- 	    arch=i686
- 	fi
- 
- 	PrintRedhatKernelFix $arch $mp src/config/redhat-fix.h
- 	make dest_only_libafs LOCAL_SMP_DEF=-DREDHAT_FIX MPS=$mp
- 
-     elif [ %{kernvers} = 24 ]; then
- 	# For 2.4 kernels, need to build modules for each architecture!
- 
- 	for arch in $archlist ; do
- 
- 	    # build SP and MP on all architectures.
- 	    # build EP and BM only on i686
-             if [ $mp = SP -o $mp = MP -o \
- 		 \( $mp = EP -a $arch = i686 \) -o \
- 		 \( $mp = BM -a $arch = i686 \) ]; then
- 		PrintRedhatKernelFix $arch $mp src/config/redhat-fix.h
- 		make dest_only_libafs LOCAL_SMP_DEF=-DREDHAT_FIX \
- 		    LINUX_MODULE_NAME="-$arch" MPS=$mp
- 	    fi
- 	done
- 
-     else	    
- 	echo "I don't know how to build $sysname"
- 	exit 1
-     fi
-   done
- done
- 
- rm -f src/config/redhat-fix.h
- 
- %if %{krb5support}
- # Now build aklog/asetkey
- (cd openafs-krb5-1.3/src &&
- 	autoconf &&
- 	./configure --prefix=/usr --with-krb5=/usr/kerberos \
- 		--with-afs=`pwd`/../../${sysname}/dest/ && \
- 	make all && \
- 	make install DESTDIR=`pwd`/../../${sysname}/dest/ INSTALL_BIN=/bin \
- 		INSTALL_SBIN=/etc)
- %endif
- 
- ###
- ### install
- ###
- %install
- [ $RPM_BUILD_ROOT != / ] && rm -rf $RPM_BUILD_ROOT
- 
- %ifarch i386 i486 i586 i686 athlon
- sysbase=i386
- sysname=${sysbase}_linux%{kernvers}
- %else
- sysbase=%{_arch}
- sysname=${sysbase}_linux%{kernvers}
- %endif
- 
- # Build install tree
- mkdir -p $RPM_BUILD_ROOT/usr/sbin
- mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
- mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d
- mkdir -p $RPM_BUILD_ROOT/etc/openafs
- mkdir -p $RPM_BUILD_ROOT/lib/security
- mkdir -p $RPM_BUILD_ROOT/usr/afs/logs
- mkdir -p $RPM_BUILD_ROOT/usr/vice/etc
- mkdir -p $RPM_BUILD_ROOT/usr/vice/cache
- chmod 700 $RPM_BUILD_ROOT/usr/vice/cache
- 
- # Copy files from dest to the appropriate places in BuildRoot
- tar cf - -C ${sysname}/dest bin include lib | tar xf - -C $RPM_BUILD_ROOT/usr
- tar cf - -C ${sysname}/dest/etc . | tar xf - -C $RPM_BUILD_ROOT/usr/sbin
- tar cf - -C ${sysname}/dest/root.server/usr/afs bin | tar xf - -C $RPM_BUILD_ROOT/usr/afs
- tar cf - -C ${sysname}/dest/root.client/usr/vice/etc afsd modload | tar xf - -C $RPM_BUILD_ROOT/usr/vice/etc
- 
- # Link kpasswd to kapasswd
- ln -f $RPM_BUILD_ROOT/usr/bin/kpasswd $RPM_BUILD_ROOT/usr/bin/kapasswd
- 
- # Copy root.client config files
- install -m 755 ${sysname}/dest/root.client/usr/vice/etc/afs.conf $RPM_BUILD_ROOT/etc/sysconfig/afs
- install -m 755 ${sysname}/dest/root.client/usr/vice/etc/afs.rc $RPM_BUILD_ROOT/etc/rc.d/init.d/afs
- 
- # Copy PAM modules
- install -m 755 ${sysname}/dest/lib/pam* $RPM_BUILD_ROOT/lib/security
- 
- # PAM symlinks
- ln -sf pam_afs.so.1 $RPM_BUILD_ROOT/lib/security/pam_afs.so
- ln -sf pam_afs.krb.so.1 $RPM_BUILD_ROOT/lib/security/pam_afs.krb.so
- 
- # Populate /usr/vice/etc
- uve=$RPM_BUILD_ROOT/usr/vice/etc
- install -p -m 644 $RPM_SOURCE_DIR/openafs-CellServDB $uve/CellServDB
- install -p -m 644 $RPM_SOURCE_DIR/openafs-SuidCells $uve/SuidCells
- install -p -m 644 $RPM_SOURCE_DIR/openafs-ThisCell $uve/ThisCell
- install -p -m 644 $RPM_SOURCE_DIR/openafs-cacheinfo $uve/cacheinfo
- install -p -m 755 $RPM_SOURCE_DIR/openafs-afsmodname $uve/afsmodname
- 
- #
- # Build the SymTable
- symtable=$RPM_BUILD_ROOT/usr/vice/etc/modload/SymTable
- rm -f $symtable
- echo "# SymTable, automatically generated" > $symtable
- echo "# symbol	version	cpu	module" >> $symtable
- echo "" >> $symtable
- 
- $RPM_BUILD_ROOT/usr/vice/etc/afsmodname -x -f $symtable \
- 	$RPM_BUILD_ROOT/usr/vice/etc/modload/libafs*.o
- 
- #
- # install kernel-source
- #
- 
- # Install the kernel module source tree
- mkdir -p $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/src
- tar cf - -C libafs_tree . | \
- 	tar xf - -C $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/src
- 
- # Next, copy the LICENSE Files, README
- install -m 644 src/LICENSE $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/LICENSE.IBM
- install -m 644 $RPM_SOURCE_DIR/openafs-LICENSE.Sun $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/LICENSE.Sun
- install -m 644 $RPM_SOURCE_DIR/openafs-README $RPM_BUILD_ROOT/usr/src/openafs-kernel-%{afsvers}/README
- 
- #
- # Install DOCUMENTATION
- #
- 
- # Build the DOC directory
- mkdir -p $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
- tar cf - -C doc LICENSE html pdf | \
-     tar xf - -C $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
- install -m 644 $RPM_SOURCE_DIR/RELNOTES-%{afsvers} $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
- install -m 644 $RPM_SOURCE_DIR/ChangeLog $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
- 
- #
- # create filelist
- #
- grep -v "^#" >openafs-file-list <<EOF-openafs-file-list
- /usr/bin/afsmonitor
- /usr/bin/bos
- /usr/bin/fs
- /usr/bin/kapasswd
- /usr/bin/kpasswd
- /usr/bin/klog
- /usr/bin/klog.krb
- /usr/bin/pagsh
- /usr/bin/pagsh.krb
- /usr/bin/pts
- /usr/bin/scout
- /usr/bin/sys
- /usr/bin/tokens
- /usr/bin/tokens.krb
- /usr/bin/translate_et
- /usr/bin/udebug
- /usr/bin/unlog
- /usr/sbin/backup
- /usr/sbin/butc
- /usr/sbin/fms
- /usr/sbin/fstrace
- /usr/sbin/kas
- /usr/sbin/read_tape
- /usr/sbin/restorevol
- /usr/sbin/rxdebug
- /usr/sbin/uss
- /usr/sbin/vos
- EOF-openafs-file-list
- 
- #
- # Install compatiblity links
- #
- for d in bin:bin etc:sbin; do
-   olddir=`echo $d | sed 's/:.*$//'`
-   newdir=`echo $d | sed 's/^.*://'`
-   mkdir -p $RPM_BUILD_ROOT/usr/afsws/$olddir
-   for f in `cat openafs-file-list`; do
-     if echo $f | grep -q /$newdir/; then
-       fb=`basename $f`
-       ln -sf /usr/$newdir/$fb $RPM_BUILD_ROOT/usr/afsws/$olddir/$fb
-     fi
-   done
- done
- 
- 
- ###
- ### clean
- ###
- %clean
- rm -f openafs-file-list
- [ "$RPM_BUILD_ROOT" != "/" -a "x%{debugspec}" != "x1" ] && \
- 	rm -fr $RPM_BUILD_ROOT
- 
- 
- ###
- ### scripts
- ###
- %pre compat
- if [ -e /usr/afsws ]; then
-         /bin/rm -fr /usr/afsws
- fi
- 
- %post
- chkconfig --add afs
- 
- %post client
- if [ ! -d /afs ]; then
- 	mkdir /afs
- 	chown root.root /afs
- 	chmod 0755 /afs
- fi
- 
- echo
- echo The AFS cache is configured for 100 MB. Edit the 
- echo /usr/vice/etc/cacheinfo file to change this before
- echo running AFS for the first time. You should also
- echo set your home cell in /usr/vice/etc/ThisCell.
- echo
- echo Also, you may want to edit /etc/pam.d/login and 
- echo possibly others there to get an AFS token on login.
- echo Put the line:
- echo 
- echo    auth	   sufficient   /lib/security/pam_afs.so try_first_pass ignore_root
- echo
- echo before the one for pwdb.
- echo
- 
- %post server
- if [ -f /etc/sysconfig/afs ] ; then
- 	srv=`grep ^AFS_SERVER /etc/sysconfig/afs | sed 's/^AFS_SERVER[\s]*=[\s]*//'`
- 	if [ "x$srv" = "xon" ] ; then
- 		exit 0
- 	fi
- fi
- 
- echo
- echo Be sure to edit /etc/sysconfig/afs and turn AFS_SERVER on
- echo
- 
- %preun
- if [ $1 = 0 ] ; then
-         /etc/rc.d/init.d/afs stop
-         chkconfig --del afs
- 	[ -d /afs ] && rmdir /afs
- fi
- 
- ###
- ### file lists
- ###
- %files -f openafs-file-list
- %defattr(-,root,root)
- %config /etc/sysconfig/afs
- %doc %{_docdir}/openafs-%{afsvers}
- /etc/rc.d/init.d/afs
- 
- %files client
- %defattr(-,root,root)
- %dir /usr/vice
- %dir /usr/vice/cache
- %dir /usr/vice/etc
- %dir /usr/vice/etc/modload
- %config /usr/vice/etc/CellServDB
- %config /usr/vice/etc/SuidCells
- %config /usr/vice/etc/ThisCell
- %config /usr/vice/etc/cacheinfo
- /usr/bin/cmdebug
- /usr/bin/up
- /usr/vice/etc/afsd
- /usr/vice/etc/afsmodname
- /lib/security/pam_afs.krb.so.1
- /lib/security/pam_afs.krb.so
- /lib/security/pam_afs.so.1
- /lib/security/pam_afs.so
- 
- %files server
- %defattr(-,root,root)
- %dir /usr/afs
- %dir /usr/afs/bin
- %dir /usr/afs/logs
- /usr/afs/bin/bosserver
- /usr/afs/bin/buserver
- /usr/afs/bin/fileserver
- # Should we support KAServer?
- /usr/afs/bin/kaserver
- /usr/afs/bin/kpwvalid
- /usr/afs/bin/pt_util
- /usr/afs/bin/ptserver
- /usr/afs/bin/salvager
- /usr/afs/bin/upclient
- /usr/afs/bin/upserver
- /usr/afs/bin/vlserver
- /usr/afs/bin/volinfo
- /usr/afs/bin/volserver
- /usr/sbin/prdb_check
- /usr/sbin/vldb_check
- /usr/sbin/vldb_convert
- 
- %files devel
- %defattr(-,root,root)
- /usr/bin/rxgen
- /usr/include/afs
- /usr/include/des.h
- /usr/include/des_conf.h
- /usr/include/des_odd.h
- /usr/include/lock.h
- /usr/include/lwp.h
- /usr/include/mit-cpyright.h
- /usr/include/potpourri.h
- /usr/include/preempt.h
- /usr/include/rx
- /usr/include/timer.h
- /usr/include/ubik.h
- /usr/include/ubik_int.h
- /usr/lib/afs
- /usr/lib/libafsauthent.a
- /usr/lib/libafsrpc.a
- /usr/lib/libdes.a
- /usr/lib/liblwp.a
- /usr/lib/librx.a
- /usr/lib/librxkad.a
- /usr/lib/librxstat.a
- /usr/lib/libubik.a
- 
- %files kernel
- %defattr(-,root,root)
- /usr/vice/etc/modload/libafs*.o
- /usr/vice/etc/modload/SymTable
- 
- %files kernel-source
- %defattr(-,root,root)
- /usr/src/openafs-kernel-%{afsvers}/LICENSE.IBM
- /usr/src/openafs-kernel-%{afsvers}/LICENSE.Sun
- /usr/src/openafs-kernel-%{afsvers}/README
- /usr/src/openafs-kernel-%{afsvers}/src
- 
- %files compat
- %defattr(-,root,root)
- /usr/afsws
- 
- %files kpasswd
- %defattr(-,root,root)
- /usr/bin/kpasswd
- /usr/bin/kpwvalid
- 
- %if %{krb5support}
- %files krb5
- %defattr(-,root,root)
- /usr/bin/aklog
- /usr/sbin/asetkey
- %endif
--- 0 ----
Index: openafs/src/packaging/RedHat/openafs-LICENSE.Sun
diff -c /dev/null openafs/src/packaging/RedHat/openafs-LICENSE.Sun:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-LICENSE.Sun	Mon Aug 21 15:55:20 2006
***************
*** 0 ****
--- 1,9 ----
+ Sun Microsystems' ONC RPC license
+ 
+ Sun RPC is a product of Sun Microsystems, Inc. and is provided for
+ unrestricted use provided that this legend is included on all tape
+ media and as a part of the software program in whole or part.  Users
+ may copy or modify Sun RPC without charge, but are not authorized to
+ license or distribute it to anyone else except as part of a product or
+ program developed by the user.
+ 
Index: openafs/src/packaging/RedHat/openafs-buildall.sh
diff -c /dev/null openafs/src/packaging/RedHat/openafs-buildall.sh:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-buildall.sh	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,95 ----
+ #!/bin/sh
+ #
+ # build all of openafs for all the various kernels installed on this system.
+ #
+ # Written by:  Derek Atkins <warlord@MIT.EDU>
+ #
+ # $Revision: 1.1.2.1 $
+ #
+ 
+ # Define where the Specfile is located.
+ specdir=/usr/src/redhat/SPECS
+ 
+ # Define the rpmbuild options you want to supply.
+ buildopts=
+ 
+ ############################################################################
+ #  Figure out the release version
+ rhrel=`cat /etc/redhat-release`
+ if [ `echo $rhrel | grep -c 'Fedora Core'` = 1 ] ; then
+   ostype='fc'
+ elif [ `echo $rhrel | grep -c 'Red Hat Enterprise Linux'` = 1 ] ; then
+   ostype='rhel'
+   excludearch=i586
+ elif [ `echo $rhrel | grep -c 'Red Hat Linux'` = 1 ] ; then
+   ostype='rh'
+ else
+   echo "Unknown Linux Release: $rhrel"
+   exit 1
+ fi
+ osrel=`echo $rhrel | sed -e 's/^.*release \([^ ]*\).*$/\1/' -e 's/\.//g'`
+ osvers="$ostype$osrel"
+ 
+ ############################################################################
+ # Now figure out the kernel version.  We assume that the running
+ # kernel version is "close enough" to tell us whether it's a
+ # 2.4 or 2.6 kernel.
+ kvers=`uname -r`
+ case $kvers in
+   2.4.*)
+     kbase=/usr/src/linux-
+     kv=2.4.
+     ;;
+   2.6.*)
+     kbase=/usr/src/kernels/
+     kv=2.6.
+     ;;
+   *)
+     echo "I don't know how to build for kernel $kvers"
+     exit 1
+     ;;
+ esac
+ 
+ ############################################################################
+ # Now build the packages and all the kernel modules
+ 
+ echo "Building OpenAFS for $osvers"
+ rpmbuild -ba $buildopts --define "osvers $osvers" $specdir/openafs.spec || \
+   exit 1
+ 
+ kernels=`ls -d ${kbase}${kv}*`
+ 
+ for kerndir in $kernels ; do
+   # Ignore symlinks
+   if [ ! -h $kerndir ] ; then
+     vers=`echo $kerndir | sed -e "s^${kbase}^^g" -e 's/-smp/smp/g' \
+           -e 's/-hugemem/hugemem/g' -e 's/-largesmp/largesmp/g'`
+     if [ $kv = "2.4." ] ; then
+       kvers=$vers
+       case `uname -m` in
+ 	  i386|i486|i586|i686|athlon) archlist="i586 i686 athlon" ;;
+           *) archlist=`uname -m` ;;
+       esac
+       for a in $excludearch ; do
+         archlist=`echo $archlist | sed -e s/$a//`
+       done
+       kend="''"
+     else
+       karch=`echo $vers | sed 's/.*-//'`
+       kvers=`echo $vers | sed s/-$karch//`
+       archlist=$karch
+       kend=-$karch
+     fi
+ 
+     for arch in $archlist ; do
+       echo "Building for $kerndir, $kvers, $arch"
+         rpmbuild -bb $buildopts \
+ 	  --define "osvers $osvers" \
+ 	  --define "kernvers $kvers" \
+ 	  --define "ksrcdir $kerndir" \
+ 	  --define "build_modules 1" \
+ 	  --target=$arch \
+ 	  $specdir/openafs.spec || exit 1
+     done
+   fi
+ done
Index: openafs/src/packaging/RedHat/openafs-client.init
diff -c /dev/null openafs/src/packaging/RedHat/openafs-client.init:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-client.init	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,83 ----
+ #!/bin/bash
+ #
+ # openafs-client	Start/Stop the OpenAFS Client
+ #
+ # chkconfig: 2345 50 50
+ # description: OpenAFS is a distributed filesystem.
+ #
+ # $Revision: 1.1.2.1 $
+ 
+ . /etc/init.d/functions
+ [ -f /etc/sysconfig/openafs ] && . /etc/sysconfig/openafs
+ 
+ 
+ start() {
+ 	echo -n $"Starting openafs-client: "
+ 	if [ -e /var/lock/subsys/openafs-client ] ; then
+ 		echo -n $"cannot start openafs-client: already running"
+ 		failure $"cannot start openafs-client: already running"
+ 		echo
+ 		return 1
+ 	fi
+ 	modprobe openafs
+ 	RETVAL=$?
+ 	if [ $RETVAL -ne 0 ] ; then
+ 		echo -n $"failed to load openafs kernel module."
+ 		failure $"failed to load openafs kernel module."
+ 		echo
+ 		return $RETVAL
+ 	fi
+ 	/usr/vice/etc/afsd $AFSD_ARGS
+ 	RETVAL=$?
+ 	echo
+ 	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/openafs-client
+ 	return $RETVAL
+ }
+ 
+ stop() {
+ 	echo -n $"Stopping openafs-client: "
+ 	if [ ! -e /var/lock/subsys/openafs-client ] ; then
+ 		echo -n $"cannot stop openafs-client: not running"
+ 		failure $"cannot stop openafs-client: not running"
+ 		echo
+ 		return 1
+ 	fi
+ 	umount /afs
+ 	RETVAL=$?
+ 	echo
+ 	if [ $RETVAL -eq 0 ] ; then
+ 		rm -f /var/lock/subsys/openafs-client
+ 		rmmod openafs
+ 	fi
+ 	return $RETVAL
+ }
+ 
+ rhstatus() {
+ 	status afsd
+ }
+ 
+ restart() {
+ 	stop || exit
+ 	start
+ }
+ 
+ case "$1" in
+   start)
+         start
+         ;;
+   stop)
+         stop
+         ;;
+   restart)
+         restart
+         ;;
+   status)
+         rhstatus
+         ;;
+   condrestart)
+         [ -f /var/lock/subsys/openafs-client ] && restart || :
+         ;;
+   *)
+         echo $"Usage: $0 {start|stop|status|restart|condrestart}"
+         exit 1
+ esac
Index: openafs/src/packaging/RedHat/openafs-kernel-version.sh
diff -c /dev/null openafs/src/packaging/RedHat/openafs-kernel-version.sh:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-kernel-version.sh	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,49 ----
+ #!/bin/sh
+ #
+ # investigate the name of the kernel
+ #
+ # $Revision: 1.1.2.1 $
+ 
+ if [ "x$1" = "x" ] ; then
+     kernvers=`uname -r`
+     if [ ! -d /lib/modules/$kernvers/build/include ] ; then
+         kernvers=`/bin/ls /lib/modules/*/build/include/linux/version.h | \
+         cut -d/ -f4 | \
+         sort -u | \
+         tail -1`
+     fi
+ else
+     kernvers=$1
+ fi
+ 
+ if [ -z "$kernvers" ]; then echo "unable to determine kernel version" >&2; exit 1; fi
+ 
+ # strip "kernel-" off of the front
+ if expr "$kernvers" : "kernel-" >&/dev/null
+ then
+     kernvers=`expr "$kernvers" : 'kernel-\(.*\)'`
+ fi
+ 
+ # Strip kernel config mnemonic off 2.4 kernels.
+ case $kernvers in
+   2.4.*)
+     # strip kernel config mnemonic off of the tail
+     case "$kernvers" in
+       *smp)
+          kernvers=`expr "$kernvers" : '\(.*\)smp'`
+          ;;
+       *bigmem)
+          kernvers=`expr "$kernvers" : '\(.*\)bigmem'`
+          ;;
+       *hugemem)
+          kernvers=`expr "$kernvers" : '\(.*\)hugemem'`
+          ;;
+       *enterprise)
+          kernvers=`expr "$kernvers" : '\(.*\)enterprise'`
+          ;;
+     esac
+     ;;
+ esac
+ 
+ echo $kernvers
+ exit 0
Index: openafs/src/packaging/RedHat/openafs-krb5-2.0.tar.gz
Index: openafs/src/packaging/RedHat/openafs-kvers-is.sh
diff -c /dev/null openafs/src/packaging/RedHat/openafs-kvers-is.sh:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-kvers-is.sh	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,43 ----
+ #!/bin/sh
+ # Small helper script for parsing kernel versions and types
+ # $Revision: 1.1.2.1 $
+ 
+ if [ "$1" = "parsev" ] ; then
+   #logger "parsing version from $2"
+   echo "$2" | /bin/sed -e 's/^\([0-9]*\.[0-9]*\)\..*/\1/'
+   exit 0
+ fi
+ 
+ if [ "$1" = "parset" ] ; then
+   #logger "parsing type from $2"
+   echo "$2" | /bin/sed -e 's/^.*[0-9L]\([^0-9L]*\)/\1/'
+   exit 0
+ fi
+ 
+ if [ "$1" = "kvers" ] ; then
+   #logger "parsing type from $2"
+   echo "$2" | /bin/sed -e 's/^\(.*[0-9L]\)[^0-9L]*$/\1/'
+   exit 0
+ fi
+ 
+ if [ "$1" = "find" ] ; then
+   f=`find "$2"/configs -name \*-"$3"-"$4".config`
+   if [ -n "$f" ] ; then
+     echo 1
+     exit 1
+   else
+     echo 0
+     exit 0
+   fi
+ fi
+ 
+ #logger "comparing $1 to $2"
+ if [ "$1" = "$2" ] ; then
+   #logger "yes"
+   echo 1
+   exit 1
+ else
+   #logger "no"
+   echo 0
+   exit 0
+ fi
Index: openafs/src/packaging/RedHat/openafs-makesrc.sh
diff -c /dev/null openafs/src/packaging/RedHat/openafs-makesrc.sh:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-makesrc.sh	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,34 ----
+ #!/bin/sh
+ #
+ # openafs-makesrc -- convert a 2.6 'kernel' package into something
+ #   you can install into /usr/src/kernels
+ #
+ # Written by:  Derek Atkins <warlord@MIT.EDU>
+ #
+ # $Revision: 1.1.2.1 $
+ 
+ kerndir=/usr/src/kernels
+ 
+ [ -d $kerndir ] || mkdir -p -m 0755 $kerndir
+ umask 022
+ while [ -n "$1" ] ; do
+   rpm=$1
+   name=`rpm -qp $rpm`
+   vers=`echo $name | sed -e 's/kernel-[^0-9]*\([0-9].*\)$/\1/'`
+   smp=`echo $name | sed -e 's/kernel-\([^0-9]*\)[0-9].*$/\1/' -e s/-//`
+   arch=`echo $rpm | sed 's/.*\.\([^\.]*\)\.rpm$/\1/'`
+ 
+   kd=$kerndir/$vers$smp-$arch
+   if [ ! -d $kd ] ; then
+     echo "converting `basename $rpm` to $kd"
+     rpm2cpio $rpm | ( cd $kerndir ; cpio --quiet -imd \*lib/modules/\*/build/\* )
+     mv $kerndir/lib/modules/*/build $kd
+     chmod 755 $kd
+     rmdir $kerndir/lib/modules/*
+     rmdir $kerndir/lib/modules
+     rmdir $kerndir/lib
+   else
+     echo "$kd already exists.  Ignoring."
+   fi
+   shift
+ done
Index: openafs/src/packaging/RedHat/openafs-server.init
diff -c /dev/null openafs/src/packaging/RedHat/openafs-server.init:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs-server.init	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,80 ----
+ #!/bin/bash
+ #
+ # openafs-server	Start/Stop the OpenAFS Server
+ #
+ # chkconfig: 2345 49 51
+ # description: OpenAFS is a distributed filesystem.
+ #
+ # $Revision: 1.1.2.1 $
+ 
+ . /etc/init.d/functions
+ [ -f /etc/sysconfig/openafs ] && . /etc/sysconfig/openafs
+ 
+ 
+ start() {
+ 	echo -n $"Starting openafs-server: "
+ 	if [ -e /var/lock/subsys/openafs-server ] ; then
+ 		echo -n $"cannot start openafs-server: already running"
+ 		failure $"cannot start openafs-server: already running"
+ 		echo
+ 		return 1
+ 	fi
+ 	/usr/afs/bin/bosserver $BOSSERVER_ARGS
+ 	RETVAL=$?
+ 	echo
+ 	[ $RETVAL -eq 0 ] && touch /var/lock/subsys/openafs-server
+ 	return $RETVAL
+ }
+ 
+ stop() {
+ 	echo -n $"Stopping openafs-server: "
+ 	if [ ! -e /var/lock/subsys/openafs-server ] ; then
+ 		echo -n $"cannot stop openafs-server: not running"
+ 		failure $"cannot stop openafs-server: not running"
+ 		echo
+ 		return 1
+ 	fi
+ 	/usr/bin/bos shutdown localhost -wait -localauth
+ 	RETVAL=$?
+ 	if [ $RETVAL -ne 0 ] ; then
+ 		echo -n $"failed to shutdown OpenAFS"
+ 		failure $"failed to shutdown OpenAFS"
+ 		echo
+ 		return $RETVAL
+ 	fi
+ 	killproc bosserver
+ 	RETVAL=$?
+ 	echo
+ 	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/openafs-server
+ 	return $RETVAL
+ }
+ 
+ rhstatus() {
+ 	status bosserver
+ }
+ 
+ restart() {
+ 	stop || exit
+ 	start
+ }
+ 
+ case "$1" in
+   start)
+         start
+         ;;
+   stop)
+         stop
+         ;;
+   restart)
+         restart
+         ;;
+   status)
+         rhstatus
+         ;;
+   condrestart)
+         [ -f /var/lock/subsys/openafs-server ] && restart || :
+         ;;
+   *)
+         echo $"Usage: $0 {start|stop|status|restart|condrestart}"
+         exit 1
+ esac
Index: openafs/src/packaging/RedHat/openafs.spec.in
diff -c /dev/null openafs/src/packaging/RedHat/openafs.spec.in:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs.spec.in	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,1491 ----
+ # Openafs Spec $Revision: 1.1.2.1 $
+ 
+ %define afsvers 1.4.2
+ %define pkgvers 1.4.2
+ %define pkgrel 1
+ 
+ %if %{?osvers:0}%{!?osvers:1}
+ %define osvers 1
+ %endif
+ 
+ # Determine presence of rpmbuild command line --define arguments used for
+ # option specification
+ %define kernvers_on_cmdline %{?kernvers:1}%{!?kernvers:0}
+ %define build_userspace_on_cmdline %{?build_userspace:1}%{!?build_userspace:0}
+ %define build_modules_on_cmdline %{?build_modules:1}%{!?build_modules:0}
+ 
+ # Determine the version of the kernel to build against
+ # - automatically select the latest kernel with sources from /lib/modules
+ # - note that this can be overridden on the command line
+ #
+ %if !%{kernvers_on_cmdline}
+ %define kernvers %(%{_sourcedir}/openafs-kernel-version.sh)
+ %endif
+ %define kversis %{_sourcedir}/openafs-kvers-is.sh
+ %define kvers %(%{kversis} parsev %{kernvers})
+ %define kvers_is_24 %(%{kversis} %{kvers} "2.4")
+ %define kvers_is_26 %(%{kversis} %{kvers} "2.6")
+ %define ktype %(%{kversis} parset %{kernvers})
+ %define kversion %(%{kversis} kvers %{kernvers})
+ 
+ # This is where to look for kernel build include files.  Default
+ # is /lib/modules/<kvers>/build, but you can define kbase and
+ # kend on the commandline to change that.
+ #
+ %if %{?kbase:0}%{!?kbase:1}
+ %define kbase /lib/modules/
+ %endif
+ %if %{?kend:0}%{!?kend:1}
+ %define kend /build
+ %endif
+ # Let the buildscript define the ksrcdir directly -- needed for RHEL4
+ %if %{?ksrcdir:0}%{!?ksrcdir:1}
+ %define ksrcdir %{kbase}%{kernvers}%{kend}
+ %endif
+ 
+ %if %{?kmoddir:0}%{!?kmoddir:1}
+ %define kmoddir /lib/modules
+ %endif
+ %define kxmoddir %{kmoddir}/%{kernvers}
+ 
+ # Set 'debugspec' to 1 if you want to debug the spec file.  This will
+ # not remove the installed tree as part of the %clean operation
+ %if %{?debugspec:0}%{!?debugspec:1}
+ %define debugspec 0
+ %endif
+ 
+ # Set 'krb5support' to 1 if you want to build the openafs-krb5 package
+ # to distribute aklog and asetkey
+ %define krb5support %{?_without_krb5:0}%{!?_without_krb5:1}
+ 
+ # Set 'bootkernelsupport' to 1 if you want to build the
+ # kernel module for Red Hat BOOT Kernels on x86.
+ %define bootkernelsupport %{?_with_bootkernel:1}%{!?_with_bootkernel:0}
+ 
+ # Define the location of your init.d directory
+ %define initdir /etc/init.d
+ 
+ # Define the location of the PAM security module directory
+ %define pamdir /%{_lib}/security
+ 
+ # Define the set of kernel module variations to be built:
+ # For 2.4 kernels we just build everything at once for a particular
+ # kernel.   So we build up, smp, and bigmem all at once.
+ # For 2.6 kernels we have to build against the specific kernel headers
+ # for a particular kernel variation.  AFS will handle the specific smp or
+ # non-smp determination.  So just always build as if it's "up" -- the kernel
+ # version will have the 'variation' type already in the version #.
+ 
+ %define up_package 0
+ %define smp_package 0
+ %define bigmem_package 0
+ %define hugemem_package 0
+ %define largesmp_package 0
+ 
+ #######################################################################
+ # 2.4
+ %if %{kvers_is_24}
+ %define kdepend kernel-source
+ %define up_package 1
+ %define smp_package 1
+ %define largesmp_package 1
+ %define smp_ext smp
+ %define largesmp_ext largesmp
+ 
+ %define bigmem_package %(%{kversis} find %{ksrcdir} %{_target_cpu} bigmem) 
+ %if %{bigmem_package}
+ %define bigmem_ext bigmem
+ %endif
+ 
+ %define hugemem_package %(%{kversis} find %{ksrcdir} %{_target_cpu} hugemem) 
+ %if %{hugemem_package}
+ %define hugemem_ext hugemem
+ %endif
+ 
+ %define kvariations up smp largesmp %{?bigmem_ext:%{bigmem_ext}} %{?hugemem_ext:%{hugemem_ext}}
+ 
+ #######################################################################
+ # 2.6
+ %else
+ %if %{kvers_is_26}
+ %define kvariations up
+ %define up_package %(%{kversis} "%{ktype}" "")
+ %define smp_package %(%{kversis} "%{ktype}" "smp")
+ %define largesmp_package %(%{kversis} "%{ktype}" "largesmp")
+ %define hugemem_package %(%{kversis} "%{ktype}" "hugemem")
+ 
+ %if !%{up_package} && !%{smp_package} && !%{hugemem_package} && !%{largesmp_package}
+ %error "unknown kernel type: %{ktype}"
+ %endif
+ 
+ %if !%{kernvers_on_cmdline}
+ %define kdepend %{ksrcdir}/include/linux/version.h
+ %endif
+ 
+ #######################################################################
+ # other kernels?
+ %else
+ %error "unknown kernel version: ${kvers} (parsed from %{kernvers})"
+ %endif
+ %endif
+ 
+ #######################################################################
+ # You probably don't need to change anything beyond this line
+ # NOTE: If you do, please email me!!!
+ 
+ # Determine which elements of OpenAFS to build.  For non-x86 arches
+ # (subject to the ExclusiveArch setting, below), we build both userspace
+ # and modules.  For most x86 arches, we build just the kernel modules.  For
+ # i386, we build just the userspace.  If you're running an i386 kernel,
+ # you'll need to tweak that last bit.
+ %if !%{build_userspace_on_cmdline} && !%{build_modules_on_cmdline}
+ 
+ %ifarch x86_64 ia64
+ %define build_userspace 1
+ %define build_modules 1
+ %endif
+ 
+ %ifarch %{ix86}
+ %define build_userspace 0
+ %define build_modules 1
+ %endif
+ 
+ %ifarch i386
+ %define build_userspace 1
+ %define build_modules 0
+ %endif
+ 
+ %endif
+ 
+ # deal with cmdline specification
+ %if %{build_userspace_on_cmdline} || %{build_modules_on_cmdline}
+ %if !%{build_userspace_on_cmdline}
+ %define build_userspace 0
+ %endif
+ %if !%{build_modules_on_cmdline}
+ %define build_modules 0
+ %endif
+ %endif
+ 
+ # Make sure RPM doesn't complain about installed but non-packaged files.
+ #define __check_files  %{nil}
+ 
+ Summary: OpenAFS distributed filesystem
+ Name: openafs
+ Version: %{pkgvers}
+ Release: %{osvers}.%{pkgrel}
+ License: IBM Public License
+ URL: http://www.openafs.org
+ BuildRoot: %{_tmppath}/%{name}-%{version}-root
+ Packager: Derek Atkins <warlord@MIT.EDU>
+ Group: Networking/Filesystems
+ BuildRequires: %{?kdepend:%{kdepend}, } pam-devel
+ ExclusiveArch: %{ix86} x86_64 ia64
+ 
+ #    http://dl.openafs.org/dl/openafs/candidate/%{afsvers}/...
+ Source0: http://www.openafs.org/dl/openafs/%{afsvers}/openafs-%{afsvers}-src.tar.bz2
+ Source1: http://www.openafs.org/dl/openafs/%{afsvers}/openafs-%{afsvers}-doc.tar.bz2
+ %define srcdir openafs-%{afsvers}
+ 
+ Source2: openafs-ThisCell
+ # http://grand.central.org/dl/cellservdb/CellServDB
+ Source3: openafs-CellServDB
+ Source4: openafs-SuidCells
+ Source5: openafs-cacheinfo
+ # Source6: openafs-afsmodname
+ Source7: openafs-LICENSE.Sun
+ Source8: openafs-README
+ Source10: http://www.openafs.org/dl/openafs/%{afsvers}/RELNOTES-%{afsvers}
+ Source11: http://www.openafs.org/dl/openafs/%{afsvers}/ChangeLog
+ 
+ Source15: openafs.sysconfig
+ Source16: openafs-client.init
+ Source17: openafs-server.init
+ 
+ #  from ftp://ftp.cmf.nrl.navy.mil/pub/kerberos5/afs-krb5-2.0.tar.gz
+ Source20: openafs-krb5-2.0.tar.gz
+ 
+ Source30: openafs-kernel-version.sh
+ Source31: openafs-buildall.sh
+ Source32: openafs-makesrc.sh
+ Source33: openafs-kvers-is.sh
+ 
+ Patch0:  openafs-1.4.0-kmodule26.patch
+ #Patch1:  openafs-1.4.1-moduleparam.patch
+ 
+ Patch10: afs-krb5-2.0-krb524.patch
+ Patch11: afs-krb5-2.0-libsocket.patch
+ Patch12: afs-krb5-2.0-com_err.patch
+ Patch13: afs-krb5-2.0-openafs1.3.patch
+ Patch14: afs-krb5-2.0-res_search.patch
+ 
+ %description
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides common files shared across all the various
+ OpenAFS packages but are not necessarily tied to a client or server.
+ 
+ The OpenAFS SRPM can be rebuilt with the following options to control
+ what gets built:
+ 
+  --define "kernvers 2.4.20-1.1376_FC3" Specify the specific kernel version 
+                                   to build modules against. The default is
+                                   to build against the currently-running
+                                   kernel.
+  --define "kbase /lib/modules/"   The base location to look for kernel headers
+  --define "kend /build"           The 'end' location to look for kernels
+                                   The build will define ksrvdir as
+                                   %%{kbase}<kernvers>%%{kend}
+ 
+  --without krb5                   Disable krb5 support (default: with krb5)
+  --with bitmap-later              Enable "bitmap later" support
+  --with bos-restricted            Enable "bos restricted" mode
+  --with fast-restart              Enable "fast restart" mode
+  --with largefiles                Enable "largefile fileserver" mode
+  --with supergroups               Enable "supergroups"
+ 
+  --target=i386                    The target architecture to build for.
+                                   When building for a non-default target
+                                   the build may choose whether to build
+                                   userspace or kernel modules automatically.
+                                   The defaults are probably what you want.
+ 
+  --define "build_userspace 1"     Request building of userspace tools
+  --define "build_modules 1"       Request building of kernel modules
+                                   You probably never need to specify these.
+ 
+  --define "kmoddir /lib/modules"  This is the base location where modules
+                                   will be installed.  You probably don't
+                                   need to change this ever.
+ 
+ To a kernel module for your running kernel, just run:
+   rpmbuild --rebuild --target=`uname -m` openafs-%{pkgvers}-%{osvers}.%{pkgrel}.src.rpm
+ 
+ ##############################################################################
+ #
+ # build the userspace side of things if so requested
+ #
+ ##############################################################################
+ %if %{build_userspace}
+ 
+ %package client
+ Requires: binutils, openafs-kernel, openafs = %{PACKAGE_VERSION}
+ Summary: OpenAFS Filesystem Client
+ Group: Networking/Filesystem
+ 
+ %description client
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides basic client support to mount and manipulate
+ AFS.
+ 
+ %package server
+ Requires: openafs = %{PACKAGE_VERSION}
+ Summary: OpenAFS Filesystem Server
+ Group: Networking/Filesystems
+ 
+ %description server
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides basic server support to host files in an AFS
+ Cell.
+ 
+ %package authlibs
+ Summary: OpenAFS authentication shared libraries
+ Group: Networking/Filesystems
+ 
+ %description authlibs
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides a shared version of libafsrpc and libafsauthent. 
+ None of the programs included with OpenAFS currently use these shared 
+ libraries; however, third-party software that wishes to perform AFS 
+ authentication may link against them.
+ 
+ %package authlibs-devel
+ Requires: openafs-authlibs = %{PACKAGE_VERSION}
+ Requires: openafs-devel = %{PACKAGE_VERSION}
+ Summary: OpenAFS shared library development
+ Group: Development/Filesystems
+ 
+ %description authlibs-devel
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package includes the static versions of libafsrpc and 
+ libafsauthent, and symlinks required for building against the dynamic 
+ libraries.
+ 
+ %package devel
+ Summary: OpenAFS Development Libraries and Headers
+ Group: Development/Filesystems
+ 
+ %description devel
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides static development libraries and headers needed
+ to compile AFS applications.  Note: AFS currently does not provide
+ shared libraries.
+ 
+ %package docs
+ Summary: OpenAFS user and administrator documentation
+ Requires: openafs = %{PACKAGE_VERSION}
+ Group: Networking/Filesystems
+ 
+ %description docs
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides HTML documentation for OpenAFS users and system
+ administrators.
+ 
+ %package kernel-source
+ Summary: OpenAFS Kernel Module source tree
+ Group: Networking/Filesystems
+ Provides: openafs-kernel = %{PACKAGE_VERSION}
+ 
+ %description kernel-source
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides the source code to build your own AFS kernel
+ module.
+ 
+ %package compat
+ Summary: OpenAFS client compatibility symlinks
+ Requires: openafs = %{PACKAGE_VERSION}, openafs-client = %{PACKAGE_VERSION}
+ Group: Networking/Filesystems
+ Obsoletes: openafs-client-compat
+ 
+ %description compat
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides compatibility symlinks in /usr/afsws.  It is
+ completely optional, and is only necessary to support legacy
+ applications and scripts that hard-code the location of AFS client
+ programs.
+ 
+ %package kpasswd
+ Summary: OpenAFS KA kpasswd support
+ Requires: openafs
+ Group: Networking/Filesystems
+ 
+ %description kpasswd
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides the compatibility symlink for kpasswd, in case
+ you are using KAserver instead of Krb5.
+ 
+ %if %{krb5support}
+ %package krb5
+ Summary: OpenAFS programs to use with krb5
+ Requires: openafs = %{PACKAGE_VERSION}
+ Group: Networking/Filesystems
+ BuildRequires: krb5-devel
+ 
+ %description krb5
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides compatibility programs so you can use krb5
+ to authenticate to AFS services, instead of using AFS's homegrown
+ krb4 lookalike services.
+ %endif
+ 
+ %endif
+ 
+ ##############################################################################
+ #
+ # build the kernel modules if so requested
+ #
+ ##############################################################################
+ %if %{build_modules}
+ 
+ %define modkversion %(echo %{kernvers} | cut -d- -f1)
+ %define modkrelease %(echo %{kernvers} | cut -d- -f2)
+ %define modpkgrel %{modkversion}_%{modkrelease}_%{pkgrel}
+ 
+ %if %{up_package}
+ %package kernel
+ Summary: OpenAFS Kernel Module (compiled for UP)
+ Release: %{modpkgrel}
+ Provides: openafs-kernel = %{PACKAGE_VERSION}
+ Requires: kernel = %{kversion}
+ Group: Networking/Filesystems
+ 
+ %description kernel
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides a precompiled AFS kernel module for %{kernvers}.
+ %endif
+ 
+ %if %{smp_package}
+ %package kernel-smp
+ Summary: OpenAFS Kernel Module (compiled for SMP)
+ Release: %{modpkgrel}
+ Provides: openafs-kernel = %{PACKAGE_VERSION}
+ Requires: kernel-smp = %{kversion}
+ Group: Networking/Filesystems
+ 
+ %description kernel-smp
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides a precompiled AFS kernel module for %{kernvers}.
+ %endif
+ 
+ %if %{largesmp_package}
+ %package kernel-largesmp
+ Summary: OpenAFS Kernel Module (compiled for LARGESMP)
+ Release: %{modpkgrel}
+ Provides: openafs-kernel = %{PACKAGE_VERSION}
+ Requires: kernel-largesmp = %{kversion}
+ Group: Networking/Filesystems
+ 
+ %description kernel-largesmp
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides a precompiled AFS kernel module for %{kernvers}.
+ %endif
+  
+ %if %{bigmem_package}
+ %package kernel-bigmem
+ Summary: OpenAFS Kernel Module (compiled for SMP & big memory support)
+ Release: %{modpkgrel}
+ Provides: openafs-kernel = %{PACKAGE_VERSION}
+ Requires: kernel-bigmem = %{kversion}
+ Group: Networking/Filesystems
+ 
+ %description kernel-bigmem
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides a precompiled AFS kernel module for %{kernvers}.
+ %endif
+ 
+ %if %{hugemem_package}
+ %package kernel-hugemem
+ Summary: OpenAFS Kernel Module (compiled for SMP & huge memory support)
+ Release: %{modpkgrel}
+ Provides: openafs-kernel = %{PACKAGE_VERSION}
+ Requires: kernel-hugemem = %{kversion}
+ Group: Networking/Filesystems
+ 
+ %description kernel-hugemem
+ The AFS distributed filesystem.  AFS is a distributed filesystem
+ allowing cross-platform sharing of files among multiple computers.
+ Facilities are provided for access control, authentication, backup and
+ administrative management.
+ 
+ This package provides a precompiled AFS kernel module for %{kernvers}.
+ %endif
+ 
+ %endif
+ 
+ ##############################################################################
+ #
+ # PREP
+ #
+ ##############################################################################
+ 
+ %prep
+ 
+ : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ : @@@
+ : @@@ kernel version:     %{kernvers}
+ : @@@ base kernel version:%{kversion}
+ : @@@ kernel modules dir: %{kxmoddir}
+ : @@@ kernel source dir:  %{ksrcdir}
+ %if %{kvers_is_24}
+ : @@@ kernel variations:  %{kvariations}
+ %else
+ %if %{up_package}
+ : @@@ kernel type:        up
+ %else
+ : @@@ kernel type:        %{ktype}
+ %endif
+ %endif
+ : @@@ PAM modules dir:    %{pamdir}
+ : @@@ build userspace:    %{build_userspace}
+ : @@@ build modules:      %{build_modules}
+ : @@@ arch:               %{_arch}
+ : @@@ target cpu:         %{_target_cpu}
+ : @@@
+ : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+ 
+ # Install OpenAFS src and doc
+ #%setup -q -n %{srcdir}
+ %setup -q -b 1 -n %{srcdir}
+ 
+ # Patch openafs to build a kernel module named "openafs" instead of "libafs"
+ %patch0 -p1 -b .kmod26
+ 
+ # Patch to work around the Linux 2.6.9 module_param function
+ #%patch1 -p0 -b .modparam
+ 
+ %if %{build_userspace}
+ # Save some time -- install these if we're building userspace
+ 
+ # Install the Krb5 Migration Kit
+ %setup -q -T -D -a 20 -n %{srcdir}
+ 
+ #
+ # patch afs-krb5 migration kit to work with openafs-1.3 and krb5-1.3;
+ # add some features and fix bugs
+ #
+ 
+ # krb524 is no longer in a separate library as of krb5-1.3; handle this
+ %patch10 -p0 -b .krb524
+ 
+ # make sure NETLIBS gets added to the proper programs (seems to be 
+ # needed only for Solaris)
+ %patch11 -p0 -b .libsocket
+ 
+ # find an existing libcom_err and use that
+ %patch12 -p0 -b .com_err
+ 
+ # make afs-krb5 work with recent OpenAFS; includes and prototypes
+ %patch13 -p0 -b .openafs13
+ 
+ # nothing in afs-krb5 actually uses res_search
+ %patch14 -p0 -b .res_search
+ 
+ (cd afs-krb5/src && autoreconf) || exit 1
+ 
+ %endif
+ 
+ 
+ ##############################################################################
+ #
+ # building
+ #
+ ##############################################################################
+ %build
+ 
+ case %{kernvers} in
+    2.4.*)
+        kv='24'
+        ;;
+    2.6.*)
+        kv='26'
+        ;;
+    *)
+        echo "I don't know how to build linux-`expr ${kernvers} : \(^[0-9]*[.][0-9]*\)`"
+        exit 1
+        ;;
+ esac
+ 
+ case %{_arch} in
+        x86_64)                         sysname=amd64_linux${kv}        ;;
+        alpha*)                         sysname=alpha_linux_${kv}       ;;
+        i386|i486|i586|i686|athlon)     sysname=i386_linux${kv}         ;;
+        *)                              sysname=%{_arch}_linux${kv}     ;;
+ esac
+ 
+ %ifarch %{ix86}
+ archlist="i386 i586 i686 athlon"
+ %if %{bootkernelsupport}
+   archlist="${archlist} BOOT"
+ %endif
+ %else
+ archlist=%{_arch}
+ %endif
+ 
+ #
+ # PrintDefine var value statements file
+ #
+ PrintDefine() {
+     case $3 in
+     *ifn*)
+ 	echo "#ifndef $1" >> $4
+ 	;;
+     esac
+     case $3 in
+     *und*)
+ 	echo "#undef $1" >> $4
+ 	;;
+     esac
+     case $3 in
+     *def*)
+ 	echo "#define $1 $2" >> $4
+ 	;;
+     esac
+     case $3 in
+     *end*)
+ 	echo "#endif" >> $4
+ 	;;
+     esac
+     case $3 in
+     *inc*)
+ 	echo "#include $1" >> $4
+ 	;;
+     esac
+     case $3 in
+     *nl*)
+ 	echo "" >> $4
+ 	;;
+     esac
+ }
+ 
+ # PrintRedhatKernelFix arch mp file
+ PrintRedhatKernelFix() {
+     arch="$1"
+     up=0
+     smp=0
+     largesmp=0
+     ent=0
+     bigmem=0
+     hugemem=0
+     boot=0
+     bootsmp=0
+ 
+     case "$2" in
+        up)     up=1;;
+        smp)    smp=1;;
+        largesmp) largesmp=1;;
+        bigmem) bigmem=1;;
+        hugemem) hugemem=1;;
+        *)
+                echo "$2 not supported"
+                exit 2;;
+     esac
+ 
+     file="$3"
+ 
+     rm -f $file
+     touch $file
+ 
+     PrintDefine "REDHAT_FIX_H" "" ifn,def,nl $file
+ 
+     PrintDefine __BOOT_KERNEL_ENTERPRISE $ent     und,def,nl $file
+     PrintDefine __BOOT_KERNEL_BIGMEM     $bigmem  und,def,nl $file
+     PrintDefine __BOOT_KERNEL_HUGEMEM    $hugemem und,def,nl $file
+     PrintDefine __BOOT_KERNEL_SMP        $smp     und,def,nl $file
+     PrintDefine __BOOT_KERNEL_LARGESMP   $largesmp und,def,nl $file
+     PrintDefine __BOOT_KERNEL_UP         $up      und,def,nl $file
+     PrintDefine __BOOT_KERNEL_BOOT       $boot    und,def,nl $file
+     PrintDefine __BOOT_KERNEL_BOOTSMP    $bootsmp und,def,nl $file
+ 
+     PrintDefine '"/boot/kernel.h"' "" inc,nl $file	# include file
+ 
+     for ar in $archlist ; do
+ 	if [ "$ar" = "$arch" ]; then
+ 	    PrintDefine "__MODULE_KERNEL_$ar" "1" ifn,def,end $file
+ 	else
+ 	    PrintDefine "__MODULE_KERNEL_$ar" "" und $file	# undef
+         fi
+     done
+     echo "" >> $file
+ 
+     PrintDefine "" "" end $file
+ 
+     if [ %{debugspec} = 1 ] ; then
+ 	echo "Kernel Configuration File for Red Hat kernels:"
+ 	cat $file
+     fi
+ }
+ 
+ config_opts="--enable-redhat-buildsys \
+ 	%{?_with_bitmap_later:--enable-bitmap-later} \
+ 	%{?_with_bos_restricted:--enable-bos-restricted-mode} \
+ 	%{?_with_fast_restart:--enable-fast-restart} \
+ 	%{?_with_largefiles:--enable-largefile-fileserver} \
+ 	%{?_with_supergroups:--enable-supergroups} \
+ 	--enable-transarc-paths"
+ 
+ # Configure AFS
+ 
+ CFLAGS="$RPM_OPT_FLAGS"; export CFLAGS
+ 
+ ./configure --with-afs-sysname=${sysname} \
+        --prefix=%{_prefix} \
+        --libdir=%{_libdir} \
+        --bindir=%{_bindir} \
+        --sbindir=%{_sbindir} \
+        --with-linux-kernel-headers=%{ksrcdir} \
+ %if %{krb5support}
+ 	--with-krb5-conf \
+ %endif
+        $config_opts \
+        || exit 1
+ 
+ %if %{build_userspace}
+ # Build the user-space AFS stuff
+ make dest_nolibafs || exit 1
+ 
+ # Build the libafs tree
+ make only_libafs_tree || exit 1
+ 
+ %if %{krb5support}
+ # Now build ka-forwarder
+ (cd afs-krb5/src &&
+ 	./configure --prefix=%{_prefix} --with-krb5=%{_prefix}/kerberos \
+                --libdir=%{_libdir} \
+                --bindir=%{_bindir} \
+                --sbindir=%{_sbindir} \
+                --with-afs=`pwd`/../../${sysname}/dest/ && \
+ 	make all PROGS="ka-forwarder" && \
+ 	install -c -s ka-forwarder `pwd`/../../${sysname}/dest/etc ) \
+ 	|| exit 1
+ %endif
+ 
+ %endif
+ 
+ %if %{build_modules}
+ %if %{kvers_is_24}
+ # Build all the kernel modules for linux 2.4.x
+ for variation in %{kvariations}
+ do
+     if [ ${variation} = up ]
+     then
+        local_smp_def=-DREDHAT_FIX
+        suffix=
+     else
+        local_smp_def="-DAFS_SMP -DREDHAT_FIX"
+        suffix=${variation}
+     fi
+ 
+     PrintRedhatKernelFix %{_target_cpu} $variation src/config/redhat-fix.h
+     make dest_only_libafs LOCAL_SMP_DEF="${local_smp_def}" \
+ 	LINUX_MODULE_NAME="${suffix}" MPS=SP
+ 
+ done
+ rm -f src/config/redhat-fix.h
+ 
+ %elseif %{kvers_is_26}
+ # Build the kernel module for this version of linux 2.6.x
+ # Notice how much easier this is than 2.4.  On the other hand,
+ # we require much more external support to build multiple modules.
+ 
+   # the MPS=SP just means that we don't add a '.mp' to the name.
+   make dest_only_libafs MPS=SP
+ 
+ %endif
+ %endif
+ 
+ 
+ ##############################################################################
+ #
+ # installation
+ #
+ ##############################################################################
+ %install
+ 
+ export DONT_GPRINTIFY=1
+ 
+ [ $RPM_BUILD_ROOT != / ] && rm -rf $RPM_BUILD_ROOT
+ 
+ case %{kernvers} in
+    2.4.*)
+        kv='24'
+        kmodend=.o
+        ;;
+    2.6.*)
+        kv='26'
+        kmodend=.ko
+        ;;
+    *)
+        echo "I don't know how to build linux-`expr ${kernvers} : \(^[0-9]*[.][0-9]*\)`"
+        exit 1
+        ;;
+ esac
+ 
+ case %{_arch} in
+        x86_64)                         sysname=amd64_linux${kv}        ;;
+        alpha*)                         sysname=alpha_linux_${kv}       ;;
+        i386|i486|i586|i686|athlon)     sysname=i386_linux${kv}         ;;
+        *)                              sysname=%{_arch}_linux${kv}     ;;
+ esac
+ 
+ # Build install tree
+ %if %{build_userspace}
+ mkdir -p $RPM_BUILD_ROOT%{_sbindir}
+ mkdir -p $RPM_BUILD_ROOT%{_libdir}
+ mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
+ mkdir -p $RPM_BUILD_ROOT%{initdir}
+ mkdir -p $RPM_BUILD_ROOT/etc/openafs
+ mkdir -p $RPM_BUILD_ROOT%{pamdir}
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/afs/etc
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/afs/logs
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/vice/etc
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/vice/cache
+ chmod 700 $RPM_BUILD_ROOT%{_prefix}/vice/cache
+ mkdir -p $RPM_BUILD_ROOT%{_mandir}
+ 
+ # Copy files from dest to the appropriate places in BuildRoot
+ tar cf - -C ${sysname}/dest bin include | tar xf - -C $RPM_BUILD_ROOT%{_prefix}
+ tar cf - -C ${sysname}/dest/lib . | tar xf - -C $RPM_BUILD_ROOT%{_libdir}
+ tar cf - -C ${sysname}/dest/etc . | tar xf - -C $RPM_BUILD_ROOT%{_sbindir}
+ tar cf - -C ${sysname}/dest/root.server%{_prefix}/afs bin | tar xf - -C $RPM_BUILD_ROOT%{_prefix}/afs
+ tar cf - -C ${sysname}/dest/root.client%{_prefix}/vice/etc afsd | tar xf - -C $RPM_BUILD_ROOT%{_prefix}/vice/etc
+ 
+ # Link kpasswd to kapasswd
+ ln -f $RPM_BUILD_ROOT%{_bindir}/kpasswd $RPM_BUILD_ROOT%{_bindir}/kapasswd
+ 
+ # Copy root.client config files
+ install -m 755 %{SOURCE15} $RPM_BUILD_ROOT/etc/sysconfig/openafs
+ install -m 755 %{SOURCE16} $RPM_BUILD_ROOT%{initdir}/openafs-client
+ install -m 755 %{SOURCE17} $RPM_BUILD_ROOT%{initdir}/openafs-server
+ 
+ # Copy PAM modules
+ install -m 755 ${sysname}/dest/lib/pam* $RPM_BUILD_ROOT%{pamdir}
+ 
+ # PAM symlinks
+ ln -sf pam_afs.so.1 $RPM_BUILD_ROOT%{pamdir}/pam_afs.so
+ ln -sf pam_afs.krb.so.1 $RPM_BUILD_ROOT%{pamdir}/pam_afs.krb.so
+ 
+ # Populate /usr/vice/etc
+ uve=$RPM_BUILD_ROOT%{_prefix}/vice/etc
+ install -p -m 644 %{SOURCE2} $uve/ThisCell
+ install -p -m 644 %{SOURCE3} $uve/CellServDB
+ install -p -m 644 %{SOURCE4} $uve/SuidCells
+ install -p -m 644 %{SOURCE5} $uve/cacheinfo
+ 
+ #
+ # install kernel-source
+ #
+ 
+ # Install the kernel module source tree
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/src
+ tar cf - -C libafs_tree . | \
+ 	tar xf - -C $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/src
+ 
+ # Next, copy the LICENSE Files, README
+ install -m 644 src/LICENSE $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.IBM
+ install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.Sun
+ install -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_prefix}/src/openafs-kernel-%{afsvers}/README
+ 
+ #
+ # Install DOCUMENTATION
+ #
+ 
+ # Build the DOC directory
+ mkdir -p $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
+ tar cf - -C doc LICENSE html pdf | \
+     tar xf - -C $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
+ install -m 644 %{SOURCE10} $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
+ install -m 644 %{SOURCE11} $RPM_BUILD_ROOT/$RPM_DOC_DIR/openafs-%{afsvers}
+ 
+ #
+ # man pages
+ #
+ tar cf - -C doc/man-pages man1 man5 man8 | \
+     tar xf - -C $RPM_BUILD_ROOT%{_mandir}
+ 
+ # Copy the uninstalled krb5 files (or delete the unused krb5 files)
+ %if %{krb5support}
+ mv $RPM_BUILD_ROOT%{_prefix}/afs/bin/asetkey $RPM_BUILD_ROOT%{_sbindir}/asetkey
+ %else
+ rm -f $RPM_BUILD_ROOT%{_mandir}/man8/asetkey.*
+ %endif
+ 
+ # remove unused man pages
+ for x in afs_ftpd afs_inetd afs_login afs_rcp afs_rlogind afs_rsh \
+     dkload knfs package runntp; do
+ 	rm -f $RPM_BUILD_ROOT%{_mandir}/man1/${x}.1
+ done
+ 
+ # rename kpasswd to kapasswd
+ mv $RPM_BUILD_ROOT%{_mandir}/man1/kpasswd.1 $RPM_BUILD_ROOT%{_mandir}/man1/kapasswd.1
+ 
+ # gzip man pages
+ gzip -9 $RPM_BUILD_ROOT%{_mandir}/man*/*
+ 
+ # create list of man pages that go in the 'openafs' package
+ /bin/ls $RPM_BUILD_ROOT%{_mandir}/man1 \
+ 	|egrep '^afs|^fs|^kas|^klog|kapasswd|pagsh|^pts|^rxdebug|scout|^sys|tokens|translate|udebug|unlog|^uss|^vos' \
+ 	>openafs-man1files
+ 
+ /bin/ls $RPM_BUILD_ROOT%{_mandir}/man5 \
+ 	|egrep 'CellServDB|ThisCell|afsmonitor|^butc|^uss' \
+ 	>openafs-man5files
+ 
+ /bin/ls $RPM_BUILD_ROOT%{_mandir}/man8 \
+ 	|egrep '^backup|^bos|^butc|^fms|^fstrace|^kas|^uss' \
+ 	>openafs-man8files
+ 
+ #
+ # create filelist
+ #
+ grep -v "^#" >openafs-file-list <<EOF-openafs-file-list
+ %{_bindir}/afsmonitor
+ %{_bindir}/bos
+ %{_bindir}/fs
+ %{_bindir}/kapasswd
+ %{_bindir}/kpasswd
+ %{_bindir}/klog
+ %{_bindir}/klog.krb
+ %{_bindir}/pagsh
+ %{_bindir}/pagsh.krb
+ %{_bindir}/pts
+ %{_bindir}/scout
+ %{_bindir}/sys
+ %{_bindir}/tokens
+ %{_bindir}/tokens.krb
+ %{_bindir}/translate_et
+ %{_bindir}/udebug
+ %{_bindir}/unlog
+ %{_sbindir}/backup
+ %{_sbindir}/butc
+ %{_sbindir}/copyauth
+ %{_sbindir}/fms
+ %{_sbindir}/fstrace
+ %{_sbindir}/kas
+ %{_sbindir}/kseal
+ %{_sbindir}/read_tape
+ %{_sbindir}/restorevol
+ %{_sbindir}/rxdebug
+ %{_sbindir}/uss
+ %{_sbindir}/vos
+ %{_sbindir}/vsys
+ EOF-openafs-file-list
+ 
+ # add man pages to the list
+ cat openafs-man1files \
+ 	| ( while read x; do echo "%{_mandir}/man1/$x"; done ) \
+ 	>>openafs-file-list
+ cat openafs-man5files \
+ 	| ( while read x; do echo "%{_mandir}/man5/$x"; done ) \
+ 	>>openafs-file-list
+ cat openafs-man8files \
+ 	| ( while read x; do echo "%{_mandir}/man8/$x"; done ) \
+ 	>>openafs-file-list
+ 
+ #
+ # Install compatiblity links
+ #
+ for d in bin:bin etc:sbin; do
+   olddir=`echo $d | sed 's/:.*$//'`
+   newdir=`echo $d | sed 's/^.*://'`
+   mkdir -p $RPM_BUILD_ROOT%{_prefix}/afsws/$olddir
+   for f in `cat openafs-file-list`; do
+     if echo $f | grep -q /$newdir/; then
+       fb=`basename $f`
+       ln -sf %{_prefix}/$newdir/$fb $RPM_BUILD_ROOT%{_prefix}/afsws/$olddir/$fb
+     fi
+   done
+ done
+ 
+ #
+ # Remove files we're not installing
+ #
+ 
+ # remove duplicated files from /usr/afs/bin
+ for f in bos fs kas klog klog.krb kpwvalid pts tokens tokens.krb udebug vos ; do
+   rm -f $RPM_BUILD_ROOT%{_prefix}/afs/bin/$f
+ done
+ 
+ # compile_et is duplicated in e2fsprogs
+ # the rest are not needed.
+ for f in compile_et dlog dpass install knfs livesys xstat_cm_test xstat_fs_test ; do
+   rm -f $RPM_BUILD_ROOT%{_bindir}/$f
+ done
+ 
+ # not supported on Linux or duplicated
+ for f in kdb rmtsysd kpwvalid ; do
+   rm -f $RPM_BUILD_ROOT%{_sbindir}/$f
+ done
+ rm -f $RPM_BUILD_ROOT%{_sbindir}/kdump*
+ 
+ # remove man pages from programs deleted above
+ for f in 1/dlog 1/dpass 1/livesys 1/xstat_cm_test 1/xstat_fs_test 8/kdb 8/kpwvalid 8/xfs_size_check 1/package_test 5/package 8/package ; do
+   rm -f $RPM_BUILD_ROOT%{_mandir}/man$f.*
+ done
+ 
+ # PAM modules are doubly-installed  Remove the version we don't need
+ for f in pam_afs.krb.so.1 pam_afs.so.1 ; do
+   rm -f $RPM_BUILD_ROOT%{_libdir}/$f
+ done
+ 
+ # Remove empty files from the krb5 migration
+ for f in afs2k5db fakeka ; do
+   rm -f $RPM_BUILD_ROOT%{_sbindir}/$f
+ done
+ 
+ %endif
+ 
+ %if %{build_modules}
+ # Install the kernel modules
+ for variation in %{kvariations}
+ do
+     if [ ${variation} = up ]
+     then
+        kvar=%{kxmoddir}
+        modname=libafs-%{kernvers}${kmodend}
+     else
+        kvar=%{kxmoddir}${variation}
+        modname=libafs-%{kernvers}${variation}${kmodend}
+     fi
+ 
+     srcdir=${sysname}/dest/root.client%{_prefix}/vice/etc/modload
+     dstdir=$RPM_BUILD_ROOT${kvar}/kernel/fs/openafs
+ 
+     mkdir -p ${dstdir}
+ 
+     # Mark kernel modules as executable; otherwise they won't get stripped 
+     # by /usr/lib/rpm/brp-strip
+     install -m 744 ${srcdir}/${modname} ${dstdir}/openafs${kmodend}
+ done
+ %endif
+ 
+ ##############################################################################
+ ###
+ ### clean
+ ###
+ ##############################################################################
+ %clean
+ rm -f openafs-file-list
+ [ "$RPM_BUILD_ROOT" != "/" -a "x%{debugspec}" != "x1" ] && \
+ 	rm -fr $RPM_BUILD_ROOT
+ 
+ 
+ ##############################################################################
+ ###
+ ### scripts
+ ###
+ ##############################################################################
+ %if %{build_userspace}
+ 
+ %pre compat
+ if [ -e %{_prefix}/afsws ]; then
+         /bin/rm -fr %{_prefix}/afsws
+ fi
+ 
+ %post client
+ chkconfig --add openafs-client
+ if [ ! -d /afs ]; then
+ 	mkdir /afs
+ 	chown root.root /afs
+ 	chmod 0755 /afs
+ fi
+ 
+ echo
+ echo The AFS cache is configured for 100 MB. Edit the
+ echo /usr/vice/etc/cacheinfo file to change this before
+ echo running AFS for the first time. You should also
+ echo set your home cell in /usr/vice/etc/ThisCell.
+ echo
+ echo Also, you may want to edit /etc/pam.d/login and
+ echo possibly others there to get an AFS token on login.
+ echo Put the line:
+ echo 
+ echo    auth	   sufficient   %{pamdir}/pam_afs.so try_first_pass ignore_root
+ echo
+ echo before the one for pwdb.
+ echo
+ 
+ %post server
+ chkconfig --add openafs-server
+ %{initdir}/openafs-server condrestart
+ 
+ %post authlibs
+ /sbin/ldconfig
+ 
+ %postun authlibs
+ /sbin/ldconfig
+ 
+ %preun
+ if [ $1 = 0 ] ; then
+ 	[ -d /afs ] && rmdir /afs
+ fi
+ 
+ %preun client
+ if [ $1 = 0 ] ; then
+         %{initdir}/openafs-client stop
+         chkconfig --del openafs-client
+ fi
+ 
+ %preun server
+ if [ $1 = 0 ] ; then
+         %{initdir}/openafs-server stop
+         chkconfig --del openafs-server
+ fi
+ 
+ %endif
+ 
+ %if %{build_modules}
+ 
+ %if %{up_package}
+ %post kernel
+ /sbin/depmod -ae %{kernvers}
+ 
+ %postun kernel
+ /sbin/depmod -ae %{kernvers}
+ 
+ %endif
+ 
+ %if %{smp_package}
+ %post kernel-smp
+ /sbin/depmod -ae %{kernvers}%{?smp_ext:%{smp_ext}}
+ 
+ %postun kernel-smp
+ /sbin/depmod -ae %{kernvers}%{?smp_ext:%{smp_ext}}
+ %endif
+ 
+ %if %{largesmp_package}
+ %post kernel-largesmp
+ /sbin/depmod -ae %{kernvers}%{?largesmp_ext:%{largesmp_ext}}
+ 
+ %postun kernel-largesmp
+ /sbin/depmod -ae %{kernvers}%{?largesmp_ext:%{largesmp_ext}}
+ %endif
+  
+ %if %{bigmem_package}
+ %post kernel-bigmem
+ /sbin/depmod -ae %{kernvers}%{?bigmem_ext:%{bigmem_ext}}
+ 
+ %postun kernel-bigmem
+ /sbin/depmod -ae %{kernvers}%{?bigmem_ext:%{bigmem_ext}}
+ %endif
+ 
+ %if %{hugemem_package}
+ %post kernel-hugemem
+ /sbin/depmod -ae %{kernvers}%{?hugemem_ext:%{hugemem_ext}}
+ 
+ %postun kernel-hugemem
+ /sbin/depmod -ae %{kernvers}%{?hugemem_ext:%{hugemem_ext}}
+ %endif
+ 
+ %endif
+ 
+ 
+ ##############################################################################
+ ###
+ ### file lists
+ ###
+ ##############################################################################
+ %if %{build_userspace}
+ 
+ %files -f openafs-file-list
+ %defattr(-,root,root)
+ %config /etc/sysconfig/openafs
+ %doc %{_docdir}/openafs-%{afsvers}/LICENSE
+ 
+ %files docs
+ %defattr(-,root,root)
+ %doc %{_docdir}/openafs-%{afsvers}
+ 
+ %files client
+ %defattr(-,root,root)
+ %dir %{_prefix}/vice
+ %dir %{_prefix}/vice/cache
+ %dir %{_prefix}/vice/etc
+ %config %{_prefix}/vice/etc/CellServDB
+ %config %{_prefix}/vice/etc/SuidCells
+ %config %{_prefix}/vice/etc/ThisCell
+ %config %{_prefix}/vice/etc/cacheinfo
+ %{_bindir}/cmdebug
+ %{_bindir}/up
+ %{_prefix}/vice/etc/afsd
+ %{pamdir}/pam_afs.krb.so.1
+ %{pamdir}/pam_afs.krb.so
+ %{pamdir}/pam_afs.so.1
+ %{pamdir}/pam_afs.so
+ %{initdir}/openafs-client
+ %{_mandir}/man1/cmdebug.*
+ %{_mandir}/man1/up.*
+ %{_mandir}/man5/afs*
+ %{_mandir}/man5/cacheinfo.*
+ %{_mandir}/man8/afsd.*
+ 
+ %files server
+ %defattr(-,root,root)
+ %dir %{_prefix}/afs
+ %dir %{_prefix}/afs/bin
+ %dir %{_prefix}/afs/etc
+ %dir %{_prefix}/afs/logs
+ %{_prefix}/afs/bin/bosserver
+ %{_prefix}/afs/bin/bos_util
+ %{_prefix}/afs/bin/buserver
+ %{_prefix}/afs/bin/fileserver
+ # Should we support KAServer?
+ %{_prefix}/afs/bin/kaserver
+ %{_prefix}/afs/bin/pt_util
+ %{_prefix}/afs/bin/ptserver
+ %{_prefix}/afs/bin/salvager
+ %{_prefix}/afs/bin/upclient
+ %{_prefix}/afs/bin/upserver
+ %{_prefix}/afs/bin/vlserver
+ %{_prefix}/afs/bin/volinfo
+ %{_prefix}/afs/bin/volserver
+ %{_sbindir}/kadb_check
+ %{_sbindir}/prdb_check
+ %{_sbindir}/vldb_check
+ %{_sbindir}/vldb_convert
+ %{_sbindir}/voldump
+ %{initdir}/openafs-server
+ %{_mandir}/man5/AuthLog.*
+ %{_mandir}/man5/BackupLog.*
+ %{_mandir}/man5/BosConfig.*
+ %{_mandir}/man5/BosLog.*
+ %{_mandir}/man5/FORCESALVAGE.*
+ %{_mandir}/man5/FileLog.*
+ %{_mandir}/man5/KeyFile.*
+ %{_mandir}/man5/NetInfo.*
+ %{_mandir}/man5/NetRestrict.*
+ %{_mandir}/man5/NoAuth.*
+ %{_mandir}/man5/SALVAGE.fs.*
+ %{_mandir}/man5/SalvageLog.*
+ %{_mandir}/man5/sysid.*
+ %{_mandir}/man5/UserList.*
+ %{_mandir}/man5/VLLog.*
+ %{_mandir}/man5/VolserLog.*
+ %{_mandir}/man5/bdb.DB0.*
+ %{_mandir}/man5/fms.log.*
+ %{_mandir}/man5/kaserver.DB0.*
+ %{_mandir}/man5/kaserverauxdb.*
+ %{_mandir}/man5/prdb.DB0.*
+ %{_mandir}/man5/salvage.lock.*
+ %{_mandir}/man5/tapeconfig.*
+ %{_mandir}/man5/vldb.DB0.*
+ %{_mandir}/man8/buserver.*
+ %{_mandir}/man8/fileserver.*
+ %{_mandir}/man8/kadb_check.*
+ %{_mandir}/man8/prdb_check.*
+ %{_mandir}/man8/ptserver.*
+ %{_mandir}/man8/salvager.*
+ %{_mandir}/man8/upclient.*
+ %{_mandir}/man8/upserver.*
+ %{_mandir}/man8/vldb_check.*
+ %{_mandir}/man8/vlserver.*
+ %{_mandir}/man8/voldump.*
+ %{_mandir}/man8/volinfo.*
+ %{_mandir}/man8/volserver.*
+ #%{_mandir}/man8/vldb_convert.*
+ 
+ %files authlibs
+ %defattr(-,root,root)
+ %{_libdir}/libafsauthent.so.*
+ %{_libdir}/libafsrpc.so.*
+ 
+ %files authlibs-devel
+ %defattr(-,root,root)
+ %{_libdir}/libafsauthent.a
+ %{_libdir}/libafsauthent.so
+ %{_libdir}/libafsrpc.a
+ %{_libdir}/libafsrpc.so
+ 
+ %files devel
+ %defattr(-,root,root)
+ %{_bindir}/rxgen
+ %{_includedir}/afs
+ %{_includedir}/des.h
+ %{_includedir}/des_conf.h
+ %{_includedir}/des_odd.h
+ %{_includedir}/des_prototypes.h
+ %{_includedir}/lock.h
+ %{_includedir}/lwp.h
+ %{_includedir}/mit-cpyright.h
+ %{_includedir}/potpourri.h
+ %{_includedir}/preempt.h
+ %{_includedir}/rx
+ %{_includedir}/timer.h
+ %{_includedir}/ubik.h
+ %{_includedir}/ubik_int.h
+ %{_libdir}/afs
+ %{_libdir}/libdes.a
+ %{_libdir}/liblwp.a
+ %{_libdir}/librx.a
+ %{_libdir}/librxkad.a
+ %{_libdir}/librxstat.a
+ %{_libdir}/libubik.a
+ %{_mandir}/man1/rxgen.*
+ 
+ %files kernel-source
+ %defattr(-,root,root)
+ %{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.IBM
+ %{_prefix}/src/openafs-kernel-%{afsvers}/LICENSE.Sun
+ %{_prefix}/src/openafs-kernel-%{afsvers}/README
+ %{_prefix}/src/openafs-kernel-%{afsvers}/src
+ 
+ %files compat
+ %defattr(-,root,root)
+ %{_prefix}/afsws
+ 
+ %files kpasswd
+ %defattr(-,root,root)
+ %{_bindir}/kpasswd
+ %{_bindir}/kpwvalid
+ 
+ %if %{krb5support}
+ %files krb5
+ %defattr(-,root,root)
+ %{_bindir}/aklog
+ %{_sbindir}/asetkey
+ %{_sbindir}/ka-forwarder
+ %{_mandir}/man1/aklog.*
+ %{_mandir}/man8/asetkey.*
+ %endif
+ 
+ %endif
+ 
+ %if %{build_modules}
+ 
+ %if %{up_package}
+ %files kernel
+ %defattr(-,root,root)
+ %{kxmoddir}/kernel/fs/openafs/openafs.*
+ %endif
+ 
+ %if %{smp_package}
+ %files kernel-smp
+ %defattr(-,root,root)
+ %{kxmoddir}%{?smp_ext:%{smp_ext}}/kernel/fs/openafs/openafs.*
+ %endif
+ 
+ %if %{largesmp_package}
+ %files kernel-largesmp
+ %defattr(-,root,root)
+ %{kxmoddir}%{?largesmp_ext:%{largesmp_ext}}/kernel/fs/openafs/openafs.*
+ %endif
+  
+ %if %{bigmem_package}
+ %files kernel-bigmem
+ %defattr(-,root,root)
+ %{kxmoddir}%{?bigmem_ext:%{bigmem_ext}}/kernel/fs/openafs/openafs.*
+ %endif
+ 
+ %if %{hugemem_package}
+ %files kernel-hugemem
+ %defattr(-,root,root)
+ %{kxmoddir}%{?hugemem_ext:%{hugemem_ext}}/kernel/fs/openafs/openafs.*
+ %endif
+ 
+ %endif
+ 
+ ##############################################################################
+ ###
+ ### openafs.spec change log
+ ###
+ ##############################################################################
+ %changelog
+ * Sun Aug 20 2006  Derrick Brashear <shadow@dementia.org> 1.4.2-1
+ - update to 1.4.2
+ - use installed aklog manpage.
+ - moduleparam patch obsoleted.
+ 
+ * Tue Apr 18 2006  Derek Atkins <warlord@MIT.EDU> 1.4.1-2
+ - fix the module_param_array macro for Linux 2.6.9.
+ 
+ * Sat Apr 15 2006  Derek Atkins <warlord@MIT.EDU> 1.4.1-1
+ - update to 1.4.1 release.
+ - distribute asetkey from openafs instead of krb5-migration kit
+ - don't need to apply the FC5 patches because they are part of the distro.
+ - install asetkey into the "proper" place
+ - dont list a manpage twice.
+ - package asetkey man page.  delete it when not needed.
+ 
+ * Thu Apr  6 2006  Derek Atkins <warlord@MIT.EDU>
+ - turn authlibs back on, because RT #18767 was applied to CVS.
+ 
+ * Wed Mar 29 2006  Derek Atkins <warlord@MIT.EDU> 1.4.1rc10-1
+ - update to 1.4.1rc10, build on FC5
+ - fix the man pages (distribute into various packages)
+ - include patches for FC5, RT #29112 and #29122
+ 
+ * Mon Dec 19 2005  Derek Atkins <warlord@MIT.EDU>
+ - openafs-server shouldn't depend on the kernel module.
+ 
+ * Thu Nov 17 2005  Derek Atkins <warlord@MIT.EDU>
+ - patch from Mike Polek <mike at pictage.com> to run depmod for
+   the target kernel and not the running kernel.
+ 
+ * Tue Nov  8 2005  Derek Atkins <warlord@MIT.EDU>
+ - build aklog from the openafs sources, not from the krb5 migration kit.
+ 
+ * Fri Nov  4 2005  Derek Atkins <warlord@MIT.EDU>
+ - set openafs-kernel-source to Provide openafs-kernel
+ 
+ * Thu Oct 20 2005  Derek Atkins <warlord@MIT.EDU> 1.4.0-1
+ - update afs-krb5 res_search patch: look for res_search and __res_search
+ - update to 1.4.0 final
+ 
+ * Mon Oct 10 2005  Derek Atkins <warlord@MIT.EDU>
+ - remove all kdump builds.
+ 
+ * Thu Oct  6 2005  Derek Atkins <warlord@MIT.EDU>
+ - fix openafs-kernel-version.sh so it will build an RPM for the
+   currently-running kernel even if it's smp on 2.6.
+ 
+ * Tue Sep 27 2005  Derek Atkins <warlord@MIT.EDU> 1.4.0rc5-1
+ - upgrade to 1.4.0rc5
+ - turn off authlibs packages
+ 
+ * Fri Sep 23 2005  Derek Atkins <warlord@MIT.EDU> 1.4.0rc4-2
+ - add kmodule26 patch: fix the kernel module name on 2.6 kernels so
+   it's called "openafs" and not "libafs".  This fixes the shutdown
+   problem.
+ 
+ * Thu Sep 22 2005  Derek Atkins <warlord@MIT.EDU>
+ - update kversis script, add 'kvers' operation
+ - fix bug that 2.6 smp/hugemem kernels don't provide
+   kernel-foo = %{kernvers} with 'smp', 'hugemem', etc.
+ - add patch to remove res_search from the afs-krb5 configure
+ 
+ * Thu Sep 15 2005  Derek Atkins <warlord@MIT.EDU> 1.4.0rc4-1
+ - Update to 1.4.0rc4
+ - Update the afs-krb5 krb524 patch so it actually works on
+   some older systems like RHEL3 that still need -lkrb524.
+ - Update the buildall script so choose better architecture support,
+   e.g. don't build i586 on RHEL.
+ - Update the rebuild information in the SPEC file.
+ - Add support for finding .EL kernels in openafs-kvers-is.sh
+ - Add additional error messages when kernel version/type parsing fails.
+ - Update the buildall script to use the kernel srcdir directly.
+ 
+ * Wed Sep 14 2005  Derek Atkins <warlord@MIT.EDU> 1.4.0rc3-2
+ - Add "hugemem" to 2.4 configs
+ - Add checks to support scripts to determine whether to build
+   the bigmem and/or hugemem kernels for 2.4.
+ 
+ * Mon Sep 12 2005  Derek Atkins <warlord@MIT.EDU> 1.4.0rc3-1
+ - Added some afs-krb5 patches to get the migration kit to build
+   on modern AFS and modern Kerberos.
+ - Added authlibs and authlibs-devel packages as per UMich changes.
+ 
+ * Sun Sep 11 2005  Derek Atkins <warlord@MIT.EDU>
+ - Merged in some of the 2.6 changes from wingc@engin.umich.edu
+ 
+ * Sat Sep 10 2005  Derek Atkins <warlord@MIT.EDU>
+ - Merged in lots of changes from David Howells and Nalin Dahyabhai
+   from Red Hat.   Initial attempt at a release of 1.4.  Still need
+   to work in a 2.6 build system.
Index: openafs/src/packaging/RedHat/openafs.sysconfig
diff -c /dev/null openafs/src/packaging/RedHat/openafs.sysconfig:1.1.2.1
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/packaging/RedHat/openafs.sysconfig	Mon Aug 21 15:58:18 2006
***************
*** 0 ****
--- 1,5 ----
+ # OpenAFS Client Configuration
+ AFSD_ARGS="-dynroot -fakestat"
+ 
+ # OpenAFS Server Configuration
+ BOSSERVER_ARGS=
Index: openafs/src/pam/afs_util.c
diff -c openafs/src/pam/afs_util.c:1.12 openafs/src/pam/afs_util.c:1.12.2.4
*** openafs/src/pam/afs_util.c:1.12	Tue Jul 15 19:15:57 2003
--- openafs/src/pam/afs_util.c	Mon Oct  9 23:23:39 2006
***************
*** 27,33 ****
  #include <stdlib.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/pam/afs_util.c,v 1.12 2003/07/15 23:15:57 shadow Exp $");
  
  #include "afs_util.h"
  
--- 27,33 ----
  #include <stdlib.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/pam/afs_util.c,v 1.12.2.4 2006/10/10 03:23:39 shadow Exp $");
  
  #include "afs_util.h"
  
Index: openafs/src/platform/Makefile.in
diff -c /dev/null openafs/src/platform/Makefile.in:1.2.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/Makefile.in	Tue Aug  1 17:54:19 2006
***************
*** 0 ****
--- 1,26 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ # Common elements for Makefiles for all system types.
+ 
+ srcdir=@srcdir@
+ include @TOP_OBJDIR@/src/config/Makefile.config
+ include ../config/Makefile.version
+ 
+ all:
+ 	cd $(MKAFS_OSTYPE) ; \
+ 	echo $(MAKE) all; \
+ 	$(MAKE) all
+ dest:
+ 	cd $(MKAFS_OSTYPE) ; \
+ 	echo $(MAKE) DEST=${DEST} dest; \
+ 	$(MAKE) DEST=${DEST} dest
+ install:
+ 	cd $(MKAFS_OSTYPE) ; \
+ 	echo $(MAKE) DESTDIR=${DESTDIR} install; \
+ 	$(MAKE) DESTDIR=${DESTDIR} install
+ 
Index: openafs/src/platform/AIX/Makefile.in
diff -c /dev/null openafs/src/platform/AIX/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/AIX/Makefile.in	Tue Aug  1 17:54:24 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/DARWIN/Makefile.in
diff -c /dev/null openafs/src/platform/DARWIN/Makefile.in:1.2.4.5
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/DARWIN/Makefile.in	Tue Aug  1 23:48:48 2006
***************
*** 0 ****
--- 1,30 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ srcdir=@srcdir@
+ include @TOP_OBJDIR@/src/config/Makefile.config
+ include ../../config/Makefile.version
+ 
+ all: afssettings
+ 
+ afssettings: afssettings.m 
+ 	${CC} ${CFLAGS} -o afssettings afssettings.m -framework Foundation
+ 
+ install: \
+ 	${DESTDIR}${sbindir}/afssettings
+ 
+ dest: \
+ 	${DEST}/etc/afssettings
+ 
+ ${DESTDIR}${sbindir}/afssettings: afssettings
+ 	${INSTALL} -s $? $@
+ 
+ ${DEST}/etc/afssettings: afssettings
+ 	${INSTALL} -s $? $@
+ 
+ clean:
+ 	$(RM) -f *.o core afssettings AFS_component_version_number.c 
Index: openafs/src/platform/DARWIN/afssettings.m
diff -c /dev/null openafs/src/platform/DARWIN/afssettings.m:1.1.6.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/DARWIN/afssettings.m	Tue Aug  1 17:42:23 2006
***************
*** 0 ****
--- 1,173 ----
+ /*
+  * Copyright (c) 2003, 2006 Apple Computer, Inc. All rights reserved.
+  *
+  * @APPLE_LICENSE_HEADER_START@
+  * 
+  * This file contains Original Code and/or Modifications of Original Code
+  * as defined in and that are subject to the Apple Public Source License
+  * Version 2.0 (the 'License'). You may not use this file except in
+  * compliance with the License. Please obtain a copy of the License at
+  * http://www.opensource.apple.com/apsl/ and read it before using this
+  * file.
+  * 
+  * The Original Code and all software distributed under the License are
+  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+  * Please see the License for the specific language governing rights and
+  * limitations under the License.
+  * 
+  * @APPLE_LICENSE_HEADER_END@
+  */
+ #import <Foundation/Foundation.h>
+ #import <stdio.h>
+ #import <err.h>
+ #import <sys/types.h>
+ #import <sys/mount.h>
+ #import <sys/sysctl.h>
+ #import <afs/sysctl.h>
+ 
+ enum Type {
+     TypeNode = 0,
+     TypeNum,
+     TypeStr
+ };
+ 
+ typedef struct _setting {
+     NSString *key;
+     int selector;
+     enum Type type;
+     struct _setting *children;
+ } Setting;
+ 
+ Setting s_darwin_all[] = {
+     {@"RealModes", AFS_SC_DARWIN_ALL_REALMODES, TypeNum, NULL},
+     {NULL, 0, 0, NULL}
+ };
+ Setting s_darwin[] = {
+     {@"All", AFS_SC_DARWIN_ALL, TypeNode, s_darwin_all},
+     {@"Darwin12", AFS_SC_DARWIN_12, TypeNode, NULL},
+     {@"Darwin13", AFS_SC_DARWIN_13, TypeNode, NULL},
+     {@"Darwin14", AFS_SC_DARWIN_14, TypeNode, NULL},
+     {@"Darwin60", AFS_SC_DARWIN_60, TypeNode, NULL},
+     {@"Darwin70", AFS_SC_DARWIN_70, TypeNode, NULL},
+     {@"Darwin80", AFS_SC_DARWIN_80, TypeNode, NULL},
+     {@"Darwin90", AFS_SC_DARWIN_90, TypeNode, NULL},
+     {NULL, 0, 0, NULL}
+ };
+ Setting s_first[] = {
+     {@"All", AFS_SC_ALL, TypeNode, NULL},
+     {@"Darwin", AFS_SC_DARWIN, TypeNode, s_darwin},
+     {NULL, 0, 0, NULL}
+ };
+ Setting s_top = {NULL, -1, TypeNode, s_first};
+ 
+ int oid[CTL_MAXNAME] = {CTL_VFS};
+ NSString *path = @"/var/db/openafs/etc/config/settings.plist";
+ 
+ char *oidString(int *oid, int len);
+ void init(void);
+ void walk(id obj, Setting *s, int level);
+ 
+ void
+ init(void)
+ {
+     int oidmax[] = {CTL_VFS, VFS_GENERIC, VFS_MAXTYPENUM};
+     int oidvfs[] = {CTL_VFS, VFS_GENERIC, VFS_CONF, 0};
+     int max;
+     struct vfsconf conf;
+     size_t len;
+     int i;
+ 
+     len = sizeof(max);
+     if(sysctl(oidmax, 3, &max, &len, NULL, 0) < 0)
+ 	err(1, "sysctl VFS_MAXTYPENUM");
+     for(i = max; --i >= 0; ) {
+ 	oidvfs[3] = i;
+ 	len = sizeof(conf);
+ 	if(sysctl(oidvfs, 4, &conf, &len, NULL, 0) < 0)
+ 	    continue;
+ 	if(strcmp("afs", conf.vfc_name) == 0) {
+ 	    s_top.selector = conf.vfc_typenum;
+ 	    break;
+ 	}
+     }
+     if(s_top.selector < 0)
+ 	errx(1, "AFS is not loaded");
+ }
+ 
+ char *
+ oidString(int *oid, int len)
+ {
+     static char buf[256];
+     char *cp = buf;
+ 
+     for(;;) {
+ 	sprintf(cp, "%d", *oid++);
+ 	if(--len <= 0)
+ 	    break;
+ 	cp += strlen(cp);
+ 	*cp++ = '.';
+     }
+     return buf;
+ }
+ 
+ void
+ walk(id obj, Setting *s, int level)
+ {
+     Setting *child;
+     id newobj;
+     int intval;
+     const char *cp;
+     int level1 = level + 1;
+ 
+     oid[level] = s->selector;
+     switch(s->type) {
+       case TypeNode:
+ 	for(child = s->children; child->key; child++) {
+ 	    if(child->type == TypeNode && !child->children)
+ 		continue;
+ 	    newobj = [obj objectForKey: child->key];
+ 	    if(newobj)
+ 		walk(newobj, child, level1);
+ 	}
+ 	break;
+       case TypeNum:
+ 	intval = [obj intValue];
+ 	if(sysctl(oid, level1, NULL, NULL, &intval, sizeof(intval)) < 0)
+ 	    err(1, "sysctl %s => %d", oidString(oid, level1), intval);
+ 	break;
+       case TypeStr:
+ 	cp = [obj UTF8String];
+ 	if(sysctl(oid, level1, NULL, NULL, (void *)cp, strlen(cp)) < 0)
+ 	    err(1, "sysctl %s => %s", oidString(oid, level1), cp);
+ 	break;
+     }
+ }
+ 
+ main()
+ {
+     NSData *plistData;
+     id plist;
+     NSString *error;
+     NSPropertyListFormat format;
+     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+ 
+     init();
+     plistData = [NSData dataWithContentsOfFile: path];
+     if(plistData) {
+ 	plist = [NSPropertyListSerialization propertyListFromData: plistData
+ 	  mutabilityOption: NSPropertyListImmutable
+ 	  format: &format
+ 	  errorDescription: &error
+ 	];
+ 	if(plist)
+ 	    walk(plist, &s_top, 1);
+ 	else
+ 	    errx(1, "%s: %s", [path UTF8String], [error UTF8String]);
+     }
+ 
+     [pool release];
+     return 0;
+ }
Index: openafs/src/platform/FBSD/Makefile.in
diff -c /dev/null openafs/src/platform/FBSD/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/FBSD/Makefile.in	Tue Aug  1 17:54:24 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/HPUX/Makefile.in
diff -c /dev/null openafs/src/platform/HPUX/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/HPUX/Makefile.in	Tue Aug  1 17:54:24 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/IRIX/Makefile.in
diff -c /dev/null openafs/src/platform/IRIX/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/IRIX/Makefile.in	Tue Aug  1 17:54:25 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/LINUX/Makefile.in
diff -c /dev/null openafs/src/platform/LINUX/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/LINUX/Makefile.in	Tue Aug  1 17:54:25 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/NBSD/Makefile.in
diff -c /dev/null openafs/src/platform/NBSD/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/NBSD/Makefile.in	Tue Aug  1 17:54:25 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/OBSD/Makefile.in
diff -c /dev/null openafs/src/platform/OBSD/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/OBSD/Makefile.in	Tue Aug  1 17:54:26 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/platform/SOLARIS/Makefile.in
diff -c /dev/null openafs/src/platform/SOLARIS/Makefile.in:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:13 2006
--- openafs/src/platform/SOLARIS/Makefile.in	Tue Aug  1 17:54:26 2006
***************
*** 0 ****
--- 1,14 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ SHELL=/bin/sh
+ 
+ # We have no platform-specific stuff for this platform (yet).
+ all:
+ install:
+ dest:
+ clean:
Index: openafs/src/ptserver/Makefile.in
diff -c openafs/src/ptserver/Makefile.in:1.14.2.2 openafs/src/ptserver/Makefile.in:1.14.2.3
*** openafs/src/ptserver/Makefile.in:1.14.2.2	Tue Apr 26 21:55:54 2005
--- openafs/src/ptserver/Makefile.in	Mon Jul 31 13:07:50 2006
***************
*** 75,81 ****
  ptint.xdr.o: ptint.xdr.c ptint.h ptint.xg
  
  ptint.cs.c: ptint.xg
! 	${RXGEN} -x -C -o $@ ${srcdir}/ptint.xg
  
  ptint.ss.c: ptint.xg
  	${RXGEN} -x -S -o $@ ${srcdir}/ptint.xg
--- 75,81 ----
  ptint.xdr.o: ptint.xdr.c ptint.h ptint.xg
  
  ptint.cs.c: ptint.xg
! 	${RXGEN} -x -C -u -o $@ ${srcdir}/ptint.xg
  
  ptint.ss.c: ptint.xg
  	${RXGEN} -x -S -o $@ ${srcdir}/ptint.xg
***************
*** 84,90 ****
  	${RXGEN} -x -c -o $@ ${srcdir}/ptint.xg
  
  ptint.h: ptint.xg
! 	${RXGEN} -x -h -o $@ ${srcdir}/ptint.xg
  
  ptint.cs.c: ptint.h
  ptint.ss.c: ptint.h
--- 84,90 ----
  	${RXGEN} -x -c -o $@ ${srcdir}/ptint.xg
  
  ptint.h: ptint.xg
! 	${RXGEN} -x -h -u -o $@ ${srcdir}/ptint.xg
  
  ptint.cs.c: ptint.h
  ptint.ss.c: ptint.h
Index: openafs/src/ptserver/NTMakefile
diff -c openafs/src/ptserver/NTMakefile:1.9.2.3 openafs/src/ptserver/NTMakefile:1.9.2.4
*** openafs/src/ptserver/NTMakefile:1.9.2.3	Mon Jul 11 15:02:35 2005
--- openafs/src/ptserver/NTMakefile	Mon Jul 31 17:51:21 2006
***************
*** 10,15 ****
--- 10,16 ----
  RELDIR=ptserver
  !INCLUDE ..\config\NTMakefile.$(SYS_NAME)
  !include ..\config\NTMakefile.version
+ AFSDEV_AUXCDEFINES = -DAFS_USE_GETTIMEOFDAY
  
  ############################################################################
  # Definitions for installing header files
***************
*** 132,139 ****
  
  $(INCFILEDIR)\afs\ptint.h : ptint.h
  
! ptint.ss.c ptint.cs.c ptint.xdr.c ptint.h: ptint.xg
! 	$(RXGEN) -x $**
  
  ############################################################################
  # Definitions for generating files via COMPILE_ET
--- 133,149 ----
  
  $(INCFILEDIR)\afs\ptint.h : ptint.h
  
! ptint.cs.c: ptint.xg ptint.h
! 	$(RXGEN) -x -C -u -o $@ ptint.xg
! 
! ptint.ss.c: ptint.xg ptint.h
! 	$(RXGEN) -x -S -o $@ ptint.xg
! 
! ptint.xdr.c: ptint.xg ptint.h
! 	$(RXGEN) -x -c -o $@ ptint.xg
! 
! ptint.h: ptint.xg
! 	$(RXGEN) -x -h -u -o $@ ptint.xg
  
  ############################################################################
  # Definitions for generating files via COMPILE_ET
Index: openafs/src/ptserver/ptclient.c
diff -c openafs/src/ptserver/ptclient.c:1.12 openafs/src/ptserver/ptclient.c:1.12.2.2
*** openafs/src/ptserver/ptclient.c:1.12	Sun Dec  7 17:49:35 2003
--- openafs/src/ptserver/ptclient.c	Mon Jul 31 17:51:21 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptclient.c,v 1.12 2003/12/07 22:49:35 jaltman Exp $");
  
  #ifdef	AFS_AIX32_ENV
  #include <signal.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptclient.c,v 1.12.2.2 2006/07/31 21:51:21 shadow Exp $");
  
  #ifdef	AFS_AIX32_ENV
  #include <signal.h>
***************
*** 171,177 ****
      register afs_int32 code;
      char op[8];
      char name[PR_MAXNAMELEN];
!     afs_int32 id, oid, gid;
      afs_int32 pos;
      int i;
      struct prentry entry;
--- 171,177 ----
      register afs_int32 code;
      char op[8];
      char name[PR_MAXNAMELEN];
!     afs_int32 id, oid = ANONYMOUSID, gid;
      afs_int32 pos;
      int i;
      struct prentry entry;
***************
*** 267,273 ****
  	    /* use ubik_Call to do the work, finding an up server and handling
  	     * the job of finding a sync site, if need be */
  	    else
! 		code = ubik_Call(PR_INewEntry, pruclient, 0, name, id, oid);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %s %d %d", op, name, id, oid);
  	} else if (!strcmp(op, "sf")) {
--- 267,273 ----
  	    /* use ubik_Call to do the work, finding an up server and handling
  	     * the job of finding a sync site, if need be */
  	    else
! 		code = ubik_PR_INewEntry(pruclient, 0, name, id, oid);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %s %d %d", op, name, id, oid);
  	} else if (!strcmp(op, "sf")) {
***************
*** 277,283 ****
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_Call(PR_SetFieldsEntry, pruclient, 0, id, mask,
  			      access, gq, uq, 0, 0);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %d %x %x %d %d", op, id, mask,
--- 277,283 ----
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_PR_SetFieldsEntry(pruclient, 0, id, mask,
  			      access, gq, uq, 0, 0);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %d %x %x %d %d", op, id, mask,
***************
*** 290,296 ****
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_Call(PR_ChangeEntry, pruclient, 0, id, newname, oid,
  			      newid);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %d %s %d %d", op, id, newname,
--- 290,296 ----
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_PR_ChangeEntry(pruclient, 0, id, newname, oid,
  			      newid);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %d %s %d %d", op, id, newname,
***************
*** 300,306 ****
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_WhereIsIt, pruclient, 0, id, &pos);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    else
--- 300,306 ----
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_WhereIsIt(pruclient, 0, id, &pos);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    else
***************
*** 311,317 ****
  	    if (GetInt32(&pos))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_DumpEntry, pruclient, 0, pos, &entry);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
--- 311,317 ----
  	    if (GetInt32(&pos))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_DumpEntry(pruclient, 0, pos, &entry);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
***************
*** 332,338 ****
  	    if (GetInt32(&id) || GetInt32(&gid))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_AddToGroup, pruclient, 0, id, gid);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %d %d", op, id, gid);
  	} else if (!strcmp(op, "iton")) {
--- 332,338 ----
  	    if (GetInt32(&id) || GetInt32(&gid))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_AddToGroup(pruclient, 0, id, gid);
  	    if (CodeOk(code))
  		com_err(whoami, code, "on %s %d %d", op, id, gid);
  	} else if (!strcmp(op, "iton")) {
***************
*** 351,357 ****
  	    }
  	    lnames.namelist_val = 0;
  	    lnames.namelist_len = 0;
! 	    code = ubik_Call(PR_IDToName, pruclient, 0, &lid, &lnames);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
--- 351,357 ----
  	    }
  	    lnames.namelist_val = 0;
  	    lnames.namelist_len = 0;
! 	    code = ubik_PR_IDToName(pruclient, 0, &lid, &lnames);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
***************
*** 382,388 ****
  	    }
  	    lid.idlist_val = 0;
  	    lid.idlist_len = 0;
! 	    code = ubik_Call(PR_NameToID, pruclient, 0, &lnames, &lid);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
--- 382,388 ----
  	    }
  	    lid.idlist_val = 0;
  	    lid.idlist_len = 0;
! 	    code = ubik_PR_NameToID(pruclient, 0, &lnames, &lid);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
***************
*** 399,405 ****
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_Delete, pruclient, 0, id);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "dg")) {
--- 399,405 ----
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_Delete(pruclient, 0, id);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "dg")) {
***************
*** 407,413 ****
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_Delete, pruclient, 0, id);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "rm")) {
--- 407,413 ----
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_Delete(pruclient, 0, id);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "rm")) {
***************
*** 415,421 ****
  	    if (GetInt32(&id) || GetInt32(&gid))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_RemoveFromGroup, pruclient, 0, id, gid);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	}
--- 415,421 ----
  	    if (GetInt32(&id) || GetInt32(&gid))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_RemoveFromGroup(pruclient, 0, id, gid);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	}
***************
*** 428,434 ****
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_Call(PR_ListSuperGroups, pruclient, 0, id, &alist,
  			      &over);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
--- 428,434 ----
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_PR_ListSuperGroups(pruclient, 0, id, &alist,
  			      &over);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
***************
*** 453,459 ****
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_GetCPS, pruclient, 0, id, &alist, &over);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
--- 453,459 ----
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_GetCPS(pruclient, 0, id, &alist, &over);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS) {
***************
*** 480,486 ****
  		hostaddr = hostinfo->h_addr_list[0];
  		id = ntohl(hostaddr->s_addr);
  		code =
! 		    ubik_Call(PR_GetHostCPS, pruclient, 0, id, &alist, &over);
  	    }
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
--- 480,486 ----
  		hostaddr = hostinfo->h_addr_list[0];
  		id = ntohl(hostaddr->s_addr);
  		code =
! 		    ubik_PR_GetHostCPS(pruclient, 0, id, &alist, &over);
  	    }
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
***************
*** 506,512 ****
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_Call(PR_ListElements, pruclient, 0, id, &alist,
  			      &over);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
--- 506,512 ----
  		code = PRBADARG;
  	    else
  		code =
! 		    ubik_PR_ListElements(pruclient, 0, id, &alist,
  			      &over);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
***************
*** 539,551 ****
  	    if (GetString(name, sizeof(name)))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_NewEntry, pruclient, 0, name, 1, &id);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS)
  		printf("Id is %d.\n", id);
  	} else if (!strcmp(op, "lm")) {
! 	    code = ubik_Call(PR_ListMax, pruclient, 0, &id, &gid);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS)
--- 539,551 ----
  	    if (GetString(name, sizeof(name)))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_NewEntry(pruclient, 0, name, 1, oid, &id);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS)
  		printf("Id is %d.\n", id);
  	} else if (!strcmp(op, "lm")) {
! 	    code = ubik_PR_ListMax(pruclient, 0, &id, &gid);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	    if (code == PRSUCCESS)
***************
*** 556,562 ****
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_SetMax, pruclient, 0, id, 0);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "smg")) {
--- 556,562 ----
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_SetMax(pruclient, 0, id, 0);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "smg")) {
***************
*** 564,570 ****
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_Call(PR_SetMax, pruclient, 0, id, 1);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "sin")) {
--- 564,570 ----
  	    if (GetInt32(&id))
  		code = PRBADARG;
  	    else
! 		code = ubik_PR_SetMax(pruclient, 0, id, 1);
  	    if (CodeOk(code))
  		printf("%s\n", pr_ErrorMsg(code));
  	} else if (!strcmp(op, "sin")) {
***************
*** 609,615 ****
  /*		continue;*/
  	    }
  	    uentry.Mask = PRUPDATE_IDHASH;
! 	    code = ubik_Call(PR_UpdateEntry, pruclient, 0, 0, name, &uentry);
  	    if (code) {
  		printf("Failed to update entry %s (err=%d)\n", name, code);
  		continue;
--- 609,615 ----
  /*		continue;*/
  	    }
  	    uentry.Mask = PRUPDATE_IDHASH;
! 	    code = ubik_PR_UpdateEntry(pruclient, 0, 0, name, &uentry);
  	    if (code) {
  		printf("Failed to update entry %s (err=%d)\n", name, code);
  		continue;
***************
*** 637,643 ****
  	    }
  	    uentry.Mask = PRUPDATE_NAMEHASH;
  	    code =
! 		ubik_Call(PR_UpdateEntry, pruclient, 0, id, "_foo_", &uentry);
  	    if (code) {
  		printf("Failed to update entry with id %d (err=%d)\n", id,
  		       code);
--- 637,643 ----
  	    }
  	    uentry.Mask = PRUPDATE_NAMEHASH;
  	    code =
! 		ubik_PR_UpdateEntry(pruclient, 0, id, "_foo_", &uentry);
  	    if (code) {
  		printf("Failed to update entry with id %d (err=%d)\n", id,
  		       code);
***************
*** 667,673 ****
  /*		continue;*/
  	    }
  	    uentry.Mask = PRUPDATE_IDHASH;
! 	    code = ubik_Call(PR_UpdateEntry, pruclient, 0, 0, name, &uentry);
  	    if (code) {
  		printf("Failed to update entry %s (err=%d)\n", name, code);
  		continue;
--- 667,673 ----
  /*		continue;*/
  	    }
  	    uentry.Mask = PRUPDATE_IDHASH;
! 	    code = ubik_PR_UpdateEntry(pruclient, 0, 0, name, &uentry);
  	    if (code) {
  		printf("Failed to update entry %s (err=%d)\n", name, code);
  		continue;
***************
*** 695,701 ****
  	    }
  	    uentry.Mask = PRUPDATE_NAMEHASH;
  	    code =
! 		ubik_Call(PR_UpdateEntry, pruclient, 0, id, "_foo_", &uentry);
  	    if (code) {
  		printf("Failed to update entry with id %d (err=%d)\n", id,
  		       code);
--- 695,701 ----
  	    }
  	    uentry.Mask = PRUPDATE_NAMEHASH;
  	    code =
! 		ubik_PR_UpdateEntry(pruclient, 0, id, "_foo_", &uentry);
  	    if (code) {
  		printf("Failed to update entry with id %d (err=%d)\n", id,
  		       code);
Index: openafs/src/ptserver/ptprocs.c
diff -c openafs/src/ptserver/ptprocs.c:1.21.2.7 openafs/src/ptserver/ptprocs.c:1.21.2.8
*** openafs/src/ptserver/ptprocs.c:1.21.2.7	Mon Jul 11 15:54:50 2005
--- openafs/src/ptserver/ptprocs.c	Mon Jul 31 13:15:48 2006
***************
*** 51,57 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptprocs.c,v 1.21.2.7 2005/07/11 19:54:50 shadow Exp $");
  
  #include <afs/stds.h>
  #include <ctype.h>
--- 51,57 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptprocs.c,v 1.21.2.8 2006/07/31 17:15:48 shadow Exp $");
  
  #include <afs/stds.h>
  #include <ctype.h>
***************
*** 103,109 ****
  afs_int32 listSuperGroups();
  #endif
  
- static stolower();
  extern int IDCmp();
  
  extern int prp_group_default;
--- 103,108 ----
***************
*** 2229,2247 ****
      return code;
  }
  
- 
- static
- stolower(s)
-      register char *s;
- {
-     register int tc;
-     while ((tc = *s)) {
- 	if (isupper(tc))
- 	    *s = tolower(tc);
- 	s++;
-     }
- }
- 
  #if IP_WILDCARDS
  afs_int32
  addWildCards(tt, alist, host)
--- 2228,2233 ----
Index: openafs/src/ptserver/ptserver.c
diff -c openafs/src/ptserver/ptserver.c:1.21.2.4 openafs/src/ptserver/ptserver.c:1.21.2.7
*** openafs/src/ptserver/ptserver.c:1.21.2.4	Tue Feb 21 23:09:30 2006
--- openafs/src/ptserver/ptserver.c	Tue Jun 20 16:35:01 2006
***************
*** 1,3 ****
--- 1,4 ----
+ 
  /*
   * Copyright 2000, International Business Machines Corporation and others.
   * All Rights Reserved.
***************
*** 112,118 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptserver.c,v 1.21.2.4 2006/02/22 04:09:30 jaltman Exp $");
  
  #include <afs/stds.h>
  #ifdef	AFS_AIX32_ENV
--- 113,119 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptserver.c,v 1.21.2.7 2006/06/20 20:35:01 jaltman Exp $");
  
  #include <afs/stds.h>
  #ifdef	AFS_AIX32_ENV
***************
*** 167,172 ****
--- 168,177 ----
  
  int restricted = 0;
  int rxMaxMTU = -1;
+ int rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
  
  static struct afsconf_cell info;
  
***************
*** 222,227 ****
--- 227,233 ----
      int kerberosKeys;		/* set if found some keys */
      int lwps = 3;
      char clones[MAXHOSTSPERCELL];
+     afs_uint32 host = htonl(INADDR_ANY);
  
      const char *pr_dbaseName;
      char *whoami = "ptserver";
***************
*** 305,310 ****
--- 311,319 ----
  	else if (strncmp(arg, "-restricted", alen) == 0) {
  	    restricted = 1;
  	}
+ 	else if (strncmp(arg, "-rxbind", alen) == 0) {
+ 	    rxBind = 1;
+ 	}
  	else if (strncmp(arg, "-enable_peer_stats", alen) == 0) {
  	    rx_enablePeerRPCStats();
  	} else if (strncmp(arg, "-enable_process_stats", alen) == 0) {
***************
*** 374,389 ****
  		   "[-syslog[=FACILITY]] "
  		   "[-p <number of processes>] [-rebuild] "
  		   "[-groupdepth <depth>] "
! 		   "[-restricted] [-rxmaxmtu <bytes>]"
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-default_access default_user_access default_group_access] "
  		   "[-help]\n");
  #else /* AFS_NT40_ENV */
  	    printf("Usage: ptserver [-database <db path>] "
  		   "[-auditlog <log path>] "
! 		   "[-p <number of processes>] [-rebuild] "
  		   "[-default_access default_user_access default_group_access] "
! 		   "[-restricted] [-rxmaxmtu <bytes>]"
  		   "[-groupdepth <depth>] " "[-help]\n");
  #endif
  #else
--- 383,398 ----
  		   "[-syslog[=FACILITY]] "
  		   "[-p <number of processes>] [-rebuild] "
  		   "[-groupdepth <depth>] "
! 		   "[-restricted] [-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-default_access default_user_access default_group_access] "
  		   "[-help]\n");
  #else /* AFS_NT40_ENV */
  	    printf("Usage: ptserver [-database <db path>] "
  		   "[-auditlog <log path>] "
! 		   "[-p <number of processes>] [-rebuild] [-rxbind] "
  		   "[-default_access default_user_access default_group_access] "
! 		   "[-restricted] [-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-groupdepth <depth>] " "[-help]\n");
  #endif
  #else
***************
*** 394,406 ****
  		   "[-p <number of processes>] [-rebuild] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-default_access default_user_access default_group_access] "
! 		   "[-restricted] [-rxmaxmtu <bytes>]"
  		   "[-help]\n");
  #else /* AFS_NT40_ENV */
  	    printf("Usage: ptserver [-database <db path>] "
  		   "[-auditlog <log path>] "
  		   "[-default_access default_user_access default_group_access] "
! 		   "[-restricted] [-rxmaxmtu <bytes>]"
  		   "[-p <number of processes>] [-rebuild] " "[-help]\n");
  #endif
  #endif
--- 403,415 ----
  		   "[-p <number of processes>] [-rebuild] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-default_access default_user_access default_group_access] "
! 		   "[-restricted] [-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-help]\n");
  #else /* AFS_NT40_ENV */
  	    printf("Usage: ptserver [-database <db path>] "
  		   "[-auditlog <log path>] "
  		   "[-default_access default_user_access default_group_access] "
! 		   "[-restricted] [-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-p <number of processes>] [-rebuild] " "[-help]\n");
  #endif
  #endif
***************
*** 493,498 ****
--- 502,529 ----
       * and the header are in separate Ubik buffers then 120 buffers may be
       * required. */
      ubik_nBuffers = 120 + /*fudge */ 40;
+ 
+     if (rxBind) {
+ 	afs_int32 ccode;
+ #ifndef AFS_NT40_ENV
+ 	if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
+ 	    AFSDIR_SERVER_NETINFO_FILEPATH) {
+ 	    char reason[1024];
+ 	    ccode = parseNetFiles(SHostAddrs, NULL, NULL,
+ 					   ADDRSPERSITE, reason,
+ 					   AFSDIR_SERVER_NETINFO_FILEPATH,
+ 					   AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+ 	} else 
+ #endif
+ 	{
+ 	    ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
+ 	}
+ 	if (ccode == 1) {
+ 	    host = SHostAddrs[0];
+ 	    rx_InitHost(host, htons(AFSCONF_PROTPORT));
+ 	}
+     }
+ 
      code =
  	ubik_ServerInitByInfo(myHost, htons(AFSCONF_PROTPORT), &info, &clones,
  			      pr_dbaseName, &dbase);
***************
*** 519,525 ****
      }
  
      tservice =
! 	rx_NewService(0, PRSRV, "Protection Server", sc, 3,
  		      PR_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	fprintf(stderr, "ptserver: Could not create new rx service.\n");
--- 550,556 ----
      }
  
      tservice =
! 	rx_NewServiceHost(host, 0, PRSRV, "Protection Server", sc, 3,
  		      PR_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	fprintf(stderr, "ptserver: Could not create new rx service.\n");
***************
*** 529,535 ****
      rx_SetMaxProcs(tservice, lwps);
  
      tservice =
! 	rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", sc, 3,
  		      RXSTATS_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	fprintf(stderr, "ptserver: Could not create new rx service.\n");
--- 560,566 ----
      rx_SetMaxProcs(tservice, lwps);
  
      tservice =
! 	rx_NewServiceHost(host, 0, RX_STATS_SERVICE_ID, "rpcstats", sc, 3,
  		      RXSTATS_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	fprintf(stderr, "ptserver: Could not create new rx service.\n");
Index: openafs/src/ptserver/ptuser.c
diff -c openafs/src/ptserver/ptuser.c:1.16.2.6 openafs/src/ptserver/ptuser.c:1.16.2.12
*** openafs/src/ptserver/ptuser.c:1.16.2.6	Mon Jul 11 15:28:43 2005
--- openafs/src/ptserver/ptuser.c	Fri Oct 13 08:46:02 2006
***************
*** 15,21 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptuser.c,v 1.16.2.6 2005/07/11 19:28:43 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
--- 15,21 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/ptserver/ptuser.c,v 1.16.2.12 2006/10/13 12:46:02 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
***************
*** 71,77 ****
      afs_int32 code;
      struct rx_connection *serverconns[MAXSERVERS];
      struct rx_securityClass *sc[3];
!     static struct afsconf_dir *tdir = (struct afsconf_dir *)0;	/* only do this once */
      static char tconfDir[100] = "";
      static char tcell[64] = "";
      struct ktc_token ttoken;
--- 71,77 ----
      afs_int32 code;
      struct rx_connection *serverconns[MAXSERVERS];
      struct rx_securityClass *sc[3];
!     static struct afsconf_dir *tdir = (struct afsconf_dir *)NULL;	/* only do this once */
      static char tconfDir[100] = "";
      static char tcell[64] = "";
      struct ktc_token ttoken;
***************
*** 117,132 ****
      }
  #endif /* defined(UKERNEL) */
  
!     if (tdir == 0 || strcmp(confDir, tconfDir) || strcmp(cell, tcell)) {
  	/*
  	 * force re-evaluation.  we either don't have an afsconf_dir,
           * the directory has changed or the cell has changed.
  	 */
  	if (tdir && !gottdir) {
  	    afsconf_Close(tdir);
!             tdir = (struct afsconf_dir *)0;
          }
! 	pruclient = (struct ubik_client *)0;
          refresh = 1;
      }
  
--- 117,132 ----
      }
  #endif /* defined(UKERNEL) */
  
!     if (tdir == NULL || strcmp(confDir, tconfDir) || strcmp(cell, tcell)) {
  	/*
  	 * force re-evaluation.  we either don't have an afsconf_dir,
           * the directory has changed or the cell has changed.
  	 */
  	if (tdir && !gottdir) {
  	    afsconf_Close(tdir);
!             tdir = (struct afsconf_dir *)NULL;
          }
! 	pruclient = (struct ubik_client *)NULL;
          refresh = 1;
      }
  
***************
*** 163,170 ****
       * want, don't get a new one. Unless the security level is 2 in
       * which case we will get one (and re-read the key file).
       */
!     if (pruclient && (lastLevel == secLevel) && (secLevel != 2))
  	return 0;
  
      code = rx_Init(0);
      if (code) {
--- 163,171 ----
       * want, don't get a new one. Unless the security level is 2 in
       * which case we will get one (and re-read the key file).
       */
!     if (pruclient && (lastLevel == secLevel) && (secLevel != 2)) {
  	return 0;
+     }
  
      code = rx_Init(0);
      if (code) {
***************
*** 216,221 ****
--- 217,223 ----
  					      ttoken.ticket);
  	}
      }
+ 
      if (scIndex == 1)
  	return PRBADARG;
      if ((scIndex == 0) && (sc[0] == 0))
***************
*** 263,272 ****
  
      stolower(name);
      if (*id) {
! 	code = ubik_Call(PR_INewEntry, pruclient, 0, name, *id, 0);
  	return code;
      } else {
! 	code = ubik_Call(PR_NewEntry, pruclient, 0, name, 0, 0, id);
  	return code;
      }
  
--- 265,274 ----
  
      stolower(name);
      if (*id) {
! 	code = ubik_PR_INewEntry(pruclient, 0, name, *id, 0);
  	return code;
      } else {
! 	code = ubik_PR_NewEntry(pruclient, 0, name, 0, 0, id);
  	return code;
      }
  
***************
*** 289,298 ****
      }
      flags |= PRGRP;
      if (*id) {
! 	code = ubik_Call(PR_INewEntry, pruclient, 0, name, *id, oid);
  	return code;
      } else {
! 	code = ubik_Call(PR_NewEntry, pruclient, 0, name, flags, oid, id);
  	return code;
      }
  }
--- 291,300 ----
      }
      flags |= PRGRP;
      if (*id) {
! 	code = ubik_PR_INewEntry(pruclient, 0, name, *id, oid);
  	return code;
      } else {
! 	code = ubik_PR_NewEntry(pruclient, 0, name, flags, oid, id);
  	return code;
      }
  }
***************
*** 309,315 ****
  	return code;
      if (id == ANONYMOUSID)
  	return PRNOENT;
!     code = ubik_Call(PR_Delete, pruclient, 0, id);
      return code;
  }
  
--- 311,317 ----
  	return code;
      if (id == ANONYMOUSID)
  	return PRNOENT;
!     code = ubik_PR_Delete(pruclient, 0, id);
      return code;
  }
  
***************
*** 318,324 ****
  {
      register afs_int32 code;
  
!     code = ubik_Call(PR_Delete, pruclient, 0, id);
      return code;
  }
  
--- 320,326 ----
  {
      register afs_int32 code;
  
!     code = ubik_PR_Delete(pruclient, 0, id);
      return code;
  }
  
***************
*** 345,351 ****
  	goto done;
      }
      code =
! 	ubik_Call(PR_AddToGroup, pruclient, 0, lids.idlist_val[0],
  		  lids.idlist_val[1]);
    done:
      if (lnames.namelist_val)
--- 347,353 ----
  	goto done;
      }
      code =
! 	ubik_PR_AddToGroup(pruclient, 0, lids.idlist_val[0],
  		  lids.idlist_val[1]);
    done:
      if (lnames.namelist_val)
***************
*** 378,384 ****
  	goto done;
      }
      code =
! 	ubik_Call(PR_RemoveFromGroup, pruclient, 0, lids.idlist_val[0],
  		  lids.idlist_val[1]);
    done:
      if (lnames.namelist_val)
--- 380,386 ----
  	goto done;
      }
      code =
! 	ubik_PR_RemoveFromGroup(pruclient, 0, lids.idlist_val[0],
  		  lids.idlist_val[1]);
    done:
      if (lnames.namelist_val)
***************
*** 397,403 ****
  
      for (i = 0; i < names->namelist_len; i++)
  	stolower(names->namelist_val[i]);
!     code = ubik_Call(PR_NameToID, pruclient, 0, names, ids);
      return code;
  }
  
--- 399,405 ----
  
      for (i = 0; i < names->namelist_len; i++)
  	stolower(names->namelist_val[i]);
!     code = ubik_PR_NameToID(pruclient, 0, names, ids);
      return code;
  }
  
***************
*** 414,420 ****
      lnames.namelist_val = (prname *) malloc(PR_MAXNAMELEN);
      stolower(name);
      strncpy(lnames.namelist_val[0], name, PR_MAXNAMELEN);
!     code = ubik_Call(PR_NameToID, pruclient, 0, &lnames, &lids);
      if (lids.idlist_val) {
  	*id = *lids.idlist_val;
  	free(lids.idlist_val);
--- 416,422 ----
      lnames.namelist_val = (prname *) malloc(PR_MAXNAMELEN);
      stolower(name);
      strncpy(lnames.namelist_val[0], name, PR_MAXNAMELEN);
!     code = ubik_PR_NameToID(pruclient, 0, &lnames, &lids);
      if (lids.idlist_val) {
  	*id = *lids.idlist_val;
  	free(lids.idlist_val);
***************
*** 429,435 ****
  {
      register afs_int32 code;
  
!     code = ubik_Call(PR_IDToName, pruclient, 0, ids, names);
      return code;
  }
  
--- 431,437 ----
  {
      register afs_int32 code;
  
!     code = ubik_PR_IDToName(pruclient, 0, ids, names);
      return code;
  }
  
***************
*** 445,451 ****
      *lids.idlist_val = id;
      lnames.namelist_len = 0;
      lnames.namelist_val = 0;
!     code = ubik_Call(PR_IDToName, pruclient, 0, &lids, &lnames);
      if (lnames.namelist_val) {
  	strncpy(name, lnames.namelist_val[0], PR_MAXNAMELEN);
  	free(lnames.namelist_val);
--- 447,453 ----
      *lids.idlist_val = id;
      lnames.namelist_len = 0;
      lnames.namelist_val = 0;
!     code = ubik_PR_IDToName(pruclient, 0, &lids, &lnames);
      if (lnames.namelist_val) {
  	strncpy(name, lnames.namelist_val[0], PR_MAXNAMELEN);
  	free(lnames.namelist_val);
***************
*** 462,468 ****
      afs_int32 over;
  
      over = 0;
!     code = ubik_Call(PR_GetCPS, pruclient, 0, id, CPS, &over);
      if (code != PRSUCCESS)
  	return code;
      if (over) {
--- 464,470 ----
      afs_int32 over;
  
      over = 0;
!     code = ubik_PR_GetCPS(pruclient, 0, id, CPS, &over);
      if (code != PRSUCCESS)
  	return code;
      if (over) {
***************
*** 481,487 ****
      afs_int32 over;
  
      over = 0;
!     code = ubik_Call(PR_GetCPS2, pruclient, 0, id, host, CPS, &over);
      if (code != PRSUCCESS)
  	return code;
      if (over) {
--- 483,489 ----
      afs_int32 over;
  
      over = 0;
!     code = ubik_PR_GetCPS2(pruclient, 0, id, host, CPS, &over);
      if (code != PRSUCCESS)
  	return code;
      if (over) {
***************
*** 500,506 ****
      afs_int32 over;
  
      over = 0;
!     code = ubik_Call(PR_GetHostCPS, pruclient, 0, host, CPS, &over);
      if (code != PRSUCCESS)
  	return code;
      if (over) {
--- 502,508 ----
      afs_int32 over;
  
      over = 0;
!     code = ubik_PR_GetHostCPS(pruclient, 0, host, CPS, &over);
      if (code != PRSUCCESS)
  	return code;
      if (over) {
***************
*** 537,543 ****
  
      alist.prlist_len = 0;
      alist.prlist_val = 0;
!     code = ubik_Call(PR_ListOwned, pruclient, 0, oid, &alist, moreP);
      if (code)
  	return code;
      if (*moreP == 1) {
--- 539,545 ----
  
      alist.prlist_len = 0;
      alist.prlist_val = 0;
!     code = ubik_PR_ListOwned(pruclient, 0, oid, &alist, moreP);
      if (code)
  	return code;
      if (*moreP == 1) {
***************
*** 565,571 ****
  
      alist.prlist_len = 0;
      alist.prlist_val = 0;
!     code = ubik_Call(PR_ListElements, pruclient, 0, gid, &alist, &over);
      if (code)
  	return code;
      if (over) {
--- 567,573 ----
  
      alist.prlist_len = 0;
      alist.prlist_val = 0;
!     code = ubik_PR_ListElements(pruclient, 0, gid, &alist, &over);
      if (code)
  	return code;
      if (over) {
***************
*** 586,592 ****
  {
      register afs_int32 code;
  
!     code = ubik_Call(PR_ListEntry, pruclient, 0, id, aentry);
      return code;
  }
  
--- 588,594 ----
  {
      register afs_int32 code;
  
!     code = ubik_PR_ListEntry(pruclient, 0, id, aentry);
      return code;
  }
  
***************
*** 603,609 ****
      bulkentries.prentries_len = 0;
  
      code =
! 	ubik_Call(PR_ListEntries, pruclient, 0, flag, startindex,
  		  &bulkentries, nextstartindex);
      *nentries = bulkentries.prentries_len;
      *entries = bulkentries.prentries_val;
--- 605,611 ----
      bulkentries.prentries_len = 0;
  
      code =
! 	ubik_PR_ListEntries(pruclient, 0, flag, startindex,
  		  &bulkentries, nextstartindex);
      *nentries = bulkentries.prentries_len;
      *entries = bulkentries.prentries_val;
***************
*** 622,628 ****
  	return code;
      if (*id == ANONYMOUSID)
  	return PRNOENT;
!     code = ubik_Call(PR_ListEntry, pruclient, 0, *id, &aentry);
      if (code)
  	return code;
      /* this should be done in one RPC, but I'm lazy. */
--- 624,630 ----
  	return code;
      if (*id == ANONYMOUSID)
  	return PRNOENT;
!     code = ubik_PR_ListEntry(pruclient, 0, *id, &aentry);
      if (code)
  	return code;
      /* this should be done in one RPC, but I'm lazy. */
***************
*** 647,653 ****
  	return code;
      if (id == ANONYMOUSID)
  	return PRNOENT;
!     code = ubik_Call(PR_ListEntry, pruclient, 0, id, &aentry);
      if (code)
  	return code;
      /* this should be done in one RPC, but I'm lazy. */
--- 649,655 ----
  	return code;
      if (id == ANONYMOUSID)
  	return PRNOENT;
!     code = ubik_PR_ListEntry(pruclient, 0, id, &aentry);
      if (code)
  	return code;
      /* this should be done in one RPC, but I'm lazy. */
***************
*** 679,685 ****
  	if (oid == ANONYMOUSID)
  	    return PRNOENT;
      }
!     code = ubik_Call(PR_ChangeEntry, pruclient, 0, id, newname, oid, newid);
      return code;
  }
  
--- 681,687 ----
  	if (oid == ANONYMOUSID)
  	    return PRNOENT;
      }
!     code = ubik_PR_ChangeEntry(pruclient, 0, id, newname, oid, *newid);
      return code;
  }
  
***************
*** 707,713 ****
  	return code;
      }
      code =
! 	ubik_Call(PR_IsAMemberOf, pruclient, 0, lids.idlist_val[0],
  		  lids.idlist_val[1], flag);
      if (lnames.namelist_val)
  	free(lnames.namelist_val);
--- 709,715 ----
  	return code;
      }
      code =
! 	ubik_PR_IsAMemberOf(pruclient, 0, lids.idlist_val[0],
  		  lids.idlist_val[1], flag);
      if (lnames.namelist_val)
  	free(lnames.namelist_val);
***************
*** 721,727 ****
  {
      register afs_int32 code;
      afs_int32 gid;
!     code = ubik_Call(PR_ListMax, pruclient, 0, mid, &gid);
      return code;
  }
  
--- 723,729 ----
  {
      register afs_int32 code;
      afs_int32 gid;
!     code = ubik_PR_ListMax(pruclient, 0, mid, &gid);
      return code;
  }
  
***************
*** 730,736 ****
  {
      register afs_int32 code;
      afs_int32 flag = 0;
!     code = ubik_Call(PR_SetMax, pruclient, 0, mid, flag);
      return code;
  }
  
--- 732,738 ----
  {
      register afs_int32 code;
      afs_int32 flag = 0;
!     code = ubik_PR_SetMax(pruclient, 0, mid, flag);
      return code;
  }
  
***************
*** 739,745 ****
  {
      register afs_int32 code;
      afs_int32 id;
!     code = ubik_Call(PR_ListMax, pruclient, 0, &id, mid);
      return code;
  }
  
--- 741,747 ----
  {
      register afs_int32 code;
      afs_int32 id;
!     code = ubik_PR_ListMax(pruclient, 0, &id, mid);
      return code;
  }
  
***************
*** 750,756 ****
      afs_int32 flag = 0;
  
      flag |= PRGRP;
!     code = ubik_Call(PR_SetMax, pruclient, 0, mid, flag);
      return code;
  }
  
--- 752,758 ----
      afs_int32 flag = 0;
  
      flag |= PRGRP;
!     code = ubik_PR_SetMax(pruclient, 0, mid, flag);
      return code;
  }
  
***************
*** 760,777 ****
      register afs_int32 code;
  
      code =
! 	ubik_Call(PR_SetFieldsEntry, pruclient, 0, id, mask, flags, ngroups,
  		  nusers, 0, 0);
      return code;
  }
- 
- int
- stolower(char *s)
- {
-     while (*s) {
- 	if (isupper(*s))
- 	    *s = tolower(*s);
- 	s++;
-     }
-     return 0;
- }
--- 762,768 ----
      register afs_int32 code;
  
      code =
! 	ubik_PR_SetFieldsEntry(pruclient, 0, id, mask, flags, ngroups,
  		  nusers, 0, 0);
      return code;
  }
Index: openafs/src/rx/rx.c
diff -c openafs/src/rx/rx.c:1.58.2.30 openafs/src/rx/rx.c:1.58.2.35
*** openafs/src/rx/rx.c:1.58.2.30	Tue Nov 29 02:01:50 2005
--- openafs/src/rx/rx.c	Sun Aug 13 12:41:54 2006
***************
*** 17,23 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx.c,v 1.58.2.30 2005/11/29 07:01:50 jaltman Exp $");
  
  #ifdef KERNEL
  #include "afs/sysincludes.h"
--- 17,23 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx.c,v 1.58.2.35 2006/08/13 16:41:54 shadow Exp $");
  
  #ifdef KERNEL
  #include "afs/sysincludes.h"
***************
*** 441,450 ****
      if (!uniprocessor)
  	rx_sleepLock = alloc_spinlock(LAST_HELD_ORDER - 10, "rx_sleepLock");
  #endif /* KERNEL && AFS_HPUX110_ENV */
- #else /* RX_ENABLE_LOCKS */
- #if defined(KERNEL) && defined(AFS_GLOBAL_SUNLOCK) && !defined(AFS_HPUX_ENV) && !defined(AFS_OBSD_ENV)
-     mutex_init(&afs_rxglobal_lock, "afs_rxglobal_lock", MUTEX_DEFAULT, NULL);
- #endif /* AFS_GLOBAL_SUNLOCK */
  #endif /* RX_ENABLE_LOCKS */
  
      rxi_nCalls = 0;
--- 441,446 ----
***************
*** 1259,1267 ****
                           service name might be used for probing for
                           statistics) */
  struct rx_service *
! rx_NewService(u_short port, u_short serviceId, char *serviceName,
! 	      struct rx_securityClass **securityObjects, int nSecurityObjects,
! 	      afs_int32(*serviceProc) (struct rx_call * acall))
  {
      osi_socket socket = OSI_NULLSOCKET;
      register struct rx_service *tservice;
--- 1255,1264 ----
                           service name might be used for probing for
                           statistics) */
  struct rx_service *
! rx_NewServiceHost(afs_uint32 host, u_short port, u_short serviceId, 
! 		  char *serviceName, struct rx_securityClass **securityObjects,
! 		  int nSecurityObjects, 
! 		  afs_int32(*serviceProc) (struct rx_call * acall))
  {
      osi_socket socket = OSI_NULLSOCKET;
      register struct rx_service *tservice;
***************
*** 1292,1298 ****
      for (i = 0; i < RX_MAX_SERVICES; i++) {
  	register struct rx_service *service = rx_services[i];
  	if (service) {
! 	    if (port == service->servicePort) {
  		if (service->serviceId == serviceId) {
  		    /* The identical service has already been
  		     * installed; if the caller was intending to
--- 1289,1295 ----
      for (i = 0; i < RX_MAX_SERVICES; i++) {
  	register struct rx_service *service = rx_services[i];
  	if (service) {
! 	    if (port == service->servicePort && host == service->serviceHost) {
  		if (service->serviceId == serviceId) {
  		    /* The identical service has already been
  		     * installed; if the caller was intending to
***************
*** 1313,1319 ****
  	    if (socket == OSI_NULLSOCKET) {
  		/* If we don't already have a socket (from another
  		 * service on same port) get a new one */
! 		socket = rxi_GetHostUDPSocket(htonl(INADDR_ANY), port);
  		if (socket == OSI_NULLSOCKET) {
  		    USERPRI;
  		    rxi_FreeService(tservice);
--- 1310,1316 ----
  	    if (socket == OSI_NULLSOCKET) {
  		/* If we don't already have a socket (from another
  		 * service on same port) get a new one */
! 		socket = rxi_GetHostUDPSocket(host, port);
  		if (socket == OSI_NULLSOCKET) {
  		    USERPRI;
  		    rxi_FreeService(tservice);
***************
*** 1322,1327 ****
--- 1319,1325 ----
  	    }
  	    service = tservice;
  	    service->socket = socket;
+ 	    service->serviceHost = host;
  	    service->servicePort = port;
  	    service->serviceId = serviceId;
  	    service->serviceName = serviceName;
***************
*** 1345,1350 ****
--- 1343,1356 ----
      return 0;
  }
  
+ struct rx_service *
+ rx_NewService(u_short port, u_short serviceId, char *serviceName,
+ 	      struct rx_securityClass **securityObjects, int nSecurityObjects,
+ 	      afs_int32(*serviceProc) (struct rx_call * acall))
+ {
+     return rx_NewServiceHost(htonl(INADDR_ANY), port, serviceId, serviceName, securityObjects, nSecurityObjects, serviceProc);
+ }
+ 
  /* Generic request processing loop. This routine should be called
   * by the implementation dependent rx_ServerProc. If socketp is
   * non-null, it will be set to the file descriptor that this thread
***************
*** 2015,2020 ****
--- 2021,2030 ----
      }
      rxi_flushtrace();
  
+ #ifdef AFS_NT40_ENV
+     afs_winsockCleanup();
+ #endif
+ 
      rxinit_status = 1;
      UNLOCK_RX_INIT;
  }
***************
*** 3554,3559 ****
--- 3564,3572 ----
  	if (serial
  	    && (tp->header.serial == serial || tp->firstSerial == serial))
  	    rxi_ComputePeerNetStats(call, tp, ap, np);
+ 	if (!(tp->flags & RX_PKTFLAG_ACKED)) {
+ 	    newAckCount++;
+ 	}
  #ifdef	AFS_GLOBAL_RXLOCK_KERNEL
  	/* XXX Hack. Because we have to release the global rx lock when sending
  	 * packets (osi_NetSend) we drop all acks while we're traversing the tq
***************
*** 3564,3572 ****
  	 * set the ack bits in the packets and have rxi_Start remove the packets
  	 * when it's done transmitting.
  	 */
- 	if (!(tp->flags & RX_PKTFLAG_ACKED)) {
- 	    newAckCount++;
- 	}
  	if (call->flags & RX_CALL_TQ_BUSY) {
  #ifdef RX_ENABLE_LOCKS
  	    tp->flags |= RX_PKTFLAG_ACKED;
--- 3577,3582 ----
***************
*** 3700,3709 ****
  	 * be unable to accept packets of the size that prior AFS versions would
  	 * send without asking.  */
  	if (peer->maxMTU != tSize) {
  	    peer->maxMTU = tSize;
  	    peer->MTU = MIN(tSize, peer->MTU);
  	    call->MTU = MIN(call->MTU, tSize);
- 	    peer->congestSeq++;
  	}
  
  	if (np->length == rx_AckDataSize(ap->nAcks) + 3 * sizeof(afs_int32)) {
--- 3710,3720 ----
  	 * be unable to accept packets of the size that prior AFS versions would
  	 * send without asking.  */
  	if (peer->maxMTU != tSize) {
+ 	    if (peer->maxMTU > tSize) /* possible cong., maxMTU decreased */
+ 		peer->congestSeq++;
  	    peer->maxMTU = tSize;
  	    peer->MTU = MIN(tSize, peer->MTU);
  	    call->MTU = MIN(call->MTU, tSize);
  	}
  
  	if (np->length == rx_AckDataSize(ap->nAcks) + 3 * sizeof(afs_int32)) {
Index: openafs/src/rx/rx.h
diff -c openafs/src/rx/rx.h:1.22.2.4 openafs/src/rx/rx.h:1.22.2.5
*** openafs/src/rx/rx.h:1.22.2.4	Wed Sep 14 01:12:45 2005
--- openafs/src/rx/rx.h	Mon Jun 12 17:53:43 2006
***************
*** 295,300 ****
--- 295,301 ----
  
  struct rx_service {
      u_short serviceId;		/* Service number */
+     afs_uint32 serviceHost;	/* IP address for this service */
      u_short servicePort;	/* UDP port for this service */
      char *serviceName;		/* Name of the service */
      osi_socket socket;		/* socket structure or file descriptor */
Index: openafs/src/rx/rx_clock_nt.c
diff -c openafs/src/rx/rx_clock_nt.c:1.9.2.3 openafs/src/rx/rx_clock_nt.c:1.9.2.4
*** openafs/src/rx/rx_clock_nt.c:1.9.2.3	Sun Mar  5 22:05:02 2006
--- openafs/src/rx/rx_clock_nt.c	Mon Jul 31 17:51:21 2006
***************
*** 14,20 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_clock_nt.c,v 1.9.2.3 2006/03/06 03:05:02 jaltman Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <stdio.h>
--- 14,20 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_clock_nt.c,v 1.9.2.4 2006/07/31 21:51:21 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <stdio.h>
***************
*** 23,37 ****
  #include <winbase.h>
  #include "rx_clock.h"
  
- void clock_UpdateTime(void);	/* forward reference */
- 
  struct clock clock_now;		/* The last elapsed time ready by clock_GetTimer */
  
  /* This is set to 1 whenever the time is read, and reset to 0 whenever
   * clock_NewTime is called.  This is to allow the caller to control the
   * frequency with which the actual time is re-evaluated.
   */
! int clock_haveCurrentTime;
  
  int clock_nUpdates;		/* The actual number of clock updates */
  static int clockInitialized = 0;
--- 23,36 ----
  #include <winbase.h>
  #include "rx_clock.h"
  
  struct clock clock_now;		/* The last elapsed time ready by clock_GetTimer */
  
  /* This is set to 1 whenever the time is read, and reset to 0 whenever
   * clock_NewTime is called.  This is to allow the caller to control the
   * frequency with which the actual time is re-evaluated.
   */
! #undef clock_haveCurrentTime
! int clock_haveCurrentTime = 0;
  
  int clock_nUpdates;		/* The actual number of clock updates */
  static int clockInitialized = 0;
***************
*** 43,48 ****
--- 42,48 ----
  #undef clock_UpdateTime
  void clock_UpdateTime(void);
  
+ #undef clock_Init
  void
  clock_Init(void)
  {
Index: openafs/src/rx/rx_getaddr.c
diff -c openafs/src/rx/rx_getaddr.c:1.15.2.7 openafs/src/rx/rx_getaddr.c:1.15.2.13
*** openafs/src/rx/rx_getaddr.c:1.15.2.7	Tue Sep 20 20:34:13 2005
--- openafs/src/rx/rx_getaddr.c	Wed Oct 11 07:29:02 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_getaddr.c,v 1.15.2.7 2005/09/21 00:34:13 shadow Exp $");
  
  #ifndef AFS_DJGPP_ENV
  #ifndef KERNEL
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_getaddr.c,v 1.15.2.13 2006/10/11 11:29:02 jaltman Exp $");
  
  #ifndef AFS_DJGPP_ENV
  #ifndef KERNEL
***************
*** 140,146 ****
  */
  #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
  int
! rx_getAllAddr(afs_int32 buffer[], int maxSize)
  {
      size_t needed;
      int mib[6];
--- 140,146 ----
  */
  #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
  int
! rx_getAllAddr_internal(afs_int32 buffer[], int maxSize, int loopbacks)
  {
      size_t needed;
      int mib[6];
***************
*** 189,197 ****
  	}
  	if ((ifm->ifm_flags & IFF_UP) == 0)
  	    continue;		/* not up */
- 	if (ifm->ifm_flags & IFF_LOOPBACK) {
- 	    continue;		/* skip aliased loopbacks as well. */
- 	}
  	while (addrcount > 0) {
  	    struct sockaddr_in *a;
  
--- 189,194 ----
***************
*** 207,213 ****
  	    if (count >= maxSize)	/* no more space */
  		dpf(("Too many interfaces..ignoring 0x%x\n",
  		       a->sin_addr.s_addr));
! 	    else
  		buffer[count++] = a->sin_addr.s_addr;
  	    addrcount--;
  	    ifam = (struct ifa_msghdr *)((char *)ifam + ifam->ifam_msglen);
--- 204,216 ----
  	    if (count >= maxSize)	/* no more space */
  		dpf(("Too many interfaces..ignoring 0x%x\n",
  		       a->sin_addr.s_addr));
! 	    else if (!loopbacks && a->sin_addr.s_addr == htonl(0x7f000001)) {
! 		addrcount--;
! 		continue;	/* skip loopback address as well. */
! 	    } else if (loopbacks && ifm->ifm_flags & IFF_LOOPBACK) {
! 		addrcount--;
! 		continue;	/* skip aliased loopbacks as well. */
! 	    } else
  		buffer[count++] = a->sin_addr.s_addr;
  	    addrcount--;
  	    ifam = (struct ifa_msghdr *)((char *)ifam + ifam->ifam_msglen);
***************
*** 230,236 ****
      struct sockaddr_dl *sdl;
      struct rt_addrinfo info;
      char *buf, *lim, *next;
!     int count = 0, addrcount = 0;
  
      mib[0] = CTL_NET;
      mib[1] = PF_ROUTE;
--- 233,239 ----
      struct sockaddr_dl *sdl;
      struct rt_addrinfo info;
      char *buf, *lim, *next;
!     int count = 0, addrcount = 0, i;
  
      mib[0] = CTL_NET;
      mib[1] = PF_ROUTE;
***************
*** 298,304 ****
  			maskBuffer[count] = a->sin_addr.s_addr;
  		    else
  			maskBuffer[count] = htonl(0xffffffff);
! 		    memset(&ifr, sizeof(ifr), 0);
  		    ifr.ifr_addr.sa_family = AF_INET;
  		    strncpy(ifr.ifr_name, sdl->sdl_data, sdl->sdl_nlen);
  		    if (ioctl(s, SIOCGIFMTU, (caddr_t) & ifr) < 0)
--- 301,307 ----
  			maskBuffer[count] = a->sin_addr.s_addr;
  		    else
  			maskBuffer[count] = htonl(0xffffffff);
! 		    memset(&ifr, 0, sizeof(ifr));
  		    ifr.ifr_addr.sa_family = AF_INET;
  		    strncpy(ifr.ifr_name, sdl->sdl_data, sdl->sdl_nlen);
  		    if (ioctl(s, SIOCGIFMTU, (caddr_t) & ifr) < 0)
***************
*** 315,320 ****
--- 318,333 ----
      free(buf);
      return count;
  }
+ 
+ 
+ int
+ rx_getAllAddr(afs_int32 buffer[], int maxSize)
+ {
+     return rx_getAllAddr_internal(buffer, maxSize, 0);
+ }
+ /* this function returns the total number of interface addresses
+ ** the buffer has to be passed in by the caller
+ */
  #else
  static int
  rx_getAllAddr_internal(afs_int32 buffer[], int maxSize, int loopbacks)
***************
*** 418,424 ****
  #endif
  
  #if !defined(AFS_USERSPACE_IP_ADDR)
!     count = rx_getAllAddr_internal(addrBuffer, 1024, 1);
      for (i = 0; i < count; i++) {
  	maskBuffer[i] = htonl(0xffffffff);
  	mtuBuffer[i] = htonl(1500);
--- 431,437 ----
  #endif
  
  #if !defined(AFS_USERSPACE_IP_ADDR)
!     count = rx_getAllAddr_internal(addrBuffer, 1024, 0);
      for (i = 0; i < count; i++) {
  	maskBuffer[i] = htonl(0xffffffff);
  	mtuBuffer[i] = htonl(1500);
Index: openafs/src/rx/rx_globals.c
diff -c openafs/src/rx/rx_globals.c:1.8.2.1 openafs/src/rx/rx_globals.c:1.8.2.2
*** openafs/src/rx/rx_globals.c:1.8.2.1	Tue Dec  7 01:10:06 2004
--- openafs/src/rx/rx_globals.c	Mon Jul 31 17:51:21 2006
***************
*** 26,39 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_globals.c,v 1.8.2.1 2004/12/07 06:10:06 shadow Exp $");
  
  /* Enable data initialization when the header file is included */
  #define INIT(stuff) = stuff
  #if defined(AFS_NT40_ENV) && defined(AFS_PTHREAD_ENV)
  #define EXT __declspec(dllexport)
  #else
  #define EXT
  #endif
  
  #ifdef KERNEL
--- 26,41 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_globals.c,v 1.8.2.2 2006/07/31 21:51:21 shadow Exp $");
  
  /* Enable data initialization when the header file is included */
  #define INIT(stuff) = stuff
  #if defined(AFS_NT40_ENV) && defined(AFS_PTHREAD_ENV)
  #define EXT __declspec(dllexport)
+ #define EXT2 __declspec(dllexport)
  #else
  #define EXT
+ #define EXT2 
  #endif
  
  #ifdef KERNEL
Index: openafs/src/rx/rx_globals.h
diff -c openafs/src/rx/rx_globals.h:1.9.2.10 openafs/src/rx/rx_globals.h:1.9.2.12
*** openafs/src/rx/rx_globals.h:1.9.2.10	Thu Sep 15 22:28:50 2005
--- openafs/src/rx/rx_globals.h	Mon Jul 31 17:51:21 2006
***************
*** 21,31 ****
  
  #ifndef INIT
  #define INIT(x)
! #if defined(AFS_NT40_ENV) && defined(AFS_PTHREAD_ENV)
  #define EXT __declspec(dllimport) extern
  #else
  #define	EXT extern
  #endif
  #endif /* !INIT */
  
  /* Basic socket for client requests; other sockets (for receiving server requests) are in the service structures */
--- 21,37 ----
  
  #ifndef INIT
  #define INIT(x)
! #if defined(AFS_NT40_ENV)
! #if defined(AFS_PTHREAD_ENV)
  #define EXT __declspec(dllimport) extern
  #else
  #define	EXT extern
  #endif
+ #define EXT2 __declspec(dllimport) extern
+ #else
+ #define EXT2 extern
+ #define EXT extern
+ #endif
  #endif /* !INIT */
  
  /* Basic socket for client requests; other sockets (for receiving server requests) are in the service structures */
***************
*** 510,516 ****
--- 516,526 ----
  #ifdef AFS_NT40_ENV
  #define dpf(args) rxi_DebugPrint args; 
  #else
+ #ifdef DPF_FSLOG
+ #define dpf(args) FSLog args
+ #else
  #define dpf(args) if (rx_debugFile) rxi_DebugPrint args; else
+ #endif 
  #endif
  #define rx_Log_event rxevent_debugFile
  
***************
*** 563,569 ****
  EXT afs_kmutex_t rx_stats_mutex;	/* used to activate stats gathering */
  #endif
  
! EXT int rx_enable_stats INIT(0);
  
  /*
   * Set this flag to enable the listener thread to trade places with an idle
--- 573,579 ----
  EXT afs_kmutex_t rx_stats_mutex;	/* used to activate stats gathering */
  #endif
  
! EXT2 int rx_enable_stats INIT(0);
  
  /*
   * Set this flag to enable the listener thread to trade places with an idle
Index: openafs/src/rx/rx_kcommon.c
diff -c openafs/src/rx/rx_kcommon.c:1.44.2.11 openafs/src/rx/rx_kcommon.c:1.44.2.13
*** openafs/src/rx/rx_kcommon.c:1.44.2.11	Wed Mar  8 00:05:51 2006
--- openafs/src/rx/rx_kcommon.c	Thu Aug 31 00:54:55 2006
***************
*** 15,21 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_kcommon.c,v 1.44.2.11 2006/03/08 05:05:51 jaltman Exp $");
  
  #include "rx/rx_kcommon.h"
  
--- 15,21 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_kcommon.c,v 1.44.2.13 2006/08/31 04:54:55 shadow Exp $");
  
  #include "rx/rx_kcommon.h"
  
***************
*** 124,129 ****
--- 124,130 ----
      return rxi_GetHostUDPSocket(htonl(INADDR_ANY), port);
  }
  
+ #if !defined(AFS_LINUX26_ENV)
  void
  osi_Panic(msg, a1, a2, a3)
       char *msg;
***************
*** 132,138 ****
  	msg = "Unknown AFS panic";
  
      printf(msg, a1, a2, a3);
! #ifdef AFS_LINUX24_ENV
      * ((char *) 0) = 0; 
  #else
      panic(msg);
--- 133,139 ----
  	msg = "Unknown AFS panic";
  
      printf(msg, a1, a2, a3);
! #ifdef AFS_LINUX20_ENV
      * ((char *) 0) = 0; 
  #else
      panic(msg);
***************
*** 261,266 ****
--- 262,274 ----
  
      osi_Panic(buf);
  }
+ #else
+ void
+ osi_AssertFailK(const char *expr, const char *file, int line)
+ {
+     printk(KERN_CRIT "assertion failed: %s, file: %s, line: %d\n", expr, file, line);
+ }
+ #endif
  
  #ifndef UKERNEL
  /* This is the server process request loop. Kernel server
***************
*** 1142,1150 ****
      if (!code) {
  	p->length = nbytes - RX_HEADER_SIZE;;
  	if ((nbytes > tlen) || (p->length & 0x8000)) {	/* Bogus packet */
! 	    if (nbytes > 0)
! 		rxi_MorePackets(rx_initSendWindow);
! 	    else {
  		MUTEX_ENTER(&rx_stats_mutex);
  		rx_stats.bogusPacketOnRead++;
  		rx_stats.bogusHost = from.sin_addr.s_addr;
--- 1150,1156 ----
      if (!code) {
  	p->length = nbytes - RX_HEADER_SIZE;;
  	if ((nbytes > tlen) || (p->length & 0x8000)) {	/* Bogus packet */
! 	    if (nbytes <= 0) {
  		MUTEX_ENTER(&rx_stats_mutex);
  		rx_stats.bogusPacketOnRead++;
  		rx_stats.bogusHost = from.sin_addr.s_addr;
Index: openafs/src/rx/rx_kernel.h
diff -c openafs/src/rx/rx_kernel.h:1.13.2.1 openafs/src/rx/rx_kernel.h:1.13.2.2
*** openafs/src/rx/rx_kernel.h:1.13.2.1	Wed Oct  5 01:58:42 2005
--- openafs/src/rx/rx_kernel.h	Wed May 31 12:01:45 2006
***************
*** 43,48 ****
--- 43,49 ----
  
  #ifndef AFS_DARWIN80_ENV
  #define ifnet_mtu(x) (x)->if_mtu
+ #define ifnet_flags(x) (x?(x)->if_flags:0)
  #define AFS_IFNET_T struct ifnet *
  #else
  #define AFS_IFNET_T ifnet_t
Index: openafs/src/rx/rx_packet.c
diff -c openafs/src/rx/rx_packet.c:1.35.2.24 openafs/src/rx/rx_packet.c:1.35.2.25
*** openafs/src/rx/rx_packet.c:1.35.2.24	Thu Jan 26 15:58:47 2006
--- openafs/src/rx/rx_packet.c	Mon Jul 31 11:08:20 2006
***************
*** 15,21 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_packet.c,v 1.35.2.24 2006/01/26 20:58:47 shadow Exp $");
  
  #ifdef KERNEL
  #if defined(UKERNEL)
--- 15,21 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_packet.c,v 1.35.2.25 2006/07/31 15:08:20 shadow Exp $");
  
  #ifdef KERNEL
  #if defined(UKERNEL)
***************
*** 1394,1406 ****
  
      p->length = (nbytes - RX_HEADER_SIZE);
      if ((nbytes > tlen) || (p->length & 0x8000)) {	/* Bogus packet */
! 	if (nbytes > 0)
! 	    rxi_MorePackets(rx_initSendWindow);
! 	else if (nbytes < 0 && errno == EWOULDBLOCK) {
  	    MUTEX_ENTER(&rx_stats_mutex);
  	    rx_stats.noPacketOnRead++;
  	    MUTEX_EXIT(&rx_stats_mutex);
! 	} else {
  	    MUTEX_ENTER(&rx_stats_mutex);
  	    rx_stats.bogusPacketOnRead++;
  	    rx_stats.bogusHost = from.sin_addr.s_addr;
--- 1394,1404 ----
  
      p->length = (nbytes - RX_HEADER_SIZE);
      if ((nbytes > tlen) || (p->length & 0x8000)) {	/* Bogus packet */
! 	if (nbytes < 0 && errno == EWOULDBLOCK) {
  	    MUTEX_ENTER(&rx_stats_mutex);
  	    rx_stats.noPacketOnRead++;
  	    MUTEX_EXIT(&rx_stats_mutex);
! 	} else if (nbytes <= 0) {
  	    MUTEX_ENTER(&rx_stats_mutex);
  	    rx_stats.bogusPacketOnRead++;
  	    rx_stats.bogusHost = from.sin_addr.s_addr;
Index: openafs/src/rx/rx_prototypes.h
diff -c openafs/src/rx/rx_prototypes.h:1.14.2.14 openafs/src/rx/rx_prototypes.h:1.14.2.16
*** openafs/src/rx/rx_prototypes.h:1.14.2.14	Thu Jan 26 16:03:11 2006
--- openafs/src/rx/rx_prototypes.h	Thu Aug 31 00:54:55 2006
***************
*** 43,48 ****
--- 43,57 ----
  					afs_int32(*serviceProc) (struct
  								 rx_call *
  								 acall));
+ extern struct rx_service *rx_NewServiceHost(afs_uint32 host, u_short port, 
+ 					    u_short serviceId,
+ 					    char *serviceName,
+ 					    struct rx_securityClass
+ 					    **securityObjects,
+ 					    int nSecurityObjects,
+ 					    afs_int32(*serviceProc) (struct
+ 								     rx_call *
+ 								     acall));
  extern void rxi_ServerProc(int threadID, struct rx_call *newcall,
  			   osi_socket * socketp);
  extern void rx_WakeupServerProcs(void);
***************
*** 325,331 ****
  extern void rxk_shutdownPorts(void);
  extern osi_socket rxi_GetUDPSocket(u_short port);
  extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port);
! extern void osi_Panic();
  extern int osi_utoa(char *buf, size_t len, unsigned long val);
  extern void rxi_InitPeerParams(register struct rx_peer *pp);
  extern void shutdown_rxkernel(void);
--- 334,347 ----
  extern void rxk_shutdownPorts(void);
  extern osi_socket rxi_GetUDPSocket(u_short port);
  extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port);
! #if defined(KERNEL) && defined(AFS_LINUX26_ENV)
! #define osi_Panic(msg...) do { printk(KERN_CRIT "openafs: " msg); BUG(); } while (0)
! #undef osi_Assert
! #define osi_Assert(expr) \
!     do { if (!(expr)) { osi_AssertFailK(#expr, __FILE__, __LINE__); BUG(); } } while (0)
! #else
! extern void osi_Panic();       /* leave without args till stdarg rewrite */
! #endif
  extern int osi_utoa(char *buf, size_t len, unsigned long val);
  extern void rxi_InitPeerParams(register struct rx_peer *pp);
  extern void shutdown_rxkernel(void);
***************
*** 556,562 ****
  extern osi_socket rxi_GetUDPSocket(u_short port);
  extern void osi_AssertFailU(const char *expr, const char *file, int line);
  extern int rx_getAllAddr(afs_int32 * buffer, int maxSize);
- extern void osi_Panic();	/* leave without args till stdarg rewrite */
  extern void rxi_InitPeerParams(struct rx_peer *pp);
  
  #if defined(AFS_AIX32_ENV) && !defined(KERNEL)
--- 572,577 ----
Index: openafs/src/rx/rx_pthread.c
diff -c openafs/src/rx/rx_pthread.c:1.17.2.6 openafs/src/rx/rx_pthread.c:1.17.2.7
*** openafs/src/rx/rx_pthread.c:1.17.2.6	Thu Sep 15 22:28:50 2005
--- openafs/src/rx/rx_pthread.c	Sun Jul  2 21:16:36 2006
***************
*** 19,25 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_pthread.c,v 1.17.2.6 2005/09/16 02:28:50 jaltman Exp $");
  
  #include <sys/types.h>
  #include <errno.h>
--- 19,25 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx_pthread.c,v 1.17.2.7 2006/07/03 01:16:36 jaltman Exp $");
  
  #include <sys/types.h>
  #include <errno.h>
***************
*** 87,93 ****
  void
  rxi_InitializeThreadSupport(void)
  {
!     listeners_started = 0;
      clock_GetTime(&rxi_clockNow);
  }
  
--- 87,95 ----
  void
  rxi_InitializeThreadSupport(void)
  {
! 	/* listeners_started must only be reset if
! 	 * the listener thread terminates */
! 	/* listeners_started = 0; */
      clock_GetTime(&rxi_clockNow);
  }
  
***************
*** 322,327 ****
--- 324,332 ----
      pthread_attr_t tattr;
      AFS_SIGSET_DECL;
  
+ 	if (listeners_started)
+ 		return;
+ 
      if (pthread_attr_init(&tattr) != 0) {
  	dpf
  	    (("Unable to create Rx event handling thread (pthread_attr_init)\n"));
Index: openafs/src/rx/xdr_array.c
diff -c openafs/src/rx/xdr_array.c:1.9.2.2 openafs/src/rx/xdr_array.c:1.9.2.3
*** openafs/src/rx/xdr_array.c:1.9.2.2	Thu Dec 15 10:16:45 2005
--- openafs/src/rx/xdr_array.c	Sun Aug 13 16:19:57 2006
***************
*** 31,37 ****
  #include "rx.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/xdr_array.c,v 1.9.2.2 2005/12/15 15:16:45 jaltman Exp $");
  
  #ifndef	NeXT
  
--- 31,37 ----
  #include "rx.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/xdr_array.c,v 1.9.2.3 2006/08/13 20:19:57 shadow Exp $");
  
  #ifndef	NeXT
  
***************
*** 52,58 ****
--- 52,60 ----
  #define bzero(A,C) memset((A), 0, (C))
  #endif
  #else
+ #ifndef AFS_DARWIN90_ENV
  #include <sys/systm.h>
+ #endif
  #endif /* AFS_LINUX20_ENV */
  #else
  #include <stdio.h>
Index: openafs/src/rx/xdr_rx.c
diff -c openafs/src/rx/xdr_rx.c:1.10.2.3 openafs/src/rx/xdr_rx.c:1.10.2.4
*** openafs/src/rx/xdr_rx.c:1.10.2.3	Tue May 24 19:14:44 2005
--- openafs/src/rx/xdr_rx.c	Wed May 31 12:01:45 2006
***************
*** 19,27 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/xdr_rx.c,v 1.10.2.3 2005/05/24 23:14:44 shadow Exp $");
  
  #ifdef KERNEL
  #ifndef UKERNEL
  #include "h/types.h"
  #include "h/uio.h"
--- 19,28 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/xdr_rx.c,v 1.10.2.4 2006/05/31 16:01:45 rees Exp $");
  
  #ifdef KERNEL
+ #include "afs/sysincludes.h"
  #ifndef UKERNEL
  #include "h/types.h"
  #include "h/uio.h"
***************
*** 49,55 ****
  #include "rx/xdr.h"
  #include "netinet/in.h"
  #else /* !UKERNEL */
- #include "afs/sysincludes.h"
  #include "rpc/types.h"
  #include "rpc/xdr.h"
  #endif /* !UKERNEL */
--- 50,55 ----
Index: openafs/src/rx/DARWIN/rx_knet.c
diff -c openafs/src/rx/DARWIN/rx_knet.c:1.10.2.2 openafs/src/rx/DARWIN/rx_knet.c:1.10.2.3
*** openafs/src/rx/DARWIN/rx_knet.c:1.10.2.2	Tue Jan 17 12:09:48 2006
--- openafs/src/rx/DARWIN/rx_knet.c	Fri Sep 15 20:11:24 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/DARWIN/rx_knet.c,v 1.10.2.2 2006/01/17 17:09:48 shadow Exp $");
  
  #include "rx/rx_kcommon.h"
  
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/DARWIN/rx_knet.c,v 1.10.2.3 2006/09/16 00:11:24 shadow Exp $");
  
  #include "rx/rx_kcommon.h"
  
***************
*** 127,133 ****
--- 127,135 ----
  		*addr = *(struct sockaddr_in *)sa;
  	} else
  	    printf("Unknown socket family %d in NetReceive\n", sa->sa_family);
+ #ifndef AFS_DARWIN80_ENV
  	FREE(sa, M_SONAME);
+ #endif
      }
      return code;
  }
Index: openafs/src/rx/LINUX/rx_knet.c
diff -c openafs/src/rx/LINUX/rx_knet.c:1.23.2.9 openafs/src/rx/LINUX/rx_knet.c:1.23.2.10
*** openafs/src/rx/LINUX/rx_knet.c:1.23.2.9	Thu Mar  2 01:41:23 2006
--- openafs/src/rx/LINUX/rx_knet.c	Fri Sep 22 07:20:35 2006
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/LINUX/rx_knet.c,v 1.23.2.9 2006/03/02 06:41: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.23.2.10 2006/09/22 11:20:35 shadow Exp $");
  
  #include <linux/version.h>
  #ifdef AFS_LINUX22_ENV
***************
*** 209,217 ****
--- 209,225 ----
  
      if (&tasklist_lock)
        read_lock(&tasklist_lock);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+     else
+       rcu_read_lock();
+ #endif
      listener = find_task_by_pid(rxk_ListenerPid);
      if (&tasklist_lock)
         read_unlock(&tasklist_lock);
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16)
+     else
+       rcu_read_unlock();
+ #endif
      while (rxk_ListenerPid) {
  	flush_signals(listener);
  	force_sig(SIGKILL, listener);
Index: openafs/src/rxgen/rpc_hout.c
diff -c openafs/src/rxgen/rpc_hout.c:1.7.2.2 openafs/src/rxgen/rpc_hout.c:1.7.2.3
*** openafs/src/rxgen/rpc_hout.c:1.7.2.2	Sat Oct 15 17:52:31 2005
--- openafs/src/rxgen/rpc_hout.c	Mon Jul 31 13:07:50 2006
***************
*** 36,42 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxgen/rpc_hout.c,v 1.7.2.2 2005/10/15 21:52:31 jaltman Exp $");
  
  #include <stdio.h>
  #include <string.h>
--- 36,42 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxgen/rpc_hout.c,v 1.7.2.3 2006/07/31 17:07:50 shadow Exp $");
  
  #include <stdio.h>
  #include <string.h>
***************
*** 223,230 ****
      f_print(fout, "\nextern %s %s%s%s(\n", type, prefix, defp->pc.proc_prefix,
  	    defp->pc.proc_name);
  
!     if (callTconnF) {
  	f_print(fout, "\t/*IN */ struct rx_call *z_call");
      } else {
  	f_print(fout, "\t/*IN */ struct rx_connection *z_conn");
      }
--- 223,232 ----
      f_print(fout, "\nextern %s %s%s%s(\n", type, prefix, defp->pc.proc_prefix,
  	    defp->pc.proc_name);
  
!     if (callTconnF == 1) {
  	f_print(fout, "\t/*IN */ struct rx_call *z_call");
+     } else if (callTconnF == 2) {
+ 	f_print(fout, "\tregister struct ubik_client *aclient, afs_int32 aflags");
      } else {
  	f_print(fout, "\t/*IN */ struct rx_connection *z_conn");
      }
***************
*** 270,275 ****
--- 272,280 ----
  	psproc1(defp, 0, "int", "", 0xFFFFFFFF);
      }
  
+     if (uflag && !kflag)
+ 	psproc1(defp, 2, "int", "ubik_", 0xFFFFFFFF);
+ 
      if (*ServerPrefix)
  	psproc1(defp, 1, "afs_int32", ServerPrefix, 0xFFFFFFFF);
  }
Index: openafs/src/rxgen/rpc_main.c
diff -c openafs/src/rxgen/rpc_main.c:1.21.2.1 openafs/src/rxgen/rpc_main.c:1.21.2.3
*** openafs/src/rxgen/rpc_main.c:1.21.2.1	Sun Apr  3 14:15:51 2005
--- openafs/src/rxgen/rpc_main.c	Thu Aug 24 11:56:44 2006
***************
*** 37,43 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxgen/rpc_main.c,v 1.21.2.1 2005/04/03 18:15:51 shadow Exp $");
  
  #include <limits.h>
  #include <stdio.h>
--- 37,43 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxgen/rpc_main.c,v 1.21.2.3 2006/08/24 15:56:44 shadow Exp $");
  
  #include <limits.h>
  #include <stdio.h>
***************
*** 79,84 ****
--- 79,85 ----
      int dflag;
      int xflag;
      int yflag;
+     int uflag;
      char *infile;
      char *outfile;
  };
***************
*** 91,97 ****
  int nincludes = 0;
  char *OutFileFlag = "";
  char OutFile[256];
! char Sflag = 0, Cflag = 0, hflag = 0, cflag = 0, kflag = 0;
  char zflag = 0;			/* If set, abort server stub if rpc call returns non-zero */
  char xflag = 0;			/* if set, add stats code to stubs */
  char yflag = 0;			/* if set, only emit function name arrays to xdr file */
--- 92,98 ----
  int nincludes = 0;
  char *OutFileFlag = "";
  char OutFile[256];
! char Sflag = 0, Cflag = 0, hflag = 0, cflag = 0, kflag = 0, uflag = 0;
  char zflag = 0;			/* If set, abort server stub if rpc call returns non-zero */
  char xflag = 0;			/* if set, add stats code to stubs */
  char yflag = 0;			/* if set, only emit function name arrays to xdr file */
***************
*** 181,187 ****
      if (!parseargs(argc, argv, &cmd)) {
  	f_print(stderr, "usage: %s infile\n", cmdname);
  	f_print(stderr,
! 		"       %s [-c | -h | -l | -m | -C | -S | -r | -k | -R | -p | -d | -z] [-Pprefix] [-Idir] [-o outfile] [infile]\n",
  		cmdname);
  	f_print(stderr, "       %s [-s udp|tcp]* [-o outfile] [infile]\n",
  		cmdname);
--- 182,188 ----
      if (!parseargs(argc, argv, &cmd)) {
  	f_print(stderr, "usage: %s infile\n", cmdname);
  	f_print(stderr,
! 		"       %s [-c | -h | -l | -m | -C | -S | -r | -k | -R | -p | -d | -z | -u] [-Pprefix] [-Idir] [-o outfile] [infile]\n",
  		cmdname);
  	f_print(stderr, "       %s [-s udp|tcp]* [-o outfile] [infile]\n",
  		cmdname);
***************
*** 470,480 ****
--- 471,484 ----
      if (xflag) {
  	f_print(fout, "#include \"rx/rx_globals.h\"\n");
      }
+     if (uflag)
+ 	f_print(fout, "#include <ubik.h>\n");
      f_print(fout, "#else	/* UKERNEL */\n");
      f_print(fout, "#include \"h/types.h\"\n");
      f_print(fout, "#ifndef	SOCK_DGRAM  /* XXXXX */\n");
      f_print(fout, "#include \"h/socket.h\"\n");
      f_print(fout, "#endif\n");
+     f_print(fout, "struct ubik_client;\n");
      f_print(fout, "#ifndef	DTYPE_SOCKET  /* XXXXX */\n");
      f_print(fout, "#ifndef AFS_LINUX22_ENV\n");
      f_print(fout, "#include \"h/file.h\"\n");
***************
*** 521,526 ****
--- 525,532 ----
  	f_print(fout, "#include <rx/rx_globals.h>\n");
      }
      f_print(fout, "#include <afs/rxgen_consts.h>\n");
+     if (uflag)
+ 	f_print(fout, "#include <ubik.h>\n");
      f_print(fout, "#endif	/* KERNEL */\n\n");
      f_print(fout, "#ifdef AFS_NT40_ENV\n");
      f_print(fout, "#ifndef AFS_RXGEN_EXPORT\n");
***************
*** 813,818 ****
--- 819,825 ----
  		case 'k':
  		case 'p':
  		case 'd':
+ 		case 'u':
  		case 'x':
  		case 'y':
  		case 'z':
***************
*** 869,874 ****
--- 876,882 ----
      cmd->Cflag = Cflag = flag['C'];
      cmd->Sflag = Sflag = flag['S'];
      cmd->rflag = flag['r'];
+     cmd->uflag = uflag = flag['u'];
      cmd->kflag = kflag = flag['k'];
      cmd->pflag = flag['p'];
      cmd->dflag = debug = flag['d'];
Index: openafs/src/rxgen/rpc_parse.c
diff -c openafs/src/rxgen/rpc_parse.c:1.18.2.1 openafs/src/rxgen/rpc_parse.c:1.18.2.3
*** openafs/src/rxgen/rpc_parse.c:1.18.2.1	Fri Oct 14 21:20:03 2005
--- openafs/src/rxgen/rpc_parse.c	Mon Jul 31 17:51:21 2006
***************
*** 36,42 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxgen/rpc_parse.c,v 1.18.2.1 2005/10/15 01:20:03 shadow Exp $");
  
  #include <stdlib.h>
  #include <stdio.h>
--- 36,42 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxgen/rpc_parse.c,v 1.18.2.3 2006/07/31 21:51:21 shadow Exp $");
  
  #include <stdlib.h>
  #include <stdio.h>
***************
*** 134,139 ****
--- 134,143 ----
  static void cs_ProcSendPacket_setup(definition * defp, int split_flag);
  static void cs_ProcUnmarshallOutParams_setup(definition * defp);
  static void cs_ProcTail_setup(definition * defp, int split_flag);
+ static void ucs_ProcName_setup(definition * defp, char *procheader,
+ 			      int split_flag);
+ static void ucs_ProcParams_setup(definition * defp, int split_flag);
+ static void ucs_ProcTail_setup(definition * defp, int split_flag);
  static void ss_Proc_CodeGeneration(definition * defp);
  static void ss_ProcName_setup(definition * defp);
  static void ss_ProcParams_setup(definition * defp, int *somefrees);
***************
*** 1102,1107 ****
--- 1106,1119 ----
  	}
  	cs_ProcTail_setup(defp, split_flag);
      }
+ 
+     if (!kflag && !split_flag && uflag) {
+ 	ucs_ProcName_setup(defp, "ubik_", split_flag);
+ 	if (!cflag) {
+ 	    ucs_ProcParams_setup(defp, split_flag);
+ 	    ucs_ProcTail_setup(defp, split_flag);
+ 	}
+     }
  }
  
  
***************
*** 1730,1735 ****
--- 1742,1945 ----
  }
  
  
+ static void
+ ucs_ProcName_setup(definition * defp, char *procheader, int split_flag)
+ {
+     proc1_list *plist;
+ 
+     if (!cflag) {
+       f_print(fout, "int %s%s%s%s(aclient, aflags", procheader, prefix,
+ 	      PackagePrefix[PackageIndex], defp->pc.proc_name);
+     }
+     if ((strlen(procheader) + strlen(prefix) +
+ 	 strlen(PackagePrefix[PackageIndex]) + strlen(defp->pc.proc_name)) >=
+ 	MAX_FUNCTION_NAME_LEN) {
+ 	error("function name is too long, increase MAX_FUNCTION_NAME_LEN");
+     }
+     if (!cflag) {
+ 	for (plist = defp->pc.plists; plist; plist = plist->next) {
+ 	    if (plist->component_kind == DEF_PARAM) {
+ 		plist->pl.param_flag &= ~PROCESSED_PARAM;
+ 		f_print(fout, ", %s", plist->pl.param_name);
+ 	    }
+ 	}
+ 	f_print(fout, ")\n");
+     }
+ }
+ 
+ 
+ static void
+ ucs_ProcParams_setup(definition * defp, int split_flag)
+ {
+     proc1_list *plist, *plist1;
+ 
+     f_print(fout, "\tregister struct ubik_client *aclient;\n\tafs_int32 aflags;\n");
+     for (plist = defp->pc.plists; plist; plist = plist->next) {
+ 	if (plist->component_kind == DEF_PARAM
+ 	    && !(plist->pl.param_flag & PROCESSED_PARAM)) {
+ 	    if (plist->pl.param_flag & OUT_STRING) {
+ 		f_print(fout, "\t%s *%s", plist->pl.param_type,
+ 			plist->pl.param_name);
+ 	    } else {
+ 		f_print(fout, "\t%s %s", plist->pl.param_type,
+ 			plist->pl.param_name);
+ 	    }
+ 	    plist->pl.param_flag |= PROCESSED_PARAM;
+ 	    for (plist1 = defp->pc.plists; plist1; plist1 = plist1->next) {
+ 		if ((plist1->component_kind == DEF_PARAM)
+ 		    && streq(plist->pl.param_type, plist1->pl.param_type)
+ 		    && !(plist1->pl.param_flag & PROCESSED_PARAM)) {
+ 		    char *star = "";
+ 		    char *pntr = strchr(plist1->pl.param_type, '*');
+ 		    if (pntr)
+ 			star = "*";
+ 		    if (plist1->pl.param_flag & OUT_STRING) {
+ 			f_print(fout, ", *%s%s", star, plist1->pl.param_name);
+ 		    } else {
+ 			f_print(fout, ", %s%s", star, plist1->pl.param_name);
+ 		    }
+ 		    plist1->pl.param_flag |= PROCESSED_PARAM;
+ 		}
+ 	    }
+ 	    f_print(fout, ";\n");
+ 	}
+     }
+ }
+ 
+ static void
+ ucs_ProcTail_setup(definition * defp, int split_flag)
+ {
+     proc1_list *plist;
+ 
+     f_print(fout, "{\tafs_int32 rcode, code, newHost, thisHost, i, _ucount;\n");
+     f_print(fout, "\tint chaseCount, pass, needsync, inlist;\n");
+ #if 0 /* goes with block below */
+     f_print(fout, "\tint j;\n");
+ #endif
+     f_print(fout, "\tstruct rx_connection *tc;\n");
+     f_print(fout, "\tstruct rx_peer *rxp;\n");
+     f_print(fout, "\tshort origLevel;\n\n");
+     f_print(fout, "\tif (!aclient)\n");
+     f_print(fout, "\t\treturn UNOENT;\n");
+     f_print(fout, "\tLOCK_UBIK_CLIENT(aclient);\n\n");
+     f_print(fout, "\t restart:\n");
+     f_print(fout, "\torigLevel = aclient->initializationState;\n");
+     f_print(fout, "\trcode = UNOSERVERS;\n");
+     f_print(fout, "\tchaseCount = inlist = needsync = 0;\n\n");
+ #if 0 /* We should do some sort of caching algorithm for this, but I need to think about it - shadow 26 jun 06 */
+     f_print(fout, "\tLOCK_UCLNT_CACHE;\n");
+     f_print(fout, "\tfor (j = 0; ((j < SYNCCOUNT) && calls_needsync[j]); j++) {\n");
+     f_print(fout, "\t\tif (calls_needsync[j] == (int *)%s%s%s) {\n", prefix, PackagePrefix[PackageIndex], defp->pc.proc_name);
+     f_print(fout, "\t\t\tinlist = needsync = 1;\n");
+     f_print(fout, "\t\t\tbreak;\n");
+     f_print(fout, "\t\t}\n");
+     f_print(fout, "\t}\n");
+     f_print(fout, "\tUNLOCK_UCLNT_CACHE;\n");
+ #endif
+     f_print(fout, "\t/* \n\t* First  pass, we try all servers that are up.\n\t* Second pass, we try all servers.\n\t*/\n");
+     f_print(fout, "\tfor (pass = 0; pass < 2; pass++) {  /*p */\n");
+     f_print(fout, "\t\t/* For each entry in our servers list */\n");
+     f_print(fout, "\t\tfor (_ucount = 0;; _ucount++) {     /*s */\n\n");
+     f_print(fout, "\t\tif (needsync) {\n");
+     f_print(fout, "\t\t\t/* Need a sync site. Lets try to quickly find it */\n");
+     f_print(fout, "\t\t\tif (aclient->syncSite) {\n");
+     f_print(fout, "\t\t\t\tnewHost = aclient->syncSite;        /* already in network order */\n");
+     f_print(fout, "\t\t\t\taclient->syncSite = 0;      /* Will reset if it works */\n");
+     f_print(fout, "\t\t\t} else if (aclient->conns[3]) {\n");
+     f_print(fout, "\t\t\t\t/* If there are fewer than four db servers in a cell,\n");
+     f_print(fout, "\t\t\t\t* there's no point in making the GetSyncSite call.\n");
+     f_print(fout, "\t\t\t\t* At best, it's a wash. At worst, it results in more\n");
+     f_print(fout, "\t\t\t\t* RPCs than you would otherwise make.\n");
+     f_print(fout, "\t\t\t\t*/\n");
+     f_print(fout, "\t\t\t\ttc = aclient->conns[_ucount];\n");
+     f_print(fout, "\t\t\t\tif (tc && rx_ConnError(tc)) {\n");
+     f_print(fout, "\t\t\t\t\taclient->conns[_ucount] = tc = ubik_RefreshConn(tc);\n");
+     f_print(fout, "\t\t\t\t}\n");
+     f_print(fout, "\t\t\t\tif (!tc)\n");
+     f_print(fout, "\t\t\t\t\tbreak;\n");
+     f_print(fout, "\t\t\t\tcode = VOTE_GetSyncSite(tc, &newHost);\n");
+     f_print(fout, "\t\t\t\tif (aclient->initializationState != origLevel)\n");
+     f_print(fout, "\t\t\t\t\tgoto restart;   /* somebody did a ubik_ClientInit */\n");
+     f_print(fout, "\t\t\t\tif (code)\n");
+     f_print(fout, "\t\t\t\t\tnewHost = 0;\n");
+     f_print(fout, "\t\t\t\tnewHost = htonl(newHost);   /* convert to network order */\n");
+     f_print(fout, "\t\t\t} else {\n");
+     f_print(fout, "\t\t\t\tnewHost = 0;\n");
+     f_print(fout, "\t\t\t}\n");
+     f_print(fout, "\t\t\tif (newHost) {\n");
+     f_print(fout, "\t\t\t\t/* position count at the appropriate slot in the client\n");
+     f_print(fout, "\t\t\t\t* structure and retry. If we can't find in slot, we'll\n");
+     f_print(fout, "\t\t\t\t* just continue through the whole list \n");
+     f_print(fout, "\t\t\t\t*/\n");
+     f_print(fout, "\t\t\t\tfor (i = 0; i < MAXSERVERS && aclient->conns[i]; i++) {\n");
+     f_print(fout, "\t\t\t\t\trxp = rx_PeerOf(aclient->conns[i]);\n");
+     f_print(fout, "\t\t\t\t\tthisHost = rx_HostOf(rxp);\n");
+     f_print(fout, "\t\t\t\t\tif (!thisHost)\n");
+     f_print(fout, "\t\t\t\t\t\tbreak;\n");
+     f_print(fout, "\t\t\t\t\tif (thisHost == newHost) {\n");
+     f_print(fout, "\t\t\t\t\t\tif (chaseCount++ > 2)\n");
+     f_print(fout, "\t\t\t\t\t\t\tbreak;  /* avoid loop asking */\n");
+     f_print(fout, "\t\t\t\t\t\t_ucount = i;  /* this index is the sync site */\n");
+     f_print(fout, "\t\t\t\t\t\tbreak;\n");
+     f_print(fout, "\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n");
+     f_print(fout, "\t\t/*needsync */\n");
+     f_print(fout, "\t\ttc = aclient->conns[_ucount];\n");
+     f_print(fout, "\t\tif (tc && rx_ConnError(tc)) {\n");
+     f_print(fout, "\t\t\taclient->conns[_ucount] = tc = ubik_RefreshConn(tc);\n");
+     f_print(fout, "\t\t}\n");
+     f_print(fout, "\t\tif (!tc)\n");
+     f_print(fout, "\t\t\tbreak;\n\n");
+     f_print(fout, "\t\tif ((pass == 0) && (aclient->states[_ucount] & CFLastFailed)) {\n");
+     f_print(fout, "\t\t\tcontinue;       /* this guy's down */\n");
+     f_print(fout, "\t\t}\n");
+     
+     f_print(fout, "\t\trcode = %s%s%s(tc\n", prefix, PackagePrefix[PackageIndex], defp->pc.proc_name);
+     for (plist = defp->pc.plists; plist; plist = plist->next) {
+ 	if (plist->component_kind == DEF_PARAM) {
+ 	    plist->pl.param_flag &= ~PROCESSED_PARAM;
+ 	    f_print(fout, ", %s", plist->pl.param_name);
+ 	}
+     }
+     f_print(fout, ");\n");
+     f_print(fout, "\t\tif (aclient->initializationState != origLevel) {\n");
+     f_print(fout, "\t\t\t/* somebody did a ubik_ClientInit */\n");
+     f_print(fout, "\t\t\tif (rcode)\n");
+     f_print(fout, "\t\t\t\tgoto restart;       /* call failed */\n");
+     f_print(fout, "\t\t\telse\n");
+     f_print(fout, "\t\t\t\tgoto done;  /* call suceeded */\n");
+     f_print(fout, "\t\t}\n");
+     f_print(fout, "\t\tif (rcode < 0) {    /* network errors */\n");
+     f_print(fout, "\t\t\taclient->states[_ucount] |= CFLastFailed; /* Mark server down */\n");
+     f_print(fout, "\t\t} else if (rcode == UNOTSYNC) {\n");
+     f_print(fout, "\t\t\tneedsync = 1;\n");
+     f_print(fout, "\t\t} else if (rcode != UNOQUORUM) {\n");
+     f_print(fout, "\t\t\t/* either misc ubik code, or misc appl code, or success. */\n");
+     f_print(fout, "\t\t\taclient->states[_ucount] &= ~CFLastFailed;        /* mark server up*/\n");
+     f_print(fout, "\t\t\tgoto done;      /* all done */\n");
+     f_print(fout, "\t\t}\n");
+     f_print(fout, "\t\t}                       /*s */\n");
+     f_print(fout, "\t}                           /*p */\n\n");
+     f_print(fout, "\tdone:\n");
+     f_print(fout, "\tif (needsync) {\n");
+     f_print(fout, "\t\tif (!inlist) {          /* Remember proc call that needs sync site */\n");
+ #if 0 /* We should do some sort of caching algorithm for this, but I need to think about it - shadow 26 jun 06 */
+     f_print(fout, "\t\t\tLOCK_UCLNT_CACHE;\n");
+     f_print(fout, "\t\t\tcalls_needsync[synccount % SYNCCOUNT] = (int *)%s%s%s;\n", prefix, PackagePrefix[PackageIndex], defp->pc.proc_name);
+     f_print(fout, "\t\t\tsynccount++;\n");
+     f_print(fout, "\t\t\tUNLOCK_UCLNT_CACHE;\n");
+ #endif
+     f_print(fout, "\t\t\tinlist = 1;\n");
+     f_print(fout, "\t\t}\n");
+     f_print(fout, "\t\tif (!rcode) {           /* Remember the sync site - cmd successful */\n");
+     f_print(fout, "\t\t\trxp = rx_PeerOf(aclient->conns[_ucount]);\n");
+     f_print(fout, "\t\t\taclient->syncSite = rx_HostOf(rxp);\n");
+     f_print(fout, "\t\t}\n");
+     f_print(fout, "\t}\n");
+     f_print(fout, "\tUNLOCK_UBIK_CLIENT(aclient);\n");
+     f_print(fout, "\treturn rcode;\n}\n\n");
+ }
+ 
+ 
  static int
  opcode_holes_exist(void)
  {
Index: openafs/src/rxgen/rpc_util.h
diff -c openafs/src/rxgen/rpc_util.h:1.4 openafs/src/rxgen/rpc_util.h:1.4.2.1
*** openafs/src/rxgen/rpc_util.h:1.4	Tue Jul 15 19:16:41 2003
--- openafs/src/rxgen/rpc_util.h	Mon Jul 31 13:07:51 2006
***************
*** 56,62 ****
  extern int nincludes;
  extern char *OutFileFlag;
  extern char OutFile[];
! extern char Sflag, Cflag, hflag, cflag, kflag;
  extern char zflag;
  extern char xflag;
  extern char yflag;
--- 56,62 ----
  extern int nincludes;
  extern char *OutFileFlag;
  extern char OutFile[];
! extern char Sflag, Cflag, hflag, cflag, kflag, uflag;
  extern char zflag;
  extern char xflag;
  extern char yflag;
Index: openafs/src/rxkad/bg-fcrypt.c
diff -c openafs/src/rxkad/bg-fcrypt.c:1.5.2.2 openafs/src/rxkad/bg-fcrypt.c:1.5.2.3
*** openafs/src/rxkad/bg-fcrypt.c:1.5.2.2	Mon May 30 00:57:37 2005
--- openafs/src/rxkad/bg-fcrypt.c	Wed Aug  2 15:07:04 2006
***************
*** 38,44 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/bg-fcrypt.c,v 1.5.2.2 2005/05/30 04:57:37 shadow Exp $");
  
  #define DEBUG 0
  #ifdef KERNEL
--- 38,44 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/bg-fcrypt.c,v 1.5.2.3 2006/08/02 19:07:04 shadow Exp $");
  
  #define DEBUG 0
  #ifdef KERNEL
***************
*** 76,86 ****
  #include "private_data.h"
  #include <des/stats.h>
  
- #undef WORDS_BIGENDIAN
- #ifdef AFSBIG_ENDIAN
- #define WORDS_BIGENDIAN 1
- #endif
- 
  /*
   * Unrolling of the inner loops helps the most on pentium chips
   * (ca 18%). On risc machines only expect a modest improvement (ca 5%).
--- 76,81 ----
Index: openafs/src/rxkad/md4.c
diff -c openafs/src/rxkad/md4.c:1.1.2.1 openafs/src/rxkad/md4.c:1.1.2.2
*** openafs/src/rxkad/md4.c:1.1.2.1	Wed Aug 25 03:09:42 2004
--- openafs/src/rxkad/md4.c	Wed Aug  2 15:07:04 2006
***************
*** 69,80 ****
  #include "rxkad.h"
  #endif /* defined(UKERNEL) */
  
! RCSID("$Id: md4.c,v 1.1.2.1 2004/08/25 07:09:42 shadow Exp $");
  
- #undef WORDS_BIGENDIAN
- #ifdef AFSBIG_ENDIAN
- #define WORDS_BIGENDIAN 1
- #endif
  
  #include "md4.h"
  #include "hash.h"
--- 69,80 ----
  #include "rxkad.h"
  #endif /* defined(UKERNEL) */
  
! RCSID("$Id: md4.c,v 1.1.2.2 2006/08/02 19:07:04 shadow Exp $");
! 
! 
! 
! 
  
  
  #include "md4.h"
  #include "hash.h"
Index: openafs/src/rxkad/md5.c
diff -c openafs/src/rxkad/md5.c:1.1.2.1 openafs/src/rxkad/md5.c:1.1.2.2
*** openafs/src/rxkad/md5.c:1.1.2.1	Wed Aug 25 03:09:42 2004
--- openafs/src/rxkad/md5.c	Wed Aug  2 15:07:04 2006
***************
*** 69,80 ****
  #include "rxkad.h"
  #endif /* defined(UKERNEL) */
  
! RCSID("$Id: md5.c,v 1.1.2.1 2004/08/25 07:09:42 shadow Exp $");
  
- #undef WORDS_BIGENDIAN
- #ifdef AFSBIG_ENDIAN
- #define WORDS_BIGENDIAN 1
- #endif
  
  #include "md5.h"
  #include "hash.h"
--- 69,80 ----
  #include "rxkad.h"
  #endif /* defined(UKERNEL) */
  
! RCSID("$Id: md5.c,v 1.1.2.2 2006/08/02 19:07:04 shadow Exp $");
! 
! 
! 
! 
  
  
  #include "md5.h"
  #include "hash.h"
Index: openafs/src/rxkad/private_data.h
diff -c openafs/src/rxkad/private_data.h:1.4 openafs/src/rxkad/private_data.h:1.4.2.2
*** openafs/src/rxkad/private_data.h:1.4	Tue Jul 15 19:16:42 2003
--- openafs/src/rxkad/private_data.h	Thu Jul 13 13:56:33 2006
***************
*** 48,62 ****
      afs_int32 ipAddr;		/* or an approximation to it */
  };
  
  /* private data in client-side security object */
  struct rxkad_cprivate {
      afs_int32 kvno;		/* key version of ticket */
!     afs_int32 ticketLen;	/* length of ticket */
      fc_KeySchedule keysched;	/* the session key */
      fc_InitializationVector ivec;	/* initialization vector for cbc */
      char ticket[MAXKTCTICKETLEN];	/* the ticket for the server */
-     rxkad_type type;		/* always client */
-     rxkad_level level;		/* minimum security level of client */
  };
  
  /* Per connection client-side info */
--- 48,65 ----
      afs_int32 ipAddr;		/* or an approximation to it */
  };
  
+ #define PDATA_SIZE(l) (sizeof(struct rxkad_cprivate) - MAXKTCTICKETLEN + (l))
+ 
  /* private data in client-side security object */
+ /* type and level offsets should match sprivate */
  struct rxkad_cprivate {
+     rxkad_type type;		/* always client */
+     rxkad_level level;		/* minimum security level of client */
      afs_int32 kvno;		/* key version of ticket */
!     afs_int16 ticketLen;	/* length of ticket */
      fc_KeySchedule keysched;	/* the session key */
      fc_InitializationVector ivec;	/* initialization vector for cbc */
      char ticket[MAXKTCTICKETLEN];	/* the ticket for the server */
  };
  
  /* Per connection client-side info */
***************
*** 67,78 ****
  };
  
  /* private data in server-side security object */
  struct rxkad_sprivate {
      char *get_key_rock;		/* rock for get_key function */
      int (*get_key) ();		/* func. of kvno and server key ptr */
      int (*user_ok) ();		/* func called with new client name */
-     rxkad_type type;		/* always server */
-     rxkad_level level;		/* minimum security level of server */
  };
  
  /* private data in server-side connection */
--- 70,82 ----
  };
  
  /* private data in server-side security object */
+ /* type and level offsets should match cprivate */
  struct rxkad_sprivate {
+     rxkad_type type;		/* always server */
+     rxkad_level level;		/* minimum security level of server */
      char *get_key_rock;		/* rock for get_key function */
      int (*get_key) ();		/* func. of kvno and server key ptr */
      int (*user_ok) ();		/* func called with new client name */
  };
  
  /* private data in server-side connection */
Index: openafs/src/rxkad/rxkad.p.h
diff -c openafs/src/rxkad/rxkad.p.h:1.11.2.6 openafs/src/rxkad/rxkad.p.h:1.11.2.7
*** openafs/src/rxkad/rxkad.p.h:1.11.2.6	Mon May 30 00:57:37 2005
--- openafs/src/rxkad/rxkad.p.h	Wed Jul 19 00:11:42 2006
***************
*** 88,94 ****
  #define rxkad_LevelIndex(level) \
      ((((level) >= 0) && ((level) <= 2)) ? (level) : 0)
  #define rxkad_TypeIndex(type) \
!     ((((type) == 1) || ((type) == 2)) ? (type) : 0)
  
  
  extern int rxkad_EpochWasSet;	/* TRUE => we called rx_SetEpoch */
--- 88,94 ----
  #define rxkad_LevelIndex(level) \
      ((((level) >= 0) && ((level) <= 2)) ? (level) : 0)
  #define rxkad_TypeIndex(type) \
!     ((((type) == 1) || ((type) == 2)) ? ((type)-1) : 0)
  
  
  extern int rxkad_EpochWasSet;	/* TRUE => we called rx_SetEpoch */
Index: openafs/src/rxkad/rxkad_client.c
diff -c openafs/src/rxkad/rxkad_client.c:1.18.2.4 openafs/src/rxkad/rxkad_client.c:1.18.2.5
*** openafs/src/rxkad/rxkad_client.c:1.18.2.4	Mon Feb 27 19:19:20 2006
--- openafs/src/rxkad/rxkad_client.c	Tue May 23 12:31:02 2006
***************
*** 19,25 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/rxkad_client.c,v 1.18.2.4 2006/02/28 00:19:20 shadow Exp $");
  
  #ifdef KERNEL
  #include "afs/stds.h"
--- 19,25 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/rxkad_client.c,v 1.18.2.5 2006/05/23 16:31:02 jaltman Exp $");
  
  #ifdef KERNEL
  #include "afs/stds.h"
***************
*** 181,187 ****
      struct rx_securityClass *tsc;
      struct rxkad_cprivate *tcp;
      int code;
!     int size;
  
      size = sizeof(struct rx_securityClass);
      tsc = (struct rx_securityClass *)rxi_Alloc(size);
--- 181,187 ----
      struct rx_securityClass *tsc;
      struct rxkad_cprivate *tcp;
      int code;
!     int size, psize;
  
      size = sizeof(struct rx_securityClass);
      tsc = (struct rx_securityClass *)rxi_Alloc(size);
***************
*** 189,203 ****
      tsc->refCount = 1;		/* caller gets one for free */
      tsc->ops = &rxkad_client_ops;
  
!     size = sizeof(struct rxkad_cprivate);
!     tcp = (struct rxkad_cprivate *)rxi_Alloc(size);
!     memset((void *)tcp, 0, size);
      tsc->privateData = (char *)tcp;
      tcp->type |= rxkad_client;
      tcp->level = level;
      code = fc_keysched(sessionkey, tcp->keysched);
      if (code) {
! 	rxi_Free(tcp, sizeof(struct rxkad_cprivate));
  	rxi_Free(tsc, sizeof(struct rx_securityClass));
  	return 0;		/* bad key */
      }
--- 189,203 ----
      tsc->refCount = 1;		/* caller gets one for free */
      tsc->ops = &rxkad_client_ops;
  
!     psize = PDATA_SIZE(ticketLen);
!     tcp = (struct rxkad_cprivate *)rxi_Alloc(psize);
!     memset((void *)tcp, 0, psize);
      tsc->privateData = (char *)tcp;
      tcp->type |= rxkad_client;
      tcp->level = level;
      code = fc_keysched(sessionkey, tcp->keysched);
      if (code) {
! 	rxi_Free(tcp, psize);
  	rxi_Free(tsc, sizeof(struct rx_securityClass));
  	return 0;		/* bad key */
      }
***************
*** 205,211 ****
      tcp->kvno = kvno;		/* key version number */
      tcp->ticketLen = ticketLen;	/* length of ticket */
      if (tcp->ticketLen > MAXKTCTICKETLEN) {
! 	rxi_Free(tcp, sizeof(struct rxkad_cprivate));
  	rxi_Free(tsc, sizeof(struct rx_securityClass));
  	return 0;		/* bad key */
      }
--- 205,211 ----
      tcp->kvno = kvno;		/* key version number */
      tcp->ticketLen = ticketLen;	/* length of ticket */
      if (tcp->ticketLen > MAXKTCTICKETLEN) {
! 	rxi_Free(tcp, psize);
  	rxi_Free(tsc, sizeof(struct rx_securityClass));
  	return 0;		/* bad key */
      }
Index: openafs/src/rxkad/rxkad_common.c
diff -c openafs/src/rxkad/rxkad_common.c:1.20.2.9 openafs/src/rxkad/rxkad_common.c:1.20.2.10
*** openafs/src/rxkad/rxkad_common.c:1.20.2.9	Mon Feb 27 19:19:20 2006
--- openafs/src/rxkad/rxkad_common.c	Tue May 23 12:31:02 2006
***************
*** 23,29 ****
  #define INCLUDE_RXKAD_PRIVATE_DECLS
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/rxkad_common.c,v 1.20.2.9 2006/02/28 00:19:20 shadow Exp $");
  
  #ifdef KERNEL
  #ifndef UKERNEL
--- 23,29 ----
  #define INCLUDE_RXKAD_PRIVATE_DECLS
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/rxkad_common.c,v 1.20.2.10 2006/05/23 16:31:02 jaltman Exp $");
  
  #ifdef KERNEL
  #ifndef UKERNEL
***************
*** 68,74 ****
  #include <strings.h>
  #endif
  #endif
! 
  #endif /* KERNEL */
  
  #include <des/stats.h>
--- 68,74 ----
  #include <strings.h>
  #endif
  #endif
! #include <afs/afsutil.h>
  #endif /* KERNEL */
  
  #include <des/stats.h>
***************
*** 311,317 ****
      tcp = (struct rxkad_cprivate *)aobj->privateData;
      rxi_Free(aobj, sizeof(struct rx_securityClass));
      if (tcp->type & rxkad_client) {
! 	rxi_Free(tcp, sizeof(struct rxkad_cprivate));
      } else if (tcp->type & rxkad_server) {
  	rxi_Free(tcp, sizeof(struct rxkad_sprivate));
      } else {
--- 311,318 ----
      tcp = (struct rxkad_cprivate *)aobj->privateData;
      rxi_Free(aobj, sizeof(struct rx_securityClass));
      if (tcp->type & rxkad_client) {
! 	afs_int32 psize = PDATA_SIZE(tcp->ticketLen);
! 	rxi_Free(tcp, psize);
      } else if (tcp->type & rxkad_server) {
  	rxi_Free(tcp, sizeof(struct rxkad_sprivate));
      } else {
Index: openafs/src/rxkad/ticket5.c
diff -c openafs/src/rxkad/ticket5.c:1.8.2.2 openafs/src/rxkad/ticket5.c:1.8.2.3
*** openafs/src/rxkad/ticket5.c:1.8.2.2	Wed Feb 22 00:08:58 2006
--- openafs/src/rxkad/ticket5.c	Thu Jun 29 19:25:49 2006
***************
*** 62,68 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/ticket5.c,v 1.8.2.2 2006/02/22 05:08:58 jaltman Exp $");
  
  #if defined(UKERNEL)
  #include "../afs/sysincludes.h"
--- 62,68 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/ticket5.c,v 1.8.2.3 2006/06/29 23:25:49 jaltman Exp $");
  
  #if defined(UKERNEL)
  #include "../afs/sysincludes.h"
***************
*** 284,290 ****
  	v5_comp1 = decr_part.cname.name_string.val[1];
  	p = sconv_list;
  	while (p->v4_str) {
! 	    if (strncmp(p->v5_str, v5_comp0, p->len) == 0) {
  		/*
  		 * It is, so set the new name now, and chop off
  		 * instance's domain name if requested.
--- 284,290 ----
  	v5_comp1 = decr_part.cname.name_string.val[1];
  	p = sconv_list;
  	while (p->v4_str) {
! 	    if (strcmp(p->v5_str, v5_comp0) == 0) {
  		/*
  		 * It is, so set the new name now, and chop off
  		 * instance's domain name if requested.
Index: openafs/src/rxkad/domestic/fcrypt.c
diff -c openafs/src/rxkad/domestic/fcrypt.c:1.11.2.6 openafs/src/rxkad/domestic/fcrypt.c:1.11.2.7
*** openafs/src/rxkad/domestic/fcrypt.c:1.11.2.6	Mon Feb 27 19:19:21 2006
--- openafs/src/rxkad/domestic/fcrypt.c	Wed Aug  2 15:07:04 2006
***************
*** 20,26 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/domestic/fcrypt.c,v 1.11.2.6 2006/02/28 00:19:21 shadow Exp $");
  
  #define DEBUG 0
  #ifdef KERNEL
--- 20,26 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rxkad/domestic/fcrypt.c,v 1.11.2.7 2006/08/02 19:07:04 shadow Exp $");
  
  #define DEBUG 0
  #ifdef KERNEL
***************
*** 120,126 ****
      volatile unsigned char *Schar = (unsigned char *)&S;
      int i;
  
! #if defined(vax) || (defined(mips) && defined(MIPSEL)) || defined(AFSLITTLE_ENDIAN)
  #define Byte0 3
  #define Byte1 2
  #define Byte2 1
--- 120,126 ----
      volatile unsigned char *Schar = (unsigned char *)&S;
      int i;
  
! #ifndef WORDS_BIGENDIAN
  #define Byte0 3
  #define Byte1 2
  #define Byte2 1
Index: openafs/src/rxstat/NTMakefile
diff -c openafs/src/rxstat/NTMakefile:1.8 openafs/src/rxstat/NTMakefile:1.8.2.1
*** openafs/src/rxstat/NTMakefile:1.8	Fri Nov 21 03:01:20 2003
--- openafs/src/rxstat/NTMakefile	Mon Jul 31 17:51:21 2006
***************
*** 31,38 ****
  $(LIBFILE): $(LIBOBJS)
  	$(LIBARCH)
  
! rxstat.cs.c rxstat.ss.c rxstat.xdr.c rxstat.h: rxstat.xg
! 	$(RXGEN) -x $**
  
  copyheader: rxstat.h
     $(COPY) rxstat.h $(INCFILEDIR)\rx\rxstat.h
--- 31,47 ----
  $(LIBFILE): $(LIBOBJS)
  	$(LIBARCH)
  
! rxstat.cs.c: rxstat.xg rxstat.h
! 	$(RXGEN) -x -C -o $@ rxstat.xg
! 
! rxstat.ss.c: rxstat.xg rxstat.h
! 	$(RXGEN) -x -S -o $@ rxstat.xg
! 
! rxstat.xdr.c: rxstat.xg rxstat.h
! 	$(RXGEN) -x -c -o $@ rxstat.xg
! 
! rxstat.h: rxstat.xg
! 	$(RXGEN) -x -h -o $@ rxstat.xg
  
  copyheader: rxstat.h
     $(COPY) rxstat.h $(INCFILEDIR)\rx\rxstat.h
Index: openafs/src/shlibafsauthent/Makefile.in
diff -c openafs/src/shlibafsauthent/Makefile.in:1.9.2.6 openafs/src/shlibafsauthent/Makefile.in:1.9.2.7
*** openafs/src/shlibafsauthent/Makefile.in:1.9.2.6	Sat Dec 10 13:45:39 2005
--- openafs/src/shlibafsauthent/Makefile.in	Sun Aug 20 16:17:25 2006
***************
*** 274,280 ****
  ${DESTDIR}${libdir}/${LIBAFSAUTHENT}: ${LIBAFSAUTHENT}
  	${INSTALL} ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/${LIBAFSAUTHENT}
  	-ln -f -s ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent.${SHLIB_SUFFIX}
! 	-ln -f -s ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent.${SHLIB_SUFFIX}.${LIBFASAUTHENTMAJOR}
  
  ${TOP_LIBDIR}/${LIBAFSAUTHENT}: ${LIBAFSAUTHENT}
  	${INSTALL} ${LIBAFSAUTHENT} ${TOP_LIBDIR}/${LIBAFSAUTHENT}
--- 274,280 ----
  ${DESTDIR}${libdir}/${LIBAFSAUTHENT}: ${LIBAFSAUTHENT}
  	${INSTALL} ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/${LIBAFSAUTHENT}
  	-ln -f -s ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent.${SHLIB_SUFFIX}
! 	-ln -f -s ${LIBAFSAUTHENT} ${DESTDIR}${libdir}/libafsauthent.${SHLIB_SUFFIX}.${LIBAFSAUTHENTMAJOR}
  
  ${TOP_LIBDIR}/${LIBAFSAUTHENT}: ${LIBAFSAUTHENT}
  	${INSTALL} ${LIBAFSAUTHENT} ${TOP_LIBDIR}/${LIBAFSAUTHENT}
Index: openafs/src/shlibafsauthent/afsauthent.def
diff -c openafs/src/shlibafsauthent/afsauthent.def:1.1 openafs/src/shlibafsauthent/afsauthent.def:1.1.4.1
*** openafs/src/shlibafsauthent/afsauthent.def:1.1	Wed Aug 28 02:05:49 2002
--- openafs/src/shlibafsauthent/afsauthent.def	Sun Jul  2 21:16:36 2006
***************
*** 84,86 ****
--- 84,88 ----
  
  	DISK_function_names				@83 DATA
  	VOTE_function_names				@84 DATA
+ 	rx_Finalize					@85
+ 	pr_End						@86
Index: openafs/src/shlibafsrpc/Makefile.in
diff -c openafs/src/shlibafsrpc/Makefile.in:1.15.2.7 openafs/src/shlibafsrpc/Makefile.in:1.15.2.10
*** openafs/src/shlibafsrpc/Makefile.in:1.15.2.7	Sat Dec 10 13:45:40 2005
--- openafs/src/shlibafsrpc/Makefile.in	Sun Aug 20 18:24:10 2006
***************
*** 1,7 ****
  # API version. When something changes, increment as appropriate. 
  # Ignore at your own risk.
  LIBAFSRPCMAJOR=1
! LIBAFSRPCMINOR=0
  
  # Copyright 2000, International Business Machines Corporation and others.
  # All Rights Reserved.
--- 1,7 ----
  # API version. When something changes, increment as appropriate. 
  # Ignore at your own risk.
  LIBAFSRPCMAJOR=1
! LIBAFSRPCMINOR=1
  
  # Copyright 2000, International Business Machines Corporation and others.
  # All Rights Reserved.
***************
*** 55,60 ****
--- 55,62 ----
  	xdr_int32.o \
  	xdr_int64.o \
  	xdr_afsuuid.o \
+ 	xdr_update.o \
+ 	xdr_refernce.o \
  	AFS_component_version_number.o
  
  RXOBJS =\
***************
*** 147,152 ****
--- 149,156 ----
  		${SHLIB_LINKER} -o ${LIBAFSRPC} ${LIBOBJS} -bE:${srcdir}/afsrpc.exp ${MT_LIBS};; \
  	sun*_5*) \
  		${SHLIB_LINKER} -h libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR} -o ${LIBAFSRPC} ${LIBOBJS} ${MT_LIBS};; \
+ 	amd64_linux*) \
+ 		${SHLIB_LINKER} -Wl,-h,libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR} -Wl,--version-script=${srcdir}/mapfile.afs_xdr -o ${LIBAFSRPC} ${LIBOBJS} ${MT_LIBS};; \
  	*_linux*) \
  		${SHLIB_LINKER} -Wl,-h,libafsrpc.${SHLIB_SUFFIX}.${LIBAFSRPCMAJOR} -Wl,--version-script=${srcdir}/mapfile -o ${LIBAFSRPC} ${LIBOBJS} ${MT_LIBS};; \
  	*) \
***************
*** 280,286 ****
  #
  #   $ what /opt/langtools/bin/pxdb32
  #   /opt/langtools/bin/pxdb32:
! #           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.15.2.7 $
  #
  # The problem occurs when -g and -O are both used when compiling des.c.
  # The simplest way to work around the problem is to leave out either -g or -O.
--- 284,290 ----
  #
  #   $ what /opt/langtools/bin/pxdb32
  #   /opt/langtools/bin/pxdb32:
! #           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.15.2.10 $
  #
  # The problem occurs when -g and -O are both used when compiling des.c.
  # The simplest way to work around the problem is to leave out either -g or -O.
Index: openafs/src/shlibafsrpc/mapfile
diff -c openafs/src/shlibafsrpc/mapfile:1.3.2.2 openafs/src/shlibafsrpc/mapfile:1.3.2.3
*** openafs/src/shlibafsrpc/mapfile:1.3.2.2	Mon Aug  8 11:39:24 2005
--- openafs/src/shlibafsrpc/mapfile	Wed Jul  5 14:34:41 2006
***************
*** 81,86 ****
--- 81,90 ----
  	multi_Finalize_Ignore;
  	add_to_error_table;
  	xdr_afsUUID;
+ 	xdr_afs_int32;
+ 	xdr_afs_uint32;
+ 	xdr_afs_int64;
+ 	xdr_afs_uint64;
  	rx_IncrementTimeAndCount;
  	rx_enable_stats;
  	rx_GetServerDebug;
Index: openafs/src/shlibafsrpc/mapfile.afs_xdr
diff -c /dev/null openafs/src/shlibafsrpc/mapfile.afs_xdr:1.1.4.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/shlibafsrpc/mapfile.afs_xdr	Sun Aug 20 18:24:10 2006
***************
*** 0 ****
--- 1,144 ----
+ # Copyright 2000, International Business Machines Corporation and others.
+ # All Rights Reserved.
+ # 
+ # This software has been released under the terms of the IBM Public
+ # License.  For details, see the LICENSE file in the top-level source
+ # directory or online at http://www.openafs.org/dl/license10.html
+ 
+ {
+     global:
+ 	des_check_key_parity;
+ 	des_fixup_key_parity;
+ 	des_init_random_number_generator;
+ 	des_is_weak_key;
+ 	des_key_sched;
+ 	des_random_key;
+ 	des_string_to_key;
+ 	des_cbc_cksum;
+ 	des_ecb_encrypt;
+ 	des_pcbc_encrypt;
+ 	ktohl;
+ 	life_to_time;
+ 	rx_DestroyConnection;
+ 	rx_EndCall;
+ 	rx_Finalize;
+ 	rx_GetCachedConnection;
+ 	rx_GetCall;
+ 	rx_GetIFInfo;
+ 	rx_GetSpecific;
+ 	rx_Init;
+ 	rx_KeyCreate;
+ 	rx_NewCall;
+ 	rx_NewConnection;
+ 	rx_NewService;
+ 	rx_PrintPeerStats;
+ 	rx_PrintStats;
+ 	rx_PrintTheseStats;
+ 	rx_ReadProc;
+ 	rx_ReleaseCachedConnection;
+ 	rx_ServerProc;
+ 	rx_SetSpecific;
+ 	rx_StartServer;
+ 	rx_WriteProc;
+ 	rxevent_Init;
+ 	rxevent_Post;
+ 	rxkad_GetServerInfo;
+ 	rxkad_NewClientSecurityObject;
+ 	rxkad_NewServerSecurityObject;
+ 	rxnull_NewClientSecurityObject;
+ 	rxnull_NewServerSecurityObject;
+ 	rxs_Release;
+ 	time_to_life;
+ 	tkt_CheckTimes;
+ 	tkt_DecodeTicket;
+ 	tkt_MakeTicket;
+ 	xdrrx_create;
+ 	hton_syserr_conv;
+ 	rxkad_global_stats;
+ 	rxkad_global_stats_lock;
+ 	rxkad_stats_key;
+ 	com_err;
+ 	error_message;
+ 	rx_socket;
+ 	rxevent_debugFile;
+ 	rx_debugFile;
+ 	rx_connDeadTime;
+ 	rx_maxReceiveSize;
+ 	rx_UdpBufSize;
+ 	rx_extraQuota;
+ 	rx_extraPackets;
+ 	rx_tranquil;
+ 	rx_getAllAddr;
+ 	rx_nWaiting;
+ 	rx_stats;
+ 	rx_SetNoJumbo;
+ 	rx_SetConnDeadTime;
+ 	rx_FlushWrite;
+ 	rx_thread_id_key;
+ 	multi_Finalize;
+ 	multi_Select;
+ 	multi_Init;
+ 	multi_Finalize_Ignore;
+ 	add_to_error_table;
+         afs_xdr_opaque;
+         afs_xdr_string;
+         afs_xdr_short;
+         afs_xdr_bytes;
+         afs_xdr_vector;
+         afs_xdr_int;
+         afs_xdr_void;
+         afs_xdr_long;
+         afs_xdr_u_long;
+         afs_xdr_u_short;
+         afs_xdr_u_int;
+         afs_xdr_char;
+         afs_xdr_u_char;
+         afs_xdr_bool;
+         afs_xdr_enum;
+         afs_xdr_array;
+         afs_xdr_arrayN;
+         afs_xdr_union;
+         afs_xdr_float;
+         afs_xdr_double;
+         afs_xdr_reference;
+         afs_xdr_wrapstring;
+         afs_xdr_pointer;
+ 	xdr_afsUUID;
+ 	xdr_afs_int32;
+ 	xdr_afs_uint32;
+ 	xdr_afs_int64;
+ 	xdr_afs_uint64;
+ 	rx_IncrementTimeAndCount;
+ 	rx_enable_stats;
+ 	rx_GetServerDebug;
+ 	rx_GetServerStats;
+ 	rx_GetServerVersion;
+ 	rx_GetServerConnections;
+ 	rx_stats_mutex;
+ 	rx_GetServerPeers;
+ 	rx_RetrieveProcessRPCStats;
+ 	rx_RetrievePeerRPCStats;
+ 	rx_FreeRPCStats;
+ 	rx_queryProcessRPCStats;
+ 	rx_queryPeerRPCStats;
+ 	rx_enableProcessRPCStats;
+ 	rx_enablePeerRPCStats;
+ 	rx_disableProcessRPCStats;
+ 	rx_disablePeerRPCStats;
+ 	RXSTATS_ExecuteRequest;
+ 	RXSTATS_RetrieveProcessRPCStats;
+ 	RXSTATS_RetrievePeerRPCStats;
+ 	RXSTATS_QueryProcessRPCStats;
+ 	RXSTATS_QueryPeerRPCStats;
+ 	RXSTATS_EnableProcessRPCStats;
+ 	RXSTATS_EnablePeerRPCStats;
+ 	RXSTATS_DisableProcessRPCStats;
+ 	RXSTATS_DisablePeerRPCStats;
+ 	RXSTATS_QueryRPCStatsVersion;
+ 	RXSTATS_ClearProcessRPCStats;
+ 	RXSTATS_ClearPeerRPCStats;
+ 	TM_GetTimeOfDay;
+ 
+     local:
+ 	*;
+ };
Index: openafs/src/sys/pagsh.c
diff -c openafs/src/sys/pagsh.c:1.9 openafs/src/sys/pagsh.c:1.9.2.3
*** openafs/src/sys/pagsh.c:1.9	Tue Jul 15 19:16:54 2003
--- openafs/src/sys/pagsh.c	Fri Oct  6 08:44:43 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/pagsh.c,v 1.9 2003/07/15 23:16:54 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.2.3 2006/10/06 12:44:43 shadow Exp $");
  
  #ifdef	AFS_AIX32_ENV
  #include <signal.h>
Index: openafs/src/sys/rmtsysc.c
diff -c openafs/src/sys/rmtsysc.c:1.11 openafs/src/sys/rmtsysc.c:1.11.2.1
*** openafs/src/sys/rmtsysc.c:1.11	Tue Jul 15 19:16:54 2003
--- openafs/src/sys/rmtsysc.c	Mon Jul 31 11:33:46 2006
***************
*** 16,22 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/rmtsysc.c,v 1.11 2003/07/15 23:16:54 shadow Exp $");
  
  #include <errno.h>
  #include <limits.h>
--- 16,22 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/sys/rmtsysc.c,v 1.11.2.1 2006/07/31 15:33:46 shadow Exp $");
  
  #include <errno.h>
  #include <limits.h>
***************
*** 45,51 ****
  static afs_int32 hostAddr = 0;
  static int hostAddrLookup = 0;
  char *afs_server = 0, server_name[128];
- afs_int32 host;
  static afs_int32 SetClientCreds();
  
  /* Picks up the name of the remote afs client host where the rmtsys 
--- 45,50 ----
***************
*** 122,127 ****
--- 121,127 ----
  {
      struct rx_connection *conn;
      struct rx_securityClass *null_securityObject;
+     afs_int32 host;
  
      if (!(host = GetAfsServerAddr(syscall))) {
  	*errorcode = -1;
Index: openafs/src/tsm41/Makefile.in
diff -c openafs/src/tsm41/Makefile.in:1.7.6.1 openafs/src/tsm41/Makefile.in:1.7.6.2
*** openafs/src/tsm41/Makefile.in:1.7.6.1	Thu Mar  9 01:42:10 2006
--- openafs/src/tsm41/Makefile.in	Thu Jul 13 13:19:41 2006
***************
*** 10,56 ****
  
  
  CFLAGS=${OPTIMIZE} -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} ${XCFLAGS} ${ARCHFLAGS}
! AFSLIBS =  ${TOP_LIBDIR}/libkauth.a ${TOP_LIBDIR}/libprot.a \
! 	   ${TOP_LIBDIR}/libubik.a ${TOP_LIBDIR}/libauth.a \
! 	   ${TOP_LIBDIR}/librxkad.a ${TOP_LIBDIR}/libsys.a \
! 	   ${TOP_LIBDIR}/libdes.a ${TOP_LIBDIR}/librx.a \
! 	   ${TOP_LIBDIR}/liblwp.a ${TOP_LIBDIR}/libcmd.a \
! 	   ${TOP_LIBDIR}/libcom_err.a ${TOP_LIBDIR}/util.a \
! 	   ${TOP_LIBDIR}/libaudit.a
! KAFSLIBS = ${TOP_LIBDIR}/libkauth.krb.a ${TOP_LIBDIR}/libprot.a \
! 	   ${TOP_LIBDIR}/libubik.a ${TOP_LIBDIR}/libauth.krb.a \
! 	   ${TOP_LIBDIR}/librxkad.a ${TOP_LIBDIR}/libsys.a \
! 	   ${TOP_LIBDIR}/libdes.a ${TOP_LIBDIR}/librx.a \
! 	   ${TOP_LIBDIR}/liblwp.a ${TOP_LIBDIR}/libcmd.a \
! 	   ${TOP_LIBDIR}/libcom_err.a ${TOP_LIBDIR}/util.a \
! 	   ${TOP_LIBDIR}/libaudit.a
! AUTHLIBS=afs_dynamic_auth afs_dynamic_kerbauth
  IMPORTS = -bI:/lib/aio.exp -bI:/lib/netinet.exp -bI:/lib/sockets.exp -bI:/lib/statcmd.exp 
  LDFLAGS = -eafs_initialize ${IMPORTS} -lsys -lcsys -lc
  
  all: $(AUTHLIBS)
  
! install install.noversion:   
  
  clean:
  	$(RM) -f $(AUTHLIBS) $(AUTHFILES) so_locations
  
! afs_dynamic_auth: aix41_auth.o ${AFSLIBS} ${AUTHFILES} 
! 	$(LD) -o afs_dynamic_auth aix41_auth.o $(AFSLIBS) ${AUTHFILES} ${XLIBS} ${LDFLAGS}
  
! afs_dynamic_kerbauth: aix41_auth_krb.o ${KAFSLIBS} ${AUTHFILES}
! 	$(LD) -o afs_dynamic_kerbauth aix41_auth_krb.o $(KAFSLIBS) ${AUTHFILES} ${XLIBS} ${LDFLAGS}
  
! aix41_auth.o: ${srcdir}/aix41_auth.c
! 	${CC} ${CFLAGS} -c ${srcdir}/aix41_auth.c
  
- aix41_auth_krb.o: ${srcdir}/aix41_auth.c
- 	${CC} ${CFLAGS} -DAFS_KERBEROS_ENV -c ${srcdir}/aix41_auth.c -o aix41_auth_krb.o
  ${DEST}/root.client/usr/vice/etc/afs_dynamic_auth: afs_dynamic_auth
  	${INSTALL} $? $@
  
  ${DEST}/root.client/usr/vice/etc/afs_dynamic_kerbauth: afs_dynamic_kerbauth
  	${INSTALL} $? $@
  
! dest:  ${DEST}/root.client/usr/vice/etc/afs_dynamic_auth ${DEST}/root.client/usr/vice/etc/afs_dynamic_kerbauth
  
--- 10,109 ----
  
  
  CFLAGS=${OPTIMIZE} -I${TOP_OBJDIR}/src/config -I${TOP_INCDIR} ${XCFLAGS} ${ARCHFLAGS}
! CCRULE=${CC} ${CFLAGS} -c $? -o $@
! 
! AFSLIBS = \
! 		${TOP_LIBDIR}/libkauth.a \
! 		${TOP_LIBDIR}/libprot.a \
! 		${TOP_LIBDIR}/libubik.a \
! 		${TOP_LIBDIR}/libauth.a \
! 		${TOP_LIBDIR}/librxkad.a \
! 		${TOP_LIBDIR}/libsys.a \
! 		${TOP_LIBDIR}/libdes.a \
! 		${TOP_LIBDIR}/librx.a \
! 		${TOP_LIBDIR}/liblwp.a \
! 		${TOP_LIBDIR}/libcmd.a \
! 		${TOP_LIBDIR}/libcom_err.a \
! 		${TOP_LIBDIR}/util.a \
! 		${TOP_LIBDIR}/libaudit.a
! 
! KAFSLIBS = \
! 		${TOP_LIBDIR}/libkauth.krb.a \
! 		${TOP_LIBDIR}/libprot.a \
! 		${TOP_LIBDIR}/libubik.a \
! 		${TOP_LIBDIR}/libauth.krb.a \
! 		${TOP_LIBDIR}/librxkad.a \
! 		${TOP_LIBDIR}/libsys.a \
! 		${TOP_LIBDIR}/libdes.a \
! 		${TOP_LIBDIR}/librx.a \
! 		${TOP_LIBDIR}/liblwp.a \
! 		${TOP_LIBDIR}/libcmd.a \
! 		${TOP_LIBDIR}/libcom_err.a \
! 		${TOP_LIBDIR}/util.a \
! 		${TOP_LIBDIR}/libaudit.a
! 
! AUTH_OBJS = \
! 		aix_auth.o \
! 		aix_ident.o \
! 		aix_auth_common.o \
! 		aix_ktc_null.o
! 
! AUTH_KRB_OBJS = \
! 		aix_auth.o \
! 		aix_ident.o \
! 		aix_auth_common.o \
! 		aix_ktc_krb.o \
! 
! AUTHLIBS= \
! 		afs_dynamic_auth \
! 		afs_dynamic_kerbauth
! 
  IMPORTS = -bI:/lib/aio.exp -bI:/lib/netinet.exp -bI:/lib/sockets.exp -bI:/lib/statcmd.exp 
  LDFLAGS = -eafs_initialize ${IMPORTS} -lsys -lcsys -lc
  
  all: $(AUTHLIBS)
  
! install install.noversion:
  
  clean:
  	$(RM) -f $(AUTHLIBS) $(AUTHFILES) so_locations
  
! afs_dynamic_auth: ${AUTH_OBJS} ${AFSLIBS} ${AUTHFILES}
! 	$(LD) -o $@ ${AUTH_OBJS} $(AFSLIBS) ${AUTHFILES} ${XLIBS} ${LDFLAGS}
! 
! afs_dynamic_kerbauth: ${AUTH_KRB_OBJS} ${KAFSLIBS} ${AUTHFILES}
! 	$(LD) -o $@ ${AUTH_KRB_OBJS} $(KAFSLIBS) ${AUTHFILES} ${XLIBS} ${LDFLAGS}
  
! aix_auth_common.o: ${srcdir}/aix_auth_common.c
! 	${CCRULE}
  
! aix_ktc_krb.o: ${srcdir}/aix_ktc.c
! 	${CCRULE} -DAFS_KERBEROS_ENV
! 
! aix_ktc_null.o: ${srcdir}/aix_ktc.c
! 	${CCRULE}
! 
! aix_auth.o:
! 	case ${SYS_NAME} in \
! 	rs_aix4*) \
! 		${CC} ${CFLAGS} -c ${srcdir}/aix41_auth.c -o $@ ;; \
! 	rs_aix5*) \
! 		${CC} ${CFLAGS} -c ${srcdir}/aix5_auth.c -o $@ ;; \
! 	*) \
! 		echo "not building aix lam binary for ${SYS_NAME}" ;; \
! 	esac
! 
! # aix41_ident.c is a null source file for rs_aix5*
! aix_ident.o: ${srcdir}/aix41_ident.c
! 	${CCRULE}
  
  ${DEST}/root.client/usr/vice/etc/afs_dynamic_auth: afs_dynamic_auth
  	${INSTALL} $? $@
  
  ${DEST}/root.client/usr/vice/etc/afs_dynamic_kerbauth: afs_dynamic_kerbauth
  	${INSTALL} $? $@
  
! dest: \
! 	${DEST}/root.client/usr/vice/etc/afs_dynamic_auth \
! 	${DEST}/root.client/usr/vice/etc/afs_dynamic_kerbauth
  
Index: openafs/src/tsm41/aix41_auth.c
diff -c openafs/src/tsm41/aix41_auth.c:1.10.2.1 openafs/src/tsm41/aix41_auth.c:1.10.2.2
*** openafs/src/tsm41/aix41_auth.c:1.10.2.1	Sun May  8 01:51:24 2005
--- openafs/src/tsm41/aix41_auth.c	Thu Jul 13 13:19:41 2006
***************
*** 11,19 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/tsm41/aix41_auth.c,v 1.10.2.1 2005/05/08 05:51:24 shadow Exp $");
  
! #if defined(AFS_AIX41_ENV)
  #include <sys/types.h>
  #include <sys/param.h>
  #include <stdio.h>
--- 11,19 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/tsm41/aix41_auth.c,v 1.10.2.2 2006/07/13 17:19:41 shadow Exp $");
  
! #if defined(AFS_AIX41_ENV) && !defined(AFS_AIX51_ENV)
  #include <sys/types.h>
  #include <sys/param.h>
  #include <stdio.h>
***************
*** 29,203 ****
  #include <afs/kauth.h>
  #include <afs/kautils.h>
  
! struct passwd *afs_getpwnam_int(char *, int);
! 
! int
! afs_authenticate(char *userName, char *response, int *reenter, char **message)
! {
!     char *reason, *pword, prompt[256];
!     struct passwd *pwd;
!     int code, unixauthneeded, password_expires = -1;
! 
!     *reenter = 0;
!     *message = (char *)0;
!     if (response) {
! 	pword = response;
!     } else {
! 	sprintf(prompt, "Enter AFS password for %s: ", userName);
! 	pword = getpass(prompt);
! 	if (strlen(pword) == 0) {
! 	    printf
! 		("Unable to read password because zero length passord is illegal\n");
! 	    *message = (char *)malloc(256);
! 	    sprintf(*message,
! 		    "Unable to read password because zero length passord is illegal\n");
! 	    return AUTH_FAILURE;
! 	}
!     }
! #ifdef AFS_AIX51_ENV
!     if ((pwd = afs_getpwnam_int(userName, 1)) == NULL) 
! #else
!     if ((pwd = getpwnam(userName)) == NULL) 
! #endif
!       {
! 	*message = (char *)malloc(256);
! 	sprintf(*message, "getpwnam for user failed\n");
! 	return AUTH_FAILURE;
!     }
!     if (code =
! 	ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION + KA_USERAUTH_DOSETPAG,
! 				   userName, (char *)0, (char *)0, pword, 0,
! 				   &password_expires, 0, &reason)) {
! 	if (code == KANOENT)
! 	    return AUTH_NOTFOUND;
! 	*message = (char *)malloc(1024);
! 	sprintf(*message, "Unable to authenticate to AFS because %s.\n",
! 		reason);
! 	return AUTH_FAILURE;
!     }
! #if defined(AFS_KERBEROS_ENV)
!     setup_ticket_file(userName);
! #endif
!     return AUTH_SUCCESS;
! }
! 
! int
! afs_chpass(char *userName, char *oldPasswd, char *newPasswd, char **message)
! {
!     return AUTH_SUCCESS;
! }
! 
! int
! afs_passwdexpired(char *userName, char **message)
! {
!     return AUTH_SUCCESS;
! }
! 
! int
! afs_passwdrestrictions(char *userName, char *newPasswd, char *oldPasswd,
! 		       char **message)
! {
!     return AUTH_SUCCESS;
! }
! 
! int
! afs_getgrset(char *userName)
! {
!     return NULL;
! }
! 
! struct group *
! afs_getgrgid(int id)
! {
! #ifdef AFS_AIX51_ENV
!     static char name[64];
!     static char passwd[64];
!     static struct group grp;
!     struct group *g;
!     char *mem = NULL;
! 
!     while ((g = getgrent()) != NULL) {
! 	if (g->gr_gid == id) {
! 	    strncpy(&name, g->gr_name, sizeof(name));
! 	    strncpy(&passwd, g->gr_passwd, sizeof(passwd));
! 	    grp.gr_name = &name;
! 	    grp.gr_passwd = &passwd;
! 	    grp.gr_gid = g->gr_gid;
! 	    grp.gr_mem = &mem;
! 	    break;
! 	}
!     }
!     endgrent();
!     if (g)
! 	return &grp;
! #endif
!     return NULL;
! }
! 
! struct group *
! afs_getgrnam(char *name)
! {
!     return NULL;
! }
! 
! #ifdef AFS_AIX51_ENV
! struct passwd *
! afs_getpwnam(char *user)
! {
!   return (NULL);
! }
! 
! struct passwd *
! afs_getpwnam_int(char *user, int ignore)
! {
!     static char name[64];
!     static char passwd[64];
!     static char gecos[256];
!     static char dir[256];
!     static char shell[256];
!     static struct passwd pwd;
!     struct passwd *p;
! 
!     pwd.pw_uid = 4294967294;
!     pwd.pw_gid = 4294967294;
!     strcpy((char *)&shell, "/bin/false");
!     if (!user)
!        return &pwd;
! 
!     p = getpwnam (user);
!     
!     if (p) {
!       strncpy(&name, p->pw_name, sizeof(name));
!       strncpy(&passwd, p->pw_passwd, sizeof(passwd));
!       strncpy(&gecos, p->pw_gecos, sizeof(gecos));
!       strncpy(&dir, p->pw_dir, sizeof(dir));
!       strncpy(&shell, p->pw_shell, sizeof(shell));
!     }
!     pwd.pw_name = &name;
!     pwd.pw_passwd = &passwd;
!     pwd.pw_uid = p->pw_uid;
!     pwd.pw_gid = p->pw_gid;
!     pwd.pw_gecos = &gecos;
!     pwd.pw_dir = &dir;
!     pwd.pw_shell = &shell;
! 
!     if (ignore && (p == NULL))
!        return NULL;
!     return &pwd;
! }
! #else
! int
! afs_getpwnam(int id)
! {
!     return NULL;
! }
! #endif
! 
! int
! afs_getpwuid(char *name)
! {
!     return NULL;
! }
  
  int
  afs_initialize(struct secmethod_table *meths)
--- 29,35 ----
  #include <afs/kauth.h>
  #include <afs/kautils.h>
  
! #include "aix_auth_prototypes.h"
  
  int
  afs_initialize(struct secmethod_table *meths)
***************
*** 216,221 ****
--- 48,54 ----
      meths->method_authenticate = afs_authenticate;
      meths->method_passwdexpired = afs_passwdexpired;
      meths->method_passwdrestrictions = afs_passwdrestrictions;
+ 
      /*
       * These we need to bring in because, for afs users, /etc/security/user's
       * "registry" must non-local (i.e. DCE) since otherwise it assumes it's a
***************
*** 231,253 ****
      return (0);
  }
  
! #if defined(AFS_KERBEROS_ENV)
! 
! setup_ticket_file(userName)
!      char *userName;
! {
!     extern char *ktc_tkt_string();
!     struct passwd *pwd;
! 
!     setpwent();			/* open the pwd database */
!     pwd = getpwnam(userName);
!     if (pwd) {
! 	if (chown(ktc_tkt_string(), pwd->pw_uid, pwd->pw_gid) < 0)
! 	    perror("chown: ");
!     } else
! 	perror("getpwnam : ");
!     endpwent();			/* close the pwd database */
! }
! #endif /* AFS_KERBEROS_ENV */
! 
! #endif
--- 64,67 ----
      return (0);
  }
  
! #endif /* AFS_AIX41_ENV && !AFS_AIX51_ENV */
Index: openafs/src/tsm41/aix41_ident.c
diff -c /dev/null openafs/src/tsm41/aix41_ident.c:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/tsm41/aix41_ident.c	Thu Jul 13 13:19:41 2006
***************
*** 0 ****
--- 1,64 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #include <afsconfig.h>
+ #include <afs/param.h>
+ 
+ RCSID
+     ("$Header: /cvs/openafs/src/tsm41/aix41_ident.c,v 1.1.2.2 2006/07/13 17:19:41 shadow Exp $");
+ 
+ #if defined(AFS_AIX41_ENV) && !defined(AFS_AIX51_ENV)
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <stdio.h>
+ #include <locale.h>
+ #include <nl_types.h>
+ #include <pwd.h>
+ #include <netdb.h>
+ #include <sys/socket.h>
+ #include <sys/file.h>
+ #include <errno.h>
+ #include <usersec.h>
+ 
+ #include <afs/kauth.h>
+ #include <afs/kautils.h>
+ 
+ #include "aix_ident_prototypes.h"
+ 
+ int
+ afs_getgrset(char *userName)
+ {
+     return NULL;
+ }
+ 
+ struct group *
+ afs_getgrgid(int id)
+ {
+     return NULL;
+ }
+ 
+ struct group *
+ afs_getgrnam(char *name)
+ {
+     return NULL;
+ }
+ 
+ int
+ afs_getpwnam(int id)
+ {
+     return NULL;
+ }
+ 
+ int
+ afs_getpwuid(char *name)
+ {
+     return NULL;
+ }
+ 
+ #endif /* AFS_AIX41_ENV && !AFS_AIX51_ENV */
Index: openafs/src/tsm41/aix5_auth.c
diff -c /dev/null openafs/src/tsm41/aix5_auth.c:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/tsm41/aix5_auth.c	Thu Jul 13 13:19:41 2006
***************
*** 0 ****
--- 1,57 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #include <afsconfig.h>
+ #include <afs/param.h>
+ 
+ RCSID
+     ("$Header: /cvs/openafs/src/tsm41/aix5_auth.c,v 1.1.2.2 2006/07/13 17:19:41 shadow Exp $");
+ 
+ #if defined(AFS_AIX51_ENV)
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <stdio.h>
+ #include <locale.h>
+ #include <nl_types.h>
+ #include <pwd.h>
+ #include <netdb.h>
+ #include <sys/socket.h>
+ #include <sys/file.h>
+ #include <errno.h>
+ #include <usersec.h>
+ 
+ #include <afs/kauth.h>
+ #include <afs/kautils.h>
+ 
+ #include "aix_auth_prototypes.h"
+ 
+ int
+ afs_initialize(struct secmethod_table *meths)
+ {
+     /*
+      * Initialize kauth package here so we don't have to call it
+      * each time we call the authenticate routine.      
+      */
+     ka_Init(0);
+     memset(meths, 0, sizeof(struct secmethod_table));
+ 
+     /*
+      * Initialize the exported interface routines.
+      * Aside from method_authenticate, these are just no-ops.
+      */
+     meths->method_chpass = afs_chpass;
+     meths->method_authenticate = afs_authenticate;
+     meths->method_passwdexpired = afs_passwdexpired;
+     meths->method_passwdrestrictions = afs_passwdrestrictions;
+     meths->method_getpasswd = afs_getpasswd;
+ 
+     return (0);
+ }
+ 
+ #endif /* AFS_AIX51_ENV */
Index: openafs/src/tsm41/aix_auth_common.c
diff -c /dev/null openafs/src/tsm41/aix_auth_common.c:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/tsm41/aix_auth_common.c	Thu Jul 13 13:19:41 2006
***************
*** 0 ****
--- 1,105 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #include <afsconfig.h>
+ #include <afs/param.h>
+ 
+ RCSID
+     ("$Header: /cvs/openafs/src/tsm41/aix_auth_common.c,v 1.1.2.2 2006/07/13 17:19:41 shadow Exp $");
+ 
+ #if defined(AFS_AIX41_ENV)
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <stdio.h>
+ #include <locale.h>
+ #include <nl_types.h>
+ #include <pwd.h>
+ #include <netdb.h>
+ #include <sys/socket.h>
+ #include <sys/file.h>
+ #include <errno.h>
+ #include <usersec.h>
+ 
+ #include <afs/kauth.h>
+ #include <afs/kautils.h>
+ 
+ #include "aix_auth_prototypes.h"
+ 
+ int
+ afs_authenticate(char *userName, char *response, int *reenter, char **message)
+ {
+     char *reason, *pword, prompt[256];
+     struct passwd *pwd;
+     int code, unixauthneeded, password_expires = -1;
+ 
+     *reenter = 0;
+     *message = (char *)0;
+     if (response) {
+ 	pword = response;
+     } else {
+ 	sprintf(prompt, "Enter AFS password for %s: ", userName);
+ 	pword = getpass(prompt);
+ 	if (strlen(pword) == 0) {
+ 	    printf
+ 		("Unable to read password because zero length passord is illegal\n");
+ 	    *message = (char *)malloc(256);
+ 	    sprintf(*message,
+ 		    "Unable to read password because zero length passord is illegal\n");
+ 	    return AUTH_FAILURE;
+ 	}
+     }
+ 
+     if ((pwd = getpwnam(userName)) == NULL) {
+ 	*message = (char *)malloc(256);
+ 	sprintf(*message, "getpwnam for user failed\n");
+ 	return AUTH_FAILURE;
+     }
+ 
+     if (code =
+ 	ka_UserAuthenticateGeneral(KA_USERAUTH_VERSION + KA_USERAUTH_DOSETPAG,
+ 				   userName, (char *)0, (char *)0, pword, 0,
+ 				   &password_expires, 0, &reason)) {
+ 	if (code == KANOENT)
+ 	    return AUTH_NOTFOUND;
+ 	*message = (char *)malloc(1024);
+ 	sprintf(*message, "Unable to authenticate to AFS because %s.\n",
+ 		reason);
+ 	return AUTH_FAILURE;
+     }
+     aix_ktc_setup_ticket_file(userName);
+     return AUTH_SUCCESS;
+ }
+ 
+ int
+ afs_chpass(char *userName, char *oldPasswd, char *newPasswd, char **message)
+ {
+     return AUTH_SUCCESS;
+ }
+ 
+ int
+ afs_passwdexpired(char *userName, char **message)
+ {
+     return AUTH_SUCCESS;
+ }
+ 
+ int
+ afs_passwdrestrictions(char *userName, char *newPasswd, char *oldPasswd,
+ 		       char **message)
+ {
+     return AUTH_SUCCESS;
+ }
+ 
+ char *
+ afs_getpasswd(char * userName)
+ {
+     errno = ENOSYS;
+     return NULL;
+ }
+ 
+ #endif /* AFS_AIX41_ENV */
Index: openafs/src/tsm41/aix_auth_prototypes.h
diff -c /dev/null openafs/src/tsm41/aix_auth_prototypes.h:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/tsm41/aix_auth_prototypes.h	Thu Jul 13 13:19:41 2006
***************
*** 0 ****
--- 1,25 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #ifndef _AFS_TSM41_AIX_AUTH_PROTOTYPES_H
+ #define _AFS_TSM41_AIX_AUTH_PROTOTYPES_H
+ 
+ extern int afs_authenticate(char *userName, 
+ 			    char *response, 
+ 			    int *reenter, 
+ 			    char **message);
+ extern int afs_chpass(char *userName, char *oldPasswd, 
+ 		      char *newPasswd, char **message);
+ extern int afs_passwdexpired(char *userName, char **message);
+ extern int afs_passwdrestrictions(char *userName, char *newPasswd, 
+ 				  char *oldPasswd, char ** message);
+ extern char * afs_getpasswd(char * userName);
+ extern void aix_ktc_setup_ticket_file(char * userName);
+ 
+ #endif /* _AFS_TSM41_AIX_AUTH_PROTOTYPES_H */
Index: openafs/src/tsm41/aix_ident_prototypes.h
diff -c /dev/null openafs/src/tsm41/aix_ident_prototypes.h:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/tsm41/aix_ident_prototypes.h	Thu Jul 13 13:19:41 2006
***************
*** 0 ****
--- 1,20 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #ifndef _AFS_TSM41_AIX_IDENT_PROTOTYPES_H
+ #define _AFS_TSM41_AIX_IDENT_PROTOTYPES_H
+ 
+ extern int afs_getgrset(char *userName);
+ extern struct group * afs_getgrgid(int id);
+ extern struct group * afs_getgrnam(char *name);
+ extern struct passwd * afs_getpwnam(char *user);
+ extern int afs_getpwnam(int id);
+ extern int afs_getpwuid(char *name);
+ 
+ #endif /* _AFS_TSM41_AIX_IDENT_PROTOTYPES_H */
Index: openafs/src/tsm41/aix_ktc.c
diff -c /dev/null openafs/src/tsm41/aix_ktc.c:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:14 2006
--- openafs/src/tsm41/aix_ktc.c	Thu Jul 13 13:19:41 2006
***************
*** 0 ****
--- 1,56 ----
+ /*
+  * Copyright 2000, International Business Machines Corporation and others.
+  * All Rights Reserved.
+  * 
+  * This software has been released under the terms of the IBM Public
+  * License.  For details, see the LICENSE file in the top-level source
+  * directory or online at http://www.openafs.org/dl/license10.html
+  */
+ 
+ #include <afsconfig.h>
+ #include <afs/param.h>
+ 
+ RCSID
+     ("$Header: /cvs/openafs/src/tsm41/aix_ktc.c,v 1.1.2.2 2006/07/13 17:19:41 shadow Exp $");
+ 
+ #if defined(AFS_AIX41_ENV)
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <stdio.h>
+ #include <locale.h>
+ #include <nl_types.h>
+ #include <pwd.h>
+ #include <netdb.h>
+ #include <sys/socket.h>
+ #include <sys/file.h>
+ #include <errno.h>
+ #include <usersec.h>
+ 
+ #include <afs/kauth.h>
+ #include <afs/kautils.h>
+ 
+ #include "aix_auth_prototypes.h"
+ 
+ #include <afs/ktc.h>
+ 
+ void
+ aix_ktc_setup_ticket_file(char * userName)
+ {
+ #if defined(AFS_KERBEROS_ENV)
+     struct passwd *pwd;
+ 
+     setpwent();			/* open the pwd database */
+     pwd = getpwnam(userName);
+     if (pwd) {
+ 	if (chown(ktc_tkt_string_uid(pwd->pw_uid), 
+ 		  pwd->pw_uid, pwd->pw_gid) < 0) {
+ 	    perror("chown: ");
+ 	}
+     } else {
+ 	perror("getpwnam : ");
+     }
+     endpwent();			/* close the pwd database */
+ #endif /* AFS_KERBEROS_ENV */
+ }
+ 
+ #endif /* AFS_AIX41_ENV */
Index: openafs/src/tviced/Makefile.in
diff -c openafs/src/tviced/Makefile.in:1.10.2.2 openafs/src/tviced/Makefile.in:1.10.2.4
*** openafs/src/tviced/Makefile.in:1.10.2.2	Thu Mar  9 16:46:09 2006
--- openafs/src/tviced/Makefile.in	Mon Jul 31 15:01:19 2006
***************
*** 15,20 ****
--- 15,21 ----
  
  CCRULE=${CC} ${CFLAGS} -c $?
  
+ RX=../rx
  VICED=../viced
  VLSERVER=../vlserver
  LWP=../lwp
***************
*** 42,54 ****
  
  FSINTOBJS= afsaux.o afscbint.cs.o afsint.ss.o afsint.xdr.o
  
  objects= ${VICEDOBJS} ${VLSERVEROBJS} ${LWPOBJS} ${LIBACLOBJS} \
! 	 ${UTILOBJS} ${DIROBJS} ${VOLOBJS} ${FSINTOBJS}
  
  LIBS=${TOP_LIBDIR}/libafsauthent.a ${TOP_LIBDIR}/libafsrpc.a ${TOP_LIBDIR}/util.a
  
  all: fileserver
  
  viced.o: ${VICED}/viced.c
  	${CCRULE}
  
--- 43,60 ----
  
  FSINTOBJS= afsaux.o afscbint.cs.o afsint.ss.o afsint.xdr.o
  
+ RXOBJS = rx_pthread.o 
+ 
  objects= ${VICEDOBJS} ${VLSERVEROBJS} ${LWPOBJS} ${LIBACLOBJS} \
! 	 ${UTILOBJS} ${DIROBJS} ${VOLOBJS} ${FSINTOBJS} ${RXOBJS}
  
  LIBS=${TOP_LIBDIR}/libafsauthent.a ${TOP_LIBDIR}/libafsrpc.a ${TOP_LIBDIR}/util.a
  
  all: fileserver
  
+ rx_pthread.o: ${RX}/rx_pthread.c
+ 	${CCRULE} -DDPF_FSLOG
+ 
  viced.o: ${VICED}/viced.c
  	${CCRULE}
  
Index: openafs/src/tviced/NTMakefile
diff -c openafs/src/tviced/NTMakefile:1.7 openafs/src/tviced/NTMakefile:1.7.2.1
*** openafs/src/tviced/NTMakefile:1.7	Fri Nov 21 03:01:26 2003
--- openafs/src/tviced/NTMakefile	Mon Jul 31 17:51:21 2006
***************
*** 87,92 ****
--- 87,93 ----
  
  EXELIBS = \
  	$(DESTDIR)\lib\afsauthent.lib \
+ 	$(DESTDIR)\lib\afs\afsprot.lib \
  	$(DESTDIR)\lib\afsrpc.lib \
  	$(DESTDIR)\lib\afs\afscmd.lib \
  	$(DESTDIR)\lib\afs\afsaudit.lib \
Index: openafs/src/tvolser/Makefile.in
diff -c openafs/src/tvolser/Makefile.in:1.2.2.1 openafs/src/tvolser/Makefile.in:1.2.2.2
*** openafs/src/tvolser/Makefile.in:1.2.2.1	Mon Aug  8 11:39:25 2005
--- openafs/src/tvolser/Makefile.in	Mon Jul 31 12:18:39 2006
***************
*** 23,28 ****
--- 23,29 ----
  VOL=../vol
  FSINT=../fsint
  VOLSER=../volser
+ RX=../rx
  
  VOLSEROBJS=volmain.o volprocs.o physio.o voltrans.o volerr.o volint.cs.o dumpstuff.o  volint.ss.o volint.xdr.o vscommon.o
  
***************
*** 41,48 ****
  
  FSINTOBJS=# afsaux.o afscbint.cs.o afsint.ss.o afsint.xdr.o
  
  objects= ${VOLSEROBJS} ${VLSERVEROBJS} ${LWPOBJS} ${LIBACLOBJS} \
! 	 ${UTILOBJS} ${DIROBJS} ${VOLOBJS} ${FSINTOBJS}
  
  LIBS=${TOP_LIBDIR}/libafsauthent.a ${TOP_LIBDIR}/libafsrpc.a ${TOP_LIBDIR}/util.a
  
--- 42,51 ----
  
  FSINTOBJS=# afsaux.o afscbint.cs.o afsint.ss.o afsint.xdr.o
  
+ RXOBJS=rx_pthread.o
+ 
  objects= ${VOLSEROBJS} ${VLSERVEROBJS} ${LWPOBJS} ${LIBACLOBJS} \
! 	 ${UTILOBJS} ${DIROBJS} ${VOLOBJS} ${FSINTOBJS} ${RXOBJS}
  
  LIBS=${TOP_LIBDIR}/libafsauthent.a ${TOP_LIBDIR}/libafsrpc.a ${TOP_LIBDIR}/util.a
  
***************
*** 50,55 ****
--- 53,60 ----
  
  COMPILE=${CC} ${CFLAGS} -c $?
  
+ rx_pthread.o: ${RX}/rx_pthread.c
+ 	${COMPILE} -DDPF_FSLOG
  volmain.o: ${VOLSER}/volmain.c
  	${COMPILE}
  volprocs.o: ${VOLSER}/volprocs.c
Index: openafs/src/ubik/NTMakefile
diff -c openafs/src/ubik/NTMakefile:1.6.2.2 openafs/src/ubik/NTMakefile:1.6.2.3
*** openafs/src/ubik/NTMakefile:1.6.2.2	Fri Mar 11 02:03:40 2005
--- openafs/src/ubik/NTMakefile	Mon Jul 31 17:51:21 2006
***************
*** 18,24 ****
  	$(INCFILEDIR)\ubik.h \
  	$(INCFILEDIR)\ubik_int.h 
  
! 
  
  ############################################################################
  # install afsubik.lib
--- 18,24 ----
  	$(INCFILEDIR)\ubik.h \
  	$(INCFILEDIR)\ubik_int.h 
  
! install_headers: $(INCFILES)
  
  ############################################################################
  # install afsubik.lib
***************
*** 86,93 ****
  $(INCFILES):$$(@F)
  	 $(COPY)  $** $(INCFILEDIR)\.
  
! ubik_int.ss.c ubik_int.cs.c ubik_int.xdr.c ubik_int.h: ubik_int.xg
! 	$(RXGEN) -x $**
  
  ############################################################################
  # compile_et on uerrors.et
--- 86,102 ----
  $(INCFILES):$$(@F)
  	 $(COPY)  $** $(INCFILEDIR)\.
  
! ubik_int.cs.c: ubik_int.xg ubik_int.h
! 	$(RXGEN) -x -C -o $@ ubik_int.xg
! 
! ubik_int.ss.c: ubik_int.xg ubik_int.h
! 	$(RXGEN) -x -S -o $@ ubik_int.xg
! 
! ubik_int.xdr.c: ubik_int.xg ubik_int.h
! 	$(RXGEN) -x -c -o $@ ubik_int.xg
! 
! ubik_int.h: ubik_int.xg
! 	$(RXGEN) -x -h -o $@ ubik_int.xg
  
  ############################################################################
  # compile_et on uerrors.et
Index: openafs/src/ubik/ubik.c
diff -c openafs/src/ubik/ubik.c:1.15 openafs/src/ubik/ubik.c:1.15.2.1
*** openafs/src/ubik/ubik.c:1.15	Sun Aug  8 19:57:23 2004
--- openafs/src/ubik/ubik.c	Mon Jun 12 17:53:44 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/ubik.c,v 1.15 2004/08/08 23:57:23 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/ubik.c,v 1.15.2.1 2006/06/12 21:53:44 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
***************
*** 240,245 ****
--- 240,247 ----
  	    ubik_sc[secIndex] = secClass;
  	}
      }
+     /* for backwards compat this should keep working as it does now 
+        and not host bind */
      code = rx_Init(myPort);
      if (code < 0)
  	return code;
Index: openafs/src/ubik/ubik.p.h
diff -c openafs/src/ubik/ubik.p.h:1.11.2.4 openafs/src/ubik/ubik.p.h:1.11.2.5
*** openafs/src/ubik/ubik.p.h:1.11.2.4	Mon Dec 13 14:38:53 2004
--- openafs/src/ubik/ubik.p.h	Mon Jul 31 13:07:51 2006
***************
*** 360,365 ****
--- 360,367 ----
  			       long p8, long p9, long p10, long p11, long p12,
  			       long p13, long p14, long p15, long p16);
  
+ extern struct rx_connection *ubik_RefreshConn(struct rx_connection *tc);
+ 
  /* ubik.c */
  extern int ubik_BeginTrans(register struct ubik_dbase *dbase,
  			   afs_int32 transMode, struct ubik_trans **transPtr);
Index: openafs/src/ubik/ubikclient.c
diff -c openafs/src/ubik/ubikclient.c:1.8.2.2 openafs/src/ubik/ubikclient.c:1.8.2.3
*** openafs/src/ubik/ubikclient.c:1.8.2.2	Mon Dec 13 14:38:53 2004
--- openafs/src/ubik/ubikclient.c	Mon Jul 31 13:07:51 2006
***************
*** 15,21 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/ubikclient.c,v 1.8.2.2 2004/12/13 19:38:53 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
--- 15,21 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/ubikclient.c,v 1.8.2.3 2006/07/31 17:07:51 shadow Exp $");
  
  #if defined(UKERNEL)
  #include "afs/sysincludes.h"
***************
*** 306,313 ****
   *     error.
   */
  
! static struct rx_connection *
! RefreshConn(struct rx_connection *tc)
  {
      afs_uint32 host;
      u_short port;
--- 306,313 ----
   *     error.
   */
  
! struct rx_connection *
! ubik_RefreshConn(struct rx_connection *tc)
  {
      afs_uint32 host;
      u_short port;
***************
*** 428,434 ****
  		     */
  		    tc = aclient->conns[count];
  		    if (tc && rx_ConnError(tc)) {
! 			aclient->conns[count] = tc = RefreshConn(tc);
  		    }
  		    if (!tc)
  			break;
--- 428,434 ----
  		     */
  		    tc = aclient->conns[count];
  		    if (tc && rx_ConnError(tc)) {
! 			aclient->conns[count] = tc = ubik_RefreshConn(tc);
  		    }
  		    if (!tc)
  			break;
***************
*** 463,469 ****
  	    /*needsync */
  	    tc = aclient->conns[count];
  	    if (tc && rx_ConnError(tc)) {
! 		aclient->conns[count] = tc = RefreshConn(tc);
  	    }
  	    if (!tc)
  		break;
--- 463,469 ----
  	    /*needsync */
  	    tc = aclient->conns[count];
  	    if (tc && rx_ConnError(tc)) {
! 		aclient->conns[count] = tc = ubik_RefreshConn(tc);
  	    }
  	    if (!tc)
  		break;
***************
*** 537,543 ****
      /* get this conn */
      tc = aclient->conns[apos];
      if (tc && rx_ConnError(tc)) {
! 	aclient->conns[apos] = (tc = RefreshConn(tc));
      }
      if (!tc) {
  	return -1;
--- 537,543 ----
      /* get this conn */
      tc = aclient->conns[apos];
      if (tc && rx_ConnError(tc)) {
! 	aclient->conns[apos] = (tc = ubik_RefreshConn(tc));
      }
      if (!tc) {
  	return -1;
***************
*** 626,632 ****
  	}
  
  	if (rx_ConnError(tc)) {
! 	    tc = RefreshConn(tc);
  	    aclient->conns[*apos] = tc;
  	}
  
--- 626,632 ----
  	}
  
  	if (rx_ConnError(tc)) {
! 	    tc = ubik_RefreshConn(tc);
  	    aclient->conns[*apos] = tc;
  	}
  
Index: openafs/src/ubik/uinit.c
diff -c openafs/src/ubik/uinit.c:1.6.2.2 openafs/src/ubik/uinit.c:1.6.2.3
*** openafs/src/ubik/uinit.c:1.6.2.2	Tue Nov  9 12:09:41 2004
--- openafs/src/ubik/uinit.c	Fri Sep 15 19:19:28 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/uinit.c,v 1.6.2.2 2004/11/09 17:09:41 shadow Exp $");
  
  #include <afs/stds.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/uinit.c,v 1.6.2.3 2006/09/15 23:19:28 jaltman Exp $");
  
  #include <afs/stds.h>
  #ifdef AFS_NT40_ENV
***************
*** 87,92 ****
--- 87,93 ----
  	}
  	code = afsconf_ClientAuth(tdir, &sc, &scIndex);	/* sets sc,scIndex */
  	if (code) {
+ 	    afsconf_Close(tdir);
  	    fprintf(stderr,
  		    "%s: Could not get security object for -localAuth\n",
  		    funcName);
***************
*** 96,101 ****
--- 97,103 ----
  	    afsconf_GetCellInfo(tdir, tdir->cellName, serviceid,
  				&info);
  	if (code) {
+ 	    afsconf_Close(tdir);
  	    fprintf(stderr,
  		    "%s: can't find cell %s's hosts in %s/%s\n",
  		    funcName, cellName, AFSDIR_SERVER_ETC_DIRPATH,
Index: openafs/src/update/Makefile.in
diff -c openafs/src/update/Makefile.in:1.8 openafs/src/update/Makefile.in:1.8.2.1
*** openafs/src/update/Makefile.in:1.8	Sat Jan 11 02:34:59 2003
--- openafs/src/update/Makefile.in	Mon Jul 31 13:07:51 2006
***************
*** 33,39 ****
  client.o server.o: update.h global.h AFS_component_version_number.c
  
  update.cs.c: update.xg
! 	${RXGEN} -C -o $@ ${srcdir}/update.xg
  
  update.ss.c: update.xg
  	${RXGEN} -S -o $@ ${srcdir}/update.xg
--- 33,39 ----
  client.o server.o: update.h global.h AFS_component_version_number.c
  
  update.cs.c: update.xg
! 	${RXGEN} -u -C -o $@ ${srcdir}/update.xg
  
  update.ss.c: update.xg
  	${RXGEN} -S -o $@ ${srcdir}/update.xg
***************
*** 42,48 ****
  	${RXGEN} -c -o $@ ${srcdir}/update.xg
  
  update.h: update.xg
! 	${RXGEN} -h -o $@ ${srcdir}/update.xg
  
  update.cs.c: update.h
  upcate.ss.c: update.h
--- 42,48 ----
  	${RXGEN} -c -o $@ ${srcdir}/update.xg
  
  update.h: update.xg
! 	${RXGEN} -u -h -o $@ ${srcdir}/update.xg
  
  update.cs.c: update.h
  upcate.ss.c: update.h
Index: openafs/src/update/NTMakefile
diff -c openafs/src/update/NTMakefile:1.7.2.1 openafs/src/update/NTMakefile:1.7.2.2
*** openafs/src/update/NTMakefile:1.7.2.1	Fri Mar 11 02:03:43 2005
--- openafs/src/update/NTMakefile	Mon Jul 31 17:51:22 2006
***************
*** 27,34 ****
  ############################################################################
  # Definitions for generating files via RXGEN
  
! update.cs.c update.ss.c update.er.c update.h: update.xg
! 	$(RXGEN) $**
  
  ############################################################################
  # upserver
--- 27,43 ----
  ############################################################################
  # Definitions for generating files via RXGEN
  
! update.cs.c: update.xg update.h
! 	$(RXGEN) -u -C -o $@ update.xg
! 
! update.ss.c: update.xg update.h
! 	$(RXGEN) -S -o $@ update.xg
! 
! update.xdr.c: update.xg	update.h
! 	$(RXGEN) -c -o $@ update.xg
! 
! update.h: update.xg
! 	$(RXGEN) -u -h -o $@ update.xg
  
  ############################################################################
  # upserver
Index: openafs/src/update/server.c
diff -c openafs/src/update/server.c:1.13 openafs/src/update/server.c:1.13.2.2
*** openafs/src/update/server.c:1.13	Wed Jun 23 10:27:46 2004
--- openafs/src/update/server.c	Tue Jun 20 16:35:01 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/update/server.c,v 1.13 2004/06/23 14:27:46 shadow Exp $");
  
  #include <afs/stds.h>
  #ifdef	AFS_AIX32_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/update/server.c,v 1.13.2.2 2006/06/20 20:35:01 jaltman Exp $");
  
  #include <afs/stds.h>
  #ifdef	AFS_AIX32_ENV
***************
*** 69,74 ****
--- 69,79 ----
  
  static int Quit();
  
+ int rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
+ 
  /* check whether caller is authorized to manage RX statistics */
  int
  update_rxstat_userok(struct rx_call *call)
***************
*** 183,188 ****
--- 188,194 ----
  {
      struct rx_securityClass *securityObjects[3];
      struct rx_service *service;
+     afs_uint32 host = htonl(INADDR_ANY);
  
      int a = 0;
      rxkad_level level;
***************
*** 234,248 ****
  
      for (a = 1; a < argc; a++) {
  	if (argv[a][0] == '-') {	/* parse options */
! 	    char arg[256];
! 	    lcstring(arg, argv[a], sizeof(arg));
! 	    newLevel = rxkad_StringToLevel(&argv[a][1]);
! 	    if (newLevel != -1) {
! 		level = newLevel;	/* set new level */
  		continue;
  	    }
  	  usage:
! 	    Quit("Usage: upserver [<directory>+] [-crypt <directory>+] [-clear <directory>+] [-auth <directory>+] [-help]\n");
  	} else {
  	    int dirlen;
  	    if (nDirs >= sizeof(dirName) / sizeof(dirName[0]))
--- 240,259 ----
  
      for (a = 1; a < argc; a++) {
  	if (argv[a][0] == '-') {	/* parse options */
! 	    if (strcmp(argv[a], "-rxbind") == 0) {
! 		rxBind = 1;
  		continue;
+ 	    } else {
+ 		char arg[256];
+ 		lcstring(arg, argv[a], sizeof(arg));
+ 		newLevel = rxkad_StringToLevel(&argv[a][1]);
+ 		if (newLevel != -1) {
+ 		    level = newLevel;	/* set new level */
+ 		    continue;
+ 		}
  	    }
  	  usage:
! 	    Quit("Usage: upserver [<directory>+] [-crypt <directory>+] [-clear <directory>+] [-auth <directory>+] [-rxbind] [-help]\n");
  	} else {
  	    int dirlen;
  	    if (nDirs >= sizeof(dirName) / sizeof(dirName[0]))
***************
*** 270,278 ****
  	exit(1);
      }
  
      /* Initialize Rx, telling it port number this server will use for its
       * single service */
!     if (rx_Init(htons(AFSCONF_UPDATEPORT)) < 0)
  	Quit("rx_init");
  
      /* Create a single security object, in this case the null security object,
--- 281,308 ----
  	exit(1);
      }
  
+     if (rxBind) {
+ 	afs_int32 ccode;
+ #ifndef AFS_NT40_ENV
+         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
+             AFSDIR_SERVER_NETINFO_FILEPATH) {
+             char reason[1024];
+             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
+                                            ADDRSPERSITE, reason,
+                                            AFSDIR_SERVER_NETINFO_FILEPATH,
+                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+         } else 
+ #endif	
+ 	{
+             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
+         }
+         if (ccode == 1) 
+             host = SHostAddrs[0];
+     }
+ 
      /* Initialize Rx, telling it port number this server will use for its
       * single service */
!     if (rx_InitHost(host, htons(AFSCONF_UPDATEPORT)) < 0)
  	Quit("rx_init");
  
      /* Create a single security object, in this case the null security object,
***************
*** 296,303 ****
       * which is called to decode requests is passed in here
       * (UPDATE_ExecuteRequest). */
      service =
! 	rx_NewService(0, UPDATE_SERVICEID, "UPDATE", securityObjects, 3,
! 		      UPDATE_ExecuteRequest);
      if (service == (struct rx_service *)0)
  	Quit("rx_NewService");
      rx_SetMaxProcs(service, 2);
--- 326,333 ----
       * which is called to decode requests is passed in here
       * (UPDATE_ExecuteRequest). */
      service =
! 	rx_NewServiceHost(host, 0, UPDATE_SERVICEID, "UPDATE", securityObjects,
! 			  3, UPDATE_ExecuteRequest);
      if (service == (struct rx_service *)0)
  	Quit("rx_NewService");
      rx_SetMaxProcs(service, 2);
Index: openafs/src/util/afsutil.h
diff -c openafs/src/util/afsutil.h:1.17.2.3 openafs/src/util/afsutil.h:1.17.2.5
*** openafs/src/util/afsutil.h:1.17.2.3	Wed Mar 15 13:35:56 2006
--- openafs/src/util/afsutil.h	Wed Jul 12 09:42:25 2006
***************
*** 22,36 ****
  
  /* logging defines
   */
  #include <stdio.h>
  #include <stdarg.h>
  extern int LogLevel;
  extern int mrafsStyleLogs;
  #ifndef AFS_NT40_ENV
  extern int serverLogSyslog;
  extern int serverLogSyslogFacility;
  extern char *serverLogSyslogTag;
- #include <arpa/inet.h> /* for inet_ntoa() */
  #endif
  extern void vFSLog(const char *format, va_list args);
  extern void SetLogThreadNumProgram(int (*func) () );
--- 22,43 ----
  
  /* logging defines
   */
+ #ifndef AFS_NT40_ENV
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h> /* for inet_ntoa() */
+ #endif
+ 
  #include <stdio.h>
  #include <stdarg.h>
+ 
  extern int LogLevel;
  extern int mrafsStyleLogs;
  #ifndef AFS_NT40_ENV
  extern int serverLogSyslog;
  extern int serverLogSyslogFacility;
  extern char *serverLogSyslogTag;
  #endif
  extern void vFSLog(const char *format, va_list args);
  extern void SetLogThreadNumProgram(int (*func) () );
***************
*** 90,95 ****
--- 97,103 ----
  
  /* Initialize the windows sockets before calling networking routines. */
       extern int afs_winsockInit(void);
+      extern void afs_winsockCleanup(void);
  
       struct timezone {
  	 int tz_minuteswest;	/* of Greenwich */
Index: openafs/src/util/casestrcpy.c
diff -c openafs/src/util/casestrcpy.c:1.6 openafs/src/util/casestrcpy.c:1.6.2.1
*** openafs/src/util/casestrcpy.c:1.6	Tue Jul 15 19:17:16 2003
--- openafs/src/util/casestrcpy.c	Mon Jul 31 13:15:48 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/casestrcpy.c,v 1.6 2003/07/15 23:17:16 shadow Exp $");
  
  #ifdef HAVE_STRING_H
  #include <string.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/casestrcpy.c,v 1.6.2.1 2006/07/31 17:15:48 shadow Exp $");
  
  #ifdef HAVE_STRING_H
  #include <string.h>
***************
*** 67,72 ****
--- 67,94 ----
      return original_d;
  }
  
+ int
+ stolower(char *s)
+ {
+   while (*s) {
+         if (isupper(*s))
+             *s = tolower(*s);
+         s++;
+     }
+     return 0;
+ }
+ 
+ int
+ stoupper(char *s)
+ {
+   while (*s) {
+         if (islower(*s))
+             *s = toupper(*s);
+         s++;
+     }
+     return 0;
+ }
+ 
  /* strcompose - concatenate strings passed to it.
   * Input: 
   *   buf: storage for the composed string. Any data in it will be lost.
Index: openafs/src/util/kreltime.c
diff -c openafs/src/util/kreltime.c:1.8.2.1 openafs/src/util/kreltime.c:1.8.2.3
*** openafs/src/util/kreltime.c:1.8.2.1	Mon Mar 20 08:28:38 2006
--- openafs/src/util/kreltime.c	Mon Jul 31 17:12:59 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/kreltime.c,v 1.8.2.1 2006/03/20 13:28:38 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/kreltime.c,v 1.8.2.3 2006/07/31 21:12:59 shadow Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 114,123 ****
  int
  ktimeDate_FromInt32(afs_int32 timeSecs, struct ktime_date *ktimePtr)
  {
-     struct tm *timePtr;
      time_t     tt = timeSecs;
  
      timePtr = localtime(&tt);
  
      /* copy the relevant fields */
      ktimePtr->sec = timePtr->tm_sec;
--- 114,131 ----
  int
  ktimeDate_FromInt32(afs_int32 timeSecs, struct ktime_date *ktimePtr)
  {
      time_t     tt = timeSecs;
+     struct tm *timePtr;
+ #ifndef AFS_NT40_ENV
+     struct tm timeP;
+ 
+     timePtr = &timeP;
  
+     memset(&timePtr, 0, sizeof(timePtr));
+     localtime_r(&tt, &timePtr);
+ #else
      timePtr = localtime(&tt);
+ #endif
  
      /* copy the relevant fields */
      ktimePtr->sec = timePtr->tm_sec;
Index: openafs/src/util/serverLog.c
diff -c openafs/src/util/serverLog.c:1.22.2.10 openafs/src/util/serverLog.c:1.22.2.11
*** openafs/src/util/serverLog.c:1.22.2.10	Mon Jul 11 15:29:39 2005
--- openafs/src/util/serverLog.c	Wed Jun  7 00:27:20 2006
***************
*** 20,26 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/serverLog.c,v 1.22.2.10 2005/07/11 19:29:39 shadow Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
--- 20,26 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/serverLog.c,v 1.22.2.11 2006/06/07 04:27:20 shadow Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
***************
*** 313,332 ****
  	printf("Unable to open log file %s\n", fileName);
  	return -1;
      }
- #if defined(AFS_PTHREAD_ENV)
      /* redirect stdout and stderr so random printf's don't write to data */
!     assert(freopen(NULLDEV, "w", stdout) != NULL);
!     assert(freopen(NULLDEV, "w", stderr) != NULL);
  
      assert(pthread_mutex_init(&serverLogMutex, NULL) == 0);
  
      serverLogFD = tempfd;
- #else
-     close(tempfd);		/* just checking.... */
-     (void)freopen(fileName, "w", stdout);
-     (void)freopen(fileName, "w", stderr);
-     serverLogFD = fileno(stdout);
- #endif /* AFS_PTHREAD_ENV */
  
      return 0;
  }				/*OpenLog */
--- 313,336 ----
  	printf("Unable to open log file %s\n", fileName);
  	return -1;
      }
      /* redirect stdout and stderr so random printf's don't write to data */
!     (void)freopen(fileName, "a", stdout);
!     (void)freopen(fileName, "a", stderr);
! #ifdef HAVE_SETVBUF
! #ifdef SETVBUF_REVERSED
!     setvbuf(stderr, _IONBF, NULL, 0);
! #else
!     setvbuf(stderr, NULL, _IONBF, 0);
! #endif
! #else
!     setbuf(stderr, NULL);
! #endif
  
+ #if defined(AFS_PTHREAD_ENV)
      assert(pthread_mutex_init(&serverLogMutex, NULL) == 0);
+ #endif /* AFS_PTHREAD_ENV */
  
      serverLogFD = tempfd;
  
      return 0;
  }				/*OpenLog */
***************
*** 356,382 ****
      }
  #endif
  
- #if defined(AFS_PTHREAD_ENV)
      LOCK_SERVERLOG();
      if (serverLogFD > 0)
  	close(serverLogFD);
      serverLogFD = open(fileName, O_WRONLY | O_APPEND | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
!     UNLOCK_SERVERLOG();
!     return serverLogFD < 0 ? -1 : 0;
  #else
  
-     tempfd = open(fileName, O_WRONLY | O_APPEND | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
-     if (tempfd < 0) {
- 	printf("Unable to open log file %s\n", fileName);
- 	return -1;
      }
!     close(tempfd);
! 
!     (void)freopen(fileName, "a", stdout);
!     (void)freopen(fileName, "a", stderr);
!     serverLogFD = fileno(stdout);
! 
! 
!     return 0;
! #endif /* AFS_PTHREAD_ENV */
  }
--- 360,383 ----
      }
  #endif
  
      LOCK_SERVERLOG();
      if (serverLogFD > 0)
  	close(serverLogFD);
      serverLogFD = open(fileName, O_WRONLY | O_APPEND | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
!     if (serverLogFD > 0) {
! 	(void)freopen(fileName, "a", stdout);
! 	(void)freopen(fileName, "a", stderr);
! #ifdef HAVE_SETVBUF
! #ifdef SETVBUF_REVERSED
! 	setvbuf(stderr, _IONBF, NULL, 0);
  #else
+ 	setvbuf(stderr, NULL, _IONBF, 0);
+ #endif
+ #else
+ 	setbuf(stderr, NULL);
+ #endif
  
      }
!     UNLOCK_SERVERLOG();
!     return serverLogFD < 0 ? -1 : 0;
  }
Index: openafs/src/util/winsock_nt.c
diff -c openafs/src/util/winsock_nt.c:1.5 openafs/src/util/winsock_nt.c:1.5.2.2
*** openafs/src/util/winsock_nt.c:1.5	Tue Jul 15 19:17:17 2003
--- openafs/src/util/winsock_nt.c	Tue Aug 29 21:41:41 2006
***************
*** 13,19 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/winsock_nt.c,v 1.5 2003/07/15 23:17:17 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <winsock2.h>
--- 13,19 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/util/winsock_nt.c,v 1.5.2.2 2006/08/30 01:41:41 jaltman Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <winsock2.h>
***************
*** 28,42 ****
  int
  afs_winsockInit(void)
  {
-     static int once = 1;
- 
-     if (once) {
  	int code;
  	WSADATA data;
  	WORD sockVersion;
  
- 	once = 0;
- 
  	sockVersion = 2;
  	code = WSAStartup(sockVersion, &data);
  	if (code)
--- 28,37 ----
***************
*** 44,53 ****
  
  	if (data.wVersion != 2)
  	    return -1;
-     }
      return 0;
  }
  
  int
  afs_gettimeofday(struct timeval *tv, struct timezone *tz)
  {
--- 39,53 ----
  
  	if (data.wVersion != 2)
  	    return -1;
      return 0;
  }
  
+ void
+ afs_winsockCleanup(void)
+ {
+     WSACleanup();
+ }
+ 
  int
  afs_gettimeofday(struct timeval *tv, struct timezone *tz)
  {
Index: openafs/src/venus/cmdebug.c
diff -c openafs/src/venus/cmdebug.c:1.15.2.4 openafs/src/venus/cmdebug.c:1.15.2.5
*** openafs/src/venus/cmdebug.c:1.15.2.4	Thu Mar 23 11:45:53 2006
--- openafs/src/venus/cmdebug.c	Mon Jun 26 12:19:06 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/cmdebug.c,v 1.15.2.4 2006/03/23 16:45:53 shadow Exp $");
  
  
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/cmdebug.c,v 1.15.2.5 2006/06/26 16:19:06 rra Exp $");
  
  
  #include <sys/types.h>
***************
*** 41,46 ****
--- 41,47 ----
  #include <rx/rx.h>
  #include <lock.h>
  #include <afs/afs_args.h>
+ #include <afs/afsutil.h>
  
  extern struct hostent *hostutil_GetHostByName();
  
Index: openafs/src/venus/fs.c
diff -c openafs/src/venus/fs.c:1.24.2.4 openafs/src/venus/fs.c:1.24.2.5
*** openafs/src/venus/fs.c:1.24.2.4	Mon Jan 23 16:07:42 2006
--- openafs/src/venus/fs.c	Mon Jul 31 13:07:52 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/fs.c,v 1.24.2.4 2006/01/23 21:07:42 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.24.2.5 2006/07/31 17:07:52 shadow Exp $");
  
  #include <afs/afs_args.h>
  #include <rx/xdr.h>
***************
*** 1714,1720 ****
  	if (code == 0) {
  	    /* make the check.  Don't complain if there are problems with init */
  	    code =
! 		ubik_Call(VL_GetEntryByNameO, uclient, 0, volName,
  			  &vldbEntry);
  	    if (code == VL_NOENT) {
  		fprintf(stderr,
--- 1714,1720 ----
  	if (code == 0) {
  	    /* make the check.  Don't complain if there are problems with init */
  	    code =
! 		ubik_VL_GetEntryByNameO(uclient, 0, volName,
  			  &vldbEntry);
  	    if (code == VL_NOENT) {
  		fprintf(stderr,
Index: openafs/src/venus/kdump.c
diff -c openafs/src/venus/kdump.c:1.33.2.5 openafs/src/venus/kdump.c:1.33.2.6
*** openafs/src/venus/kdump.c:1.33.2.5	Mon Jul 11 15:30:02 2005
--- openafs/src/venus/kdump.c	Wed Aug  2 15:07:05 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/kdump.c,v 1.33.2.5 2005/07/11 19:30:02 shadow Exp $");
  
  #include <stdio.h>
  #include <errno.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/venus/kdump.c,v 1.33.2.6 2006/08/02 19:07:05 shadow Exp $");
  
  #include <stdio.h>
  #include <errno.h>
***************
*** 288,294 ****
      int tv_usec;
  } timeval_t;			/* Needed here since KERNEL defined. */
  #endif /*AFS_ALPHA_LINUX20_ENV */
! #if defined(AFSBIG_ENDIAN)
  #define _LINUX_BYTEORDER_BIG_ENDIAN_H
  #else
  #define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
--- 288,294 ----
      int tv_usec;
  } timeval_t;			/* Needed here since KERNEL defined. */
  #endif /*AFS_ALPHA_LINUX20_ENV */
! #if defined(WORDS_BIGENDIAN)
  #define _LINUX_BYTEORDER_BIG_ENDIAN_H
  #else
  #define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
Index: openafs/src/viced/afsfileprocs.c
diff -c openafs/src/viced/afsfileprocs.c:1.81.2.25 openafs/src/viced/afsfileprocs.c:1.81.2.37
*** openafs/src/viced/afsfileprocs.c:1.81.2.25	Fri Apr  7 01:36:59 2006
--- openafs/src/viced/afsfileprocs.c	Mon Sep 25 22:13:17 2006
***************
*** 29,35 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/viced/afsfileprocs.c,v 1.81.2.25 2006/04/07 05:36:59 jaltman Exp $");
  
  #include <stdio.h>
  #include <stdlib.h>
--- 29,35 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/viced/afsfileprocs.c,v 1.81.2.37 2006/09/26 02:13:17 shadow Exp $");
  
  #include <stdio.h>
  #include <stdlib.h>
***************
*** 306,311 ****
--- 306,315 ----
      int retry_flag = 1;
      int code = 0;
      char hoststr[16], hoststr2[16];
+     struct ubik_client *uclient;
+ 
+     *ahostp = NULL;
+ 
      if (!tconn) {
  	ViceLog(0, ("CallPreamble: unexpected null tconn!\n"));
  	return -1;
***************
*** 329,337 ****
  	/* Take down the old connection and re-read the key file */
  	ViceLog(0,
  		("CallPreamble: Couldn't get CPS. Reconnect to ptserver\n"));
  	H_UNLOCK;
! 	code = pr_Initialize(2, AFSDIR_SERVER_ETC_DIRPATH, 0);
  	H_LOCK;
  	if (code) {
  	    h_ReleaseClient_r(tclient);
  	    h_Release_r(thost);
--- 333,352 ----
  	/* Take down the old connection and re-read the key file */
  	ViceLog(0,
  		("CallPreamble: Couldn't get CPS. Reconnect to ptserver\n"));
+ #ifdef AFS_PTHREAD_ENV
+ 	uclient = (struct ubik_client *)pthread_getspecific(viced_uclient_key);
+ 
+ 	/* Is it still necessary to drop this? We hit the net, we should... */
  	H_UNLOCK;
! 	if (uclient) 
! 	    hpr_End(uclient);
! 	code = hpr_Initialize(&uclient);
! 
! 	assert(pthread_setspecific(viced_uclient_key, (void *)uclient) == 0);
  	H_LOCK;
+ #else
+ 	code = pr_Initialize(2, AFSDIR_SERVER_ETC_DIRPATH, 0);
+ #endif
  	if (code) {
  	    h_ReleaseClient_r(tclient);
  	    h_Release_r(thost);
***************
*** 414,427 ****
      held = h_Held_r(thost);
      if (held)
  	h_Release_r(thost);
!     if (ahost != thost) {
  	char hoststr[16], hoststr2[16];	
  	ViceLog(0, ("CallPostamble: ahost %s:%d (%x) != thost %s:%d (%x)\n",
! 		afs_inet_ntoa_r(thost->host, hoststr), ntohs(thost->port),
  		ahost, 
  		afs_inet_ntoa_r(thost->host, hoststr2), ntohs(thost->port),
  		thost));
  	h_Release_r(ahost);
      }
      H_UNLOCK;
      return (translate ? sys_error_to_et(ret) : ret);
--- 429,447 ----
      held = h_Held_r(thost);
      if (held)
  	h_Release_r(thost);
!     if (ahost && ahost != thost) {
  	char hoststr[16], hoststr2[16];	
  	ViceLog(0, ("CallPostamble: ahost %s:%d (%x) != thost %s:%d (%x)\n",
! 		afs_inet_ntoa_r(ahost->host, hoststr), ntohs(ahost->port),
  		ahost, 
  		afs_inet_ntoa_r(thost->host, hoststr2), ntohs(thost->port),
  		thost));
  	h_Release_r(ahost);
+     } else if (!ahost) {
+ 	char hoststr[16];	
+ 	ViceLog(0, ("CallPostamble: null ahost for thost %s:%d (%x)\n",
+ 		afs_inet_ntoa_r(thost->host, hoststr), ntohs(thost->port),
+ 		thost));
      }
      H_UNLOCK;
      return (translate ? sys_error_to_et(ret) : ret);
***************
*** 655,664 ****
  #endif /* AFS_PTHREAD_ENV */
      }
  
!     if (client->host->hcps.prlist_len && !client->host->hcps.prlist_val) {
! 	ViceLog(0,
! 		("CheckRights: len=%u, for host=0x%x\n",
! 		 client->host->hcps.prlist_len, client->host->host));
      } else
  	acl_CheckRights(ACL, &client->host->hcps, &hrights);
      H_UNLOCK;
--- 675,687 ----
  #endif /* AFS_PTHREAD_ENV */
      }
  
!     if (!client->host->hcps.prlist_len || !client->host->hcps.prlist_val) {
! 	char hoststr[16];
! 	ViceLog(5,
! 		("CheckRights: len=%u, for host=%s:%d\n",
! 		 client->host->hcps.prlist_len, 
! 		 afs_inet_ntoa_r(client->host->host, hoststr),
! 		 ntohs(client->host->port)));
      } else
  	acl_CheckRights(ACL, &client->host->hcps, &hrights);
      H_UNLOCK;
***************
*** 1190,1200 ****
  			("CopyOnWrite failed: volume %u in partition %s  (tried reading %u, read %u, wrote %u, errno %u) volume needs salvage\n",
  			 V_id(volptr), volptr->partition->name, length, rdlen,
  			 wrlen, errno));
- #ifdef FAST_RESTART		/* if running in no-salvage, don't core the server */
  		ViceLog(0, ("CopyOnWrite failed: taking volume offline\n"));
- #else /* Avoid further corruption and try to get a core. */
- 		assert(0);
- #endif
  		/* Decrement this inode so salvager doesn't find it. */
  		FDH_REALLYCLOSE(newFdP);
  		IH_RELEASE(newH);
--- 1213,1219 ----
***************
*** 1726,1739 ****
   * SAFS_ReleaseLock)
   */
  static afs_int32
! HandleLocking(Vnode * targetptr, afs_int32 rights, ViceLockType LockingType)
  {
      int Time;			/* Used for time */
      int writeVnode = targetptr->changed_oldTime;	/* save original status */
  
-     /* Does the caller has Lock priviledges; root extends locks, however */
-     if (LockingType != LockExtend && !(rights & PRSFS_LOCK))
- 	return (EACCES);
      targetptr->changed_oldTime = 1;	/* locking doesn't affect any time stamp */
      Time = FT_ApproxTime();
      switch (LockingType) {
--- 1745,1755 ----
   * SAFS_ReleaseLock)
   */
  static afs_int32
! HandleLocking(Vnode * targetptr, struct client *client, afs_int32 rights, ViceLockType LockingType)
  {
      int Time;			/* Used for time */
      int writeVnode = targetptr->changed_oldTime;	/* save original status */
  
      targetptr->changed_oldTime = 1;	/* locking doesn't affect any time stamp */
      Time = FT_ApproxTime();
      switch (LockingType) {
***************
*** 1744,1755 ****
  		0;
  	Time += AFS_LOCKWAIT;
  	if (LockingType == LockRead) {
  	    if (targetptr->disk.lock.lockCount >= 0) {
  		++(targetptr->disk.lock.lockCount);
  		targetptr->disk.lock.lockTime = Time;
  	    } else
  		return (EAGAIN);
! 	} else {
  	    if (targetptr->disk.lock.lockCount == 0) {
  		targetptr->disk.lock.lockCount = -1;
  		targetptr->disk.lock.lockTime = Time;
--- 1760,1778 ----
  		0;
  	Time += AFS_LOCKWAIT;
  	if (LockingType == LockRead) {
+ 	    if ( !(rights & PRSFS_LOCK) )
+ 		return(EACCES);
+  
  	    if (targetptr->disk.lock.lockCount >= 0) {
  		++(targetptr->disk.lock.lockCount);
  		targetptr->disk.lock.lockTime = Time;
  	    } else
  		return (EAGAIN);
! 	} else if (LockingType == LockWrite) {
! 	    if ( !(rights & PRSFS_WRITE) && 
! 		 !(OWNSp(client, targetptr) && (rights & PRSFS_INSERT)) )
! 		return(EACCES);
! 
  	    if (targetptr->disk.lock.lockCount == 0) {
  		targetptr->disk.lock.lockCount = -1;
  		targetptr->disk.lock.lockTime = Time;
***************
*** 3179,3184 ****
--- 3202,3211 ----
  		 afs_uint32 Length, afs_uint32 FileLength,
  		 struct AFSFetchStatus * OutStatus, struct AFSVolSync * Sync)
  {
+     if (FileLength > 0x7fffffff || Pos > 0x7fffffff || 
+ 	(0x7fffffff - Pos) < Length)
+         return EFBIG;
+ 
      return common_StoreData64(acall, Fid, InStatus, Pos, Length, FileLength,
  	                      OutStatus, Sync);
  }				/*SRXAFS_StoreData */
***************
*** 5120,5126 ****
      SetVolumeSync(Sync, volptr);
  
      /* Handle the particular type of set locking, type */
!     errorCode = HandleLocking(targetptr, rights, type);
  
    Bad_SetLock:
      /* Write the all modified vnodes (parent, new files) and volume back */
--- 5147,5153 ----
      SetVolumeSync(Sync, volptr);
  
      /* Handle the particular type of set locking, type */
!     errorCode = HandleLocking(targetptr, client, rights, type);
  
    Bad_SetLock:
      /* Write the all modified vnodes (parent, new files) and volume back */
***************
*** 5246,5252 ****
      SetVolumeSync(Sync, volptr);
  
      /* Handle the actual lock extension */
!     errorCode = HandleLocking(targetptr, rights, LockExtend);
  
    Bad_ExtendLock:
      /* Put back file's vnode and volume */
--- 5273,5279 ----
      SetVolumeSync(Sync, volptr);
  
      /* Handle the actual lock extension */
!     errorCode = HandleLocking(targetptr, client, rights, LockExtend);
  
    Bad_ExtendLock:
      /* Put back file's vnode and volume */
***************
*** 5373,5379 ****
      SetVolumeSync(Sync, volptr);
  
      /* Handle the actual lock release */
!     if ((errorCode = HandleLocking(targetptr, rights, LockRelease)))
  	goto Bad_ReleaseLock;
  
      /* if no more locks left, a callback would be triggered here */
--- 5400,5406 ----
      SetVolumeSync(Sync, volptr);
  
      /* Handle the actual lock release */
!     if ((errorCode = HandleLocking(targetptr, client, rights, LockRelease)))
  	goto Bad_ReleaseLock;
  
      /* if no more locks left, a callback would be triggered here */
***************
*** 5631,5637 ****
  {				/*SRXAFS_XStatsVersion */
  
      struct client *t_client = NULL;	/* tmp ptr to client data */
!     struct rx_connection *tcon;
  #if FS_STATS_DETAILED
      struct fs_stats_opTimingData *opP;	/* Ptr to this op's timing struct */
      struct timeval opStartTime, opStopTime;	/* Start/stop times for RPC op */
--- 5658,5664 ----
  {				/*SRXAFS_XStatsVersion */
  
      struct client *t_client = NULL;	/* tmp ptr to client data */
!     struct rx_connection *tcon = rx_ConnectionOf(a_call);
  #if FS_STATS_DETAILED
      struct fs_stats_opTimingData *opP;	/* Ptr to this op's timing struct */
      struct timeval opStartTime, opStopTime;	/* Start/stop times for RPC op */
***************
*** 6163,6169 ****
  
      dataBytes = 1 * sizeof(afs_int32);
      dataBuffP = (afs_int32 *) malloc(dataBytes);
!     dataBuffP[0] = CAPABILITY_ERRORTRANS;
      capabilities->Capabilities_len = dataBytes / sizeof(afs_int32);
      capabilities->Capabilities_val = dataBuffP;
  
--- 6190,6196 ----
  
      dataBytes = 1 * sizeof(afs_int32);
      dataBuffP = (afs_int32 *) malloc(dataBytes);
!     dataBuffP[0] = CAPABILITY_ERRORTRANS | CAPABILITY_WRITELOCKACL;
      capabilities->Capabilities_len = dataBytes / sizeof(afs_int32);
      capabilities->Capabilities_val = dataBuffP;
  
***************
*** 6947,6953 ****
  	errorCode = rx_WritevAlloc(Call, tiov, &tnio, RX_MAXIOVECS, wlen);
  	if (errorCode <= 0) {
  	    FDH_CLOSE(fdP);
- 	    VTakeOffline(volptr);
  	    return EIO;
  	}
  	wlen = errorCode;
--- 6974,6979 ----
***************
*** 7365,7373 ****
--- 7391,7403 ----
      sys2et[ENAMETOOLONG] = UAENAMETOOLONG;
      sys2et[ENOLCK] = UAENOLCK;
      sys2et[ENOSYS] = UAENOSYS;
+ #if (ENOTEMPTY != EEXIST)
      sys2et[ENOTEMPTY] = UAENOTEMPTY;
+ #endif
      sys2et[ELOOP] = UAELOOP;
+ #if (EWOULDBLOCK != EAGAIN)
      sys2et[EWOULDBLOCK] = UAEWOULDBLOCK;
+ #endif
      sys2et[ENOMSG] = UAENOMSG;
      sys2et[EIDRM] = UAEIDRM;
      sys2et[ECHRNG] = UAECHRNG;
Index: openafs/src/viced/host.c
diff -c openafs/src/viced/host.c:1.57.2.29 openafs/src/viced/host.c:1.57.2.44
*** openafs/src/viced/host.c:1.57.2.29	Thu Mar 30 11:29:22 2006
--- openafs/src/viced/host.c	Tue Sep  5 18:09:00 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/viced/host.c,v 1.57.2.29 2006/03/30 16:29:22 shadow Exp $");
  
  #include <stdio.h>
  #include <errno.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/viced/host.c,v 1.57.2.44 2006/09/05 22:09:00 shadow Exp $");
  
  #include <stdio.h>
  #include <errno.h>
***************
*** 161,166 ****
--- 161,168 ----
  static void
  FreeCE(register struct client *entry)
  {
+     entry->VenusEpoch = 0;
+     entry->sid = 0;
      entry->next = CEFree;
      CEFree = entry;
      CEs--;
***************
*** 253,258 ****
--- 255,476 ----
  
  }				/*FreeHT */
  
+ afs_int32
+ hpr_Initialize(struct ubik_client **uclient)
+ {
+     afs_int32 code;
+     struct rx_connection *serverconns[MAXSERVERS];
+     struct rx_securityClass *sc[3];
+     struct afsconf_dir *tdir;
+     char tconfDir[100] = "";
+     char tcell[64] = "";
+     struct ktc_token ttoken;
+     afs_int32 scIndex;
+     struct afsconf_cell info;
+     afs_int32 i;
+     char cellstr[64];
+ 
+     tdir = afsconf_Open(AFSDIR_SERVER_ETC_DIRPATH);
+     if (!tdir) {
+ 	ViceLog(0, ("hpr_Initialize: Could not open configuration directory: %s", AFSDIR_SERVER_ETC_DIRPATH));
+ 	return -1;
+     }
+     
+     code = afsconf_GetLocalCell(tdir, cellstr, sizeof(cellstr));
+     if (code) {
+ 	ViceLog(0, ("hpr_Initialize: Could not get local cell. [%d]", code));
+ 	afsconf_Close(tdir);
+ 	return code;
+     }
+     
+     code = afsconf_GetCellInfo(tdir, cellstr, "afsprot", &info);
+     if (code) {
+ 	ViceLog(0, ("hpr_Initialize: Could not locate cell %s in %s/%s", cellstr, confDir, AFSDIR_CELLSERVDB_FILE));
+ 	afsconf_Close(tdir);
+ 	return code;
+     }
+     
+     code = rx_Init(0);
+     if (code) {
+ 	ViceLog(0, ("hpr_Initialize: Could not initialize rx."));
+ 	afsconf_Close(tdir);
+         return code;
+     }
+     
+     scIndex = 2;
+     sc[0] = 0;
+     sc[1] = 0;
+     sc[2] = 0;
+     /* Most callers use secLevel==1, however, the fileserver uses secLevel==2
+      * to force use of the KeyFile.  secLevel == 0 implies -noauth was
+      * specified. */
+     if ((afsconf_GetLatestKey(tdir, 0, 0) == 0)) {
+         code = afsconf_ClientAuthSecure(tdir, &sc[2], &scIndex);
+         if (code)
+ 	    ViceLog(0, ("hpr_Initialize: clientauthsecure returns %d %s (so trying noauth)", code, error_message(code)));
+         if (code)
+             scIndex = 0;        /* use noauth */
+         if (scIndex != 2)
+             /* if there was a problem, an unauthenticated conn is returned */
+             sc[scIndex] = sc[2];
+     } else {
+         struct ktc_principal sname;
+         strcpy(sname.cell, info.name);
+         sname.instance[0] = 0;
+         strcpy(sname.name, "afs");
+         code = ktc_GetToken(&sname, &ttoken, sizeof(ttoken), NULL);
+         if (code)
+             scIndex = 0;
+         else {
+             if (ttoken.kvno >= 0 && ttoken.kvno <= 256)
+                 /* this is a kerberos ticket, set scIndex accordingly */
+                 scIndex = 2;
+             else {
+                 ViceLog(0, ("hpr_Initialize: funny kvno (%d) in ticket, proceeding", ttoken.kvno));
+                 scIndex = 2;
+             }
+             sc[2] =
+                 rxkad_NewClientSecurityObject(rxkad_clear, &ttoken.sessionKey,
+                                               ttoken.kvno, ttoken.ticketLen,
+                                               ttoken.ticket);
+         }
+     }
+     if ((scIndex == 0) && (sc[0] == 0))
+         sc[0] = rxnull_NewClientSecurityObject();
+     if ((scIndex == 0))
+ 	ViceLog(0, ("hpr_Initialize: Could not get afs tokens, running unauthenticated. [%d]", code));
+     
+     memset(serverconns, 0, sizeof(serverconns));        /* terminate list!!! */
+     for (i = 0; i < info.numServers; i++) {
+         serverconns[i] =
+             rx_NewConnection(info.hostAddr[i].sin_addr.s_addr,
+                              info.hostAddr[i].sin_port, PRSRV, sc[scIndex],
+                              scIndex);
+     }
+ 
+     code = ubik_ClientInit(serverconns, uclient);
+     if (code) {
+ 	ViceLog(0, ("hpr_Initialize: ubik client init failed. [%d]", code));
+     }
+     afsconf_Close(tdir);
+     code = rxs_Release(sc[scIndex]);
+     return code;
+ }
+ 
+ int
+ hpr_End(struct ubik_client *uclient)
+ {
+     int code = 0;
+ 
+     if (uclient) {
+         code = ubik_ClientDestroy(uclient);
+     }
+     return code;
+ }
+ 
+ int
+ hpr_GetHostCPS(afs_int32 host, prlist *CPS)
+ {
+ #ifdef AFS_PTHREAD_ENV
+     register afs_int32 code;
+     afs_int32 over;
+     struct ubik_client *uclient = 
+ 	(struct ubik_client *)pthread_getspecific(viced_uclient_key);
+ 
+     if (!uclient) {
+         code = hpr_Initialize(&uclient);
+         assert(pthread_setspecific(viced_uclient_key, (void *)uclient) == 0);
+     }
+ 
+     over = 0;
+     code = ubik_PR_GetHostCPS(uclient, 0, host, CPS, &over);
+     if (code != PRSUCCESS)
+         return code;
+     if (over) {
+       /* do something about this, probably make a new call */
+       /* don't forget there's a hard limit in the interface */
+         fprintf(stderr,
+                 "membership list for host id %d exceeds display limit\n",
+                 host);
+     }
+     return 0;
+ #else
+     return pr_GetHostCPS(host, CPS);
+ #endif
+ }
+ 
+ int
+ hpr_NameToId(namelist *names, idlist *ids)
+ {
+ #ifdef AFS_PTHREAD_ENV
+     register afs_int32 code;
+     register afs_int32 i;
+     struct ubik_client *uclient = 
+ 	(struct ubik_client *)pthread_getspecific(viced_uclient_key);
+ 
+     if (!uclient) {
+         code = hpr_Initialize(&uclient);
+         assert(pthread_setspecific(viced_uclient_key, (void *)uclient) == 0);
+     }
+ 
+     for (i = 0; i < names->namelist_len; i++)
+         stolower(names->namelist_val[i]);
+     code = ubik_PR_NameToID(uclient, 0, names, ids);
+     return code;
+ #else
+     return pr_NameToId(names, ids);
+ #endif
+ }
+ 
+ int
+ hpr_IdToName(idlist *ids, namelist *names)
+ {
+ #ifdef AFS_PTHREAD_ENV
+     register afs_int32 code;
+     struct ubik_client *uclient = 
+ 	(struct ubik_client *)pthread_getspecific(viced_uclient_key);
+     
+     if (!uclient) {
+         code = hpr_Initialize(&uclient);
+         assert(pthread_setspecific(viced_uclient_key, (void *)uclient) == 0);
+     }
+ 
+     code = ubik_PR_IDToName(uclient, 0, ids, names);
+     return code;
+ #else
+     return pr_IdToName(ids, names);
+ #endif
+ }
+ 
+ int
+ hpr_GetCPS(afs_int32 id, prlist *CPS)
+ {
+ #ifdef AFS_PTHREAD_ENV
+     register afs_int32 code;
+     afs_int32 over;
+     struct ubik_client *uclient = 
+ 	(struct ubik_client *)pthread_getspecific(viced_uclient_key);
+ 
+     if (!uclient) {
+         code = hpr_Initialize(&uclient);
+         assert(pthread_setspecific(viced_uclient_key, (void *)uclient) == 0);
+     }
+ 
+     over = 0;
+     code = ubik_PR_GetCPS(uclient, 0, id, CPS, &over);
+     if (code != PRSUCCESS)
+         return code;
+     if (over) {
+       /* do something about this, probably make a new call */
+       /* don't forget there's a hard limit in the interface */
+         fprintf(stderr, "membership list for id %d exceeds display limit\n",
+                 id);
+     }
+     return 0;
+ #else
+     return pr_GetCPS(id, CPS);
+ #endif
+ }
  
  static short consolePort = 0;
  
***************
*** 450,456 ****
      slept ? (host->cpsCall = FT_ApproxTime()) : (host->cpsCall = now);
  
      H_UNLOCK;
!     code = pr_GetHostCPS(ntohl(host->host), &host->hcps);
      H_LOCK;
      if (code) {
  	/*
--- 668,674 ----
      slept ? (host->cpsCall = FT_ApproxTime()) : (host->cpsCall = now);
  
      H_UNLOCK;
!     code = hpr_GetHostCPS(ntohl(host->host), &host->hcps);
      H_LOCK;
      if (code) {
  	/*
***************
*** 729,738 ****
  	    if ((client->ViceId != ANONYMOUSID) && client->CPS.prlist_val)
  		free(client->CPS.prlist_val);
  	    client->CPS.prlist_val = NULL;
- 	    if (client->tcon) {
- 		rx_SetSpecific(client->tcon, rxcon_client_key, (void *)0);
- 		rx_PutConnection(client->tcon);
- 	    }
  	    CurrentConnections--;
  	    *cp = client->next;
  	    ReleaseWriteLock(&client->lock);
--- 947,952 ----
***************
*** 755,772 ****
  	    Console--;
  	if ((rxconn = host->callback_rxcon)) {
  	    host->callback_rxcon = (struct rx_connection *)0;
- 	    /*
- 	     * If rx_DestroyConnection calls h_FreeConnection we will
- 	     * deadlock on the host_glock_mutex. Work around the problem
- 	     * by unhooking the client from the connection before
- 	     * destroying the connection.
- 	     */
- 	    client = rx_GetSpecific(rxconn, rxcon_client_key);
- 	    if (client && client->tcon == rxconn) {
- 		rx_PutConnection(client->tcon);
- 		client->tcon = NULL;
- 	    }
- 	    rx_SetSpecific(rxconn, rxcon_client_key, (void *)0);
  	    rx_DestroyConnection(rxconn);
  	}
  	if (host->hcps.prlist_val)
--- 969,974 ----
***************
*** 825,848 ****
  }				/*h_TossStuff_r */
  
  
- /* Called by rx when a server connection disappears */
- int
- h_FreeConnection(struct rx_connection *tcon)
- {
-     register struct client *client;
- 
-     client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
-     if (client) {
- 	H_LOCK;
- 	if (client->tcon == tcon) {
- 	    rx_PutConnection(client->tcon);
- 	    client->tcon = (struct rx_connection *)0;
- 	}
- 	H_UNLOCK;
-     }
-     return 0;
- }				/*h_FreeConnection */
- 
  
  /* h_Enumerate: Calls (*proc)(host, held, param) for at least each host in the
   * system at the start of the enumeration (perhaps more).  Hosts may be deleted
--- 1027,1032 ----
***************
*** 953,958 ****
--- 1137,1148 ----
      /* hash into proper bucket */
      index = h_HashIndex(addr);
  
+     /* don't add the same entry multiple times */
+     for (chain = hostHashTable[index]; chain; chain = chain->next) {
+ 	if (chain->hostPtr == host && chain->addr == addr && chain->port == port)
+ 	    return;
+     }
+ 
      /* insert into beginning of list for this bucket */
      chain = (struct h_hashChain *)malloc(sizeof(struct h_hashChain));
      if (!chain) {
***************
*** 964,970 ****
      chain->addr = addr;
      chain->port = port;
      hostHashTable[index] = chain;
- 
  }
  
  /*
--- 1154,1159 ----
***************
*** 1321,1372 ****
  		    h_Lock_r(oldHost);
  
                      if (oldHost->interface) {
  			afsUUID uuid = oldHost->interface->uuid;
                          cb_conn = oldHost->callback_rxcon;
                          rx_GetConnection(cb_conn);
  			rx_SetConnDeadTime(cb_conn, 2);
  			rx_SetConnHardDeadTime(cb_conn, AFS_HARDDEADTIME);
  			H_UNLOCK;
! 			code = RXAFSCB_ProbeUuid(cb_conn, &uuid);
  			H_LOCK;
  			rx_SetConnDeadTime(cb_conn, 50);
  			rx_SetConnHardDeadTime(cb_conn, AFS_HARDDEADTIME);
                          rx_PutConnection(cb_conn);
                          cb_conn=NULL;
! 			if (code && MultiProbeAlternateAddress_r(oldHost)) {
                              probefail = 1;
                          }
                      } else {
                          probefail = 1;
                      }
  
-                     if (probefail) {
-                         /* The old host is either does not have a Uuid,
-                          * is not responding to Probes, 
-                          * or does not have a matching Uuid. 
-                          * Delete it! */
-                         oldHost->hostFlags |= HOSTDELETED;
-                         h_Unlock_r(oldHost);
- 			/* Let the holder be last release */
- 			if (!oheld) {
- 			    h_Release_r(oldHost);
- 			}
- 			oldHost = NULL;
-                     }
-                 }
- 		if (oldHost) {
  		    /* This is a new address for an existing host. Update
  		     * the list of interfaces for the existing host and
  		     * delete the host structure we just allocated. */
  		    if (oldHost->host != haddr || oldHost->port != hport) {
  			ViceLog(25,
  				("CB: new addr %s:%d for old host %s:%d\n",
  				  afs_inet_ntoa_r(haddr, hoststr),
  				  ntohs(hport), 
  				  afs_inet_ntoa_r(oldHost->host, hoststr2),
  				  ntohs(oldHost->port)));
! 			if (oldHost->host == haddr) {
! 			    /* We have just been contacted by a client behind a NAT */
  			    removeInterfaceAddr_r(oldHost, oldHost->host, oldHost->port);
  			} else {
  			    int i, found;
--- 1510,1563 ----
  		    h_Lock_r(oldHost);
  
                      if (oldHost->interface) {
+ 			int code2;
  			afsUUID uuid = oldHost->interface->uuid;
                          cb_conn = oldHost->callback_rxcon;
                          rx_GetConnection(cb_conn);
  			rx_SetConnDeadTime(cb_conn, 2);
  			rx_SetConnHardDeadTime(cb_conn, AFS_HARDDEADTIME);
  			H_UNLOCK;
! 			code2 = RXAFSCB_ProbeUuid(cb_conn, &uuid);
  			H_LOCK;
  			rx_SetConnDeadTime(cb_conn, 50);
  			rx_SetConnHardDeadTime(cb_conn, AFS_HARDDEADTIME);
                          rx_PutConnection(cb_conn);
                          cb_conn=NULL;
! 			if (code2) {
! 			    /* The primary address is either not responding or
! 			     * is not the client we are looking for.  
! 			     * MultiProbeAlternateAddress_r() will remove the
! 			     * alternate interfaces that do not have the same
! 			     * Uuid. */
! 			    ViceLog(0,("CB: ProbeUuid for %s:%d failed %d\n",
! 					 afs_inet_ntoa_r(oldHost->host, hoststr),
! 					 ntohs(oldHost->port),code2));
! 			    MultiProbeAlternateAddress_r(oldHost);
                              probefail = 1;
                          }
                      } else {
                          probefail = 1;
                      }
  
  		    /* This is a new address for an existing host. Update
  		     * the list of interfaces for the existing host and
  		     * delete the host structure we just allocated. */
  		    if (oldHost->host != haddr || oldHost->port != hport) {
+ 			struct rx_connection *rxconn;
+ 
  			ViceLog(25,
  				("CB: new addr %s:%d for old host %s:%d\n",
  				  afs_inet_ntoa_r(haddr, hoststr),
  				  ntohs(hport), 
  				  afs_inet_ntoa_r(oldHost->host, hoststr2),
  				  ntohs(oldHost->port)));
! 			if (probefail || oldHost->host == haddr) {
! 			    /* The probe failed which means that the old address is 
! 			     * either unreachable or is not the same host we were just
! 			     * contacted by.  We will also remove addresses if only
! 			     * the port has changed because that indicates the client
! 			     * is behind a NAT. 
! 			     */
  			    removeInterfaceAddr_r(oldHost, oldHost->host, oldHost->port);
  			} else {
  			    int i, found;
***************
*** 1389,1394 ****
--- 1580,1601 ----
  			addInterfaceAddr_r(oldHost, haddr, hport);
  			oldHost->host = haddr;
  			oldHost->port = hport;
+ 			rxconn = oldHost->callback_rxcon;
+ 			oldHost->callback_rxcon = host->callback_rxcon;
+ 			host->callback_rxcon = NULL;
+ 			
+ 			if (rxconn) {
+ 			    struct client *client;
+ 			    /*
+ 			     * If rx_DestroyConnection calls h_FreeConnection we will
+ 			     * deadlock on the host_glock_mutex. Work around the problem
+ 			     * by unhooking the client from the connection before
+ 			     * destroying the connection.
+ 			     */
+ 			    client = rx_GetSpecific(rxconn, rxcon_client_key);
+ 			    rx_SetSpecific(rxconn, rxcon_client_key, (void *)0);
+ 			    rx_DestroyConnection(rxconn);
+ 			}
  		    }
  		    host->hostFlags |= HOSTDELETED;
  		    h_Unlock_r(host);
***************
*** 1518,1524 ****
      }
  
      H_UNLOCK;
!     code = pr_NameToId(&lnames, &lids);
      H_LOCK;
      if (code == 0) {
  	if (lids.idlist_val) {
--- 1725,1731 ----
      }
  
      H_UNLOCK;
!     code = hpr_NameToId(&lnames, &lids);
      H_LOCK;
      if (code == 0) {
  	if (lids.idlist_val) {
***************
*** 1602,1608 ****
      int created = 0;
  
      client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
!     if (client) {
  	client->refCount++;
  	h_Hold_r(client->host);
  	if (!client->deleted && client->prfail != 2) {	
--- 1809,1816 ----
      int created = 0;
  
      client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
!     if (client && client->sid == rxr_CidOf(tcon) 
! 	&& client->VenusEpoch == rxr_GetEpoch(tcon)) {
  	client->refCount++;
  	h_Hold_r(client->host);
  	if (!client->deleted && client->prfail != 2) {	
***************
*** 1617,1622 ****
--- 1825,1832 ----
  	H_UNLOCK;
  	ObtainWriteLock(&client->lock);	/* released at end */
  	H_LOCK;
+     } else {
+ 	client = NULL;
      }
  
      authClass = rx_SecurityClassOf((struct rx_connection *)tcon);
***************
*** 1630,1636 ****
  	expTime = 0x7fffffff;
      } else if (authClass == 2) {
  	afs_int32 kvno;
! 
  	/* kerberos ticket */
  	code = rxkad_GetServerInfo(tcon, /*level */ 0, &expTime,
  				   tname, tinst, tcell, &kvno);
--- 1840,1846 ----
  	expTime = 0x7fffffff;
      } else if (authClass == 2) {
  	afs_int32 kvno;
!     
  	/* kerberos ticket */
  	code = rxkad_GetServerInfo(tcon, /*level */ 0, &expTime,
  				   tname, tinst, tcell, &kvno);
***************
*** 1675,1700 ****
  	for (client = host->FirstClient; client; client = client->next) {
  	    if (!client->deleted && (client->sid == rxr_CidOf(tcon))
  		&& (client->VenusEpoch == rxr_GetEpoch(tcon))) {
- 		if (client->tcon && (client->tcon != tcon)) {
- 		    ViceLog(0,
- 			    ("*** Vid=%d, sid=%x, tcon=%x, Tcon=%x ***\n",
- 			     client->ViceId, client->sid, client->tcon,
- 			     tcon));
- 		    oldClient =
- 			(struct client *)rx_GetSpecific(client->tcon,
- 							rxcon_client_key);
- 		    if (oldClient) {
- 			if (oldClient == client) {
- 			    rx_SetSpecific(client->tcon, rxcon_client_key,
- 					   NULL);
- 			} else
- 			    ViceLog(0,
- 				    ("Client-conn mismatch: CL1=%x, CN=%x, CL2=%x\n",
- 				     client, client->tcon, oldClient));
- 		    }
- 		    rx_PutConnection(client->tcon);
- 		    client->tcon = (struct rx_connection *)0;
- 		}
  		client->refCount++;
  		H_UNLOCK;
  		ObtainWriteLock(&client->lock);
--- 1885,1890 ----
***************
*** 1747,1753 ****
  	    client->CPS.prlist_val = AnonCPS.prlist_val;
  	} else {
  	    H_UNLOCK;
! 	    code = pr_GetCPS(viceid, &client->CPS);
  	    H_LOCK;
  	    if (code) {
  		char hoststr[16];
--- 1937,1943 ----
  	    client->CPS.prlist_val = AnonCPS.prlist_val;
  	} else {
  	    H_UNLOCK;
! 	    code = hpr_GetCPS(viceid, &client->CPS);
  	    H_LOCK;
  	    if (code) {
  		char hoststr[16];
***************
*** 1787,1793 ****
       * the RPC from the other client structure's rock.
       */
      oldClient = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
!     if (oldClient && oldClient->tcon == tcon) {
  	char hoststr[16];
  	if (!oldClient->deleted) {
  	    /* if we didn't create it, it's not ours to put back */
--- 1977,1984 ----
       * the RPC from the other client structure's rock.
       */
      oldClient = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
!     if (oldClient && oldClient != client && oldClient->sid == rxr_CidOf(tcon)
! 	&& oldClient->VenusEpoch == rxr_GetEpoch(tcon)) {
  	char hoststr[16];
  	if (!oldClient->deleted) {
  	    /* if we didn't create it, it's not ours to put back */
***************
*** 1801,1809 ****
  		    free(client->CPS.prlist_val);
  		client->CPS.prlist_val = NULL;
  		client->CPS.prlist_len = 0;
- 		if (client->tcon) {
- 		    rx_SetSpecific(client->tcon, rxcon_client_key, (void *)0);
- 		}
  	    }
  	    /* We should perhaps check for 0 here */
  	    client->refCount--;
--- 1992,1997 ----
***************
*** 1812,1823 ****
  		FreeCE(client);
  		created = 0;
  	    } 
- 	    ObtainWriteLock(&oldClient->lock);
  	    oldClient->refCount++;
  	    client = oldClient;
  	} else {
- 	    rx_PutConnection(oldClient->tcon);
- 	    oldClient->tcon = (struct rx_connection *)0;
  	    ViceLog(0, ("FindClient: deleted client %x(%x) already had conn %x (host %s:%d), stolen by client %x(%x)\n", 
  			oldClient, oldClient->sid, tcon, 
  			afs_inet_ntoa_r(rxr_HostOf(tcon), hoststr),
--- 2000,2011 ----
  		FreeCE(client);
  		created = 0;
  	    } 
  	    oldClient->refCount++;
+ 	    H_UNLOCK;
+ 	    ObtainWriteLock(&oldClient->lock);
+ 	    H_LOCK;
  	    client = oldClient;
  	} else {
  	    ViceLog(0, ("FindClient: deleted client %x(%x) already had conn %x (host %s:%d), stolen by client %x(%x)\n", 
  			oldClient, oldClient->sid, tcon, 
  			afs_inet_ntoa_r(rxr_HostOf(tcon), hoststr),
***************
*** 1834,1841 ****
  	h_Unlock_r(host);
  	CurrentConnections++;	/* increment number of connections */
      }
-     rx_GetConnection(tcon);
-     client->tcon = tcon;
      rx_SetSpecific(tcon, rxcon_client_key, client);
      ReleaseWriteLock(&client->lock);
  
--- 2022,2027 ----
***************
*** 1867,1896 ****
      H_LOCK;
      *cp = NULL;
      client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
!     if (client == NULL || client->tcon == NULL) {
  	ViceLog(0,
  		("GetClient: no client in conn %x (host %x:%d), VBUSYING\n",
  		 tcon, rxr_HostOf(tcon),ntohs(rxr_PortOf(tcon))));
  	H_UNLOCK;
  	return VBUSY;
      }
!     if (rxr_CidOf(client->tcon) != client->sid) {
  	ViceLog(0,
  		("GetClient: tcon %x tcon sid %d client sid %d\n",
! 		 client->tcon, rxr_CidOf(client->tcon), client->sid));
  	H_UNLOCK;
  	return VBUSY;
      }
-     if (!(client && client->tcon && rxr_CidOf(client->tcon) == client->sid)) {
- 	if (!client)
- 	    ViceLog(0, ("GetClient: no client in conn %x\n", tcon));
- 	else
- 	    ViceLog(0,
- 		    ("GetClient: tcon %x tcon sid %d client sid %d\n",
- 		     client->tcon, client->tcon ? rxr_CidOf(client->tcon)
- 		     : -1, client->sid));
- 	assert(0);
-     }
      if (client && client->LastCall > client->expTime && client->expTime) {
  	char hoststr[16];
  	ViceLog(1,
--- 2053,2072 ----
      H_LOCK;
      *cp = NULL;
      client = (struct client *)rx_GetSpecific(tcon, rxcon_client_key);
!     if (client == NULL) {
  	ViceLog(0,
  		("GetClient: no client in conn %x (host %x:%d), VBUSYING\n",
  		 tcon, rxr_HostOf(tcon),ntohs(rxr_PortOf(tcon))));
  	H_UNLOCK;
  	return VBUSY;
      }
!     if (rxr_CidOf(tcon) != client->sid || rxr_GetEpoch(tcon) != client->VenusEpoch) {
  	ViceLog(0,
  		("GetClient: tcon %x tcon sid %d client sid %d\n",
! 		 tcon, rxr_CidOf(tcon), client->sid));
  	H_UNLOCK;
  	return VBUSY;
      }
      if (client && client->LastCall > client->expTime && client->expTime) {
  	char hoststr[16];
  	ViceLog(1,
***************
*** 1928,1933 ****
--- 2104,2110 ----
      static char User[PR_MAXNAMELEN + 1];
      namelist lnames;
      idlist lids;
+     afs_int32 code;
  
      lids.idlist_len = 1;
      lids.idlist_val = (afs_int32 *) malloc(1 * sizeof(afs_int32));
***************
*** 1938,1944 ****
      lnames.namelist_len = 0;
      lnames.namelist_val = (prname *) 0;
      lids.idlist_val[0] = client->ViceId;
!     if (pr_IdToName(&lids, &lnames)) {
  	/* We need to free id we alloced above! */
  	free(lids.idlist_val);
  	return "*UNKNOWN USER NAME*";
--- 2115,2121 ----
      lnames.namelist_len = 0;
      lnames.namelist_val = (prname *) 0;
      lids.idlist_val[0] = client->ViceId;
!     if (hpr_IdToName(&lids, &lnames)) {
  	/* We need to free id we alloced above! */
  	free(lids.idlist_val);
  	return "*UNKNOWN USER NAME*";
***************
*** 1984,1990 ****
      (void)STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
      for (client = host->FirstClient; client; client = client->next) {
  	if (!client->deleted) {
- 	    if (client->tcon) {
  		(void)afs_snprintf(tmpStr, sizeof tmpStr,
  				   "    user id=%d,  name=%s, sl=%s till %s",
  				   client->ViceId, h_UserName(client),
--- 2161,2166 ----
***************
*** 1997,2008 ****
  							 sizeof(tbuffer))
  				   : "No Limit\n");
  		(void)STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
- 	    } else {
- 		(void)afs_snprintf(tmpStr, sizeof tmpStr,
- 				   "    user=%s, no current server connection\n",
- 				   h_UserName(client));
- 		(void)STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
- 	    }
  	    (void)afs_snprintf(tmpStr, sizeof tmpStr, "      CPS-%d is [",
  			       client->CPS.prlist_len);
  	    (void)STREAM_WRITE(tmpStr, strlen(tmpStr), 1, file);
--- 2173,2178 ----
***************
*** 2396,2401 ****
--- 2566,2573 ----
  		}
  	    } else {
  		if (!(host->hostFlags & VENUSDOWN) && host->cblist) {
+ 		    char hoststr[16];
+ 		    (void)afs_inet_ntoa_r(host->host, hoststr);
  		    if (host->interface) {
  			afsUUID uuid = host->interface->uuid;
  			H_UNLOCK;
***************
*** 2403,2413 ****
  			H_LOCK;
  			if (code) {
  			    if (MultiProbeAlternateAddress_r(host)) {
! 				char hoststr[16];
! 				(void)afs_inet_ntoa_r(host->host, hoststr);
! 				ViceLog(0,
! 					("ProbeUuid failed for host %s:%d\n",
! 					 hoststr, ntohs(host->port)));
  				host->hostFlags |= VENUSDOWN;
  			    }
  			}
--- 2575,2582 ----
  			H_LOCK;
  			if (code) {
  			    if (MultiProbeAlternateAddress_r(host)) {
! 				ViceLog(0,("CheckHost: Probing all interfaces of host %s:%d failed, code %d\n",
! 					    hoststr, ntohs(host->port), code));
  				host->hostFlags |= VENUSDOWN;
  			    }
  			}
***************
*** 2416,2426 ****
  			code = RXAFSCB_Probe(cb_conn);
  			H_LOCK;
  			if (code) {
- 			    char hoststr[16];
- 			    (void)afs_inet_ntoa_r(host->host, hoststr);
  			    ViceLog(0,
! 				    ("Probe failed for host %s:%d\n", hoststr,
! 				     ntohs(host->port)));
  			    host->hostFlags |= VENUSDOWN;
  			}
  		    }
--- 2585,2593 ----
  			code = RXAFSCB_Probe(cb_conn);
  			H_LOCK;
  			if (code) {
  			    ViceLog(0,
! 				    ("CheckHost: Probe failed for host %s:%d, code %d\n", 
! 				     hoststr, ntohs(host->port), code));
  			    host->hostFlags |= VENUSDOWN;
  			}
  		    }
***************
*** 2481,2502 ****
      afs_uint16 myPort;
      int found;
      struct Interface *interface;
  
      assert(host);
      assert(interf);
  
-     ViceLog(125,
- 	    ("initInterfaceAddr : host %x numAddr %d\n", host->host,
- 	     interf->numberOfInterfaces));
- 
      number = interf->numberOfInterfaces;
      myAddr = host->host;	/* current interface address */
      myPort = host->port;	/* current port */
  
      /* validation checks */
      if (number < 0 || number > AFS_MAX_INTERFACE_ADDR) {
  	ViceLog(0,
! 		("Number of alternate addresses returned is %d\n", number));
  	return -1;
      }
  
--- 2648,2670 ----
      afs_uint16 myPort;
      int found;
      struct Interface *interface;
+     char hoststr[16];
  
      assert(host);
      assert(interf);
  
      number = interf->numberOfInterfaces;
      myAddr = host->host;	/* current interface address */
      myPort = host->port;	/* current port */
  
+     ViceLog(125,
+ 	    ("initInterfaceAddr : host %s:%d numAddr %d\n", 
+ 	      afs_inet_ntoa_r(myAddr, hoststr), ntohs(myPort), number));
+ 
      /* validation checks */
      if (number < 0 || number > AFS_MAX_INTERFACE_ADDR) {
  	ViceLog(0,
! 		("Invalid number of alternate addresses is %d\n", number));
  	return -1;
      }
  
***************
*** 2552,2558 ****
      host->interface = interface;
  
      for (i = 0; i < host->interface->numberOfInterfaces; i++) {
- 	char hoststr[16];
  	ViceLog(125, ("--- alt address %s:%d\n", 
  		       afs_inet_ntoa_r(host->interface->interface[i].addr, hoststr),
  		       ntohs(host->interface->interface[i].port)));
--- 2720,2725 ----
Index: openafs/src/viced/host.h
diff -c openafs/src/viced/host.h:1.9.2.8 openafs/src/viced/host.h:1.9.2.10
*** openafs/src/viced/host.h:1.9.2.8	Mon Mar 13 19:33:46 2006
--- openafs/src/viced/host.h	Mon Jul 31 13:15:49 2006
***************
*** 25,30 ****
--- 25,31 ----
      assert(pthread_mutex_lock(&host_glock_mutex) == 0)
  #define H_UNLOCK \
      assert(pthread_mutex_unlock(&host_glock_mutex) == 0)
+ extern pthread_key_t viced_uclient_key;
  #else /* AFS_PTHREAD_ENV */
  #define H_LOCK
  #define H_UNLOCK
***************
*** 113,120 ****
      struct client *next;	/* next client entry for host */
      struct host *host;		/* ptr to parent host entry */
      afs_int32 sid;		/* Connection number from this host */
-     struct rx_connection *tcon;	/* most recent server connection
- 				 * associated with this client */
      prlist CPS;			/* cps for authentication */
      int ViceId;			/* Vice ID of user */
      afs_int32 expTime;		/* RX-only: expiration time */
--- 114,119 ----
***************
*** 205,211 ****
  extern void   hashInsert_r(afs_uint32 addr, afs_uint16 port, 
  			   struct host* host);
  extern struct host *h_LookupUuid_r(afsUUID * uuidp);
- extern int h_FreeConnection(struct rx_connection *tcon);
  extern void h_Enumerate(int (*proc) (), char *param);
  extern struct host *h_GetHost_r(struct rx_connection *tcon);
  extern struct client *h_FindClient_r(struct rx_connection *tcon);
--- 204,209 ----
Index: openafs/src/viced/viced.c
diff -c openafs/src/viced/viced.c:1.58.2.11 openafs/src/viced/viced.c:1.58.2.18
*** openafs/src/viced/viced.c:1.58.2.11	Wed Feb 22 00:02:04 2006
--- openafs/src/viced/viced.c	Fri Sep 15 19:19:28 2006
***************
*** 20,26 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/viced/viced.c,v 1.58.2.11 2006/02/22 05:02:04 jaltman Exp $");
  
  #include <stdio.h>
  #include <stdlib.h>
--- 20,26 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/viced/viced.c,v 1.58.2.18 2006/09/15 23:19:28 jaltman Exp $");
  
  #include <stdio.h>
  #include <stdlib.h>
***************
*** 150,157 ****
  
  int restartMode = RESTART_ORDINARY;
  
- int Testing = 0;		/* for ListViceInodes */
- 
  /*
   * Home for the performance statistics.
   */
--- 150,155 ----
***************
*** 167,172 ****
--- 165,171 ----
  int debuglevel = 0;
  int printBanner = 0;
  int rxJumbograms = 1;		/* default is to send and receive jumbograms. */
+ int rxBind = 0;		/* don't bind */
  int rxMaxMTU = -1;
  afs_int32 implicitAdminRights = PRSFS_LOOKUP;	/* The ADMINISTER right is 
  						 * already implied */
***************
*** 197,202 ****
--- 196,205 ----
  
  struct timeval tp;
  
+ #ifdef AFS_PTHREAD_ENV
+ pthread_key_t viced_uclient_key;
+ #endif
+ 
  /*
   * FileServer's name and IP address, both network byte order and
   * host byte order.
***************
*** 738,743 ****
--- 741,747 ----
      strcat(buffer, "[-rxdbg (enable rx debugging)] ");
      strcat(buffer, "[-rxdbge (enable rxevent debugging)] ");
      strcat(buffer, "[-rxmaxmtu <bytes>] ");
+     strcat(buffer, "[-rxbind (bind the Rx socket to one address)] ");
  #if AFS_PTHREAD_ENV
      strcat(buffer, "[-vattachpar <number of volume attach threads>] ");
  #endif
***************
*** 1054,1059 ****
--- 1058,1065 ----
  #endif
  	else if (!strcmp(argv[i], "-nojumbo")) {
  	    rxJumbograms = 0;
+ 	} else if (!strcmp(argv[i], "-rxbind")) {
+ 	    rxBind = 1;
  	} else if (!strcmp(argv[i], "-rxmaxmtu")) {
  	    if ((i + 1) >= argc) {
  		fprintf(stderr, "missing argument for -rxmaxmtu\n"); 
***************
*** 1294,1299 ****
--- 1300,1310 ----
  		("Couldn't initialize protection library; code=%d.\n", code));
  	return code;
      }
+ 
+ #ifdef AFS_PTHREAD_ENV
+     assert(pthread_key_create(&viced_uclient_key, NULL) == 0);
+ #endif
+ 
      SystemId = SYSADMINID;
      SystemAnyUser = ANYUSERID;
      SystemAnyUserCPS.prlist_len = 0;
***************
*** 1361,1366 ****
--- 1372,1378 ----
  			     info.hostAddr[i].sin_port, USER_SERVICE_ID, sc,
  			     scIndex);
      code = ubik_ClientInit(serverconns, &cstruct);
+     afsconf_Close(tdir);
      if (code) {
  	ViceLog(0, ("vl_Initialize: ubik client init failed.\n"));
  	return code;
***************
*** 1529,1535 ****
  	FS_HostAddrs_HBO[i] = ntohl(FS_HostAddrs[i]);
      addrs.bulkaddrs_len = FS_HostAddr_cnt;
      addrs.bulkaddrs_val = (afs_uint32 *) FS_HostAddrs_HBO;
!     code = ubik_Call(VL_RegisterAddrs, cstruct, 0, &FS_HostUUID, 0, &addrs);
      if (code) {
  	if (code == VL_MULTIPADDR) {
  	    ViceLog(0,
--- 1541,1547 ----
  	FS_HostAddrs_HBO[i] = ntohl(FS_HostAddrs[i]);
      addrs.bulkaddrs_len = FS_HostAddr_cnt;
      addrs.bulkaddrs_val = (afs_uint32 *) FS_HostAddrs_HBO;
!     code = ubik_VL_RegisterAddrs(cstruct, 0, &FS_HostUUID, 0, &addrs);
      if (code) {
  	if (code == VL_MULTIPADDR) {
  	    ViceLog(0,
***************
*** 1555,1560 ****
--- 1567,1609 ----
  }
  
  afs_int32
+ SetupVL()
+ {
+     afs_int32 code;
+     extern int rxi_numNetAddrs;
+     extern afs_uint32 rxi_NetAddrs[];
+ 
+ #ifndef AFS_NT40_ENV
+     if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || AFSDIR_SERVER_NETINFO_FILEPATH) {
+ 	/*
+ 	 * Find addresses we are supposed to register as per the netrestrict 
+ 	 * and netinfo files (/usr/afs/local/NetInfo and 
+ 	 * /usr/afs/local/NetRestict)
+ 	 */
+ 	char reason[1024];
+ 	afs_int32 code = parseNetFiles(FS_HostAddrs, NULL, NULL,
+ 				       ADDRSPERSITE, reason,
+ 				       AFSDIR_SERVER_NETINFO_FILEPATH,
+ 				       AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+ 	if (code < 0) {
+ 	    ViceLog(0, ("Can't register any valid addresses: %s\n", reason));
+ 	    exit(1);
+ 	}
+ 	FS_HostAddr_cnt = (afs_uint32) code;
+     } else
+ #endif
+     {
+ 	FS_HostAddr_cnt = rx_getAllAddr(FS_HostAddrs, ADDRSPERSITE);
+     }
+ 
+     if (FS_HostAddr_cnt == 1 && rxBind == 1)
+ 	code = FS_HostAddrs[0];
+     else 
+ 	code = htonl(INADDR_ANY);
+     return code;
+ }
+ 
+ afs_int32
  InitVL()
  {
      afs_int32 code;
***************
*** 1587,1616 ****
      /* A good sysid file exists; inform the vlserver. If any conflicts,
       * we always use the latest interface available as the real truth.
       */
- #ifndef AFS_NT40_ENV
-     if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || AFSDIR_SERVER_NETINFO_FILEPATH) {
- 	/*
- 	 * Find addresses we are supposed to register as per the netrestrict 
- 	 * and netinfo files (/usr/afs/local/NetInfo and 
- 	 * /usr/afs/local/NetRestict)
- 	 */
- 	char reason[1024];
- 	afs_int32 code = parseNetFiles(FS_HostAddrs, NULL, NULL,
- 				       ADDRSPERSITE, reason,
- 				       AFSDIR_SERVER_NETINFO_FILEPATH,
- 				       AFSDIR_SERVER_NETRESTRICT_FILEPATH);
- 	if (code < 0) {
- 	    ViceLog(0, ("Can't register any valid addresses: %s\n", reason));
- 	    exit(1);
- 	}
- 	FS_HostAddr_cnt = (afs_uint32) code;
-     } else
- #endif
-     {
- 	FS_HostAddr_cnt = rx_getAllAddr(FS_HostAddrs, ADDRSPERSITE);
-     }
  
-     FS_registered = 1;
      code = Do_VLRegisterRPC();
      return code;
  }
--- 1636,1642 ----
***************
*** 1635,1640 ****
--- 1661,1667 ----
  #endif
      int curLimit;
      time_t t;
+     afs_uint32 rx_bindhost;
  
  #ifdef	AFS_AIX32_ENV
      struct sigaction nsa;
***************
*** 1800,1806 ****
  #endif
      if (udpBufSize)
  	rx_SetUdpBufSize(udpBufSize);	/* set the UDP buffer size for receive */
!     if (rx_Init((int)htons(7000)) < 0) {
  	ViceLog(0, ("Cannot initialize RX\n"));
  	exit(1);
      }
--- 1827,1835 ----
  #endif
      if (udpBufSize)
  	rx_SetUdpBufSize(udpBufSize);	/* set the UDP buffer size for receive */
!     rx_bindhost = SetupVL();
! 
!     if (rx_InitHost(rx_bindhost, (int)htons(7000)) < 0) {
  	ViceLog(0, ("Cannot initialize RX\n"));
  	exit(1);
      }
***************
*** 1817,1833 ****
      sc[1] = 0;			/* rxvab_NewServerSecurityObject(key1, 0) */
      sc[2] = rxkad_NewServerSecurityObject(rxkad_clear, NULL, get_key, NULL);
      sc[3] = rxkad_NewServerSecurityObject(rxkad_crypt, NULL, get_key, NULL);
!     tservice = rx_NewService( /* port */ 0, /* service id */ 1,	/*service name */
! 			     "AFS",
! 							/* security classes */ sc,
! 							/* numb sec classes */
! 			     4, RXAFS_ExecuteRequest);
      if (!tservice) {
  	ViceLog(0,
  		("Failed to initialize RX, probably two servers running.\n"));
  	exit(-1);
      }
-     rx_SetDestroyConnProc(tservice, (void (*)())h_FreeConnection);
      rx_SetMinProcs(tservice, 3);
      rx_SetMaxProcs(tservice, lwps);
      rx_SetCheckReach(tservice, 1);
--- 1846,1862 ----
      sc[1] = 0;			/* rxvab_NewServerSecurityObject(key1, 0) */
      sc[2] = rxkad_NewServerSecurityObject(rxkad_clear, NULL, get_key, NULL);
      sc[3] = rxkad_NewServerSecurityObject(rxkad_crypt, NULL, get_key, NULL);
!     tservice = rx_NewServiceHost(rx_bindhost,  /* port */ 0, /* service id */ 
! 				 1,	/*service name */
! 				 "AFS",
! 				 /* security classes */ sc,
! 				 /* numb sec classes */
! 				 4, RXAFS_ExecuteRequest);
      if (!tservice) {
  	ViceLog(0,
  		("Failed to initialize RX, probably two servers running.\n"));
  	exit(-1);
      }
      rx_SetMinProcs(tservice, 3);
      rx_SetMaxProcs(tservice, lwps);
      rx_SetCheckReach(tservice, 1);
Index: openafs/src/viced/viced_prototypes.h
diff -c openafs/src/viced/viced_prototypes.h:1.6 openafs/src/viced/viced_prototypes.h:1.6.2.1
*** openafs/src/viced/viced_prototypes.h:1.6	Thu Mar  6 12:11:39 2003
--- openafs/src/viced/viced_prototypes.h	Tue Aug  1 18:33:47 2006
***************
*** 4,8 ****
  
  /* First 32 bits of capabilities */
  #define CAPABILITY_ERRORTRANS (1<<0)
! 
  #define CAPABILITY_BITS 1
--- 4,8 ----
  
  /* First 32 bits of capabilities */
  #define CAPABILITY_ERRORTRANS (1<<0)
! #define CAPABILITY_WRITELOCKACL (1<<2)
  #define CAPABILITY_BITS 1
Index: openafs/src/vlserver/Makefile.in
diff -c openafs/src/vlserver/Makefile.in:1.12 openafs/src/vlserver/Makefile.in:1.12.2.1
*** openafs/src/vlserver/Makefile.in:1.12	Mon Jan 13 13:55:07 2003
--- openafs/src/vlserver/Makefile.in	Mon Jul 31 13:07:52 2006
***************
*** 72,78 ****
  vldbint.xdr.o: vldbint.xdr.c vldbint.h
  
  vldbint.cs.c: vldbint.xg
! 	${RXGEN} -x -C -o $@ ${srcdir}/vldbint.xg
  
  vldbint.ss.c: vldbint.xg
  	${RXGEN} -x -S -o $@ ${srcdir}/vldbint.xg
--- 72,78 ----
  vldbint.xdr.o: vldbint.xdr.c vldbint.h
  
  vldbint.cs.c: vldbint.xg
! 	${RXGEN} -u -x -C -o $@ ${srcdir}/vldbint.xg
  
  vldbint.ss.c: vldbint.xg
  	${RXGEN} -x -S -o $@ ${srcdir}/vldbint.xg
***************
*** 81,87 ****
  	${RXGEN} -x -c -o $@ ${srcdir}/vldbint.xg
  
  vldbint.h: vldbint.xg
! 	${RXGEN} -x -h -o $@ ${srcdir}/vldbint.xg
  
  vldbint.cs.c: vldbint.h
  vldbint.ss.c: vldbint.h
--- 81,87 ----
  	${RXGEN} -x -c -o $@ ${srcdir}/vldbint.xg
  
  vldbint.h: vldbint.xg
! 	${RXGEN} -u -x -h -o $@ ${srcdir}/vldbint.xg
  
  vldbint.cs.c: vldbint.h
  vldbint.ss.c: vldbint.h
Index: openafs/src/vlserver/NTMakefile
diff -c openafs/src/vlserver/NTMakefile:1.8.2.1 openafs/src/vlserver/NTMakefile:1.8.2.3
*** openafs/src/vlserver/NTMakefile:1.8.2.1	Fri Mar 11 02:03:49 2005
--- openafs/src/vlserver/NTMakefile	Mon Jul 31 17:51:22 2006
***************
*** 103,110 ****
  $(INCFILES):$$(@F)
  	 $(COPY)  $** $(INCFILEDIR)\.
  
! vldbint.ss.c vldbint.cs.c vldbint.xdr.c vldbint.h: vldbint.xg
! 	$(RXGEN) -x $**
  	$(COPY) vldbint.h $(DESTDIR)\include\afs\vldbint.h
  
  ############################################################################
--- 103,119 ----
  $(INCFILES):$$(@F)
  	 $(COPY)  $** $(INCFILEDIR)\.
  
! vldbint.cs.c: vldbint.xg vldbint.h
! 	$(RXGEN) -u -x -C -o $@ vldbint.xg
! 
! vldbint.ss.c: vldbint.xg vldbint.h
! 	$(RXGEN) -x -S -o $@ vldbint.xg
! 
! vldbint.xdr.c: vldbint.xg vldbint.h
! 	$(RXGEN) -x -c -o $@ vldbint.xg
! 
! vldbint.h: vldbint.xg
! 	$(RXGEN) -u -x -h -o $@ vldbint.xg
  	$(COPY) vldbint.h $(DESTDIR)\include\afs\vldbint.h
  
  ############################################################################
***************
*** 154,160 ****
  # clean up
  
  clean::
! 	$(DEL) vldbint.cs.c vldbint.ss.c vldbint.xdr.c vldbint.h$$ 
  	$(DEL) vlserver.h vl_errors.c $(INCFILES)
  
  mkdir:
--- 163,169 ----
  # clean up
  
  clean::
! 	$(DEL) vldbint.cs.c vldbint.ss.c vldbint.xdr.c vldbint.h
  	$(DEL) vlserver.h vl_errors.c $(INCFILES)
  
  mkdir:
Index: openafs/src/vlserver/vlserver.c
diff -c openafs/src/vlserver/vlserver.c:1.18.2.3 openafs/src/vlserver/vlserver.c:1.18.2.6
*** openafs/src/vlserver/vlserver.c:1.18.2.3	Tue Feb 21 23:09:32 2006
--- openafs/src/vlserver/vlserver.c	Tue Jun 20 16:35:01 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vlserver/vlserver.c,v 1.18.2.3 2006/02/22 04:09:32 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vlserver/vlserver.c,v 1.18.2.6 2006/06/20 20:35:01 jaltman Exp $");
  
  #include <afs/stds.h>
  #include <sys/types.h>
***************
*** 72,77 ****
--- 72,81 ----
  int smallMem = 0;
  int rxJumbograms = 1;		/* default is to send and receive jumbo grams */
  int rxMaxMTU = -1;
+ afs_int32 rxBind = 0;
+ 
+ #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
+ afs_uint32 SHostAddrs[ADDRSPERSITE];
  
  static void
  CheckSignal_Signal()
***************
*** 144,149 ****
--- 148,154 ----
      extern int rx_extraPackets;
      char commandLine[150];
      char clones[MAXHOSTSPERCELL];
+     afs_uint32 host = ntohl(INADDR_ANY);
  
  #ifdef	AFS_AIX32_ENV
      /*
***************
*** 179,186 ****
  	} else if (strcmp(argv[index], "-nojumbo") == 0) {
  	    rxJumbograms = 0;
  
! 	} else if (!strcmp(argv[i], "-rxmaxmtu")) {
! 	    if ((i + 1) >= argc) {
  		fprintf(stderr, "missing argument for -rxmaxmtu\n"); 
  		return -1; 
  	    }
--- 184,194 ----
  	} else if (strcmp(argv[index], "-nojumbo") == 0) {
  	    rxJumbograms = 0;
  
! 	} else if (strcmp(argv[index], "-rxbind") == 0) {
! 	    rxBind = 1;
! 
! 	} else if (!strcmp(argv[index], "-rxmaxmtu")) {
! 	    if ((index + 1) >= argc) {
  		fprintf(stderr, "missing argument for -rxmaxmtu\n"); 
  		return -1; 
  	    }
***************
*** 245,258 ****
  	    /* support help flag */
  #ifndef AFS_NT40_ENV
  	    printf("Usage: vlserver [-p <number of processes>] [-nojumbo] "
! 		   "[-rxmaxmtu <bytes>] "
  		   "[-auditlog <log path>] "
  		   "[-syslog[=FACILITY]] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
  #else
  	    printf("Usage: vlserver [-p <number of processes>] [-nojumbo] "
! 		   "[-rxmaxmtu <bytes>] "
  		   "[-auditlog <log path>] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
--- 253,266 ----
  	    /* support help flag */
  #ifndef AFS_NT40_ENV
  	    printf("Usage: vlserver [-p <number of processes>] [-nojumbo] "
! 		   "[-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-auditlog <log path>] "
  		   "[-syslog[=FACILITY]] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
  #else
  	    printf("Usage: vlserver [-p <number of processes>] [-nojumbo] "
! 		   "[-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-auditlog <log path>] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
***************
*** 323,328 ****
--- 331,357 ----
      if (noAuth)
  	afsconf_SetNoAuthFlag(tdir, 1);
  
+     if (rxBind) {
+ 	afs_int32 ccode;
+ #ifndef AFS_NT40_ENV
+         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
+             AFSDIR_SERVER_NETINFO_FILEPATH) {
+             char reason[1024];
+             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
+ 				  ADDRSPERSITE, reason,
+ 				  AFSDIR_SERVER_NETINFO_FILEPATH,
+ 				  AFSDIR_SERVER_NETRESTRICT_FILEPATH);
+         } else 
+ #endif	
+ 	{
+             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
+         }
+         if (ccode == 1) {
+             host = SHostAddrs[0];
+ 	    rx_InitHost(host, htons(AFSCONF_VLDBPORT));
+ 	}
+     }
+ 
      ubik_nBuffers = 512;
      ubik_CRXSecurityProc = afsconf_ClientAuth;
      ubik_CRXSecurityRock = (char *)tdir;
***************
*** 351,358 ****
      sc[0] = rxnull_NewServerSecurityObject();
      sc[1] = (struct rx_securityClass *)0;
      sc[2] = rxkad_NewServerSecurityObject(0, tdir, afsconf_GetKey, NULL);
      tservice =
! 	rx_NewService(0, USER_SERVICE_ID, "Vldb server", sc, 3,
  		      VL_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	printf("vlserver: Could not create VLDB_SERVICE rx service\n");
--- 380,388 ----
      sc[0] = rxnull_NewServerSecurityObject();
      sc[1] = (struct rx_securityClass *)0;
      sc[2] = rxkad_NewServerSecurityObject(0, tdir, afsconf_GetKey, NULL);
+ 
      tservice =
! 	rx_NewServiceHost(host, 0, USER_SERVICE_ID, "Vldb server", sc, 3,
  		      VL_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	printf("vlserver: Could not create VLDB_SERVICE rx service\n");
***************
*** 364,370 ****
      rx_SetMaxProcs(tservice, lwps);
  
      tservice =
! 	rx_NewService(0, RX_STATS_SERVICE_ID, "rpcstats", sc, 3,
  		      RXSTATS_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	printf("vlserver: Could not create rpc stats rx service\n");
--- 394,400 ----
      rx_SetMaxProcs(tservice, lwps);
  
      tservice =
! 	rx_NewServiceHost(host, 0, RX_STATS_SERVICE_ID, "rpcstats", sc, 3,
  		      RXSTATS_ExecuteRequest);
      if (tservice == (struct rx_service *)0) {
  	printf("vlserver: Could not create rpc stats rx service\n");
Index: openafs/src/vol/Makefile.in
diff -c openafs/src/vol/Makefile.in:1.18.2.3 openafs/src/vol/Makefile.in:1.18.2.4
*** openafs/src/vol/Makefile.in:1.18.2.3	Thu Mar  9 01:42:27 2006
--- openafs/src/vol/Makefile.in	Mon Jul 31 12:50:52 2006
***************
*** 163,168 ****
--- 163,171 ----
  			${CC} ${LDFLAGS} -o gi gi.o ${TOP_LIBDIR}/libsys.a;; \
          esac
  
+ namei_map: ${TOP_LIBDIR}/libsys.a namei_map.o
+ 	${CC} ${CFLAGS} -o namei_map namei_map.o ${TOP_LIBDIR}/libafsutil.a ${LIBS} ${XLIBS}
+ 
  volinfo: vol-info.o physio.o ihandle.o ${LIBS}
  	${CC} ${CFLAGS} -o volinfo vol-info.o physio.o \
  		ihandle.o ${LIBS} ${XLIBS}
Index: openafs/src/vol/clone.c
diff -c openafs/src/vol/clone.c:1.17.2.1 openafs/src/vol/clone.c:1.17.2.4
*** openafs/src/vol/clone.c:1.17.2.1	Wed Aug 25 03:14:19 2004
--- openafs/src/vol/clone.c	Fri Oct  6 08:33:57 2006
***************
*** 19,25 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/clone.c,v 1.17.2.1 2004/08/25 07:14:19 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.17.2.4 2006/10/06 12:33:57 shadow Exp $");
  
  #include <sys/types.h>
  #include <stdio.h>
***************
*** 256,262 ****
  		    Log("IH_INC failed: %x, %s, %u errno %d\n",
  			V_linkHandle(rwvp), PrintInode(NULL, rwinode),
  			V_parentId(rwvp), errno);
! 		    assert(0);
  		}
  		inodeinced = 1;
  	    }
--- 256,263 ----
  		    Log("IH_INC failed: %x, %s, %u errno %d\n",
  			V_linkHandle(rwvp), PrintInode(NULL, rwinode),
  			V_parentId(rwvp), errno);
! 		    VForceOffline_r(rwvp);
! 		    ERROR_EXIT(EIO);
  		}
  		inodeinced = 1;
  	    }
***************
*** 308,314 ****
  		    Log("IH_DEC failed: %x, %s, %u errno %d\n",
  			V_linkHandle(rwvp), PrintInode(NULL, rwinode),
  			V_parentId(rwvp), errno);
! 		    assert(0);
  		}
  	    }
  	    /* And if the directory was marked clone, unmark it */
--- 309,316 ----
  		    Log("IH_DEC failed: %x, %s, %u errno %d\n",
  			V_linkHandle(rwvp), PrintInode(NULL, rwinode),
  			V_parentId(rwvp), errno);
! 		    VForceOffline_r(rwvp);
! 		    ERROR_EXIT(EIO);
  		}
  	    }
  	    /* And if the directory was marked clone, unmark it */
Index: openafs/src/vol/listinodes.c
diff -c openafs/src/vol/listinodes.c:1.13.2.3 openafs/src/vol/listinodes.c:1.13.2.4
*** openafs/src/vol/listinodes.c:1.13.2.3	Tue Nov  1 11:45:44 2005
--- openafs/src/vol/listinodes.c	Sun Sep  3 01:51:42 2006
***************
*** 21,27 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/listinodes.c,v 1.13.2.3 2005/11/01 16:45:44 shadow Exp $");
  
  #ifndef AFS_NAMEI_ENV
  #if defined(AFS_LINUX20_ENV) || defined(AFS_SUN4_ENV)
--- 21,27 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/listinodes.c,v 1.13.2.4 2006/09/03 05:51:42 shadow Exp $");
  
  #ifndef AFS_NAMEI_ENV
  #if defined(AFS_LINUX20_ENV) || defined(AFS_SUN4_ENV)
***************
*** 135,141 ****
  
  #define	ROOTINODE	2
  static char *partition;
! extern int Testing;
  int pfd;
  
  #ifdef	AFS_AIX32_ENV
--- 135,141 ----
  
  #define	ROOTINODE	2
  static char *partition;
! int Testing=0;
  int pfd;
  
  #ifdef	AFS_AIX32_ENV
Index: openafs/src/vol/namei_map.c
diff -c /dev/null openafs/src/vol/namei_map.c:1.1.2.2
*** /dev/null	Fri Oct 13 15:52:15 2006
--- openafs/src/vol/namei_map.c	Mon Jul 31 12:50:52 2006
***************
*** 0 ****
--- 1,20 ----
+ #include <sys/types.h>
+ #include <inttypes.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <afs/param.h>
+ #include <afs/afsutil.h>
+ 
+ int main(int argc, char **argv) {
+   lb64_string_t tmp;
+ 
+   unsigned long vol;
+   if (argc < 2) { fprintf(stderr, "Usage: nametodir vol\n"); exit(1); }
+   vol=strtoul(argv[1], NULL, 0);
+   (void)int32_to_flipbase64(tmp, (int64_t) (vol & 0xff));
+   printf("Component is %s\n", tmp);
+   (void)int32_to_flipbase64(tmp, (int64_t) vol);
+   printf("Component is %s\n", tmp);
+ 
+   exit(0);
+ }
Index: openafs/src/vol/namei_ops.c
diff -c openafs/src/vol/namei_ops.c:1.21.2.4 openafs/src/vol/namei_ops.c:1.21.2.10
*** openafs/src/vol/namei_ops.c:1.21.2.4	Tue Nov  1 11:45:44 2005
--- openafs/src/vol/namei_ops.c	Wed Sep 20 01:52:35 2006
***************
*** 13,19 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/namei_ops.c,v 1.21.2.4 2005/11/01 16:45:44 shadow Exp $");
  
  #ifdef AFS_NAMEI_ENV
  #include <stdio.h>
--- 13,19 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/namei_ops.c,v 1.21.2.10 2006/09/20 05:52:35 shadow Exp $");
  
  #ifdef AFS_NAMEI_ENV
  #include <stdio.h>
***************
*** 27,35 ****
  #include <sys/file.h>
  #include <sys/param.h>
  #include <lock.h>
- #ifdef AFS_AIX_ENV
- #include <sys/lockf.h>
- #endif
  #if defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
  #include <unistd.h>
  #endif
--- 27,32 ----
***************
*** 69,75 ****
--- 66,106 ----
  
  /*@printflike@*/ extern void Log(const char *format, ...);
  
+ #ifndef LOCK_SH
+ #define   LOCK_SH   1    /* shared lock */
+ #define   LOCK_EX   2    /* exclusive lock */
+ #define   LOCK_NB   4    /* don't block when locking */
+ #define   LOCK_UN   8    /* unlock */
+ #endif
+ 
+ #ifndef HAVE_FLOCK
+ #include <fcntl.h>
+ 
+ /*
+  * This function emulates a subset of flock()
+  */
+ int 
+ emul_flock(int fd, int cmd)
+ {    struct flock f;
+ 
+     memset(&f, 0, sizeof (f));
+ 
+     if (cmd & LOCK_UN)
+         f.l_type = F_UNLCK;
+     if (cmd & LOCK_SH)
+         f.l_type = F_RDLCK;
+     if (cmd & LOCK_EX)
+         f.l_type = F_WRLCK;
+ 
+     return fcntl(fd, (cmd & LOCK_NB) ? F_SETLK : F_SETLKW, &f);
+ }
+ 
+ #define flock(f,c)      emul_flock(f,c)
+ #endif
+ 
  extern char *volutil_PartitionName_r(int volid, char *buf, int buflen);
+ int Testing=0;
+ 
  
  afs_sfsize_t
  namei_iread(IHandle_t * h, afs_foff_t offset, char *buf, afs_fsize_t size)
***************
*** 149,155 ****
      int ogm_mode;
  } namei_ogm_t;
  
! int namei_SetLinkCount(FdHandle_t * h, Inode ino, int count, int locked);
  static int GetFreeTag(IHandle_t * ih, int vno);
  
  /* namei_HandleToInodeDir
--- 180,187 ----
      int ogm_mode;
  } namei_ogm_t;
  
! static int namei_GetLinkCount2(FdHandle_t * h, Inode ino, int lockit, int fixup, int nowrite);
! 
  static int GetFreeTag(IHandle_t * ih, int vno);
  
  /* namei_HandleToInodeDir
***************
*** 693,708 ****
  		FDH_REALLYCLOSE(fdP);
  		return -1;
  	    }
  	}
  	if (count == 0) {
  	    IHandle_t *th;
  	    IH_INIT(th, ih->ih_dev, ih->ih_vid, ino);
! #if 0
! 	    /* This triggers in the fileserver on the volume index vnodes */
! 	    if (th->ih_refcnt > 1)
! 		Log("Warning: Leaked ref on ihandle dev %d vid %d ino %lld\n",
! 		    th->ih_dev, th->ih_vid, (int64_t) th->ih_ino);
! #endif
  	    namei_HandleToName(&name, th);
  	    IH_RELEASE(th);
  	    code = unlink(name.n_path);
--- 725,748 ----
  		FDH_REALLYCLOSE(fdP);
  		return -1;
  	    }
+ 	} else {
+ 	    IHandle_t *th;
+ 	    IH_INIT(th, ih->ih_dev, ih->ih_vid, ino);
+ 	    Log("Warning: Lost ref on ihandle dev %d vid %d ino %lld\n",
+ 		th->ih_dev, th->ih_vid, (int64_t) th->ih_ino);
+ 	    IH_RELEASE(th);
+ 	  
+ 	    /* If we're less than 0, someone presumably unlinked;
+ 	       don't bother setting count to 0, but we need to drop a lock */
+ 	    if (namei_SetLinkCount(fdP, ino, 0, 1) < 0) {
+ 		FDH_REALLYCLOSE(fdP);
+ 		return -1;
+ 	    }
  	}
  	if (count == 0) {
  	    IHandle_t *th;
  	    IH_INIT(th, ih->ih_dev, ih->ih_vid, ino);
! 
  	    namei_HandleToName(&name, th);
  	    IH_RELEASE(th);
  	    code = unlink(name.n_path);
***************
*** 850,892 ****
   * If lockit is set, lock the file and leave it locked upon a successful
   * return.
   */
! int
! namei_GetLinkCount(FdHandle_t * h, Inode ino, int lockit)
  {
      unsigned short row = 0;
      afs_foff_t offset;
      int index;
  
      namei_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
  
      if (lockit) {
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
- 	if (lockf(h->fd_fd, F_LOCK, 0) < 0)
- #else
  	if (flock(h->fd_fd, LOCK_EX) < 0)
- #endif
  	    return -1;
      }
  
      if (afs_lseek(h->fd_fd, offset, SEEK_SET) == -1)
  	goto bad_getLinkByte;
  
!     if (read(h->fd_fd, (char *)&row, sizeof(row)) != sizeof(row)) {
  	goto bad_getLinkByte;
      }
  
      return (int)((row >> index) & NAMEI_TAGMASK);
  
    bad_getLinkByte:
      if (lockit)
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
- 	lockf(h->fd_fd, F_ULOCK, 0);
- #else
  	flock(h->fd_fd, LOCK_UN);
- #endif
      return -1;
  }
  
  /* Return a free column index for this vnode. */
  static int
  GetFreeTag(IHandle_t * ih, int vno)
--- 890,954 ----
   * If lockit is set, lock the file and leave it locked upon a successful
   * return.
   */
! static int
! namei_GetLinkCount2(FdHandle_t * h, Inode ino, int lockit, int fixup, int nowrite)
  {
      unsigned short row = 0;
      afs_foff_t offset;
+     ssize_t rc;
      int index;
  
+     /* there's no linktable yet. the salvager will create one later */
+     if (h->fd_fd == -1 && fixup)
+        return 1;
      namei_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
  
      if (lockit) {
  	if (flock(h->fd_fd, LOCK_EX) < 0)
  	    return -1;
      }
  
      if (afs_lseek(h->fd_fd, offset, SEEK_SET) == -1)
  	goto bad_getLinkByte;
  
!     rc = read(h->fd_fd, (char *)&row, sizeof(row));
!     if ((rc == 0 || !((row >> index) & NAMEI_TAGMASK)) && fixup && nowrite)
!         return 1;
!     if (rc == 0 && fixup) {
!         struct stat st;
!         if (fstat(h->fd_fd, &st) || st.st_size >= offset+sizeof(row))
! 	   goto bad_getLinkByte;
!         FDH_TRUNC(h, offset+sizeof(row));
!         row = 1 << index;
!         rc = write(h->fd_fd, (char *)&row, sizeof(row));
!     }
!     if (rc != sizeof(row)) {
  	goto bad_getLinkByte;
      }
  
+     if (fixup && !((row >> index) & NAMEI_TAGMASK)) {
+         row |= 1<<index;
+         if (afs_lseek(h->fd_fd, offset, SEEK_SET) == -1)
+ 	    goto bad_getLinkByte;
+         rc = write(h->fd_fd, (char *)&row, sizeof(row));
+         if (rc != sizeof(row))
+ 	    goto bad_getLinkByte;
+     }
+  
      return (int)((row >> index) & NAMEI_TAGMASK);
  
    bad_getLinkByte:
      if (lockit)
  	flock(h->fd_fd, LOCK_UN);
      return -1;
  }
  
+ int
+ namei_GetLinkCount(FdHandle_t * h, Inode ino, int lockit) 
+ {
+     return namei_GetLinkCount2(h, ino, lockit, 0, 1);
+ }
+ 
  /* Return a free column index for this vnode. */
  static int
  GetFreeTag(IHandle_t * ih, int vno)
***************
*** 904,914 ****
  	return -1;
  
      /* Only one manipulates at a time. */
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
-     if (lockf(fdP->fd_fd, F_LOCK, 0) < 0) {
- #else
      if (flock(fdP->fd_fd, LOCK_EX) < 0) {
- #endif
  	FDH_REALLYCLOSE(fdP);
  	return -1;
      }
--- 966,972 ----
***************
*** 944,963 ****
  	goto badGetFreeTag;
      }
      FDH_SYNC(fdP);
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
-     lockf(fdP->fd_fd, F_ULOCK, 0);
- #else
      flock(fdP->fd_fd, LOCK_UN);
- #endif
      FDH_REALLYCLOSE(fdP);
      return col;;
  
    badGetFreeTag:
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
-     lockf(fdP->fd_fd, F_ULOCK, 0);
- #else
      flock(fdP->fd_fd, LOCK_UN);
- #endif
      FDH_REALLYCLOSE(fdP);
      return -1;
  }
--- 1002,1013 ----
***************
*** 980,990 ****
      namei_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
  
      if (!locked) {
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
- 	if (lockf(fdP->fd_fd, F_LOCK, 0) < 0) {
- #else
  	if (flock(fdP->fd_fd, LOCK_EX) < 0) {
- #endif
  	    return -1;
  	}
      }
--- 1030,1036 ----
***************
*** 1023,1033 ****
  
  
    bad_SetLinkCount:
- #if defined(AFS_AIX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_HPUX_ENV)
-     lockf(fdP->fd_fd, F_ULOCK, 0);
- #else
      flock(fdP->fd_fd, LOCK_UN);
- #endif
  
      return code;
  }
--- 1069,1075 ----
***************
*** 1281,1289 ****
  		/* Open this handle */
  		(void)afs_snprintf(path2, sizeof path2, "%s/%s", path1,
  				   dp1->d_name);
! 		linkHandle.fd_fd = afs_open(path2, O_RDONLY, 0666);
  		info.linkCount =
! 		    namei_GetLinkCount(&linkHandle, (Inode) 0, 0);
  	    }
  	    if (judgeFun && !(*judgeFun) (&info, singleVolumeNumber, rock))
  		continue;
--- 1323,1331 ----
  		/* Open this handle */
  		(void)afs_snprintf(path2, sizeof path2, "%s/%s", path1,
  				   dp1->d_name);
! 		linkHandle.fd_fd = afs_open(path2, Testing ? O_RDONLY : O_RDWR, 0666);
  		info.linkCount =
! 		    namei_GetLinkCount2(&linkHandle, (Inode) 0, 1, 1, Testing);
  	    }
  	    if (judgeFun && !(*judgeFun) (&info, singleVolumeNumber, rock))
  		continue;
***************
*** 1334,1341 ****
  				(path3, dp3->d_name, &info, myIH.ih_vid) < 0)
  				continue;
  			    info.linkCount =
! 				namei_GetLinkCount(&linkHandle,
! 						   info.inodeNumber, 0);
  			    if (info.linkCount == 0) {
  #ifdef DELETE_ZLC
  				Log("Found 0 link count file %s/%s, deleting it.\n", path3, dp3->d_name);
--- 1376,1383 ----
  				(path3, dp3->d_name, &info, myIH.ih_vid) < 0)
  				continue;
  			    info.linkCount =
! 				namei_GetLinkCount2(&linkHandle,
! 						   info.inodeNumber, 1, 1, Testing);
  			    if (info.linkCount == 0) {
  #ifdef DELETE_ZLC
  				Log("Found 0 link count file %s/%s, deleting it.\n", path3, dp3->d_name);
***************
*** 1460,1466 ****
  				 * the old RW volume around */
      p = strrchr(vd.name, '.');
      if (p && !strcmp(p, ".readonly")) {
! 	bzero(p, 8);
      }
      if (write(fdw, &vd, sizeof(struct VolumeDiskData)) !=
  	sizeof(struct VolumeDiskData)) {
--- 1502,1508 ----
  				 * the old RW volume around */
      p = strrchr(vd.name, '.');
      if (p && !strcmp(p, ".readonly")) {
! 	memset(p, 0, 9);
      }
      if (write(fdw, &vd, sizeof(struct VolumeDiskData)) !=
  	sizeof(struct VolumeDiskData)) {
***************
*** 1574,1580 ****
       * proceed.
       */
  
!     bzero(&t_ih, sizeof(t_ih));
      t_ih.ih_dev = h->ih_dev;
      t_ih.ih_vid = h->ih_vid;
  
--- 1616,1622 ----
       * proceed.
       */
  
!     memset(&t_ih, 0, sizeof(t_ih));
      t_ih.ih_dev = h->ih_dev;
      t_ih.ih_vid = h->ih_vid;
  
Index: openafs/src/vol/namei_ops.h
diff -c openafs/src/vol/namei_ops.h:1.6.2.1 openafs/src/vol/namei_ops.h:1.6.2.3
*** openafs/src/vol/namei_ops.h:1.6.2.1	Mon Oct 18 03:12:27 2004
--- openafs/src/vol/namei_ops.h	Tue Sep  5 11:01:09 2006
***************
*** 42,47 ****
--- 42,48 ----
  extern int namei_dec(IHandle_t * h, Inode ino, int p1);
  extern int namei_inc(IHandle_t * h, Inode ino, int p1);
  extern int namei_GetLinkCount(FdHandle_t * h, Inode ino, int lockit);
+ extern int namei_SetLinkCount(FdHandle_t * h, Inode ino, int count, int locked);
  extern int namei_ViceREADME(char *partition);
  #include "nfs.h"
  #include "viceinode.h"
Index: openafs/src/vol/ntops.c
diff -c openafs/src/vol/ntops.c:1.7.2.1 openafs/src/vol/ntops.c:1.7.2.2
*** openafs/src/vol/ntops.c:1.7.2.1	Mon Oct 18 03:12:28 2004
--- openafs/src/vol/ntops.c	Tue Sep  5 10:50:57 2006
***************
*** 13,19 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/ntops.c,v 1.7.2.1 2004/10/18 07:12:28 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <stdio.h>
--- 13,19 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/ntops.c,v 1.7.2.2 2006/09/05 14:50:57 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include <stdio.h>
***************
*** 41,46 ****
--- 41,48 ----
  
  #define BASEFILEATTRIBUTE FILE_ATTRIBUTE_NORMAL
  
+ int Testing = 0;
+ 
  static void AddToZLCDeleteList(char dir, char *name);
  
  /* nt_unlink - unlink a case sensitive name.
***************
*** 837,849 ****
   * If lockit is set, lock the file and leave it locked upon a successful
   * return.
   */
! int
! nt_GetLinkCount(FdHandle_t * h, Inode ino, int lockit)
  {
      unsigned short row = 0;
!     int junk;
      int offset, index;
  
      nt_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
  
      if (lockit) {
--- 839,855 ----
   * If lockit is set, lock the file and leave it locked upon a successful
   * return.
   */
! static int
! nt_GetLinkCountInternal(FdHandle_t * h, Inode ino, int lockit, int fixup)
  {
      unsigned short row = 0;
!     DWORD bytesRead, bytesWritten;
      int offset, index;
  
+     /* there's no linktable yet. the salvager will create one later */
+     if (h->fd_fd == INVALID_HANDLE_VALUE && fixup)
+        return 1;
+ 
      nt_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
  
      if (lockit) {
***************
*** 854,863 ****
      if (!SetFilePointer(h->fd_fd, (LONG) offset, NULL, FILE_BEGIN))
  	goto bad_getLinkByte;
  
!     if (!ReadFile(h->fd_fd, (void *)&row, 2, &junk, NULL)) {
  	goto bad_getLinkByte;
      }
! 
      return (int)((row >> index) & NT_TAGMASK);
  
    bad_getLinkByte:
--- 860,884 ----
      if (!SetFilePointer(h->fd_fd, (LONG) offset, NULL, FILE_BEGIN))
  	goto bad_getLinkByte;
  
!     if (!ReadFile(h->fd_fd, (void *)&row, 2, &bytesRead, NULL)) 
  	goto bad_getLinkByte;
+     
+     if (bytesRead == 0 && fixup) { 
+ 	LARGE_INTEGER size;
+ 
+ 	if (!GetFileSizeEx(h->fd_fd, &size) || size.QuadPart >= offset+sizeof(row))
+ 	    goto bad_getLinkByte;
+ 	FDH_TRUNC(h, offset+sizeof(row));
+ 	row = 1 << index;
+       rewrite:
+ 	WriteFile(h->fd_fd, (char *)&row, sizeof(row), &bytesWritten, NULL);
+     }
+ 
+     if (fixup && !((row >> index) & NT_TAGMASK)) {
+         row |= 1<<index;
+         goto rewrite;
      }
!  
      return (int)((row >> index) & NT_TAGMASK);
  
    bad_getLinkByte:
***************
*** 866,872 ****
--- 887,903 ----
      return -1;
  }
  
+ int
+ nt_GetLinkCount(FdHandle_t * h, Inode ino, int lockit)
+ {
+     return nt_GetLinkCountInternal(h, ino, lockit, 0);
+ }
  
+ void
+ nt_SetNonZLC(FdHandle_t * h, Inode ino) 
+ {
+     (void)nt_GetLinkCountInternal(h, ino, 0, 1);
+ }
  
  
  /* nt_SetLinkCount
***************
*** 878,884 ****
  {
      int offset, index;
      unsigned short row;
!     int junk;
      int code = -1;
  
      nt_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
--- 909,915 ----
  {
      int offset, index;
      unsigned short row;
!     DWORD bytesRead, bytesWritten;
      int code = -1;
  
      nt_GetLCOffsetAndIndexFromIno(ino, &offset, &index);
***************
*** 896,911 ****
      }
  
  
!     if (!ReadFile(h->fd_fd, (void *)&row, 2, &junk, NULL)) {
  	errno = nterr_nt2unix(GetLastError(), EBADF);
  	goto bad_SetLinkCount;
      }
!     if (junk == 0)
  	row = 0;
  
!     junk = 7 << index;
      count <<= index;
!     row &= (unsigned short)~junk;
      row |= (unsigned short)count;
  
      if (!SetFilePointer(h->fd_fd, (LONG) offset, NULL, FILE_BEGIN)) {
--- 927,942 ----
      }
  
  
!     if (!ReadFile(h->fd_fd, (void *)&row, 2, &bytesRead, NULL)) {
  	errno = nterr_nt2unix(GetLastError(), EBADF);
  	goto bad_SetLinkCount;
      }
!     if (bytesRead == 0)
  	row = 0;
  
!     bytesRead = 7 << index;
      count <<= index;
!     row &= (unsigned short)~bytesRead;
      row |= (unsigned short)count;
  
      if (!SetFilePointer(h->fd_fd, (LONG) offset, NULL, FILE_BEGIN)) {
***************
*** 913,919 ****
  	goto bad_SetLinkCount;
      }
  
!     if (!WriteFile(h->fd_fd, (void *)&row, 2, &junk, NULL)) {
  	errno = nterr_nt2unix(GetLastError(), EBADF);
  	goto bad_SetLinkCount;
      }
--- 944,950 ----
  	goto bad_SetLinkCount;
      }
  
!     if (!WriteFile(h->fd_fd, (void *)&row, 2, &bytesWritten, NULL)) {
  	errno = nterr_nt2unix(GetLastError(), EBADF);
  	goto bad_SetLinkCount;
      }
Index: openafs/src/vol/ntops.h
diff -c openafs/src/vol/ntops.h:1.3.2.1 openafs/src/vol/ntops.h:1.3.2.2
*** openafs/src/vol/ntops.h:1.3.2.1	Mon Oct 18 03:12:28 2004
--- openafs/src/vol/ntops.h	Tue Sep  5 10:50:57 2006
***************
*** 60,63 ****
--- 60,65 ----
  int nt_HandleToName(char *name, IHandle_t * h);
  char *nt_HandleToVolDir(char *name, IHandle_t * h);
  
+ extern int Testing;
+ 
  #endif /* _NTOPS_H_ */
Index: openafs/src/vol/nuke.c
diff -c openafs/src/vol/nuke.c:1.13.2.2 openafs/src/vol/nuke.c:1.13.2.3
*** openafs/src/vol/nuke.c:1.13.2.2	Mon Oct 18 13:44:06 2004
--- openafs/src/vol/nuke.c	Sun Sep  3 01:38:09 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/nuke.c,v 1.13.2.2 2004/10/18 17:44:06 shadow Exp $");
  
  #include <rx/xdr.h>
  #include <afs/afsint.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/nuke.c,v 1.13.2.3 2006/09/03 05:38:09 shadow Exp $");
  
  #include <rx/xdr.h>
  #include <afs/afsint.h>
***************
*** 72,78 ****
   * Note that ainfo->u.param[0] is always the volume ID, for any vice inode.
   */
  static int
! NukeProc(struct ViceInodeInfo *ainfo, afs_int32 avolid, struct ilist *allInodes)
  {
      struct ilist *ti;
      register afs_int32 i;
--- 72,78 ----
   * Note that ainfo->u.param[0] is always the volume ID, for any vice inode.
   */
  static int
! NukeProc(struct ViceInodeInfo *ainfo, afs_int32 avolid, struct ilist **allInodes)
  {
      struct ilist *ti;
      register afs_int32 i;
***************
*** 85,97 ****
      if (ainfo->u.param[0] != avolid)
  	return 0;		/* don't want this one */
      /* record the info */
!     if (!allInodes || allInodes->freePtr >= MAXATONCE) {
  	ti = (struct ilist *)malloc(sizeof(struct ilist));
  	memset(ti, 0, sizeof(*ti));
! 	ti->next = allInodes;
! 	allInodes = ti;
      } else
! 	ti = allInodes;		/* use the one with space */
      i = ti->freePtr++;		/* find our slot in this mess */
      ti->inode[i] = ainfo->inodeNumber;
      ti->count[i] = ainfo->linkCount;
--- 85,97 ----
      if (ainfo->u.param[0] != avolid)
  	return 0;		/* don't want this one */
      /* record the info */
!     if (!*allInodes || (*allInodes)->freePtr >= MAXATONCE) {
  	ti = (struct ilist *)malloc(sizeof(struct ilist));
  	memset(ti, 0, sizeof(*ti));
! 	ti->next = *allInodes;
! 	*allInodes = ti;
      } else
! 	ti = *allInodes;		/* use the one with space */
      i = ti->freePtr++;		/* find our slot in this mess */
      ti->inode[i] = ainfo->inodeNumber;
      ti->count[i] = ainfo->linkCount;
***************
*** 170,180 ****
  #ifdef AFS_NAMEI_ENV
      code =
  	ListViceInodes(lastDevComp, aname, NULL, NukeProc, avolid, &forceSal,
! 		       0, wpath, allInodes);
  #else
      code =
  	ListViceInodes(lastDevComp, aname, "/tmp/vNukeXX", NukeProc, avolid,
! 		       &forceSal, 0, wpath, allInodes);
      unlink("/tmp/vNukeXX");	/* clean it up now */
  #endif
      if (code == 0) {
--- 170,180 ----
  #ifdef AFS_NAMEI_ENV
      code =
  	ListViceInodes(lastDevComp, aname, NULL, NukeProc, avolid, &forceSal,
! 		       0, wpath, &allInodes);
  #else
      code =
  	ListViceInodes(lastDevComp, aname, "/tmp/vNukeXX", NukeProc, avolid,
! 		       &forceSal, 0, wpath, &allInodes);
      unlink("/tmp/vNukeXX");	/* clean it up now */
  #endif
      if (code == 0) {
Index: openafs/src/vol/purge.c
diff -c openafs/src/vol/purge.c:1.9.2.1 openafs/src/vol/purge.c:1.9.2.2
*** openafs/src/vol/purge.c:1.9.2.1	Wed Aug 25 03:14:19 2004
--- openafs/src/vol/purge.c	Thu Jul 13 14:20:32 2006
***************
*** 17,23 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/purge.c,v 1.9.2.1 2004/08/25 07:14:19 shadow Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
--- 17,23 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/purge.c,v 1.9.2.2 2006/07/13 18:20:32 shadow Exp $");
  
  #include <stdio.h>
  #ifdef AFS_NT40_ENV
***************
*** 58,65 ****
  void PurgeIndex_r(Volume * vp, VnodeClass class);
  void PurgeHeader_r(Volume * vp);
  
  void
! VPurgeVolume_r(Error * ec, Volume * vp)
  {
      struct DiskPartition *tpartp = vp->partition;
      char purgePath[MAXPATHLEN];
--- 58,68 ----
  void PurgeIndex_r(Volume * vp, VnodeClass class);
  void PurgeHeader_r(Volume * vp);
  
+ /* No lock needed. Only the volserver will call this, and only one transaction
+  * can have a given volume (volid/partition pair) in use at a time 
+  */
  void
! VPurgeVolume(Error * ec, Volume * vp)
  {
      struct DiskPartition *tpartp = vp->partition;
      char purgePath[MAXPATHLEN];
***************
*** 81,94 ****
      FSYNC_askfs(V_id(vp), tpartp->name, FSYNC_RESTOREVOLUME, 0);
  }
  
- void
- VPurgeVolume(Error * ec, Volume * vp)
- {
-     VOL_LOCK;
-     VPurgeVolume_r(ec, vp);
-     VOL_UNLOCK;
- }
- 
  #define MAXOBLITATONCE	200
  /* delete a portion of an index, adjusting offset appropriately.  Returns 0 if
     things work and we should be called again, 1 if success full and done, and -1
--- 84,89 ----
Index: openafs/src/vol/vol-salvage.c
diff -c openafs/src/vol/vol-salvage.c:1.41.2.5 openafs/src/vol/vol-salvage.c:1.41.2.12
*** openafs/src/vol/vol-salvage.c:1.41.2.5	Sat Mar 19 15:54:55 2005
--- openafs/src/vol/vol-salvage.c	Tue Sep  5 19:48:50 2006
***************
*** 92,98 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/vol-salvage.c,v 1.41.2.5 2005/03/19 20:54:55 shadow Exp $");
  
  #include <stdlib.h>
  #include <stdio.h>
--- 92,98 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/vol-salvage.c,v 1.41.2.12 2006/09/05 23:48:50 jaltman Exp $");
  
  #include <stdlib.h>
  #include <stdio.h>
***************
*** 227,233 ****
  
  
  int debug;			/* -d flag */
! int Testing = 0;		/* -n flag */
  int ListInodeOption;		/* -i flag */
  int ShowRootFiles;		/* -r flag */
  int RebuildDirs;		/* -sal flag */
--- 227,233 ----
  
  
  int debug;			/* -d flag */
! extern int Testing;		/* -n flag */
  int ListInodeOption;		/* -i flag */
  int ShowRootFiles;		/* -r flag */
  int RebuildDirs;		/* -sal flag */
***************
*** 1849,1855 ****
  	Abort("Can't open link table for volume %u (error = %d)\n",
  	      isp->RWvolumeId, errno);
  
!     if (FDH_TRUNC(fdP, 0) < 0)
  	Abort("Can't truncate link table for volume %u (error = %d)\n",
  	      isp->RWvolumeId, errno);
  
--- 1849,1855 ----
  	Abort("Can't open link table for volume %u (error = %d)\n",
  	      isp->RWvolumeId, errno);
  
!     if (FDH_TRUNC(fdP, sizeof(version) + sizeof(short)) < 0)
  	Abort("Can't truncate link table for volume %u (error = %d)\n",
  	      isp->RWvolumeId, errno);
  
***************
*** 1971,1977 ****
--- 1971,1993 ----
  	if (Testing) {
  	    IH_INIT(VGLinkH, fileSysDevice, -1, -1);
  	} else {
+             int i, j;
+             struct ViceInodeInfo *ip;
  	    CreateLinkTable(isp, ino);
+ 	    fdP = IH_OPEN(VGLinkH);
+             /* Sync fake 1 link counts to the link table, now that it exists */
+             if (fdP) {
+             	for (i = 0; i < nVols; i++) {
+             		ip = allInodes + isp[i].index;
+ 		         for (j = isp[i].nSpecialInodes; j < isp[i].nInodes; j++) {
+ #ifdef AFS_NT40_ENV
+ 			         nt_SetLinkCount(fdP, ip[j].inodeNumber, 1, 1);
+ #else
+ 				 namei_SetLinkCount(fdP, ip[j].inodeNumber, 1, 1);
+ #endif
+ 		    }
+             	}
+ 	    }
  	}
      }
      if (fdP)
***************
*** 2744,2750 ****
      struct VnodeDiskObject vnode;
      struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge];
      Inode oldinode, newinode;
!     int code;
  
      if (dir->copied || Testing)
  	return;
--- 2760,2766 ----
      struct VnodeDiskObject vnode;
      struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge];
      Inode oldinode, newinode;
!     afs_sfsize_t code;
  
      if (dir->copied || Testing)
  	return;
***************
*** 2795,2812 ****
      struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge];
      Inode oldinode, newinode;
      DirHandle newdir;
!     register afs_int32 code;
      afs_int32 parentUnique = 1;
      struct VnodeEssence *vnodeEssence;
  
      if (Testing)
  	return;
      Log("Salvaging directory %u...\n", dir->vnodeNumber);
!     code =
  	IH_IREAD(vnodeInfo[vLarge].handle,
  		 vnodeIndexOffset(vcp, dir->vnodeNumber), (char *)&vnode,
  		 sizeof(vnode));
!     assert(code == sizeof(vnode));
      oldinode = VNDISK_GET_INO(&vnode);
      /* Increment the version number by a whole lot to avoid problems with
       * clients that were promised new version numbers--but the file server
--- 2811,2829 ----
      struct VnodeClassInfo *vcp = &VnodeClassInfo[vLarge];
      Inode oldinode, newinode;
      DirHandle newdir;
!     afs_int32 code;
!     afs_sfsize_t lcode;
      afs_int32 parentUnique = 1;
      struct VnodeEssence *vnodeEssence;
  
      if (Testing)
  	return;
      Log("Salvaging directory %u...\n", dir->vnodeNumber);
!     lcode =
  	IH_IREAD(vnodeInfo[vLarge].handle,
  		 vnodeIndexOffset(vcp, dir->vnodeNumber), (char *)&vnode,
  		 sizeof(vnode));
!     assert(lcode == sizeof(vnode));
      oldinode = VNDISK_GET_INO(&vnode);
      /* Increment the version number by a whole lot to avoid problems with
       * clients that were promised new version numbers--but the file server
***************
*** 2837,2844 ****
      if (code) {
  	/* didn't really build the new directory properly, let's just give up. */
  	code = IH_DEC(dir->ds_linkH, newinode, dir->rwVid);
- 	assert(code == 0);
  	Log("Directory salvage returned code %d, continuing.\n", code);
  	assert(1 == 2);
      }
      Log("Checking the results of the directory salvage...\n");
--- 2854,2863 ----
      if (code) {
  	/* didn't really build the new directory properly, let's just give up. */
  	code = IH_DEC(dir->ds_linkH, newinode, dir->rwVid);
  	Log("Directory salvage returned code %d, continuing.\n", code);
+ 	if (code) {
+ 	    Log("also failed to decrement link count on new inode");
+ 	}
  	assert(1 == 2);
      }
      Log("Checking the results of the directory salvage...\n");
***************
*** 2851,2861 ****
      vnode.cloned = 0;
      VNDISK_SET_INO(&vnode, newinode);
      VNDISK_SET_LEN(&vnode, Length(&newdir));
!     code =
  	IH_IWRITE(vnodeInfo[vLarge].handle,
  		  vnodeIndexOffset(vcp, dir->vnodeNumber), (char *)&vnode,
  		  sizeof(vnode));
!     assert(code == sizeof(vnode));
  #ifdef AFS_NT40_ENV
      nt_sync(fileSysDevice);
  #else
--- 2870,2880 ----
      vnode.cloned = 0;
      VNDISK_SET_INO(&vnode, newinode);
      VNDISK_SET_LEN(&vnode, Length(&newdir));
!     lcode =
  	IH_IWRITE(vnodeInfo[vLarge].handle,
  		  vnodeIndexOffset(vcp, dir->vnodeNumber), (char *)&vnode,
  		  sizeof(vnode));
!     assert(lcode == sizeof(vnode));
  #ifdef AFS_NT40_ENV
      nt_sync(fileSysDevice);
  #else
***************
*** 3095,3101 ****
      struct VnodeClassInfo *vcp = &VnodeClassInfo[class];
      char buf[SIZEOF_LARGEDISKVNODE];
      struct VnodeDiskObject *vnode = (struct VnodeDiskObject *)buf;
!     int size;
      StreamHandle_t *file;
      int vnodeIndex;
      int nVnodes;
--- 3114,3120 ----
      struct VnodeClassInfo *vcp = &VnodeClassInfo[class];
      char buf[SIZEOF_LARGEDISKVNODE];
      struct VnodeDiskObject *vnode = (struct VnodeDiskObject *)buf;
!     afs_sfsize_t size;
      StreamHandle_t *file;
      int vnodeIndex;
      int nVnodes;
***************
*** 3302,3308 ****
      struct VnodeEssence *vep;
      afs_int32 v, pv;
      IHandle_t *h;
!     int nBytes;
      ViceFid pa;
      VnodeId LFVnode, ThisVnode;
      Unique LFUnique, ThisUnique;
--- 3321,3327 ----
      struct VnodeEssence *vep;
      afs_int32 v, pv;
      IHandle_t *h;
!     afs_sfsize_t nBytes;
      ViceFid pa;
      VnodeId LFVnode, ThisVnode;
      Unique LFUnique, ThisUnique;
***************
*** 3575,3581 ****
  ClearROInUseBit(struct VolumeSummary *summary)
  {
      IHandle_t *h = summary->volumeInfoHandle;
!     int nBytes;
  
      VolumeDiskData volHeader;
  
--- 3594,3600 ----
  ClearROInUseBit(struct VolumeSummary *summary)
  {
      IHandle_t *h = summary->volumeInfoHandle;
!     afs_sfsize_t nBytes;
  
      VolumeDiskData volHeader;
  
***************
*** 3587,3593 ****
      volHeader.inService = 1;
      volHeader.dontSalvage = DONT_SALVAGE;
      if (!Testing) {
! 	nBytes = IH_IREAD(h, 0, (char *)&volHeader, sizeof(volHeader));
  	assert(nBytes == sizeof(volHeader));
      }
  }
--- 3606,3612 ----
      volHeader.inService = 1;
      volHeader.dontSalvage = DONT_SALVAGE;
      if (!Testing) {
! 	nBytes = IH_IWRITE(h, 0, (char *)&volHeader, sizeof(volHeader));
  	assert(nBytes == sizeof(volHeader));
      }
  }
Index: openafs/src/vol/volume.c
diff -c openafs/src/vol/volume.c:1.35.2.6 openafs/src/vol/volume.c:1.35.2.8
*** openafs/src/vol/volume.c:1.35.2.6	Mon May 30 06:50:04 2005
--- openafs/src/vol/volume.c	Thu Aug 24 16:21:49 2006
***************
*** 20,26 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/volume.c,v 1.35.2.6 2005/05/30 10:50:04 jaltman Exp $");
  
  #include <rx/xdr.h>
  #include <afs/afsint.h>
--- 20,26 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/volume.c,v 1.35.2.8 2006/08/24 20:21:49 shadow Exp $");
  
  #include <rx/xdr.h>
  #include <afs/afsint.h>
***************
*** 185,191 ****
  				 * defined when not linked with vice, XXXX */
  ProgramType programType;	/* The type of program using the package */
  
- 
  #define VOLUME_BITMAP_GROWSIZE	16	/* bytes, => 128vnodes */
  					/* Must be a multiple of 4 (1 word) !! */
  #define VOLUME_HASH_TABLE_SIZE 128	/* Must be a power of 2!! */
--- 185,190 ----
***************
*** 272,277 ****
--- 271,277 ----
  #endif /* AFS_PTHREAD_ENV */
      Lock_Init(&vol_listLock);
      Lock_Init(&FSYNC_handler_lock);
+ 
      srandom(time(0));		/* For VGetVolumeInfo */
      gettimeofday(&tv, &tz);
      TimeZoneCorrection = tz.tz_minuteswest * 60;
Index: openafs/src/volser/NTMakefile
diff -c openafs/src/volser/NTMakefile:1.8.2.1 openafs/src/volser/NTMakefile:1.8.2.2
*** openafs/src/volser/NTMakefile:1.8.2.1	Fri Mar 11 02:03:52 2005
--- openafs/src/volser/NTMakefile	Mon Jul 31 17:51:22 2006
***************
*** 136,144 ****
  $(INCFILES):$$(@F)
  	 $(COPY)  $** $(INCFILEDIR)\.
  
! volint.h volint.cs.c volint.ss.c volint.xdr.c: volint.xg
! 	$(RXGEN) -x $**
  
  
  ############################################################################
  # Definitions for generating files via COMPILE_ET
--- 136,152 ----
  $(INCFILES):$$(@F)
  	 $(COPY)  $** $(INCFILEDIR)\.
  
! volint.cs.c: volint.xg volint.h
! 	$(RXGEN) -x -C -o $@ volint.xg
  
+ volint.ss.c: volint.xg volint.h
+ 	$(RXGEN) -x -S -o $@ volint.xg
+ 
+ volint.xdr.c: volint.xg volint.h
+ 	$(RXGEN) -x -c -o $@ volint.xg
+ 
+ volint.h: volint.xg
+ 	$(RXGEN) -x -h -o $@ volint.xg
  
  ############################################################################
  # Definitions for generating files via COMPILE_ET
Index: openafs/src/volser/dumpstuff.c
diff -c openafs/src/volser/dumpstuff.c:1.25 openafs/src/volser/dumpstuff.c:1.25.2.5
*** openafs/src/volser/dumpstuff.c:1.25	Sat Nov 22 23:53:44 2003
--- openafs/src/volser/dumpstuff.c	Fri Oct 13 08:46:03 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/dumpstuff.c,v 1.25 2003/11/23 04:53:44 jaltman Exp $");
  
  #include <sys/types.h>
  #include <ctype.h>
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/dumpstuff.c,v 1.25.2.5 2006/10/13 12:46:03 shadow Exp $");
  
  #include <sys/types.h>
  #include <ctype.h>
***************
*** 211,219 ****
  {
      register b1, b0;
      b1 = iod_getc(iodp);
      b0 = iod_getc(iodp);
      *sp = (b1 << 8) | b0;
!     return b0 != EOF;
  }
  
  static int
--- 211,223 ----
  {
      register b1, b0;
      b1 = iod_getc(iodp);
+     if (b1 == EOF)
+ 	return 0;
      b0 = iod_getc(iodp);
+     if (b0 == EOF)
+ 	return 0;
      *sp = (b1 << 8) | b0;
!     return 1;
  }
  
  static int
***************
*** 221,244 ****
  {
      afs_uint32 register b3, b2, b1, b0;
      b3 = iod_getc(iodp);
      b2 = iod_getc(iodp);
      b1 = iod_getc(iodp);
      b0 = iod_getc(iodp);
      *lp = (((((b3 << 8) | b2) << 8) | b1) << 8) | b0;
!     return b0 != EOF;
  }
  
  static void
  ReadString(register struct iod *iodp, register char *to, register int maxa)
  {
      register int c;
      while (maxa--) {
! 	if ((*to++ = iod_getc(iodp)) == 0)
  	    break;
      }
      if (to[-1]) {
  	while ((c = iod_getc(iodp)) && c != EOF);
! 	to[-1] = 0;
      }
  }
  
--- 225,262 ----
  {
      afs_uint32 register b3, b2, b1, b0;
      b3 = iod_getc(iodp);
+     if (b3 == EOF)
+ 	return 0;
      b2 = iod_getc(iodp);
+     if (b2 == EOF)
+ 	return 0;
      b1 = iod_getc(iodp);
+     if (b1 == EOF)
+ 	return 0;
      b0 = iod_getc(iodp);
+     if (b0 == EOF)
+ 	return 0;
      *lp = (((((b3 << 8) | b2) << 8) | b1) << 8) | b0;
!     return 1;
  }
  
  static void
  ReadString(register struct iod *iodp, register char *to, register int maxa)
  {
      register int c;
+     int first = 1;
+ 
+     *to = '\0';
+     if (maxa == 0)
+ 	return;
+ 
      while (maxa--) {
! 	if ((*to++ = c = iod_getc(iodp)) == 0 || c == EOF)
  	    break;
      }
      if (to[-1]) {
  	while ((c = iod_getc(iodp)) && c != EOF);
! 	to[-1] = '\0';
      }
  }
  
***************
*** 501,509 ****
  static int
  DumpFile(struct iod *iodp, int vnode, FdHandle_t * handleP)
  {
!     int code = 0, lcode = 0, error = 0;
      afs_int32 pad = 0, offset;
      afs_sfsize_t n, nbytes, howMany, howBig;
      byte *p;
  #ifndef AFS_NT40_ENV
      struct afs_stat status;
--- 519,528 ----
  static int
  DumpFile(struct iod *iodp, int vnode, FdHandle_t * handleP)
  {
!     int code = 0, error = 0;
      afs_int32 pad = 0, offset;
      afs_sfsize_t n, nbytes, howMany, howBig;
+     afs_foff_t lcode = 0;
      byte *p;
  #ifndef AFS_NT40_ENV
      struct afs_stat status;
***************
*** 511,517 ****
--- 530,541 ----
      afs_sfsize_t size;
  #ifdef	AFS_AIX_ENV
  #include <sys/statfs.h>
+ #if defined(AFS_AIX52_ENV) && defined(AFS_LARGEFILE_ENV)
+     struct statfs64 tstatfs;
+ #else /* !AFS_AIX52_ENV || !AFS_LARGEFILE_ENV */
      struct statfs tstatfs;
+ #endif /* !AFS_AIX52_ENV || !AFS_LARGEFILE_ENV */
+     int statfs_code;
  #endif
  
  #ifdef AFS_NT40_ENV
***************
*** 526,533 ****
      /* Unfortunately in AIX valuable fields such as st_blksize are 
       * gone from the stat structure.
       */
!     fstatfs(handleP->fd_fd, &tstatfs);
!     howMany = tstatfs.f_bsize;
  #else
      howMany = status.st_blksize;
  #endif /* AFS_AIX_ENV */
--- 550,565 ----
      /* Unfortunately in AIX valuable fields such as st_blksize are 
       * gone from the stat structure.
       */
! #if defined(AFS_AIX52_ENV) && defined(AFS_LARGEFILE_ENV)
!     statfs_code = fstatfs64(handleP->fd_fd, &tstatfs);
! #else /* !AFS_AIX52_ENV || !AFS_LARGEFILE_ENV */
!     statfs_code = fstatfs(handleP->fd_fd, &tstatfs);
! #endif /* !AFS_AIX52_ENV || !AFS_LARGEFILE_ENV */
!     if (statfs_code != 0) {
!         Log("DumpFile: fstatfs returned error code %d on descriptor %d\n", errno, handleP->fd_fd);
! 	return VOLSERDUMPERROR;
!     }
!     howMany = (afs_sfsize_t) tstatfs.f_bsize;
  #else
      howMany = status.st_blksize;
  #endif /* AFS_AIX_ENV */
***************
*** 552,560 ****
  	return VOLSERDUMPERROR;
      }
  
!     p = (unsigned char *)malloc(howMany);
      if (!p) {
! 	Log("1 Volser: DumpFile: no memory");
  	return VOLSERDUMPERROR;
      }
  
--- 584,592 ----
  	return VOLSERDUMPERROR;
      }
  
!     p = (unsigned char *)malloc((size_t)howMany);
      if (!p) {
! 	Log("1 Volser: DumpFile: not enough memory to allocate %u bytes\n", howMany);
  	return VOLSERDUMPERROR;
      }
  
***************
*** 563,569 ****
  	    howMany = nbytes;
  
  	/* Read the data - unless we know we can't */
! 	n = (lcode ? 0 : FDH_READ(handleP, p, howMany));
  
  	/* If read any good data and we null padded previously, log the
  	 * amount that we had null padded.
--- 595,601 ----
  	    howMany = nbytes;
  
  	/* Read the data - unless we know we can't */
! 	n = (lcode ? 0 : FDH_READ(handleP, p, (size_t)howMany));
  
  	/* If read any good data and we null padded previously, log the
  	 * amount that we had null padded.
***************
*** 597,603 ****
  	    /* Now seek over the data we could not get. An error here means we
  	     * can't do the next read.
  	     */
! 	    lcode = FDH_SEEK(handleP, ((size - nbytes) + howMany), SEEK_SET);
  	    if (lcode != ((size - nbytes) + howMany)) {
  		if (lcode < 0) {
  		    Log("1 Volser: DumpFile: Error %d seeking in inode %s for vnode %d\n", errno, PrintInode(NULL, handleP->fd_ih->ih_ino), vnode);
--- 629,635 ----
  	    /* Now seek over the data we could not get. An error here means we
  	     * can't do the next read.
  	     */
! 	    lcode = FDH_SEEK(handleP, (size_t)((size - nbytes) + howMany), SEEK_SET);
  	    if (lcode != ((size - nbytes) + howMany)) {
  		if (lcode < 0) {
  		    Log("1 Volser: DumpFile: Error %d seeking in inode %s for vnode %d\n", errno, PrintInode(NULL, handleP->fd_ih->ih_ino), vnode);
***************
*** 611,617 ****
  	}
  
  	/* Now write the data out */
! 	if (iod_Write(iodp, (char *)p, howMany) != howMany)
  	    error = VOLSERDUMPERROR;
  #ifndef AFS_PTHREAD_ENV
  	IOMGR_Poll();
--- 643,649 ----
  	}
  
  	/* Now write the data out */
! 	if (iod_Write(iodp, (char *)p, (size_t)howMany) != howMany)
  	    error = VOLSERDUMPERROR;
  #ifndef AFS_PTHREAD_ENV
  	IOMGR_Poll();
***************
*** 955,962 ****
  	     vcp->diskSize ? 0 : size - vcp->diskSize) >> vcp->logSize;
  	if (nVnodes > 0) {
  	    Buf = (afs_int32 *) malloc(nVnodes * sizeof(afs_int32));
! 	    if (Buf == NULL)
  		return 1;
  	    memset((char *)Buf, 0, nVnodes * sizeof(afs_int32));
  	    STREAM_SEEK(afile, offset = vcp->diskSize, 0);
  	    while (1) {
--- 987,997 ----
  	     vcp->diskSize ? 0 : size - vcp->diskSize) >> vcp->logSize;
  	if (nVnodes > 0) {
  	    Buf = (afs_int32 *) malloc(nVnodes * sizeof(afs_int32));
! 	    if (Buf == NULL) {
! 		STREAM_CLOSE(afile);
! 		FDH_CLOSE(fdP);
  		return 1;
+ 	    }
  	    memset((char *)Buf, 0, nVnodes * sizeof(afs_int32));
  	    STREAM_SEEK(afile, offset = vcp->diskSize, 0);
  	    while (1) {
***************
*** 991,998 ****
      register Volume *vp;
      struct iod iod;
      register struct iod *iodp = &iod;
!     afs_int32 *b1 = 0, *b2 = 0;
!     int s1 = 0, s2 = 0, delo = 0, tdelo;
      int tag;
  
      iod_Init(iodp, call);
--- 1026,1033 ----
      register Volume *vp;
      struct iod iod;
      register struct iod *iodp = &iod;
!     afs_int32 *b1 = NULL, *b2 = NULL;
!     int s1 = 0, s2 = 0, delo = incremental, tdelo;
      int tag;
  
      iod_Init(iodp, call);
***************
*** 1009,1015 ****
      if (ReadVolumeHeader(iodp, &vol) == VOLSERREAD_DUMPERROR)
  	return VOLSERREAD_DUMPERROR;
  
!     delo = ProcessIndex(vp, vLarge, &b1, &s1, 0);
      if (!delo)
  	delo = ProcessIndex(vp, vSmall, &b2, &s2, 0);
      if (delo) {
--- 1044,1051 ----
      if (ReadVolumeHeader(iodp, &vol) == VOLSERREAD_DUMPERROR)
  	return VOLSERREAD_DUMPERROR;
  
!     if (!delo)
! 	delo = ProcessIndex(vp, vLarge, &b1, &s1, 0);
      if (!delo)
  	delo = ProcessIndex(vp, vSmall, &b2, &s2, 0);
      if (delo) {
***************
*** 1017,1023 ****
  	    free((char *)b1);
  	if (b2)
  	    free((char *)b2);
! 	b1 = b2 = 0;
      }
  
      strncpy(vol.name, cookie->name, VOLSER_OLDMAXVOLNAME);
--- 1053,1060 ----
  	    free((char *)b1);
  	if (b2)
  	    free((char *)b2);
! 	b1 = b2 = NULL;
! 	s1 = s2 = 0;
      }
  
      strncpy(vol.name, cookie->name, VOLSER_OLDMAXVOLNAME);
***************
*** 1035,1045 ****
  	tag = iod_getc(iodp);
  	if (tag != D_VOLUMEHEADER)
  	    break;
  	if (ReadVolumeHeader(iodp, &vol) == VOLSERREAD_DUMPERROR) {
  	    error = VOLSERREAD_DUMPERROR;
  	    goto out;
  	}
- 	tdelo = -1;
      }
      if (tag != D_DUMPEND || !ReadInt32(iodp, &endMagic)
  	|| endMagic != DUMPENDMAGIC) {
--- 1072,1082 ----
  	tag = iod_getc(iodp);
  	if (tag != D_VOLUMEHEADER)
  	    break;
+ 
  	if (ReadVolumeHeader(iodp, &vol) == VOLSERREAD_DUMPERROR) {
  	    error = VOLSERREAD_DUMPERROR;
  	    goto out;
  	}
      }
      if (tag != D_DUMPEND || !ReadInt32(iodp, &endMagic)
  	|| endMagic != DUMPENDMAGIC) {
***************
*** 1056,1063 ****
      }
  
      if (!delo) {
! 	ProcessIndex(vp, vLarge, &b1, &s1, 1);
! 	ProcessIndex(vp, vSmall, &b2, &s2, 1);
      }
  
    clean:
--- 1093,1105 ----
      }
  
      if (!delo) {
! 	delo = ProcessIndex(vp, vLarge, &b1, &s1, 1);
! 	if (!delo)
! 	    ProcessIndex(vp, vSmall, &b2, &s2, 1);
! 	if (delo) {
! 	    error = VOLSERREAD_DUMPERROR;
! 	    goto clean;
! 	}
      }
  
    clean:
***************
*** 1104,1110 ****
  	if (!ReadInt32(iodp, (afs_uint32 *) & vnodeNumber))
  	    break;
  
! 	ReadInt32(iodp, &vnode->uniquifier);
  	while ((tag = iod_getc(iodp)) > D_MAX && tag != EOF) {
  	    haveStuff = 1;
  	    switch (tag) {
--- 1146,1153 ----
  	if (!ReadInt32(iodp, (afs_uint32 *) & vnodeNumber))
  	    break;
  
! 	if (!ReadInt32(iodp, &vnode->uniquifier))
! 	    return VOLSERREAD_DUMPERROR;
  	while ((tag = iod_getc(iodp)) > D_MAX && tag != EOF) {
  	    haveStuff = 1;
  	    switch (tag) {
***************
*** 1114,1149 ****
  	    case 'l':
  		{
  		    unsigned short tlc;
! 		    ReadShort(iodp, &tlc);
  		    vnode->linkCount = (signed int)tlc;
  		}
  		break;
  	    case 'v':
! 		ReadInt32(iodp, &vnode->dataVersion);
  		break;
  	    case 'm':
! 		ReadInt32(iodp, &vnode->unixModifyTime);
  		break;
  	    case 's':
! 		ReadInt32(iodp, &vnode->serverModifyTime);
  		break;
  	    case 'a':
! 		ReadInt32(iodp, &vnode->author);
  		break;
  	    case 'o':
! 		ReadInt32(iodp, &vnode->owner);
  		break;
  	    case 'g':
! 		ReadInt32(iodp, (afs_uint32 *) & vnode->group);
  		break;
  	    case 'b':{
  		    unsigned short modeBits;
! 		    ReadShort(iodp, &modeBits);
  		    vnode->modeBits = (unsigned int)modeBits;
  		    break;
  		}
  	    case 'p':
! 		ReadInt32(iodp, &vnode->parent);
  		break;
  	    case 'A':
  		ReadByteString(iodp, (byte *) VVnodeDiskACL(vnode),
--- 1157,1201 ----
  	    case 'l':
  		{
  		    unsigned short tlc;
! 		    if (!ReadShort(iodp, &tlc))
! 			return VOLSERREAD_DUMPERROR;
  		    vnode->linkCount = (signed int)tlc;
  		}
  		break;
  	    case 'v':
! 		if (!ReadInt32(iodp, &vnode->dataVersion))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 'm':
! 		if (!ReadInt32(iodp, &vnode->unixModifyTime))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 's':
! 		if (!ReadInt32(iodp, &vnode->serverModifyTime))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 'a':
! 		if (!ReadInt32(iodp, &vnode->author))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 'o':
! 		if (!ReadInt32(iodp, &vnode->owner))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 'g':
! 		if (!ReadInt32(iodp, (afs_uint32 *) & vnode->group))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 'b':{
  		    unsigned short modeBits;
! 		    if (!ReadShort(iodp, &modeBits))
! 			return VOLSERREAD_DUMPERROR;
  		    vnode->modeBits = (unsigned int)modeBits;
  		    break;
  		}
  	    case 'p':
! 		if (!ReadInt32(iodp, &vnode->parent))
! 		    return VOLSERREAD_DUMPERROR;
  		break;
  	    case 'A':
  		ReadByteString(iodp, (byte *) VVnodeDiskACL(vnode),
***************
*** 1243,1249 ****
      }
      iod_ungetc(iodp, tag);
  
- 
      return 0;
  }
  
--- 1295,1300 ----
***************
*** 1257,1262 ****
--- 1308,1314 ----
  		 Error * status)
  {
      afs_int32 code;
+     afs_sfsize_t lcode;
      afs_fsize_t filesize;
      afs_fsize_t written = 0;
      register afs_uint32 size = 8192;
***************
*** 1302,1312 ****
  	    *status = 3;
  	    break;
  	}
! 	code = FDH_WRITE(handleP, p, size);
! 	if (code > 0)
! 	    written += code;
! 	if (code != size) {
! 	    Log("1 Volser: WriteFile: Error creating file in volume; restore aborted\n");
  	    *status = 4;
  	    break;
  	}
--- 1354,1364 ----
  	    *status = 3;
  	    break;
  	}
! 	lcode = FDH_WRITE(handleP, p, size);
! 	if (lcode > 0)
! 	    written += lcode;
! 	if (lcode != size) {
! 	    Log("1 Volser: WriteFile: Error writing (%d,%u) bytes to vnode %d; restore aborted\n", (int)(lcode>>32), (int)(lcode & 0xffffffff), vn);
  	    *status = 4;
  	    break;
  	}
Index: openafs/src/volser/volmain.c
diff -c openafs/src/volser/volmain.c:1.18.2.4 openafs/src/volser/volmain.c:1.18.2.8
*** openafs/src/volser/volmain.c:1.18.2.4	Tue Feb 21 23:09:32 2006
--- openafs/src/volser/volmain.c	Sun Sep  3 01:51:42 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/volmain.c,v 1.18.2.4 2006/02/22 04:09:32 jaltman 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.18.2.8 2006/09/03 05:51:42 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
***************
*** 73,78 ****
--- 73,79 ----
  #define VolserVersion "2.0"
  #define N_SECURITY_OBJECTS 3
  
+ extern struct Lock localLock;
  extern struct volser_trans *TransList();
  #ifndef AFS_PTHREAD_ENV
  extern int (*vol_PollProc) ();
***************
*** 94,100 ****
  int lwps = 9;
  int udpBufSize = 0;		/* UDP buffer size for receive */
  
! int Testing = 0;		/* for ListViceInodes */
  
  #define VS_EXIT(code)  {                                          \
                            osi_audit(VS_ExitEvent, code, AUD_END); \
--- 95,104 ----
  int lwps = 9;
  int udpBufSize = 0;		/* UDP buffer size for receive */
  
! int rxBind = 0;
! 
! #define ADDRSPERSITE 16         /* Same global is in rx/rx_user.c */
! afs_uint32 SHostAddrs[ADDRSPERSITE];
  
  #define VS_EXIT(code)  {                                          \
                            osi_audit(VS_ExitEvent, code, AUD_END); \
***************
*** 244,249 ****
--- 248,254 ----
      int rxJumbograms = 1;	/* default is to send and receive jumbograms. */
      int rxMaxMTU = -1;
      int bufSize = 0;		/* temp variable to read in udp socket buf size */
+     afs_uint32 host = ntohl(INADDR_ANY);
  
  #ifdef	AFS_AIX32_ENV
      /*
***************
*** 288,293 ****
--- 293,300 ----
  	    DoLogging = 1;
  	} else if (strcmp(argv[code], "-help") == 0) {
  	    goto usage;
+ 	} else if (strcmp(argv[code], "-rxbind") == 0) {
+ 	    rxBind = 1;
  	} else if (strcmp(argv[code], "-p") == 0) {
  	    lwps = atoi(argv[++code]);
  	    if (lwps > MAXLWP) {
***************
*** 379,385 ****
  #ifndef AFS_NT40_ENV
  	    printf("Usage: volserver [-log] [-p <number of processes>] "
  		   "[-auditlog <log path>] "
! 		   "[-nojumbo] [-rxmaxmtu <bytes>] "
  		   "[-udpsize <size of socket buffer in bytes>] "
  		   "[-syslog[=FACILITY]] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
--- 386,392 ----
  #ifndef AFS_NT40_ENV
  	    printf("Usage: volserver [-log] [-p <number of processes>] "
  		   "[-auditlog <log path>] "
! 		   "[-nojumbo] [-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-udpsize <size of socket buffer in bytes>] "
  		   "[-syslog[=FACILITY]] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
***************
*** 387,393 ****
  #else
  	    printf("Usage: volserver [-log] [-p <number of processes>] "
  		   "[-auditlog <log path>] "
! 		   "[-nojumbo] [-rxmaxmtu <bytes>] "
  		   "[-udpsize <size of socket buffer in bytes>] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
--- 394,400 ----
  #else
  	    printf("Usage: volserver [-log] [-p <number of processes>] "
  		   "[-auditlog <log path>] "
! 		   "[-nojumbo] [-rxmaxmtu <bytes>] [-rxbind] "
  		   "[-udpsize <size of socket buffer in bytes>] "
  		   "[-enable_peer_stats] [-enable_process_stats] "
  		   "[-help]\n");
***************
*** 416,421 ****
--- 423,430 ----
      }
  #endif
      VInitVolumePackage(volumeUtility, 0, 0, CONNECT_FS, 0);
+     /* For nuke() */
+     Lock_Init(&localLock);
      DInit(40);
  #ifndef AFS_PTHREAD_ENV
      vol_PollProc = IOMGR_Poll;	/* tell vol pkg to poll io system periodically */
***************
*** 426,432 ****
      rx_nPackets = rxpackets;	/* set the max number of packets */
      if (udpBufSize)
  	rx_SetUdpBufSize(udpBufSize);	/* set the UDP buffer size for receive */
!     code = rx_Init((int)htons(AFSCONF_VOLUMEPORT));
      if (code) {
  	fprintf(stderr, "rx init failed on socket AFSCONF_VOLUMEPORT %u\n",
  		AFSCONF_VOLUMEPORT);
--- 435,460 ----
      rx_nPackets = rxpackets;	/* set the max number of packets */
      if (udpBufSize)
  	rx_SetUdpBufSize(udpBufSize);	/* set the UDP buffer size for receive */
!     if (rxBind) {
! 	afs_int32 ccode;
! #ifndef AFS_NT40_ENV
!         if (AFSDIR_SERVER_NETRESTRICT_FILEPATH || 
!             AFSDIR_SERVER_NETINFO_FILEPATH) {
!             char reason[1024];
!             ccode = parseNetFiles(SHostAddrs, NULL, NULL,
!                                            ADDRSPERSITE, reason,
!                                            AFSDIR_SERVER_NETINFO_FILEPATH,
!                                            AFSDIR_SERVER_NETRESTRICT_FILEPATH);
!         } else 
! #endif	
! 	{
!             ccode = rx_getAllAddr(SHostAddrs, ADDRSPERSITE);
!         }
!         if (ccode == 1) 
!             host = SHostAddrs[0];
!     }
! 
!     code = rx_InitHost(host, (int)htons(AFSCONF_VOLUMEPORT));
      if (code) {
  	fprintf(stderr, "rx init failed on socket AFSCONF_VOLUMEPORT %u\n",
  		AFSCONF_VOLUMEPORT);
***************
*** 478,484 ****
      if (securityObjects[0] == (struct rx_securityClass *)0)
  	Abort("rxnull_NewServerSecurityObject");
      service =
! 	rx_NewService(0, VOLSERVICE_ID, "VOLSER", securityObjects, 3,
  		      AFSVolExecuteRequest);
      if (service == (struct rx_service *)0)
  	Abort("rx_NewService");
--- 506,512 ----
      if (securityObjects[0] == (struct rx_securityClass *)0)
  	Abort("rxnull_NewServerSecurityObject");
      service =
! 	rx_NewServiceHost(host, 0, VOLSERVICE_ID, "VOLSER", securityObjects, 3,
  		      AFSVolExecuteRequest);
      if (service == (struct rx_service *)0)
  	Abort("rx_NewService");
Index: openafs/src/volser/vos.c
diff -c openafs/src/volser/vos.c:1.40.2.13 openafs/src/volser/vos.c:1.40.2.15
*** openafs/src/volser/vos.c:1.40.2.13	Thu Dec 15 23:26:40 2005
--- openafs/src/volser/vos.c	Mon Jul 31 11:24:09 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vos.c,v 1.40.2.13 2005/12/16 04:26:40 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vos.c,v 1.40.2.15 2006/07/31 15:24:09 shadow Exp $");
  
  #include <sys/types.h>
  #ifdef AFS_NT40_ENV
***************
*** 2174,2180 ****
      if (code) {
  	fprintf(STDERR, "vos:cannot access volume %lu\n",
  		(unsigned long)volid);
- 	free(p);
  	exit(1);
      }
      if (TESTM)
--- 2174,2179 ----
***************
*** 2327,2333 ****
      if (code) {
  	fprintf(STDERR, "vos:cannot access volume %lu\n",
  		(unsigned long)volid);
- 	free(p);
  	exit(1);
      }
  
--- 2326,2331 ----
***************
*** 5574,5580 ****
  	code = ktime_DateToInt32(as->parms[4].items->data, &fromdate);
  	if (code) {
  	    fprintf(STDERR, "vos: failed to parse date '%s' (error=%d))\n",
! 		    as->parms[1].items->data, code);
  	    return code;
  	}
      }
--- 5572,5578 ----
  	code = ktime_DateToInt32(as->parms[4].items->data, &fromdate);
  	if (code) {
  	    fprintf(STDERR, "vos: failed to parse date '%s' (error=%d))\n",
! 		    as->parms[4].items->data, code);
  	    return code;
  	}
      }
Index: openafs/src/volser/vsutils.c
diff -c openafs/src/volser/vsutils.c:1.16.2.2 openafs/src/volser/vsutils.c:1.16.2.3
*** openafs/src/volser/vsutils.c:1.16.2.2	Tue Dec  7 11:37:09 2004
--- openafs/src/volser/vsutils.c	Mon Jul 31 13:07:52 2006
***************
*** 11,17 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vsutils.c,v 1.16.2.2 2004/12/07 16:37:09 shadow Exp $");
  
  #include <afs/stds.h>
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vsutils.c,v 1.16.2.3 2006/07/31 17:07:52 shadow Exp $");
  
  #include <afs/stds.h>
  #ifdef AFS_NT40_ENV
***************
*** 120,129 ****
  	code = nvlentry_to_ovlentry(entryp, &oentry);
  	if (code)
  	    return code;
! 	code = ubik_Call(VL_CreateEntry, cstruct, 0, &oentry);
  	return code;
      }
!     code = ubik_Call(VL_CreateEntryN, cstruct, 0, entryp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
  	    newvlserver = 1;	/* Doesn't support new interface */
--- 120,129 ----
  	code = nvlentry_to_ovlentry(entryp, &oentry);
  	if (code)
  	    return code;
! 	code = ubik_VL_CreateEntry(cstruct, 0, &oentry);
  	return code;
      }
!     code = ubik_VL_CreateEntryN(cstruct, 0, entryp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
  	    newvlserver = 1;	/* Doesn't support new interface */
***************
*** 145,156 ****
      if (newvlserver == 1) {
        tryold:
  	code =
! 	    ubik_Call(VL_GetEntryByID, cstruct, 0, volid, voltype, &oentry);
  	if (!code)
  	    ovlentry_to_nvlentry(&oentry, entryp);
  	return code;
      }
!     code = ubik_Call(VL_GetEntryByIDN, cstruct, 0, volid, voltype, entryp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
  	    newvlserver = 1;	/* Doesn't support new interface */
--- 145,156 ----
      if (newvlserver == 1) {
        tryold:
  	code =
! 	    ubik_VL_GetEntryByID(cstruct, 0, volid, voltype, &oentry);
  	if (!code)
  	    ovlentry_to_nvlentry(&oentry, entryp);
  	return code;
      }
!     code = ubik_VL_GetEntryByIDN(cstruct, 0, volid, voltype, entryp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
  	    newvlserver = 1;	/* Doesn't support new interface */
***************
*** 171,182 ****
  
      if (newvlserver == 1) {
        tryold:
! 	code = ubik_Call(VL_GetEntryByNameO, cstruct, 0, namep, &oentry);
  	if (!code)
  	    ovlentry_to_nvlentry(&oentry, entryp);
  	return code;
      }
!     code = ubik_Call(VL_GetEntryByNameN, cstruct, 0, namep, entryp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
  	    newvlserver = 1;	/* Doesn't support new interface */
--- 171,182 ----
  
      if (newvlserver == 1) {
        tryold:
! 	code = ubik_VL_GetEntryByNameO(cstruct, 0, namep, &oentry);
  	if (!code)
  	    ovlentry_to_nvlentry(&oentry, entryp);
  	return code;
      }
!     code = ubik_VL_GetEntryByNameN(cstruct, 0, namep, entryp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
  	    newvlserver = 1;	/* Doesn't support new interface */
***************
*** 201,212 ****
  	if (code)
  	    return code;
  	code =
! 	    ubik_Call(VL_ReplaceEntry, cstruct, 0, volid, voltype, &oentry,
  		      releasetype);
  	return code;
      }
      code =
! 	ubik_Call(VL_ReplaceEntryN, cstruct, 0, volid, voltype, entryp,
  		  releasetype);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
--- 201,212 ----
  	if (code)
  	    return code;
  	code =
! 	    ubik_VL_ReplaceEntry(cstruct, 0, volid, voltype, &oentry,
  		      releasetype);
  	return code;
      }
      code =
! 	ubik_VL_ReplaceEntryN(cstruct, 0, volid, voltype, entryp,
  		  releasetype);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
***************
*** 233,239 ****
        tryold:
  	memset(&arrayEntries, 0, sizeof(arrayEntries));	/*initialize to hint the stub  to alloc space */
  	code =
! 	    ubik_Call(VL_ListAttributes, cstruct, 0, attrp, entriesp,
  		      &arrayEntries);
  	if (!code) {
  	    blkentriesp->nbulkentries_val =
--- 233,239 ----
        tryold:
  	memset(&arrayEntries, 0, sizeof(arrayEntries));	/*initialize to hint the stub  to alloc space */
  	code =
! 	    ubik_VL_ListAttributes(cstruct, 0, attrp, entriesp,
  		      &arrayEntries);
  	if (!code) {
  	    blkentriesp->nbulkentries_val =
***************
*** 248,254 ****
  	return code;
      }
      code =
! 	ubik_Call(VL_ListAttributesN, cstruct, 0, attrp, entriesp,
  		  blkentriesp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
--- 248,254 ----
  	return code;
      }
      code =
! 	ubik_VL_ListAttributesN(cstruct, 0, attrp, entriesp,
  		  blkentriesp);
      if (!newvlserver) {
  	if (code == RXGEN_OPCODE) {
***************
*** 273,279 ****
      afs_int32 code;
  
      code =
! 	ubik_Call(VL_ListAttributesN2, cstruct, 0, attrp, (name ? name : ""),
  		  thisindex, nentriesp, blkentriesp, nextindexp);
      return code;
  }
--- 273,279 ----
      afs_int32 code;
  
      code =
! 	ubik_VL_ListAttributesN2(cstruct, 0, attrp, (name ? name : ""),
  		  thisindex, nentriesp, blkentriesp, nextindexp);
      return code;
  }
***************
*** 342,348 ****
      memset(&addrs, 0, sizeof(addrs));
      memset(&uuid, 0, sizeof(uuid));
      code =
! 	ubik_Call(VL_GetAddrsU, cstruct, 0, &attrs, &uuid, &unique, &nentries,
  		  &addrs);
      if (vlserverv4 == -1) {
  	if (code == RXGEN_OPCODE) {
--- 342,348 ----
      memset(&addrs, 0, sizeof(addrs));
      memset(&uuid, 0, sizeof(uuid));
      code =
! 	ubik_VL_GetAddrsU(cstruct, 0, &attrs, &uuid, &unique, &nentries,
  		  &addrs);
      if (vlserverv4 == -1) {
  	if (code == RXGEN_OPCODE) {
***************
*** 377,411 ****
  }
  
  
- #ifdef	notdef
- afs_int32
- subik_Call(aproc, aclient, aflags, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10,
- 	   p11, p12, p13, p14, p15, p16)
-      register struct ubik_client *aclient;
-      int (*aproc) ();
-      afs_int32 aflags;
-      afs_int32 p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14,
- 	 p15, p16;
- {
-     struct vldbentry vldbentry;
-     register int code, (*nproc) ();
- 
-     if (newvlserver == 1) {
-     }
-     code =
- 	ubik_Call(aproc, aclient, aflags, p1, p2, p3, p4, p5, p6, p7, p8, p9,
- 		  p10, p11, p12, p13, p14, p15, p16);
-     if (!newvlserver) {
- 	if (code == RXGEN_OPCODE) {
- 	    newvlserver = 1;	/* Doesn't support new interface */
- 	} else if (!code) {
- 	    newvlserver = 2;
- 	}
-     }
- }
- #endif /* notdef */
- 
- 
  /*
    Set encryption.  If 'cryptflag' is nonzero, encrpytion is turned on
    for authenticated connections; if zero, encryption is turned off.
--- 377,382 ----
Index: openafs/src/xstat/xstat_cm.c
diff -c openafs/src/xstat/xstat_cm.c:1.9.2.1 openafs/src/xstat/xstat_cm.c:1.9.2.2
*** openafs/src/xstat/xstat_cm.c:1.9.2.1	Sun Mar  5 22:16:41 2006
--- openafs/src/xstat/xstat_cm.c	Mon Jun 26 12:19:06 2006
***************
*** 18,28 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/xstat/xstat_cm.c,v 1.9.2.1 2006/03/06 03:16:41 jaltman Exp $");
  
  #include "xstat_cm.h"		/*Interface for this module */
  #include <lwp.h>		/*Lightweight process package */
  
  #ifdef HAVE_STRING_H
  #include <string.h>
  #else
--- 18,30 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/xstat/xstat_cm.c,v 1.9.2.2 2006/06/26 16:19:06 rra Exp $");
  
  #include "xstat_cm.h"		/*Interface for this module */
  #include <lwp.h>		/*Lightweight process package */
  
+ #include <afs/afsutil.h>
+ 
  #ifdef HAVE_STRING_H
  #include <string.h>
  #else
Index: openafs/src/xstat/xstat_fs.c
diff -c openafs/src/xstat/xstat_fs.c:1.9.2.1 openafs/src/xstat/xstat_fs.c:1.9.2.2
*** openafs/src/xstat/xstat_fs.c:1.9.2.1	Sun Mar  5 22:16:41 2006
--- openafs/src/xstat/xstat_fs.c	Mon Jun 26 12:19:06 2006
***************
*** 18,28 ****
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/xstat/xstat_fs.c,v 1.9.2.1 2006/03/06 03:16:41 jaltman Exp $");
  
  #include "xstat_fs.h"		/*Interface for this module */
  #include <lwp.h>		/*Lightweight process package */
  
  #ifdef HAVE_STRING_H
  #include <string.h>
  #else
--- 18,30 ----
  #include <afs/param.h>
  
  RCSID
!     ("$Header: /cvs/openafs/src/xstat/xstat_fs.c,v 1.9.2.2 2006/06/26 16:19:06 rra Exp $");
  
  #include "xstat_fs.h"		/*Interface for this module */
  #include <lwp.h>		/*Lightweight process package */
  
+ #include <afs/afsutil.h>
+ 
  #ifdef HAVE_STRING_H
  #include <string.h>
  #else
