Index: openafs/src/WINNT/afsd/afsd_init.c
diff -c openafs/src/WINNT/afsd/afsd_init.c:1.40.2.31 openafs/src/WINNT/afsd/afsd_init.c:1.40.2.32
*** openafs/src/WINNT/afsd/afsd_init.c:1.40.2.31	Thu Jun 22 17:50:13 2006
--- openafs/src/WINNT/afsd/afsd_init.c	Wed Aug  9 22:46:58 2006
***************
*** 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, dwAllocSize;
      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, 
Index: openafs/src/WINNT/afsd/afslogon.c
diff -c openafs/src/WINNT/afsd/afslogon.c:1.24.2.23 openafs/src/WINNT/afsd/afslogon.c:1.24.2.24
*** openafs/src/WINNT/afsd/afslogon.c:1.24.2.23	Wed Jul 26 08:54:36 2006
--- openafs/src/WINNT/afsd/afslogon.c	Thu Aug  3 17:50:05 2006
***************
*** 398,404 ****
              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 
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/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.55.2.61 openafs/src/WINNT/afsd/smb.c:1.55.2.62
*** openafs/src/WINNT/afsd/smb.c:1.55.2.61	Tue Jun  6 12:58:50 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 */
***************
*** 8191,8198 ****
              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);
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.4 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.4	Thu Jul  6 21:15:19 2006
--- 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>
  
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.10 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.10	Thu Jul  6 21:15:30 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm	Mon Aug 21 01:00:55 2006
***************
*** 3,9 ****
  <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.1 Release Notes</title>
  
  <style>
  <!--
--- 3,9 ----
  <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>
  <!--
***************
*** 354,397 ****
  continued growth.</p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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="../../oafw-1-4-release-notes.doc#_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>
  
--- 354,397 ----
  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>
  
***************
*** 412,418 ****
  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="../../oafw-1-4-release-notes.doc#_MSI_Deployment_Guide">MSI Deployment
  Guide</a>)</p>
  
  <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980940"></a><a
--- 412,418 ----
  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
***************
*** 570,576 ****
  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="../../oafw-1-4-release-notes.doc#_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>
--- 570,576 ----
  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>
***************
*** 660,666 ****
  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.  Mount points may be removed using the &quot;fs
--- 660,666 ----
  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
***************
*** 694,700 ****
  <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> </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.
--- 694,700 ----
  <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.
***************
*** 736,743 ****
  
  <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="../relnotes.htm#_Value:_TheseCells">TheseCells</a> value in <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="_Toc139980953"></a><a
  name="_Toc126872177"></a><a name="_Toc115417048"></a><a name="_Toc115416112">3.6.
--- 736,743 ----
  
  <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.
***************
*** 786,793 ****
  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="../../oafw-1-4-release-notes.doc#_Value___: AfscredsShortcutParams">AfscredsShortcutParams</a>
! in <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="_Toc139980954"></a><a
--- 786,793 ----
  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
***************
*** 864,870 ****
  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;.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980955"></a><a
--- 864,870 ----
  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
***************
*** 1023,1031 ****
  <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="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>). 
  The CellServDB file is now stored in the %PROGRAMFILES%\OpenAFS\Client directory.  
! The <i><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”
--- 1023,1031 ----
  <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”
***************
*** 1099,1107 ****
  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="../../oafw-1-4-release-notes.doc#_Value_:_LogoffPreserveTokens">LogoffPreserveTokens</a>
  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="_Toc139980967"></a><a
  name="_Toc126872191"></a><a name="_Toc115417062"></a><a name="_Toc115416126">3.20.
--- 1099,1107 ----
  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.
***************
*** 1162,1170 ****
  </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.  The file
  version check cannot be disabled.</p>
  
--- 1162,1170 ----
  </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>
  
***************
*** 1236,1242 ****
  <p class=PreformattedText>&nbsp;</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.  The ANSI Code Page is a compatible superset of
  Latin-1.  This setting is not the default setting because making this change
--- 1236,1242 ----
  <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
