|
|
/*
File upgrade.c Implementation of functions to update the registry when an NT 4.0 to NT 5.0 upgrade takes place.
Paul Mayfield, 8/11/97
Copyright 1997 Microsoft. */
#include "upgrade.h"
static const WCHAR szSteelheadKey[] = L"PreUpgradeRouter"; static const WCHAR szSapKey[] = L"Sap.Parameters"; static const WCHAR szIpRipKey[] = L"IpRip.Parameters"; static const WCHAR szDhcpKey[] = L"RelayAgent.Parameters"; static const WCHAR szRadiusKey[] = L"Radius.Parameters"; static const WCHAR szIpxRipKey[] = L"IpxRip";
// Dll entry
BOOL WINAPI RtrUpgradeDllEntry ( IN HINSTANCE hInstDll, IN DWORD fdwReason, IN LPVOID pReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hInstDll); break; }
return TRUE; }
//
// Performs the various router upgrade scenarios
//
DWORD DispatchSetupWork( IN PWCHAR szAnswerFileName, IN PWCHAR szSectionName) { HINF hInf = NULL; BOOL DoUpgrade; WCHAR szBuf[1024]; DWORD dwSize = 1024; DWORD dwErr, dwRet = NO_ERROR;
// Open the answer file
hInf = SetupOpenInfFileW( szAnswerFileName, NULL, INF_STYLE_OLDNT, NULL); if (hInf == INVALID_HANDLE_VALUE) { return GetLastError(); }
// Perform a steelhead upgrade
//
dwSize = sizeof(szBuf) / sizeof(WCHAR); if (SetupGetLineTextW( NULL, hInf, szSectionName, szSteelheadKey, szBuf, dwSize, &dwSize)) { dwErr = SteelheadToNt5Upgrade(szBuf); if (dwErr != NO_ERROR) { dwRet = dwErr; } }
// Perform an ipx sap upgrade
//
dwSize = sizeof(szBuf) / sizeof(WCHAR); if (SetupGetLineTextW( NULL, hInf, szSectionName, szSapKey, szBuf, dwSize, &dwSize)) { dwErr = SapToRouterUpgrade(szBuf); if (dwErr != NO_ERROR) { dwRet = dwErr; }
}
// Perform an ip rip upgrade
//
dwSize = sizeof(szBuf) / sizeof(WCHAR); if (SetupGetLineTextW( NULL, hInf, szSectionName, szIpRipKey, szBuf, dwSize, &dwSize)) { dwErr = IpRipToRouterUpgrade(szBuf); if (dwErr != NO_ERROR) { dwRet = dwErr; } }
// Perform a dhcp relay agent upgrade
//
dwSize = sizeof(szBuf) / sizeof(WCHAR); if (SetupGetLineTextW( NULL, hInf, szSectionName, szDhcpKey, szBuf, dwSize, &dwSize)) { dwErr = DhcpToRouterUpgrade(szBuf); if (dwErr != NO_ERROR) { dwRet = dwErr; } }
// Perform a radius upgrade
//
dwSize = sizeof(szBuf) / sizeof(WCHAR); if (SetupGetLineTextW( NULL, hInf, szSectionName, szRadiusKey, szBuf, dwSize, &dwSize)) { dwErr = RadiusToRouterUpgrade(szBuf); if (dwErr != NO_ERROR) { dwRet = dwErr; } }
SetupCloseInfFile(hInf);
return dwRet; }
//
// This is the entry point to upgrade mpr v1 and steelhead to
// NT 5.0.
//
HRESULT WINAPI RouterUpgrade ( IN DWORD dwUpgradeFlag, IN DWORD dwUpgradeFromBuildNumber, IN PWCHAR szAnswerFileName, IN PWCHAR szSectionName) { DWORD dwErr; dwErr = DispatchSetupWork(szAnswerFileName, szSectionName); if (dwErr == NO_ERROR) { return S_OK; }
UtlPrintErr(dwErr); return dwErr; }
|