***************
*** 1345,1353 ****
  <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="../../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="_Toc139980982"></a><a
--- 1345,1353 ----
  <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
***************
*** 1430,1436 ****
  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="../relnotes.htm#_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
--- 1430,1436 ----
  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
***************
*** 1463,1469 ****
  <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="../../oafw-1-4-release-notes.doc#_Value___: IoctlDebug">IoctlDebug</a>
  registry key)</h2>
  
  <p class=MsoNormal>pioctl (path-based ioctl) calls are used by various tools to
--- 1463,1469 ----
  <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
***************
*** 1534,1540 ****
  in the source code will quickly reveal the reason for the termination.</p>
  
  <p class=MsoNormal>The <i><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.  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
--- 1534,1540 ----
  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
***************
*** 1549,1555 ****
  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="../../oafw-1-4-release-notes.doc#_Value_:_TraceBufferSize">registry value</a>:</p>
  
  <p class=PreformattedText> 
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
--- 1549,1555 ----
  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>
***************
*** 1568,1574 ****
  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="../../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).  </p>
  
--- 1568,1574 ----
  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>
  
***************
*** 1590,1596 ****
  <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="../relnotes.htm#_5._Reporting_Bugs:">bug
  reports</a>.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139980993"></a><a
--- 1590,1596 ----
  <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
***************
*** 1611,1617 ****
  <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="../../oafw-1-4-release-notes.doc#_Value__:_TraceOption">TraceOption</a> registry
  value:</p>
  
  <p class=PreformattedText> 
--- 1611,1617 ----
  <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> 
***************
*** 1999,2005 ****
  
  <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.  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
--- 1999,2005 ----
  
  <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
***************
*** 2024,2030 ****
  
  <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 ''.  Note that you can't author null values into the
--- 2024,2030 ----
  
  <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
***************
*** 2100,2109 ****
    <h6><a name="_Toc139981017"></a><a name="_Toc126872239"></a><a
    name="_Toc115416170">AFSCACHEPATH</a></h6>
    <p class=MsoList>Registry key    : <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_:_CachePath">CachePath</a></p>
    <p class=MsoList>Valid values    : string .</p>
    </td>
   </tr>
--- 2100,2109 ----
    <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>
***************
*** 2112,2121 ****
    <h6><a name="_Toc139981018"></a><a name="_Toc126872240"></a><a
    name="_Toc115416171">AFSCACHESIZE</a></h6>
    <p class=MsoList>Registry key    : <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    : numeric</p>
    </td>
   </tr>
--- 2112,2121 ----
    <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>
***************
*** 2124,2133 ****
    <h6><a name="_Toc139981019"></a><a name="_Toc126872241"></a><a
    name="_Toc115416172">AFSCELLNAME</a></h6>
    <p class=MsoList>Registry key    : <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_:_Cell">Cell</a></p>
    <p class=MsoList>Valid values    : string</p>
    </td>
   </tr>
--- 2124,2133 ----
    <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>
***************
*** 2136,2145 ****
    <h6><a name="_Toc139981020"></a><a name="_Toc126872242"></a><a
    name="_Toc115416173">FREELANCEMODE</a></h6>
    <p class=MsoList>Registry key    : <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_:_FreelanceClient">FreelanceClient</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2136,2145 ----
    <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>
***************
*** 2148,2157 ****
    <h6><a name="_Toc139981021"></a><a name="_Toc126872243"></a><a
    name="_Toc115416174">HIDEDOTFILES</a></h6>
    <p class=MsoList>Registry key    : <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_:_HideDotFiles">HideDotFiles</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2148,2157 ----
    <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>
***************
*** 2160,2174 ****
    <h6><a name="_Toc139981022"></a><a name="_Toc126872244"></a><a
    name="_Toc115416175">LOGONOPTIONS</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Network_provider):">(Network
    provider)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: LogonOptions">LogonOptions</a></p>
    <p class=MsoList>Valid values    : '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>
--- 2160,2174 ----
    <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>
***************
*** 2178,2187 ****
    <h6><a name="_Toc139981023"></a><a name="_Toc126872245"></a><a
    name="_Toc115416176">MOUNTROOT</a></h6>
    <p class=MsoList>Registry key    : <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_:_Mountroot">Mountroot</a></p>
    <p class=MsoList>Valid values    : string</p>
    </td>
   </tr>
--- 2178,2187 ----
    <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>
***************
*** 2190,2199 ****
    <h6><a name="_Toc139981024"></a><a name="_Toc126872246"></a><a
    name="_Toc115416177">NETBIOSNAME</a></h6>
    <p class=MsoList>Registry key    : <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___: NetbiosName">NetbiosName</a></p>
    <p class=MsoList>Valid values    : string (at most 15 characters)</p>
    </td>
   </tr>
--- 2190,2199 ----
    <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>
***************
*** 2202,2211 ****
    <h6><a name="_Toc139981025"></a><a name="_Toc126872247"></a><a
    name="_Toc115416178">NOFINDLANABYNAME</a></h6>
    <p class=MsoList>Registry key    : <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___: NoFindLanaByName">NoFindLanaByName</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2202,2211 ----
    <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>
***************
*** 2214,2223 ****
    <h6><a name="_Toc139981026"></a><a name="_Toc126872248"></a><a
    name="_Toc115416179">RXMAXMTU</a></h6>
    <p class=MsoList>Registry key    : <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_:_RxMaxMTU">RxMaxMTU</a></p>
    <p class=MsoList>Valid values    : numeric</p>
    </td>
   </tr>
--- 2214,2223 ----
    <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>
***************
*** 2226,2235 ****
    <h6><a name="_Toc139981027"></a><a name="_Toc126872249"></a><a
    name="_Toc115416180">SECURITYLEVEL</a></h6>
    <p class=MsoList>Registry key    : <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_:_SecurityLevel">SecurityLevel</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2226,2235 ----
    <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>
***************
*** 2238,2247 ****
    <h6><a name="_Toc139981028"></a><a name="_Toc126872250"></a><a
    name="_Toc115416181">SMBAUTHTYPE</a></h6>
    <p class=MsoList>Registry key    : <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___: smbAuthType">SMBAuthType</a></p>
    <p class=MsoList>Valid values    : '0','1' or '2'</p>
    </td>
   </tr>
--- 2238,2247 ----
    <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>
***************
*** 2250,2258 ****
    <h6><a name="_Toc139981029"></a><a name="_Toc126872251"></a><a
    name="_Toc115416182">STOREANSIFILENAMES</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(OpenAFS_Client):">(OpenAFS Client)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: StoreAnsiFilenames">StoreAnsiFilenames</a></p>
    <p class=MsoList>Valid values    : '0' or '1'</p>
    </td>
   </tr>
--- 2250,2258 ----
    <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>
***************
*** 2261,2270 ****
    <h6><a name="_Toc139981030"></a><a name="_Toc126872252"></a><a
    name="_Toc115416183">USEDNS</a></h6>
    <p class=MsoList>Registry key    : <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_:_UseDNS">UseDNS</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2261,2270 ----
    <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>
***************
*** 2379,2385 ****
  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="../../oafw-1-4-release-notes.doc#_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;
--- 2379,2385 ----
  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;
***************
*** 2795,2801 ****
  keys.</p>
  
  <p class=MsoNormal>    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>    Columns that are unspecified should be left empty.</p>
--- 2795,2801 ----
  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>
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.6 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.6	Thu Jul  6 21:15:31 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm	Mon Aug 21 01:00:56 2006
***************
*** 87,786 ****
  <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>
  
--- 87,786 ----
  <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>
  
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.15
*** openafs/src/afs/afs_osi.h:1.22.2.14	Fri Dec 23 20:09:52 2005
--- openafs/src/afs/afs_osi.h	Sun Aug 20 18:16:46 2006
***************
*** 397,404 ****
  #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)
  #else
--- 397,404 ----
  #endif /* AFS_GLOBAL_SUNLOCK */
  
  #ifdef AFS_DARWIN80_ENV
! #define AFS_UIO_OFFSET(uio) uio_offset(uio)
! #define AFS_UIO_RESID(uio) uio_resid(uio)
  #define AFS_UIO_SETOFFSET(uio, off) uio_setoffset(uio, off)
  #define AFS_UIO_SETRESID(uio, val) uio_setresid(uio, val)
  #else
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.11
*** openafs/src/afs/sysincludes.h:1.28.2.10	Thu Mar  9 16:41:53 2006
--- openafs/src/afs/sysincludes.h	Mon Aug 14 18:09:33 2006
***************
*** 70,75 ****
--- 70,79 ----
  #include <linux/security.h>
  #endif
  #include <linux/suspend.h>
+ #if defined(LINUX_KEYRING_SUPPORT)
+ #include <linux/rwsem.h>
+ #include <linux/key.h>
+ #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/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.5
*** 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	Thu Aug 17 09:56:29 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.5 2006/08/17 13:56:29 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,216 ----
      put_group_info(group_info);
  
      return 0;
+ }
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+ #include <asm/unistd.h>
+ #include <linux/keyctl.h>
+ 
+ static int errno;
+ static inline _syscall2(long, keyctl, int, option, void*, arg2);
+ 
+ static long
+ __join_session_keyring(char *name)
+ {
+ 	return keyctl(KEYCTL_JOIN_SESSION_KEYRING, name);
+ }
+ #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 ****
--- 238,285 ----
  
      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) __join_session_keyring(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();
--- 307,313 ----
      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();
--- 342,348 ----
      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();
--- 376,382 ----
      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();
--- 411,417 ----
      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();
--- 445,451 ----
      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 ****
--- 456,541 ----
  #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;
+ }
+ 
+ struct key_type key_type_afs_pag =
+ {
+     .name        = "afs_pag",
+     .describe    = afs_pag_describe,
+     .instantiate = afs_pag_instantiate,
+     .match       = afs_pag_match,
+ };
+ 
+ void osi_keyring_init(void)
+ {
+     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.13
*** 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	Fri Aug 11 17:43:38 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
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.24
*** 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	Mon Aug 14 18:09:33 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.24 2006/08/14 22:09:33 shadow Exp $");
  
  #include <linux/module.h> /* early to avoid printf->printk mapping */
  #include "afs/sysincludes.h"
***************
*** 366,379 ****
--- 366,384 ----
  
      osi_Init();
  
+ #ifndef LINUX_KEYRING_SUPPORT
      err = osi_syscall_init();
      if (err)
  	return err;
+ #endif
      err = afs_init_inodecache();
      if (err)
  	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 ****
--- 394,400 ----
  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.11 openafs/src/afs/LINUX/osi_probe.c:1.1.2.12
*** openafs/src/afs/LINUX/osi_probe.c:1.1.2.11	Wed May 31 13:40:57 2006
--- openafs/src/afs/LINUX/osi_probe.c	Mon Aug 14 18:13:59 2006
***************
*** 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,245 ****
--- 241,249 ----
  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));
  
  
***************
*** 300,313 ****
--- 304,323 ----
  /* 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 ****
--- 600,609 ----
  
  /* 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 }
  };
  
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.13 openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.17
*** openafs/src/afs/LINUX/osi_vfsops.c:1.29.2.13	Thu Jun  1 11:59:56 2006
--- openafs/src/afs/LINUX/osi_vfsops.c	Sun Aug 20 01:34:18 2006
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.29.2.13 2006/06/01 15:59:56 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.17 2006/08/20 05:34:18 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)
***************
*** 332,354 ****
  #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) 
- 	afs_InactiveVCache(vcp, NULL);
-     AFS_GUNLOCK();
- }
- 
  /* afs_put_super
   * Called from unmount to release super_block. */
  static void
--- 344,349 ----
***************
*** 434,440 ****
    .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)
--- 429,434 ----
***************
*** 494,500 ****
--- 488,496 ----
      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.42 openafs/src/afs/LINUX/osi_vnodeops.c:1.81.2.43
*** openafs/src/afs/LINUX/osi_vnodeops.c:1.81.2.42	Fri Jul 14 10:56:02 2006
--- openafs/src/afs/LINUX/osi_vnodeops.c	Sun Aug 13 12:50:43 2006
***************
*** 22,28 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.42 2006/07/14 14:56:02 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
--- 22,28 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.43 2006/08/13 16:50:43 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
***************
*** 809,816 ****
      struct vcache *vcp = VTOAFS(ip);
  
      AFS_GLOCK();
!     if (vcp->states & CUnlinked)
! 	(void) afs_InactiveVCache(vcp, NULL);
      AFS_GUNLOCK();
  
      iput(ip);
--- 809,817 ----
      struct vcache *vcp = VTOAFS(ip);
  
      AFS_GLOCK();
!     ObtainWriteLock(&vcp->lock, 537);
!     (void) afs_InactiveVCache(vcp, NULL);
!     ReleaseWriteLock(&vcp->lock);
      AFS_GUNLOCK();
  
      iput(ip);
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/bozo/bnode.c
diff -c openafs/src/bozo/bnode.c:1.17.2.2 openafs/src/bozo/bnode.c:1.17.2.3
*** openafs/src/bozo/bnode.c:1.17.2.2	Tue Jun 20 17:40:46 2006
--- 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.2 2006/06/20 21:40:46 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,744 ****
  
  #if defined(AFS_HPUX_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_SGI51_ENV)
  	ec = setsid();
! #elif defined(AFS_LINUX20_ENV) || defined(AFS_AIX_ENV)
  	ec = setpgrp();
  #else
  	ec = setpgrp(0, 0);
--- 738,746 ----
  
  #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);
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.11
*** openafs/src/cf/linux-test4.m4:1.20.2.9	Tue Feb 14 19:32:54 2006
--- openafs/src/cf/linux-test4.m4	Mon Aug 14 18:04:41 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,647 ----
  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>
! #include <asm/unistd.h>
! static int errno;
! static inline _syscall2(long, keyctl, int, option, void*, arg2);],
! [#ifdef CONFIG_KEYS
! keyctl(KEYCTL_JOIN_SESSION_KEYRING, NULL);
! request_key(NULL, NULL, NULL);
! #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])
Index: openafs/src/config/NTMakefile.amd64_w2k
diff -c openafs/src/config/NTMakefile.amd64_w2k:1.1.2.38 openafs/src/config/NTMakefile.amd64_w2k:1.1.2.39
*** openafs/src/config/NTMakefile.amd64_w2k:1.1.2.38	Fri Jul 28 12:34:26 2006
--- openafs/src/config/NTMakefile.amd64_w2k	Mon Aug 21 01:03:02 2006
***************
*** 80,86 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=0153
  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=0200
  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.53 openafs/src/config/NTMakefile.i386_nt40:1.46.2.54
*** openafs/src/config/NTMakefile.i386_nt40:1.46.2.53	Fri Jul 28 12:34:26 2006
--- openafs/src/config/NTMakefile.i386_nt40	Mon Aug 21 01:03:02 2006
***************
*** 80,86 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=0153
  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=0200
  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.40 openafs/src/config/NTMakefile.i386_w2k:1.1.2.41
*** openafs/src/config/NTMakefile.i386_w2k:1.1.2.40	Fri Jul 28 12:34:26 2006
--- openafs/src/config/NTMakefile.i386_w2k	Mon Aug 21 01:03:02 2006
***************
*** 80,86 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=4
! AFSPRODUCT_VER_PATCH=0153
  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=0200
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/libafs/afs.ppc_darwin_70.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.11 openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.12
*** openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.2.11	Tue Aug  1 18:42:42 2006
--- openafs/src/libafs/afs.ppc_darwin_70.plist.in	Mon Aug 21 15:36:36 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2b3</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2b3</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.2rc1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2rc1</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.6 openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.1.2.7
*** openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.1.2.6	Tue Aug  1 18:42:42 2006
--- openafs/src/libafs/afs.ppc_darwin_80.plist.in	Mon Aug 21 15:36:36 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2b3</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2b3</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.2rc1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2rc1</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.5 openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.2.6
*** openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.2.5	Tue Aug  1 18:42:42 2006
--- openafs/src/libafs/afs.ppc_darwin_90.plist.in	Mon Aug 21 15:36:36 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2b3</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2b3</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.2rc1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2rc1</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.5 openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.2.6
*** openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.2.5	Tue Aug  1 18:42:42 2006
--- openafs/src/libafs/afs.x86_darwin_80.plist.in	Mon Aug 21 15:36:36 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2b3</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2b3</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.2rc1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2rc1</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.5 openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.2.6
*** openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.2.5	Tue Aug  1 18:42:42 2006
--- openafs/src/libafs/afs.x86_darwin_90.plist.in	Mon Aug 21 15:36:36 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2b3</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2b3</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.2rc1</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.4.2rc1</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/packaging/MacOS/OpenAFS.Info.plist
diff -c openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.21 openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.22
*** openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.2.21	Tue Aug  1 18:42:42 2006
--- openafs/src/packaging/MacOS/OpenAFS.Info.plist	Mon Aug 21 15:36:37 2006
***************
*** 3,15 ****
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.4.2b3</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2b3</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
--- 3,15 ----
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.4.2rc1</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.4.2rc1</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
Index: openafs/src/packaging/MacOS/OpenAFS.info
diff -c openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.34 openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.35
*** openafs/src/packaging/MacOS/OpenAFS.info:1.1.4.34	Tue Aug  1 18:42:42 2006
--- openafs/src/packaging/MacOS/OpenAFS.info	Mon Aug 21 15:36:37 2006
***************
*** 1,5 ****
  Title OpenAFS
! Version 1.4.2b3
  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.2rc1
  Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information.
  DefaultLocation /
  Diskname (null)
Index: openafs/src/packaging/MacOS/buildpkg.sh
diff -c openafs/src/packaging/MacOS/buildpkg.sh:1.4.2.13 openafs/src/packaging/MacOS/buildpkg.sh:1.4.2.14
*** openafs/src/packaging/MacOS/buildpkg.sh:1.4.2.13	Wed Aug  2 00:02:17 2006
--- openafs/src/packaging/MacOS/buildpkg.sh	Thu Aug 10 13:07:33 2006
***************
*** 136,149 ****
      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
--- 136,154 ----
      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
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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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	Mon Aug 21 17:06:25 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/rx/rx.c
diff -c openafs/src/rx/rx.c:1.58.2.34 openafs/src/rx/rx.c:1.58.2.35
*** openafs/src/rx/rx.c:1.58.2.34	Sun Jul  2 21:16:36 2006
--- 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.34 2006/07/03 01:16:36 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"
***************
*** 3710,3719 ****
  	 * 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/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/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/shlibafsrpc/Makefile.in
diff -c openafs/src/shlibafsrpc/Makefile.in:1.15.2.9 openafs/src/shlibafsrpc/Makefile.in:1.15.2.10
*** openafs/src/shlibafsrpc/Makefile.in:1.15.2.9	Wed Jul  5 14:34:41 2006
--- openafs/src/shlibafsrpc/Makefile.in	Sun Aug 20 18:24:10 2006
***************
*** 149,154 ****
--- 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};; \
  	*) \
***************
*** 282,288 ****
  #
  #   $ what /opt/langtools/bin/pxdb32
  #   /opt/langtools/bin/pxdb32:
! #           HP92453-02 A.10.0A HP-UX SYMBOLIC DEBUGGER (PXDB) $Revision: 1.15.2.9 $
  #
  # 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.afs_xdr
diff -c /dev/null openafs/src/shlibafsrpc/mapfile.afs_xdr:1.1.4.2
*** /dev/null	Mon Aug 21 17:06:26 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:
+ 	*;
+ };
