;AT&T Global Network Services
;
;Developed in Tampa, FL copyright 1999, 2000, 2001
;Broadband/Narrowband support
;****************************************************************************
[Identification]
OptionType = NetService
[Options]
"IPSec VPN Drivers"
[FileConstants]
NoNdisWanSupport = 0
UtilityInf = "UTILITY.INF"
subroutineinf = "SUBROUTN.INF"
DLL_ERROR_INDICATOR = "Script Error"
SoftwareType = "service"
Exit_Code = 0
NetEventDLL = "%SystemRoot%\System32\netevent.dll"
;Manufacturer = "AT&T Global Network"
Manufacturer = "AGNS"
ProductMajorVersion = "1"
ProductMinorVersion = "3"
ProductVersion = $(ProductMajorVersion)"."$(ProductMinorVersion)
ProductSoftwareName = ADVPNNT ;Don't forget to update length too in SelectNIC/NDISWan
;ProductDeviceNameNarrow = ADVPN
;ProductDeviceNameBroad = ABVPN
ProductDeviceNameNarrow = "NetClient\NetVPN"
ProductDeviceNameBroad = "NetClient\NetVPN"
ProductSoftwareImagePath = "\SystemRoot\System32\drivers\ADVPNNT.SYS"
ProductDriverFile = "ADVPNNT.SYS"
ProductDLLFile = "ADVNDINT.DLL"
ProductSoftKey = $(!NTN_SoftwareBase)"\"$(Manufacturer) ;SOFTWARE\AGNS
ProductKeyName = $(ProductSoftKey)"\"$(ProductSoftwareName)"\CurrentVersion" ;SOFTWARE\AGNS\ADVPNNT\CurrentVersion
ProductKeyInfoNarrow = $(ProductSoftKey)"\"$(ProductDeviceNameNarrow) ;SOFTWARE\AGNS\NetClient\NetVPN
ProductKeyInfoBroad = $(ProductSoftKey)"\"$(ProductDeviceNameBroad) ;SOFTWARE\AGNS\NetClient\NetVPN
ProductHardwareSupport = 0
ProductSoftwareSupport = 132
InstallTypeValue = "InstallType"
InstallBroadband = "BROADBAND"
InstallNarrowband = "DIAL"
InstallAll = "ALL"
InterfaceValue = "BindToAdapter"
IMTransports = {imTransport,+
imTcpipTransport,+
imIpxTransport,+
imNetBiosTransport,+
imrasCapableTransport,+
imnetbtTransport,+
}
SupportedTransports = {ndisTransport,+
tcpipTransport,+
ipxTransport,+
netBiosTransport,+
rasCapableTransport,+
netbtTransport,+
}
IMDrivers = {imDriver}
SupportedDrivers = {ndisDriver}
NdisWanSupportedDrivers = {ndisWanAdapterDialOut,+
ndisWanAdapterDialOutIP }
IMAdapters = {imAdapter}
NetRuleSoftwareType = $(ProductSoftwareName)" "*($(\IMDrivers),1)" "*($(IMTransports),1)
NetRuleSoftwareUse = $(SoftwareType)" yes yes"
NetRuleSoftwareClass = {*($(IMDrivers),1)" basic",*($(IMTransports),1)" basic"}
NetRuleHardwareClass = {*($(IMAdapters),1)" basic"}
NetRuleSoftwareBindable = {*($(IMTransports),1)" "*($(SupportedDrivers),1)" non non 100",+
*($(IMTransports),1)" "*($(NdisWanSupportedDrivers),2)" non non 100" }
NetRuleSoftwareBindForm = " yes no simple"
NetRuleHardwareBindForm = " yes yes container"
ProductSoftwareReview = "1"
MicroSW = $(!NTN_SoftwareBase)"\Microsoft\"
CVNetRules = "\CurrentVersion\NetRules"
;
; TCPIP and Nbf protocols only
;
NetRuleDriverKeys = {{$(MicroSW)"Tcpip"$(CVNetRules),1}}
NetRuleTransportKeys = {{$(MicroSW)"Ndiswan"$(CVNetRules),2}}
TransportServiceKeys = {$(!NTN_ServiceBase)"\Tcpip",+
$(!NTN_ServiceBase)"\NetBT"}
NetBTServiceKey = $(!NTN_ServiceBase)"\NetBT\Adapters"
IMServiceKeyName = $(!NTN_ServiceBase)"\"$(ProductSoftwareName)
IMLinkageKeyName = $(IMServiceKeyName)"\Linkage"
NtCurrentVersion = $(MicroSW)"Windows NT\CurrentVersion"
NtCurrentSP = "CSDVersion"
NetworkCardsKeyName = $(NtCurrentVersion)"\NetworkCards"
ServiceOrder = "SYSTEM\CurrentControlSet\Control\ServiceGroupOrder"
ReviewProgram = "SOFTWARE\Microsoft\Ncpa\CurrentVersion"
IMSoftwareKey = "SOFTWARE\"$(Manufacturer)"\"
NetRules = $(IMSoftwareKey)$(ProductSoftwareName)$(CVNetRules)
RunOnce = $(!NTN_SoftwareBase)+
"\Microsoft\Windows\CurrentVersion\RunOnce"
FixupServices = {$(!NTN_ServiceBase)"\LanmanServer\Linkage",+
$(!NTN_ServiceBase)"\LanmanWorkstation\Linkage"}
[GeneralConstants]
from = ""
to = ""
ExitCodeOk = 0
ExitCodeCancel = 1
ExitCodeFatal = 2
KeyNull = ""
MAXIMUM_ALLOWED = 33554432
RegistryErrorIndex = NO_ERROR
KeyProduct = ""
KeyParameters = ""
TRUE = 1
FALSE = 0
NoTitle = 0
ExitState = "Active"
OldVersionExisted = $(FALSE)
DriverPath = $(!STF_NTPATH)\drivers
[date]
ifstr(i) $(!LIBHANDLE) == ""
LoadLibrary "x" setupdll.dll !LIBHANDLE
endif
Now = {} ? $(!LIBHANDLE) GetSystemDate
[Identify]
read-syms Identification
set Status = STATUS_SUCCESSFUL
set Identifier = $(OptionType)
set Media = #("Source Media Descriptions", 1, 1)
Return $(Status) $(Identifier) $(Media)
[ReturnOptions]
set Status = STATUS_FAILED
set OptionList = {}
set OptionTextList = {}
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) in $(LanguageList)
goto returnoptions
else
set Status = STATUS_NOLANGUAGE
goto finish_ReturnOptions
endif
returnoptions = +
set OptionList = ^(Options, 1)
set OptionTextList = ^(OptionsText$($0), 1)
set Status = STATUS_SUCCESSFUL
finish_ReturnOptions = +
Return $(Status) $(OptionList) $(OptionTextList)
[Shell Commands]
set-title "Ndis Intermediate Driver Sample Setup"
exit
[InstallOption]
set !G:DebugOutputControl = 1 ; turn on debugging. Set to 0 to turn off debug prints
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
set LanguageList = ^(LanguagesSupported, 1)
Ifcontains(i) $($0) NOT-IN $(LanguageList)
Return STATUS_NOLANGUAGE
endif
Debug-Output "ADVPN: STF_CWDDIR is: "$(!STF_CWDDIR)
Debug-Output "ADVPN: STF_LANGUAGE is: "$(!STF_LANGUAGE)
set-subst LF = "\n"
read-syms GeneralConstants
read-syms FileConstants
read-syms DialogConstants$(!STF_LANGUAGE)
ifstr(i) $(!NTN_Origination) == "NCPA"
set Continue = $(OK)
endif
read-syms FileConstants$(!STF_LANGUAGE)
detect date
set-title $(FunctionTitle)
set to = Begin
set from = Begin
set CommonStatus = STATUS_SUCCESSFUL
;JEM 3/31 EndWait
Begin = +
Ifstr(i) $(!NTN_InstallMode) == deinstall
set StartLabel = removeadapter
else-Ifstr(i) $(!NTN_InstallMode) == Update
set StartLabel = UpgradeSoftware
else-Ifstr(i) $(!NTN_InstallMode) == bind
set StartLabel = bindingadapter
else-Ifstr(i) $(!NTN_InstallMode) == cleanup
set StartLabel = cleanupSoftware
else-Ifstr(i) $(!NTN_InstallMode) == configure
Shell $(UtilityInf),RegistryErrorString,CANNOT_CONFIGURE_SOFTWARE
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "OEMSETNT.INF: ShellCode error: no error string."
goto ShellCodeError
endif
set Error = $($R0)
set from = end
set to = end
goto nonfatalinfo
else
set StartLabel = installadapter
endif
set RadioDefault = 2
set RadioIn = {$(RadioDefault)}
set Size = 2 ;
set from = $(fatal)
set to = $(fatal)
goto $(StartLabel)
installadapter = +
;CCL** Allow user to select from dialog box.
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
set IM_NT_SERVICE_PACK = ""
set IM_NT_VERSION = ""
Shell "" GetNtVersion
ifstr $($R0) != "4.0"
Debug-Output "ADVPN: Wrong NT Version!"
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
read-syms ErrorMessages
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_WRONG_VERSION"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_WRONG_VERSION_WARNING" +
$(szWrongVersionWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Result)
set CommonStatus = STATUS_FAILED
goto end
EndIf
Shell "" GetNtServicePack
ifint $($R0) < 3
Debug-Output "ADVPN: Wrong Service Pack!"
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
read-syms ErrorMessages
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_WRONG_SP"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_WRONG_SERVICE_PACK_WARNING" +
$(szWrongServicePackWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Result)
set CommonStatus = STATUS_FAILED
goto end
EndIf
;CCL 7/10/2000
;
;Removed SelectInterfaces Call because we now determine interface dynamically
;
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
Debug-Output "ADVPN: installadapter:"
GetRegValue $(KeyProduct) MajorVersion major
GetRegValue $(KeyProduct) MinorVersion minor
CloseRegKey $(KeyProduct)
ifstr $(major) == ""
goto noVersionCheck
endif
ifstr $(minor) == ""
goto noVersionCheck
endif
ifint *($(major),4) > $(ProductMajorVersion)
CloseRegKey $(KeyProduct)
goto versionOlder
endif
ifint *($(major),4) == $(ProductMinorVersion)
ifint *($(minor),4) > $(ProductMinorVersion)
CloseRegKey $(KeyProduct)
goto versionOlder
endif
endif
ifstr *($(major),4) == $(ProductMajorVersion)
ifstr *($(minor),4) == $(ProductMinorVersion)
goto versionExist
endif
endif
endif
noVersionCheck = +
goto installproduct
versionExist = +
Debug-Output "ADVPN: current version already exists"
;Don't want to tell user, because it may just be an interfaces update
;Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
; $(ProductSoftwareTitle)" "*($(major),4)"."*($(minor),4)+
; " is already installed."
;ifint $($ShellCode) != $(!SHELL_CODE_OK)
; Debug-Output "ShellCode error: cannot get an error string."
; goto ShellCodeError
;endif
goto end
versionOlder = +
Debug-Output "ADVPN: older version already exists"
;Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
; $(ProductSoftwareTitle)" "*($(major),4)"."*($(minor),4)+
; " is already installed. Upgrading to version "+
; $(ProductMajorVersion)"."$(ProductMinorVersion)" is not allowed."
;ifint $($ShellCode) != $(!SHELL_CODE_OK)
; Debug-Output "ShellCode error: cannot get an error string."
; goto ShellCodeError
;endif
goto end
installproduct = +
StartWait
ifint $(OldVersionExisted) == $(FALSE)
Ifstr(i) $(DoCopy) == "YES"
set SrcKey = $(!NTN_SoftwareBase)"\"$(Manufacturer)"\TCPIP"
OpenRegKey $(!REG_H_LOCAL) "" $(SrcKey) $(MAXIMUM_ALLOWED) KeyHandle
Ifstr $(KeyHandle) != $(KeyNull)
GetRegValue $(KeyHandle) Path value
ifint $(RegLastError) == 0
;set SrcDir = *($(value),4)
set paths = {*($(value),4)}
set names = {ADVPNNT.SYS}
Debug-Output "ADVPN: Shelling CheckIfCopyNecessary "
Shell $(UtilityInf) CheckIfCopyNecessary $(paths) $(names)
Ifint $($ShellCode) == $(!SHELL_CODE_OK)
Ifstr $($R0) == STATUS_SUCCESSFUL
set SrcDir = *($(value),4)
CloseRegKey $(KeyHandle)
goto skip_DoAskSource
endif
endif
endif
CloseRegKey $(KeyHandle)
endif
Shell $(UtilityInf), DoAskSource, $(!STF_CWDDIR), $(SrcDir) YES
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Goto ShellCodeError
Else-Ifstr(i) $($R0) == STATUS_FAILED
Shell $(UtilityInf) RegistryErrorString "ASK_SOURCE_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
Goto fatal
Else-Ifstr(i) $($R0) == STATUS_USERCANCEL
Goto successful
Endif
Set SrcDir = $($R1)
Endif
skip_DoAskSource = +
Debug-Output "ADVPN: skip_DoAskSource"
install "Install-Option"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
Shell $(UtilityInf) RegistryErrorString "UNABLE_COPY_FILE"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
goto fatal
endif
set OEM_ABANDON_ON = TRUE
Debug-Output "ADVPN: Calling add SoftwareComponent (1)"
Shell $(UtilityInf), AddSoftwareComponent, $(Manufacturer), +
$(ProductSoftwareName), $(ProductSoftwareName), +
$(ProductSoftwareDisplayName), $(STF_CONTEXTINFNAME), +
$(ProductSoftwareImagePath), "kernelautostart", +
$(ProductSoftwareGroup), "", "", $(NetEventDLL)
set RegistryErrorIndex = $($R0)
Ifstr(i) $(RegistryErrorIndex) != NO_ERROR
;
; Try to recover
;
Debug-Output "ADVPN: Trying to recover"
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName)"\NetRules" +
$(MAXIMUM_ALLOWED) SoftNetRuleKey
Ifstr $(SoftNetRuleKey) != $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" +
$(ProductSoftKey)"\"$(ProductSoftwareName) +
$(MAXIMUM_ALLOWED) SoftProductKey
Ifstr $(SoftProductKey) != $(KeyNull)
OpenRegKey $(!REG_H_LOCAL) "" $(IMServiceKeyName) +
$(MAXIMUM_ALLOWED) sHandle
Ifstr $(sHandle) != $(KeyNull)
CloseRegKey $(sHandle)
goto continueInstall
else
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
read-syms ErrorMessages
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_PREVIOUSLY"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_PREVIOUSLY_INSTALLED_WARNING" +
$(szPreviouslyInstalledWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell $(subroutineinf) SetupMessage,+
$(!STF_LANGUAGE),"FATAL",+
$(Result)
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatal
endif
else
CloseRegKey $(SoftNetRuleKey)
endif
endif
EndWait
CloseRegKey $($R1)
CloseRegKey $($R2)
CloseRegKey $($R3)
CloseRegKey $($R4)
CloseRegKey $($R5)
goto fatalRegistry
endif
Set SoftProductKey = $($R1)
Set SoftNetRuleKey = $($R2)
Set SoftServiceKey = $($R3)
set KeyParameters = $($R4)
Set SoftLinkageKey = $($R5)
continueInstall = +
Debug-Output "ADVPN: continueInstall"
set NewValueList = { +
{SoftwareType,$(NoTitle),+
$(!REG_VT_SZ),$(SoftwareType)},+
{MajorVersion,$(NoTitle),$(!REG_VT_DWORD),+
$(ProductMajorVersion)},+
{MinorVersion,$(NoTitle),$(!REG_VT_DWORD),+
$(ProductMinorVersion)},+
{Title,$(NoTitle),$(!REG_VT_SZ),+
$(ProductSoftwareTitle)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(ProductSoftwareDescription)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(ProductSoftwareName)},+
{Review,$(NoTitle),$(!REG_VT_DWORD),+
$(ProductSoftwareReview)},+
{OperationsSupport,$(NoTitle),$(!REG_VT_DWORD),+
$(ProductSoftwareSupport)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),+
*($(Now),1)}}
Shell $(UtilityInf), AddValueList, $(SoftProductKey), $(NewValueList)
set RegistryErrorIndex = $($R0)
Ifstr $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftLinkageKey)
CloseRegKey $(KeyParameters)
goto fatalRegistry
endif
set-subst NetRuleSoftwareBindForm = "\042"$(ProductSoftwareName)"\042"+
$(NetRuleSoftwareBindForm)
set NewValueList = { +
{type,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareType)}, +
{use,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareUse)}, +
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareClass)},+
{bindform,$(NoTitle),$(!REG_VT_SZ),$(NetRuleSoftwareBindForm)},+
{bindable,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetRuleSoftwareBindable)},+
{InfOption,$(NoTitle),$(!REG_VT_SZ),$(Option)}}
Shell $(UtilityInf), AddValueList, $(SoftNetRuleKey), $(NewValueList)
set RegistryErrorIndex = $($R0)
Ifstr $(RegistryErrorIndex) != NO_ERROR
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftLinkageKey)
CloseRegKey $(KeyParameters)
goto fatalRegistry
endif
CloseRegKey $(SoftProductKey)
CloseRegKey $(SoftNetRuleKey)
CloseRegKey $(SoftServiceKey)
CloseRegKey $(SoftLinkageKey)
endif
;
; Modify Driver NetRules
;
ForListDo $(NetRuleDriverKeys) ; currently, only TCPIP
Shell "" ChangeNetRules *($($),1) *($(SupportedDrivers),*($($),2)) +
*($(IMDrivers),*($($),2)) Bindable
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = $($ShellCode)
goto fatalRegistry
endif
Ifstr $($R0) != STATUS_SUCCESS
set RegistryErrorIndex = $($R0)
goto fatalRegistry
endif
EndForListDo
;
; Modify Transport NetRules currently only ndiswan
;
Shell "" NdisWanSupport
ifint $($R0) != 1
ForListDo $(NetRuleTransportKeys)
Shell "" ChangeNetRules *($($),1) +
*($(SupportedTransports),*($($),2)) +
*($(IMTransports),*($($),2)) Bindable
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = $($ShellCode)
goto fatalRegistry
endif
Ifstr $($R0) != STATUS_SUCCESS
Ifstr $($R0) != CANNOT_FIND_COMPONENT_SERVICE
set RegistryErrorIndex = $($R0)
goto fatalRegistry
endif
endif
endForListDo
endif
;
; Add Protocol parameters and NetworkCard settings
;
Debug-Output "ADVPN: Shelling SetAdapterParameter with "$(Option)
Shell "", SetAdapterParameter $(Option) FORCE
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = $($ShellCode)
goto fatal
endif
Ifstr $($R0) != STATUS_SUCCESSFUL
Ifstr $($R0) != STATUS_REBIND
set RegistryErrorIndex = $($R0)
goto fatal
endif
endif
;
; Add install file to ReviewPrograms
;
OpenRegKey $(!REG_H_LOCAL) "" $(NetRules) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct),"InfName", infName
ifint $(RegLastError) == 0
Shell "" AddToList *($(infName),4) OEMNSVRA.INF +
$(ReviewProgram) ReviewPrograms
ifint $($ShellCode) == $(!SHELL_CODE_OK)
ifstr $($R0) != STATUS_SUCCESSFUL
Shell "" AddToList *($(infName),4) NBINFO.INF +
$(ReviewProgram) ReviewPrograms BEFORE
endif
endif
endif
CloseRegKey $(KeyProduct)
endif
;
; Add our Group to the service group list
;
Shell "" AddToList $(ProductSoftwareGroup) NDIS $(ServiceOrder) List
goto writeparameters
writeparameters = +
Debug-Output "ADVPN: writeparameters"
CloseRegKey $(KeyParameters)
EndWait
goto successful
bindingadapter =+
;
; Delete IM DependOnGroup and DependOnService
;
Debug-Output "ADVPN: bindingadapter"
OpenRegKey $(!REG_H_LOCAL) "" $(IMServiceKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$(IMServiceKeyName)" empty!"
goto fatal
Endif
DeleteRegValue $(KeyProduct) DependOnGroup
DeleteRegValue $(KeyProduct) DependOnService
CloseRegKey $(KeyProduct)
;
; Modify Driver NetRules
;
ForListDo $(NetRuleDriverKeys) ; currently, only TCPIP
Shell "" ChangeNetRules *($($),1) *($(SupportedDrivers),*($($),2)) +
*($(IMDrivers),*($($),2)) Bindable
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = $($ShellCode)
goto fatalRegistry
endif
;It's not ok if TCP/IP is not found at this point. We want to
;uninstall and wait for TCP/IP to be installed again.
Ifstr $($R0) == CANNOT_FIND_COMPONENT_SERVICE
Debug-Output "ADVPN: TCP/IP is missing!"
read-syms ErrorMessages
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_NO_TCPIP"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_NO_TCPIP_WARNING" +
$(szNOTCPIPWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "STATUS", $(Result)
Shell "" RemoveIM
else-ifstr $($R0) != STATUS_SUCCESS
set RegistryErrorIndex = $($R0)
goto fatalRegistry
endif
EndForListDo
;
; Modify Transport NetRules
;
set bindType = 1
Shell "" NdisWanSupport
ifint $($R0) != 1
ForListDo $(NetRuleTransportKeys)
Shell "" ChangeNetRules *($($),1) +
*($(SupportedTransports),*($($),2)) +
*($(IMTransports),*($($),2)) Bindable
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = $($ShellCode)
goto fatal
endif
Ifstr $($R0) != STATUS_SUCCESS
Ifstr $($R0) != CANNOT_FIND_COMPONENT_SERVICE
set RegistryErrorIndex = $($R0)
goto fatal
endif
endif
Ifstr $($R1) == 0 ;IM is installed before RAS
set bindType = 2
endif
endForListDo
endif
;
; Remove IM from Transport's DependOnService
;
Shell "" FixupTransportDependOnService
set rebind = FALSE
;
; Add Protocol parameters and NetworkCard settings
;
Debug-Output "ADVPN: Shelling SetAdapterParameter number 2 with "$(Option)
Shell "" SetAdapterParameter $(Option)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set RegistryErrorIndex = $($ShellCode)
goto fatal
endif
Ifstr $($R0) == STATUS_REBIND
set rebind = TRUE
else-ifstr $($R0) != STATUS_SUCCESSFUL
set RegistryErrorIndex = $($R0)
goto fatal
endif
;
; Remove no longer used IM cards
;
Shell "" RemoveIMCards UNWANTED
Ifstr $($R0) == STATUS_REBIND
set rebind = TRUE
endif
;
; Fixup binding now that we might have added/removed some adapters
;
Shell "" NdisWanSupport
ifint $($R0) != 1
Shell "" FixupBindings
endif
ifstr $(rebind) == TRUE
OpenRegKey $(!REG_H_LOCAL) "" $(IMServiceKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
set RegistryErrorIndex = CANNOT_FIND_COMPONENT_SERVICE
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$(IMServiceKeyName)" empty!"
goto fatal
endif
SetRegValue $(KeyProduct) +
{Rebind,$(NoTitle),$(!REG_VT_DWORD),$(bindType)}
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Setting bind type."
set RegistryErrorIndex = $(RegLastError)
goto fatal
endif
CloseRegKey $(KeyProduct)
endif
;
; Reconfig protocol since some adapter information may have changed
;
;shell "oemnxptc.inf",InstallOption,$($0),TC,$($2),$($3),+
;$($4),$($5),$($6),$($7),$($8)
;
; add our installation file to ReviewPrograms
;
OpenRegKey $(!REG_H_LOCAL) "" $(NetRules) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct),"InfName", infName
ifint $(RegLastError) == 0
Shell "" AddToList *($(infName),4) OEMNSVRA.INF +
$(ReviewProgram) ReviewPrograms
ifint $($ShellCode) == $(!SHELL_CODE_OK)
ifstr $($R0) != STATUS_SUCCESSFUL
Shell "" AddToList *($(infName),4) NBINFO.INF +
$(ReviewProgram) ReviewPrograms BEFORE
endif
endif
endif
CloseRegKey $(KeyProduct)
endif
;
; Add our Group to the service group list
;
Shell "" AddToList $(ProductSoftwareGroup) NDIS $(ServiceOrder) List
goto successful
removeadapter = +
Debug-Output "ADVPN: RemoveAdapter"
Shell "" RemoveIM
goto end
UpgradeSoftware = +
ifstr(i) $(ProductKeyName) == $(!NTN_RegBase)
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct),"MajorVersion", VersionInfo
set Version = *($(VersionInfo), 4)
Shell $(UtilityInf), GetInfFileNameFromRegistry, $(KeyProduct)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
Debug-Output "ShellCode error"
CloseRegKey $(KeyProduct)
goto ShellCodeError
endif
set !UG_Filename = $($R0)
Debug-Output "CCL - Upgrading software UG_Filename is "$(!UG_Filename)
ifstr(i) $(!UG_Filename) != ""
install "Install-Update"
ifstr(i) $(STF_INSTALL_OUTCOME) != STF_SUCCESS
CloseRegKey $(KeyProduct)
goto fatal
endif
endif
SetRegValue $(KeyProduct) {MajorVersion,$(NoTitle),$(!REG_VT_SZ),+
$(ProductMajorVersion)}
SetRegValue $(KeyProduct) {MinorVersion,$(NoTitle),$(!REG_VT_SZ),+
$(ProductMinorVersion)}
ifint $(Version) != $(ProductVersion)
endif
CloseRegKey $(KeyProduct)
else
goto fatalregistry
endif
endif
goto end
cleanupSoftware = +
Shell "" RemoveBobcatINFs
goto end
successful = +
goto end
warning = +
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "WARNING", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
ifstr(i) $($R1) == "OK"
goto $(to)
else-ifstr(i) $($R1) == "CANCEL"
goto $(from)
else
goto "end"
endif
nonfatalinfo = +
Set CommonStatus = STATUS_USERCANCEL
Set Severity = STATUS
goto nonfatalmsg
nonfatal = +
Set Severity = NONFATAL
goto nonfatalmsg
nonfatalmsg = +
ifstr(i) $(Error) == ""
Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
endif
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), $(Severity), $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
ifstr(i) $($R1) == "OK"
goto $(from)
else
goto "end"
endif
fatalregistry = +
Shell $(UtilityInf) RegistryErrorString $(RegistryErrorIndex)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
goto fatal
fatal = +
Shell "" RemoveIM
ifstr(i) $(Error) == ""
Shell $(UtilityInf) RegistryErrorString "SETUP_FAIL"
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
set Error = $($R0)
endif
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", $(Error)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto ShellCodeError
endif
goto setfailed
ShellCodeError = +
set DlgType = "MessageBox"
set STF_MB_TITLE = $(ShellCodeErrorTitle)
set STF_MB_TEXT = $(ShellCodeErrorText)
set STF_MB_TYPE = 1
set STF_MB_ICON = 3
set STF_MB_DEF = 1
ui start "Error Message"
goto setfailed
setfailed = +
set CommonStatus = STATUS_FAILED
ifstr(i) $(OEM_ABANDON_ON) == TRUE
set OEM_ABANDON_ON = FALSE
goto removeadapter
endif
goto end
end = +
goto term
term = +
Return $(CommonStatus)
[BindingsReview]
set Option = $($1)
set SrcDir = $($2)
set AddCopy = $($3)
set DoCopy = $($4)
set DoConfig = $($5)
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
OpenRegKey $(!REG_H_LOCAL) "" $(IMServiceKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
Return STATUS_USERCANCEL
endif
GetRegValue $(KeyProduct) Rebind rebind
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Rebind Value."
goto bindingsReview_cont
endif
DeleteRegValue $(KeyProduct) Rebind
CloseRegKey $(KeyProduct)
ifint *($(rebind),4) == 1
Shell "" GetImSampPath
ifstr $($R0) == STATUS_SUCCESSFUL
set cmd = $($R1)"\wgagent.dll,ReviewBindings"
read-syms ErrorMessages
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_REDO_NETWORK"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_REDO_NETWORK_WARNING" +
$(szRedoNetworkWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Result)
StartDetachedProcess ExitCode "x" "" +
$(!STF_WINDOWSSYSPATH)"\rundll32.exe" $(cmd)
ifstr $(ExitCode) != "ERROR"
Return STATUS_SUCCESSFUL
else
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" +
"Unable to start detached process"
Return STATUS_USERCANCEL
endif
endif
else-ifint *($(rebind),4) == 2
Shell "" GetImSampPath
ifstr $($R0) == STATUS_SUCCESSFUL
set cmd = $($R1)"\wgagent.dll,ReviewBindings"
read-syms ErrorMessages
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_REDO_NETWORK"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_REDO_NETWORK_RAS_WARNING" +
$(szRedoNetworkRASWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "NONFATAL" $(Result)
Shell "" RemoveIM
StartDetachedProcess ExitCode "x" "" +
$(!STF_WINDOWSSYSPATH)"\rundll32.exe" $(cmd)
ifstr $(ExitCode) == "ERROR"
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" +
"Unable to start detached process"
Return STATUS_USERCANCEL
endif
;
; Install new IM after next reboot
;
OpenRegKey $(!REG_H_LOCAL) "" $(RunOnce) +
$(MAXIMUM_ALLOWED) runHandle
ifstr $(runHandle) == $(KeyNull)
CreateRegKey $(!REG_H_LOCAL) {$(RunOnce),0,GenericClass} +
"" $(MAXIMUM_ALLOWED) "" runHandle
endif
ifstr $(runHandle) == $(KeyNull)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" +
"Unable to add IM auto-install"
Return STATUS_USERCANCEL
endif
SetRegValue $(runHandle) {InstallIM,0,+
$(!REG_VT_SZ),"rundll32 wgagent.dll,DllRegisterServer"}
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Setting DLLRegisterServer."
CloseRegKey $(runHandle)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" +
"Unable to install IM auto-install"
Return STATUS_USERCANCEL
endif
CloseRegKey $(runHandle)
Return STATUS_SUCCESSFUL
endif
endif
bindingsReview_cont = +
;
; NDISWAN
;
Shell "" NdisWanSupport
ifint $($R0) != 1
ifstr(i) $(!LIBHANDLE) == ""
LoadLibrary "x" setupdll.dll !LIBHANDLE
ifstr(i) $(!LIBHANDLE) == ""
read-syms ErrorMessages
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_SETUP_DLL"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_SETUP_DLL_WARNING" +
$(szSetupDLLWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell subroutn.inf, SetupMessage $(!STF_LANGUAGE) "FATAL" $(Result)
Return STATUS_USERCANCEL
endif
endif
Shell "" SetRasArpBindValueFromTcpIP
Shell "" UpdateLLInterface
endif
;clean up the IM bindings
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling ImPruneBindings"
LibraryProcedure Result $(!PRUNEHANDLE) ImPruneBindings
Debug-Output "ADVPN: Binding pruning complete"
Return STATUS_SUCCESSFUL
[Install-Option]
Debug-Output "CCL - Install-Option section"
Debug-Output "CCL - UG_Filename is "$(UG_Filename)
set STF_VITAL = ""
ifstr(i) $(AddCopy) == "YES"
AddSectionFilesToCopyList Files-$(Option) $(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Files-$(Option)-DLL $(SrcDir) +
$(!STF_WINDOWSSYSPATH)
endif
ifstr(i) $(DoCopy) == "YES"
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
endif
ifstr(i) $(DoConfig) == "YES"
endif
Exit
[Install-Update]
Debug-Output "CCL - Install-Update section"
Debug-Output "CCL - UG_Filename is "$(UG_Filename)
set STF_VITAL = ""
set STF_OVERWRITE = "VERIFYSOURCEOLDER"
AddSectionFilesToCopyList Files-$(Option) $(SrcDir) +
$(!STF_WINDOWSSYSPATH)\drivers
AddSectionFilesToCopyList Files-$(Option)-DLL $(SrcDir) +
$(!STF_WINDOWSSYSPATH)
AddSectionFilesToCopyList Files-Inf $(SrcDir) $(!STF_WINDOWSSYSPATH)
set !STF_NCPA_FLUSH_COPYLIST = TRUE
CopyFilesInCopyList
exit
[Source Media Descriptions]
1 = "ADVPN Installation Disk" , TAGFILE = disk1
[ProductType]
STF_PRODUCT = Winnt
STF_PLATFORM = I386 ;should be able to detect automatically?
[Files-Inf]
1,ADVNDINT.DLL,SIZE=2000
2,oemsetnt.inf,SIZE=2000,RENAME=$(!UG_Filename)
[Files-IPSec VPN Drivers]
1,ADVPNNT.SYS,SIZE=2000
[Files-IPSec VPN Drivers-DLL]
1,ADVNDINT.DLL,SIZE=2000
;***********************************************************************************
;
; LANGUAGE SPECIFIC CONSTANTS
;
;***********************************************************************************
[LanguagesSupported]
ENG
[OptionsTextENG]
NDISPERF = "IPSec VPN Drivers"
[FileConstantsENG]
ProCaption = "Net Firewall Setup" ;This shows as the title of the
; NT Copy Files Dialog
ProCancel = "Cancel" ;This shows on the cancel button?
;This is displayed if the user selects
; Cancel during file copy
ProCancelMsg = "Net Firewall is not correctly installed. "+
"Are you sure you want to cancel copying files?"
ProCancelCap = "Network Setup Message" ;This is shown as the title for any
; pop-ups during install?
ProText1 = "Copying:"
ProText2 = "To:"
FunctionTitle = "Net Firewall" ;Used for caption of dialogs
;Used for description section in NCPA.
ProductSoftwareDescription = "Net Firewall"
;Not sure diff between display name
; and title
ProductSoftwareDisplayName = "Net Firewall"
;This is the name displayed in the NCPA
; for the device, and it is concated
; to the NIC we are bound to for our
; description/title for our network
; card entry
ProductSoftwareTitle = "Net Firewall"
ProductSoftwareGroup = "NDISWAN"
ShellCodeErrorTitle = "Error: "$(FunctionTitle)
ShellCodeErrorText = "Shell Code Error."
[DialogConstantsENG]
Help = "&Help"
Exit = "Cancel"
OK = "OK"
HelpContext = ""
Continue = "Continue"
Cancel = "Cancel"
[FileDependentDlgENG]
GroupLabel = "Optimization:"
Radio1 = "&Minimize Memory Used"
Radio2 = "&Balance"
Radio3 = "M&aximize Throughput && Connections"
DlgType = "Radio"
DlgTemplate = "NBF"
Caption = $(FunctionTitle)
OptionsGreyed = {}
HelpContext = $(!IDH_DB_OEMSETNT_INS)
[ErrorMessages]
szPreviousVersionWarning = "Setup has removed a previous version of the"+
"Net Firewall. A reboot is required before"+
"the new Net Firewall can be added."+
"On the next reboot, the new Net Firewall "+
"will be installed automatically."
szSetupDLLWarning = "Dial-Up Networking setup was unable "+
"to load setupdll.dll in the system32 "+
"directory. Please make sure this file is "+
"present on your computer. Setup will now exit."
szRedoNetworkWarning = "Net Firewall has discovered newly added"+
"or removed adapter(s). It is necessary to redo the network "+
"bindings. The current series of dialog windows will "+
"again be displayed. Don't reboot the system until "+
"the binding process is completed."
szRedoNetworkRASWarning = "Net Firewall has discovered newly added RAS "+
"adapter(s). It is necessary to remove and reinstall "+
"Net Firewall. The current series of dialog windows "+
"will again be displayed to remove Net Firewall. Don't reboot "+
"the system until the binding process is completed. "+
"After the reboot, Net Firewall will be installed automatically."
szPreviouslyInstalledWarning = $(ProductSoftwareTitle)" has recently been "+
"removed. You must reboot before installing "+
"it again."
szWrongVersionWarning = "Net Firewall is only supported for Windows NT"+
" Version 4.0! The current version of Windows NT is unsupported for"+
" Net Firewall."
szWrongServicePackWarning = "Net Firewall is only supported for Windows NT"+
" 4.0 Service Pack 3 or later! The current service pack version"+
" is unsupported for Net Firewall. Please install"+
" Microsoft Windows NT 4.0 Service Pack 3 or later before attempting"+
" to install Net Firewall."
szSelectInterfacesWarning= "Net Firewall installation/configuration failed!"+
" Please check your network configuration and install"+
" again. Note: TCP/IP is required. Your Remote Access Service"+
" and/or your network card must be installed and configured to use"+
" TCP/IP."
szNOTCPIPWarning = "TCP/IP has been removed. Net Firewall"+
" requires TCP/IP and will not function properly"+
" without TCP/IP installed as a protocol. Net Firewall will be"+
" removed. You must re-install Net Firewall after TCP/IP to use the"+
" secure VPN network connection."
szNTRASDisplay = "Remote Access Service with Dial-Up Networking"
;*************************************************************************
;
; SECTION: FixupBindings
;
; PURPOSE: <fixup the bindings after added/deleted some adapters>
;
; ARGUMENTS:
;
; RETURNS: $R0 - 0 if success
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FixupBindings]
Debug-Output "ADVPN: FixupBindings"
read-syms GeneralConstants
read-syms FileConstants
set status = STATUS_SUCCESSFUL
set temp = "temp"
set tcpDisableLinkages = {}
set KeyProduct = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Tcpip\Linkage\Disabled" +
$(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
Debug-Output "ADVPN: Able to open Tcpip\Linkage\Disabled"
GetRegValue $(KeyProduct) Bind tcpDisableLinkage
ifint $(RegLastError) == 0
set tcpDisableLinkages = *($(tcpDisableLinkage),4)
endif
CloseRegKey $(KeyProduct)
endif
set NbfFlag = 0
set NbfHandle = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\Nbf" +
$(!REG_KEY_READ) NbfHandle
Ifstr $(NbfHandle) != $(KeyNull)
Debug-Output "ADVPN: NetBEUI is installed."
set NbfFlag = 1
CloseRegKey $(NbfHandle)
else
set NbfFlag = 0
Debug-Output "ADVPN: NetBEUI is NOT installed."
endif
set NetBTFlag = 0
set NetBTHandle = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetBT" +
$(!REG_KEY_READ) NetBTHandle
ifstr $(NetBTHandle) != $(KeyNull)
Debug-Output "ADVPN: NetBT is installed."
set NetBTFlag = 1
CloseRegKey $(NbfHandle)
else
set NetBTFlag = 0
Debug-Output "ADVPN: NetBT is NOT installed."
endif
set IPXFlag = 0
set IPXHandle = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NwlnkIpx" +
$(!REG_KEY_READ) IPXHandle
ifstr $(IPXHandle) != $(KeyNull)
Debug-Output "ADVPN: IPX is installed."
set IPXFlag = 1
CloseRegKey $(IPXHandle)
else
set IPXFlag = 0
Debug-Output "ADVPN: IPX is NOT installed."
endif
set NbIPXFlag = 0
set NbIPXHandle = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NwlnkNb" +
$(!REG_KEY_READ) NbIPXHandle
ifstr $(NbIPXHandle) != $(KeyNull)
Debug-Output "ADVPN: NbIPX is installed."
set NbIPXFlag = 1
CloseRegKey $(NbIPXHandle)
else
set NbIPXFlag = 0
Debug-Output "ADVPN: NbIPX is NOT installed."
endif
;-----------------------------------------------------------------
; 2001-02-02 Determine if Novell Client is installed
;-----------------------------------------------------------------
set NovellFlag = 0
set NovellHandle = ""
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\NetWareWorkstation" +
$(!REG_KEY_READ) NovellHandle
ifstr $(NovellHandle) != $(KeyNull)
Debug-Output "ADVPN: Novell is installed."
set NovellFlag = 1
CloseRegKey $(NovellHandle)
else
set NovellFlag = 0
Debug-Output "ADVPN: Novell is NOT installed."
endif
OpenRegKey $(!REG_H_LOCAL) "" $(IMLinkageKeyName)"\Disabled" +
$(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
Return CANNOT_FIND_COMPONENT_SERVICE
endif
GetRegValue $(KeyProduct) Bind disableLinkage
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Disabling Linkage."
set disableLinkages = {}
else
set disableLinkages = *($(disableLinkage),4)
endif
CloseRegKey $(KeyProduct)
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) $(MAXIMUM_ALLOWED) +
CardsHandle
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Opening Key for Network Cards."
return STATUS_FAILED
endif
EnumRegKey $(CardsHandle) CardList
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Enumerating Network Cards."
CloseRegKey $(CardsHandle)
return STATUS_FAILED
endif
CloseRegKey $(CardsHandle)
set ImBind = {}
set ImExport = {}
set ImRoute = {}
set TcpBind = {}
set TcpExport = {}
set TcpRoute = {}
set NetBIOSBind = {}
set NetBIOSExport = {}
set NetBIOSRoute = {}
set RasArpBind = {}
set LanmanServerBind = {}
set LanmanServerExport = {}
set LanmanServerRoute = {}
set LanmanWorkstationBind = {}
set LanmanWorkstationExport = {}
set LanmanWorkstationRoute = {}
set NbfBind = {}
set NbfExport = {}
set NbfRoute = {}
set NetBTBind = {}
set NetBTRoute = {}
set NetBTExport = {}
set RemoteAccessBind = {}
set RemoteAccessExport = {}
set RemoteAccessRoute = {}
;-----------------------------------------------------------------
; NetWareWorkstation
;-----------------------------------------------------------------
set NovellBind = {}
set NovellExport = {}
set NovellRoute = {}
set RefCnt = 0
set q = \042\042\042\042\042\042\042\042
ifstr(i) $(!LIBHANDLE) == ""
LoadLibrary "x" setupdll.dll !LIBHANDLE
endif
set compareSize = 0
set compareString = $(ProductSoftwareName)"_NdisWan"
Split-String $(compareString) $(compareString) charList
ForListDo $(charList)
set-add compareSize = $(compareSize),1
EndForListDo
set adapterList = {}
set origAdapterList = {}
set ndiswanList = {}
set ndiswanIPList = {}
set ndiswanIPXList = {}
set tcpipDisableList = {}
;-----------------------------------------------------------------
; Loop through the list of adapters installed.
;-----------------------------------------------------------------
ForListDo $(CardList)
Debug-Output "ADVPN: enumerating the Mircosoft\Windows NT\NetworkCards\xxxx: "$($)
;-----------------------------------------------------------------
; Open the Network cards key
;-----------------------------------------------------------------
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) CardHandle
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Opening Network Cards Key. "$(RegLastError)
return STATUS_FAILED
endif
;-----------------------------------------------------------------
; Read the Service Name
;-----------------------------------------------------------------
GetRegValue $(CardHandle) ServiceName value
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Registry Value for Service Name."$(RegLastError)
CloseRegKey $(CardHandle)
return STATUS_FAILED
endif
;-----------------------------------------------------------------
; Parse the value read from the registry and save it into name
;
; value = {..., ..., ..., ADVPNT_ADAPTERSERVICE}
; name = {ADVPN, ADAPTER}
;-----------------------------------------------------------------
Split-String *($(value),4) "_" name
Debug-Output "ADVPN: ServiceName value from registry for current card is "$(value)
Debug-Output "ADVPN: setting name to "$(name)
;-----------------------------------------------------------------
; Check if it is an adapter with us bound to it
;-----------------------------------------------------------------
ifstr *($(name),1) == $(ProductSoftwareName)
set disable = 0
set currentCard = "\Device\"*($(value),4) ; e.g. \Device\IM_NdisWan4
Debug-Output "ADVPN: this is an adapter we are bound to"
;-----------------------------------------------------------------
; Check to see if this adapter is in the list of disabled adapters
;-----------------------------------------------------------------
ForListDo $(disableLinkages)
ifstr(i) $($) == $(currentCard)
set disable = 1
Debug-Output "ADVPN: found this adapter in the list of disabled adapters"
endif
EndForListDo
;-----------------------------------------------------------------
; If we're not marked as disabled then add the adapter to either
; the ndiswanIPList or (origAdapterList and adapterList)
;-----------------------------------------------------------------
ifint $(disable) == 0
;Compare against NdisWan card name
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp *($(value),4) $(compareString) $(compareSize)
ifint $(Result) == 0
;
;Read the Product Name
;
; GetRegValue $(CardHandle) ProductName ProductValue
; ifint $(RegLastError) != 0
; Debug-Output "ADVPN: Registry Error Getting Product Name."
; CloseRegKey $(CardHandle)
; return STATUS_FAILED
; endif
;
; We should only receive dialoutIp cards, but check again to be sure
;
; Had to remove if check when fixed 720 error
; CCL 5/2000
; ifstr(i) *($(ProductValue),4) == "NdisWanDialOutIP"
set ndiswanIPList = >($(ndiswanIPList),*($(name),3))
Debug-Output "ADVPN: added "*($(name),3)" to ndiswanIpList"
; endif
else
set adapterList = >($(adapterList),*($(value),4))
Debug-Output "ADVPN: added "*($(value),4)" to adapterList"
; Make list with original name for Nbf
set origAdapterList = >($(origAdapterList),*($(name),3))
Debug-Output "ADVPN: added "*($(name),3)" to OrigAdapterList"
endif
else
;-----------------------------------------------------------------
; Scan the tcpDisabledLinkages list for the currentCard,
; if it is found set the disable flag to 2 to indicate that it
; should not be added to the disabled list. Otherwise, add it to
; the tcpDisabledLinkages list
;-----------------------------------------------------------------
ForListDo $(tcpDisableLinkages)
ifstr(i) $($) == $(currentCard)
set disable = 2
Debug-Output "ADVPN: "$(currentCard)" already in the tcpDisableLinkages list"
endif
EndForListDo
ifint $(disable) == 1
set tcpipDisableList = >($(tcpipDisableList),*($(value),4))
Debug-Output "ADVPN: added "*($value,4)" to the tcpDisableLinkages list"
endif
endif
;-----------------------------------------------------------------
; Increment $(RefCnt) counter -- this is recorded in the registry
; later, exactly for is not clear.
;-----------------------------------------------------------------
set-add RefCnt = $(RefCnt), 1
else
;-----------------------------------------------------------------
; Check if it is NdisWanDialinoutIPX or NdisWanDialOut
; if it is, add it to ndiswanlist so that the Nbf bindings get
; added correctly.
;-----------------------------------------------------------------
Debug-Output "ADVPN: we are not bound to this adapter"
;-----------------------------------------------------------------
; Read the Product Name
;-----------------------------------------------------------------
GetRegValue $(CardHandle) ProductName ProductValue
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Product Name: "$(RegLastError)
CloseRegKey $(CardHandle)
return STATUS_FAILED
endif
Debug-Output "ADVPN: the ProductName for the adapter is: "$(ProductValue)
;-----------------------------------------------------------------
; Check if the current adapter is a NdisWanDialinoutIPX or
; NdisWanDialOut type, if it is add it to the ndiswanList
;-----------------------------------------------------------------
ifstr(i) *($(ProductValue),4) == "NdisWanDialinoutIPX"
set ndiswanIPXList = >($(ndiswanList),*($(value),4))
Debug-Output "ADVPN: adapter is NdisWanDialinoutIPX added to the ndiswanList: "*($(value),4)
else-ifstr(i) *($(ProductValue),4) == "NdisWanDialOut"
ifstr(i) *($(ProductValue),4) != "NdisWanDialOutIP"
set ndiswanList = >($(ndiswanList), *($(value),4))
Debug-Output "ADVPN: adapter is NdisWanDialOutIP added to the ndiswanList: "*($(value),4)
endif
else
Debug-Output "ADVPN: this adapter is not NdisWanDialinoutIPX or NdisWanDialOut and is not bound to us"
endif
endif
CloseRegKey $(CardHandle)
EndForListDo
ifstr $(!IM_NDISWAN) == ""
set !IM_NDISWAN = {}
endif
;-----------------------------------------------------------------
; If Novell is installed, setup NetWareWorkstation linkages
;-----------------------------------------------------------------
ifint $(NovellFlag) == 1
Debug-Output "ADVPN: Novell installed, updating linkages"
;-----------------------------------------------------------------
; Setup Tcpip linkages for Novell
;-----------------------------------------------------------------
ForListDo $(adapterList)
Debug-Output "ADVPN: Setting up Tcpip linkages for the Novell adapter "$($)
set tmp = "\Device\Tcpip\"$($)
set NovellBind = >($(NovellBind), $(tmp))
set tmp = "\Device\Nwfs\Tcpip\"$($)
set NovellExport = >($(NovellExport), $(tmp))
set tmp = $(q)"Tcpip"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NovellRoute = >($(NovellRoute), $(tmp))
EndForListDo
;-----------------------------------------------------------------
; Setup IPX linkages for Novell
;-----------------------------------------------------------------
;ForListDo $(adapterList) - novell only uses one adapter for IPX
ifint $(IPXFlag) == 1
Debug-Output "ADVPN: Setting up IPX linkages for the Novell adapter "$($)
set NovellBind = >($(NovellBind) , "\Device\NwlnkIpx" )
set NovellExport = >($(NovellExport), "\Device\Nwfs\NwlnkIpx")
; Novell only puts one route to an adapter for IPX reguardless of the
; number of adapters installed (I don't why, could it be a mistake?)
set tmp = $(q)"NwlnkIpx"$(q)" "$(q)*($(adapterList), 1)$(q)
set NovellRoute = >($(NovellRoute), $(tmp))
endif
;EndForListDo
endif
;
; If IPX is installed, setup IPX parameters
;
ifint $(IPXFlag) == 1
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\NwlnkIpx")
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\NwlnkIpx")
set LanmanServerBind = >($(LanmanServerBind),"\Device\NwlnkIpx")
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\NwlnkIpx")
QueryListSize ListSize $(ndiswanIPXList)
ifint $(ListSize) > 0
ForListDo $(ndiswanIPXList)
set tmp = $(q)"NwlnkIpx"$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
set tmp = $(q)"NwlnkIpx"$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
EndForListDo
else
ForListDo $(origAdapterList)
set ProductValue = ""
set CardToMatch = $($)
ForListDo $(CardList)
;
; Open the Network cards key
;
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) CardHandle
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Opening Network Cards Key."
return STATUS_FAILED
endif
;
;Read the Service Name
;
GetRegValue $(CardHandle) ServiceName value
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Registry Value for Service Name."
CloseRegKey $(CardHandle)
return STATUS_FAILED
endif
Debug-Output "ADVPN: Value is "*($(value),4)
Debug-Output "ADVPN: CardToMatch is "$(CardToMatch)
ifstr *($(value),4) == $(CardToMatch)
;Read the Product Name
;
Debug-Output "ADVPN: Match found, reading ProductName"
GetRegValue $(CardHandle) ProductName ProductValue
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Product Name."
CloseRegKey $(CardHandle)
return STATUS_FAILED
endif
endif
CloseRegKey $(CardHandle)
EndForListDo
set tmp = $(q)"NwlnkIpx"$(q)" "$(q)*($(ProductValue),4)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
set tmp = $(q)"NwlnkIpx"$(q)" "$(q)*($(ProductValue),4)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
EndForListDo
endif
endif
;
; If NbIPX is installed, setup NbIPX parameters
;
ifint $(NbIPXFlag) == 1
set LanmanServerBind = >($(LanmanServerBind),"\Device\NwlnkNb")
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\NwlnkNb")
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\NwlnkNb")
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\NwlnkNb")
set NetBIOSBind = >($(NetBIOSBind),"\Device\NwlnkNb")
set NetBIOSExport = >($(NetBIOSExport),"\Device\NetBios\NwlnkNb")
set tmp = $(q)"NwlnkNb"$(q)" "$(q)"NwlnkIpx"$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)"NwlnkNb"$(q)" "$(q)"NwlnkIpx"$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
set tmp = $(q)"NwlnkNb"$(q)" "$(q)"NwlnkIpx"$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
endif
;
; ndiswan list should only contain original NdisWanDialOut Cards, not any of our cards
;
Debug-Output "ADVPN: ndiswanList is "$(ndiswanList)
ifint $(NbfFlag) == 1
ForListDo $(ndiswanList)
set NbfBind = >($(NbfBind), "\Device\"$($))
set NbfExport = >($(NbfExport),"\Device\Nbf_"$($))
set NetBIOSBind = >($(NetBIOSBind),"\Device\Nbf_"$($))
set NetBIOSExport = >($(NetBIOSExport),"\Device\Netbios\Nbf_"$($))
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\Nbf_"$($))
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\Nbf_"$($))
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\Nbf_"$($))
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\Nbf_"$($))
set LanmanServerBind = >($(LanmanServerBind),"\Device\Nbf_"$($))
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\Nbf_"$($))
set tmp = $(q)"Nbf"$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)$($)$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)$($)$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
set tmp = $(q)$($)$(q)
set NbfRoute = >($(NbfRoute), $(tmp))
EndForListDo
endif
;
; origAdapter list should only contain original Cards, not any of our cards
; Form Card# = ProductInfo i.e. IBMTOK41=IBMTOK4
;
ifint $(NbfFlag) == 1
Debug-Output "ADVPN: origAdapterList is "$(origAdapterList)
ForListDo $(origAdapterList)
set ProductValue = ""
set CardToMatch = $($)
Debug-Output "ADVPN: Card List is "$(CardList)
ForListDo $(CardList)
;
; Open the Network cards key
;
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) CardHandle
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Opening Network Cards Key."
return STATUS_FAILED
endif
;
;Read the Service Name
;
GetRegValue $(CardHandle) ServiceName value
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Registry Value for Service Name."
CloseRegKey $(CardHandle)
return STATUS_FAILED
endif
Debug-Output "ADVPN: Value is "*($(value),4)
Debug-Output "ADVPN: CardToMatch is "$(CardToMatch)
ifstr *($(value),4) == $(CardToMatch)
;Read the Product Name
;
Debug-Output "ADVPN: Match found, reading ProductName"
GetRegValue $(CardHandle) ProductName ProductValue
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Registry Error Getting Product Name."
CloseRegKey $(CardHandle)
return STATUS_FAILED
endif
endif
CloseRegKey $(CardHandle)
EndForListDo
Debug-Output "ADVPN: Product Value is "$(ProductValue)
ifstr $(ProductValue) == ""
Debug-Output "ADVPN: Product Name Undefined."
return STATUS_FAILED
endif
set NbfBind = >($(NbfBind), "\Device\"$($))
set NbfExport = >($(NbfExport),"\Device\Nbf_"$($))
set NetBIOSBind = >($(NetBIOSBind),"\Device\Nbf_"$($))
set NetBIOSExport = >($(NetBIOSExport),"\Device\Netbios\Nbf_"$($))
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\Nbf_"$($))
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\Nbf_"$($))
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\Nbf_"$($))
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\Nbf_"$($))
set LanmanServerBind = >($(LanmanServerBind),"\Device\Nbf_"$($))
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\Nbf_"$($))
set tmp = $(q)"Nbf"$(q)" "$(q)*($(ProductValue),4)$(q)" "$(q)$($)$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)*($(ProductValue),4)$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)*($(ProductValue),4)$(q)" "$(q)$($)$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)*($(ProductValue),4)$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)*($(ProductValue),4)$(q)" "$(q)$($)$(q)
set NbfRoute = >($(NbfRoute), $(tmp))
EndForListDo
endif
;
; For NdisWan type cards, Nbf_ bindings only occur to NdisWanDialOut type
; NetBT_ bindings only occur to NdisWanDialOutIP type
; NdisWanDialOut types also shouldn't update TCP/IP Bind types
;
Debug-Output "ADVPN: IM_NDISWAN is "$(!IM_NDISWAN)
ForListDo $(!IM_NDISWAN)
; set currentCard = $(ProductSoftwareName)"_"$($)
set currentCard = $($)
Debug-Output "ADVPN: ndiswanIPList is "$(ndiswanIPList)
ForListDo $(ndiswanIPList)
ifstr $(currentCard) == $($)
set ImBind = >($(ImBind), "\Device\"$(ProductSoftwareName)"_"$($))
set ImExport = >($(ImExport), "\Device\"$(ProductSoftwareName)"_"$($))
set ImRoute = >($(ImRoute), $(q)$(ProductSoftwareName)"_"$($)$(q))
set TcpBind = >($(TcpBind), "\Device\"$(ProductSoftwareName)"_"$($))
set TcpExport = >($(TcpExport), "\Device\Tcpip\"$(ProductSoftwareName)"_"$($))
set RasArpBind = >($(RasArpBind),"\Device\"$(ProductSoftwareName)" "$($))
ifint $(NetBTFlag) == 1
set NetBTBind = >($(NetBTBind), "\Device\"$($))
set NetBTExport = >($(NetBTExport),"\Device\NetBT_"$($))
set tmp = $(q)$($)$(q)
set NetBTRoute = >($(NetBTRoute), $(tmp))
set NetBIOSBind = >($(NetBIOSBind),"\Device\NetBT_"$($))
set NetBIOSExport = >($(NetBIOSExport),"\Device\Netbios\NetBT_"$($))
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\NetBT_"$($))
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\NetBT_"$($))
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\NetBT_"$($))
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\NetBT_"$($))
set LanmanServerBind = >($(LanmanServerBind),"\Device\NetBT_"$($))
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\NetBT_"$($))
set tmp = $(q)"NetBT"$(q)" "$(q)$($)$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$($)$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
endif
set tmp = $(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set TcpRoute = >($(TcpRoute), $(tmp))
endif
EndForListDo
EndForListDo
fixupBindings_cont = +
;
; Regular full NIC cards support bindings to both Nbf and NetBT
; Although, Nbf should go directly to NIC, since that is NetBEUI traffic
; and not IP traffic, taken care of with origAdapterList
;
Debug-Output "ADVPN: adapterList is "$(adapterList)
ForListDo $(adapterList)
set ImBind = >($(ImBind), "\Device\"$($))
set ImExport = >($(ImExport), "\Device\"$($))
set ImRoute = >($(ImRoute), $(q)$($)$(q))
set TcpBind = >($(TcpBind), "\Device\"$($))
set TcpExport = >($(TcpExport), "\Device\Tcpip\"$($))
ifint $(NetBTFlag) == 1
set NetBTBind = >($(NetBTBind), "\Device\"$($))
set NetBTExport = >($(NetBTExport),"\Device\NetBT_"$($))
set tmp = $(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NetBTRoute = >($(NetBTRoute), $(tmp))
set NetBIOSBind = >($(NetBIOSBind),"\Device\NetBT_"$($))
set NetBIOSExport = >($(NetBIOSExport),"\Device\Netbios\NetBT_"$($))
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\NetBT_"$($))
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\NetBT_"$($))
set LanmanServerBind = >($(LanmanServerBind),"\Device\NetBT_"$($))
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\NetBT_"$($))
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\NetBT_"$($))
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\NetBT_"$($))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
endif
set tmp = $(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set TcpRoute = >($(TcpRoute), $(tmp))
EndForListDo
Debug-Output "ADVPN: tcpipDisableList is "$(tcpipdisableList)
ForListDo $(tcpipDisableList)
set TcpBind = >($(TcpBind), "\Device\"$($))
set TcpExport = >($(TcpExport), "\Device\Tcpip\"$($))
ifint $(NetBTFlag) == 1
set NetBTBind = >($(NetBTBind), "\Device\"$($))
set NetBTExport = >($(NetBTExport),"\Device\NetBT_"$($))
set tmp = $(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NetBTRoute = >($(NetBTRoute), $(tmp))
set NetBIOSBind = >($(NetBIOSBind),"\Device\NetBT_"$($))
set NetBIOSExport = >($(NetBIOSExport),"\Device\Netbios\NetBT_"$($))
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\NetBT_"$($))
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\NetBT_"$($))
set LanmanServerBind = >($(LanmanServerBind),"\Device\NetBT_"$($))
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\NetBT_"$($))
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\NetBT_"$($))
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\NetBT_"$($))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)"NetBT"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
endif
ifint $(NbfFlag) == 1
set NbfBind = >($(NbfBind), "\Device\"$($))
set NbfExport = >($(NbfExport),"\Device\Nbf_"$($))
set NetBIOSBind = >($(NetBIOSBind),"\Device\Nbf_"$($))
set NetBIOSExport = >($(NetBIOSExport),"\Device\Netbios\Nbf_"$($))
set LanmanWorkstationBind = >($(LanmanWorkstationBind),"\Device\Nbf_"$($))
set LanmanWorkstationExport = >($(LanmanWorkstationExport),+
"\Device\LanmanWorkstation\Nbf_"$($))
set LanmanServerBind = >($(LanmanServerBind),"\Device\Nbf_"$($))
set LanmanServerExport = >($(LanmanServerExport),+
"\Device\LanmanServer\Nbf_"$($))
set RemoteAccessBind = >($(RemoteAccessBind),"\Device\Nbf_"$($))
set RemoteAccessExport = >($(RemoteAccessExport),"\Device\RasServer\Nbf_"$($))
set tmp = $(q)"Nbf"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NetBIOSRoute = >($(NetBIOSRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set LanmanWorkstationRoute = >($(LanmanWorkstationRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set LanmanServerRoute = >($(LanmanServerRoute), $(tmp))
set tmp = $(q)"Nbf"$(q)" "$(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set RemoteAccessRoute = >($(RemoteAccessRoute), $(tmp))
set tmp = $(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set NbfRoute = >($(NbfRoute), $(tmp))
endif
set tmp = $(q)$(ProductSoftwareName)$(q)" "$(q)$($)$(q)
set TcpRoute = >($(TcpRoute), $(tmp))
EndForListDo
OpenRegKey $(!REG_H_LOCAL) "" $(IMServiceKeyName) $(MAXIMUM_ALLOWED) +
IMHandle
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Error Opening Service Key"
return STATUS_FAILED
endif
fixupBindings_CreateTempKey = +
CreateRegKey $(IMHandle) {$(temp),$(NoTitle),GenericClass} "" +
$(MAXIMUM_ALLOWED) "" TempHandle
ifint $(RegLastError) == 1011 ; key already exist
Debug-Output "ADVPN: Key already exists."
DeleteRegTree $(IMHandle) $(temp)
goto fixupBindings_CreateTempKey
else-ifint $(RegLastError) != 0
Debug-Output "ADVPN: Error creating Key (3)"
CloseRegKey $(IMHandle)
return STATUS_FAILED
endif
;
;Update ADVPNNT Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(ImBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(ImExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(ImRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),$(IMServiceKeyName),+
Linkage,$(NoTitle),GenericClass,FORCE
;
;Update TCP/IP Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TcpBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TcpExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(TcpRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\Tcpip",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update Novell Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NovellBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NovellExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NovellRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\NetWareWorkstation",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update NetBT Linkage
;
ifint $(NetBTFlag) == 1
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBTBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBTExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBTRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\NetBT",Linkage,$(NoTitle),+
GenericClass,FORCE
endif
;
;Update LanmanWorkstation Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(LanmanWorkstationBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(LanmanWorkstationExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(LanmanWorkstationRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\LanmanWorkstation",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update LanmanServer Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(LanmanServerBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(LanmanServerExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(LanmanServerRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\LanmanServer",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update RemoteAccess Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(RemoteAccessBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(RemoteAccessExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(RemoteAccessRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\RemoteAccess",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update NetBIOS Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBIOSBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBIOSExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBIOSRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\NetBIOS",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update NetBIOSInformation Linkage
;
set-subst NewValueList = {+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NetBIOSRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
DeleteRegValue $(TempHandle) "Bind"
DeleteRegValue $(TempHandle) "Export"
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\NetBIOSInformation",Parameters,$(NoTitle),+
GenericClass,FORCE
;
;Update RasArp Linkage
;
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(RasArpBind)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
DeleteRegValue $(TempHandle) "Route"
DeleteRegValue $(TempHandle) "Export"
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\RasArp",Linkage,$(NoTitle),+
GenericClass,FORCE
;
;Update Nbf Linkage
;
ifint $(NbfFlag) == 1
set-subst NewValueList = {+
{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NbfBind)},+
{Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NbfExport)},+
{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(NbfRoute)}}
Shell $(UtilityInf) AddValueList $(TempHandle) $(NewValueList)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Ifstr(i) $($R0) != NO_ERROR
set status = STATUS_FAILED
goto fixupBindings_exit
Endif
Shell "",CopyRegTree,$(IMServiceKeyName)"\"$(temp),+
$(!NTN_ServiceBase)"\Nbf",Linkage,$(NoTitle),+
GenericClass,FORCE
endif
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) SoftKey
Ifstr $(SoftKey) != $(KeyNull)
SetRegValue $(SoftKey) {RefCount,$(NoTitle),$(!REG_VT_DWORD),$(RefCnt)}
CloseRegKey $(SoftKey)
endif
fixupBindings_exit = +
DeleteRegTree $(IMHandle) $(temp)
CloseRegKey $(IMHandle)
CloseRegKey $(TempHandle)
return $(status)
;*************************************************************************
;
; SECTION: GetImSampPath
;
; PURPOSE: <Get the ImSamp path>
;
; ARGUMENTS:
;
; RETURNS: $R0 - STATUS_SUCCESSFUL/STATUS_FAILED
; $R1 - ImSamp path
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[GetImSampPath]
Debug-Output "ADVPN: GetImSampPath"
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(IMSoftwareKey)"TCPIP" +
$(MAXIMUM_ALLOWED) KeySoftware
Ifstr $(KeySoftware) != $(KeyNull)
GetRegValue $(KeySoftware) Path value
ifint $(RegLastError) == 0
CloseRegKey $(KeySoftware)
return STATUS_SUCCESSFUL, *($(value),4)
endif
CloseRegKey $(KeySoftware)
endif
Debug-Output "ADVPN:GetImSampPath returning FAILED"
return STATUS_FAILED
;*************************************************************************
;
; SECTION: ReplaceText
;
; PURPOSE: <Replace string1 with string2 in text>
;
; ARGUMENTS: $0 - text
; $1 - string1
; $2 - string2
;
; RETURNS: $R0 - STATUS_SUCCESSFUL/STATUS_FAILED
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[ReplaceText]
Debug-Output "ADVPN: ReplaceText - Text "$(0)
Debug-Output "ADVPN: ReplaceText - String 1 "$(1)
Debug-Output "ADVPN: ReplaceText - String 2 "$(2)
read-syms GeneralConstants
read-syms FileConstants
Shell "" GetImSampPath
ifstr $($R0) != STATUS_SUCCESSFUL
Debug-Output "ADVPN: GetImSampPath was unsuccessful"
return $($R0)
endif
ifstr(i) $(!myLIBHANDLE) == ""
LoadLibrary "x" $($R1)"\wgagent.dll" !myLIBHANDLE
endif
LibraryProcedure Result $(!myLIBHANDLE),ReplaceTxt,$($0),$($1),$($2)
;FreeLibrary $(myLIBHANDLE)
ifint *($(Result),1) == 0
return STATUS_SUCCESSFUL, *($(Result),2)
else
return STATUS_FAILED
endif
;*************************************************************************
;
; SECTION: FindNetworkCardProductName
;
; PURPOSE: <Find network card's product name from the service name
;
; ARGUMENTS: $0 - service name
;
; RETURNS: $R0 - STATUS_SUCCESSFUL/STATUS_FAILED
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FindNetworkCardProductName]
Debug-Output "ADVPN: FindNetworkCardProductName - Service name = "$($0)
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) $(MAXIMUM_ALLOWED) +
KeyHandle
Ifstr $(KeyHandle) != $(KeyNull)
EnumRegKey $(KeyHandle) KeyList
ifint $(RegLastError) == 0
ForListDo $(KeyList)
OpenRegKey $(!REG_H_LOCAL) "" +
$(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
GetRegValue $(kHandle) ServiceName value
ifint $(RegLastError) == 0
ifstr *($(value),4) == $($0)
GetRegValue $(kHandle) ProductName value
ifint $(RegLastError) == 0
CloseRegKey $(kHandle)
CloseRegKey $(KeyHandle)
return STATUS_SUCCESSFUL, *($(value),4)
endif
endif
endif
CloseRegKey $(kHandle)
endif
EndForListDo
endif
CloseRegKey $(KeyHandle)
endif
return STATUS_FAILED
;*************************************************************************
;
; SECTION: FixupBindingsAfterRemove
;
; PURPOSE: <fixup the bindings after IM is removed
;
; ARGUMENTS: $0 - service bindings to fixup
;
; RETURNS: $R0 - 0 if success
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FixupBindingsAfterRemove]
Debug-Output "ADVPN: FixupBindingsAfterRemove"
read-syms GeneralConstants
read-syms FileConstants
set status = STATUS_SUCCESSFUL
OpenRegKey $(!REG_H_LOCAL) "" $($0) $(MAXIMUM_ALLOWED) TcpHandle
Ifstr $(TcpHandle) == $(KeyNull)
return STATUS_FAILED
endif
set routeList = {}
GetRegValue $(TcpHandle) Bind value
ifint $(RegLastError) == 0
set list = {}
ForListDo *($(value),4)
Shell "" ReplaceText $($) $(ProductSoftwareName)"_" ""
ifstr $($R0) == STATUS_SUCCESSFUL
set list = >($(list),$($R1))
Split-String $($R1) "\" temp
set routeList = >($(routeList),*($(temp),4))
endif
EndForListDo
ifstr $(list) != {}
set NewValue = {Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(list)}
SetRegValue $(TcpHandle) $(NewValue)
endif
endif
GetRegValue $(TcpHandle) Export value
ifint $(RegLastError) == 0
set list = {}
ForListDo *($(value),4)
Shell "" ReplaceText $($) $(ProductSoftwareName)"_" ""
ifstr $($R0) == STATUS_SUCCESSFUL
set list = >($(list),$($R1))
endif
EndForListDo
ifstr $(list) != {}
set NewValue = {Export,$(NoTitle),$(!REG_VT_MULTI_SZ),$(list)}
SetRegValue $(TcpHandle) $(NewValue)
endif
endif
set route = {}
set q = \042\042\042\042\042\042\042\042
ForListDo $(routeList)
Shell "" FindNetworkCardProductName $($)
ifstr $($R0) == STATUS_SUCCESSFUL
set temp = $(q)$($R1)$(q)" "$(q)$($)$(q)
set route = >($(route), $(temp))
endif
EndForListDo
ifstr $(route) != {}
set-subst NewValue = {{Route,$(NoTitle),$(!REG_VT_MULTI_SZ),$(route)}}
Shell $(UtilityInf) AddValueList $(TcpHandle) $(NewValue)
endif
CloseRegKey $(TcpHandle)
return STATUS_SUCCESSFUL
;*************************************************************************
;
; SECTION: FixupAdaptersAfterRemove
;
; PURPOSE: <fixup the adapters after IM is removed
;
; ARGUMENTS:
;
; RETURNS: $R0 - 0 if success
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FixupAdaptersAfterRemove]
Debug-Output "ADVPN: FixupAdaptersAfterRemove"
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) $(MAXIMUM_ALLOWED) +
KeyHandle
Ifstr $(KeyHandle) != $(KeyNull)
EnumRegKey $(KeyHandle) KeyList
ifint $(RegLastError) == 0
ForListDo $(KeyList)
set deleteSrcKey = NO
set oldInstance = *($($),1)
set srcKey = $(NetworkCardsKeyName)"\"$(oldInstance)
OpenRegKey $(!REG_H_LOCAL) "" $(srcKey) +
$(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
GetRegValue $(kHandle) ProductName product
ifint $(RegLastError) == 0
GetRegValue $(kHandle) ServiceName service
ifint $(RegLastError) == 0
set productStr = *($(product),4)
set serviceStr = *($(service),4)
Split-String $(productStr) $(productStr) product
Split-String $(serviceStr) $(serviceStr) service
QueryListSize productSize $(product)
QueryListSize serviceSize $(service)
ifint $(serviceSize) > $(productSize)
set count = 0
set instance = 0
ForListDo $(service)
set-add count = $(count),1
ifint $(count) > $(productSize)
set-mul instance = $(instance),10
set-add instance = $(instance),$($)
endif
EndForListDo
ifint $(oldInstance) != $(instance)
Shell "",CopyRegTree,$(srcKey),+
$(NetworkCardsKeyName),$(instance),+
$(NoTitle),GenericClass,FORCE
Ifint $($ShellCode) == $(!SHELL_CODE_OK)
Ifstr $($R0) == STATUS_SUCCESSFUL
set deleteSrcKey = YES
endif
endif
endif
endif
endif
endif
CloseRegKey $(kHandle)
ifstr $(deleteSrcKey) == YES
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) +
$(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
DeleteRegTree $(kHandle) $(oldInstance)
CloseRegKey $(kHandle)
endif
endif
endif
EndForListDo
endif
Endif
return STATUS_SUCCESSFUL
;*************************************************************************
;
; SECTION: FixupTransportsAfterRemove
;
; PURPOSE: <fixup the transports after IM is removed
; Removes the additional NetBT adapters created for the
; advpn drivers.
;
; ARGUMENTS:
;
; RETURNS: $R0 - 0 if success
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FixupTransportsAfterRemove]
Debug-Output "ADVPN: FixupTransportsAfterRemove"
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(NetBTServiceKey) +
$(MAXIMUM_ALLOWED) Transport
Ifstr $(Transport) == $(KeyNull)
return STATUS_FAILED
endif
EnumRegKey $(Transport) CardList
ifint $(RegLastError) != 0
CloseRegKey $(Transport)
return STATUS_FAILED
endif
ForListDo $(CardList)
set source = *($($),1)
Split-String $(source) "_" name
ifstr *($(name),1) == $(ProductSoftwareName)
Debug-Output $(name)
ifstr *($(name),2) == "_"
set card = ""
ForListDo $(name)
ifint $(#) > 2
set card = $(card)$($)
endif
EndForListDo
Shell "",CopyRegTree,$(NetBTServiceKey)"\"$(source),+
$(NetBTServiceKey),$(card),+
$(NoTitle),GenericClass,FORCE
DeleteRegTree $(Transport) $(source)
endif
endif
EndForListDo
CloseRegKey $(Transport)
return STATUS_SUCCESSFUL
;*************************************************************************
;
; SECTION: FixupServicesAfterRemove
;
; PURPOSE: <fixup the services after IM is removed
;
; ARGUMENTS:
;
; RETURNS: $R0 - 0 if success
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FixupServicesAfterRemove]
Debug-Output "ADVPN: FixupServicesAfterRemove"
read-syms GeneralConstants
read-syms FileConstants
ForListDo $(FixupServices)
OpenRegKey $(!REG_H_LOCAL) "" $($) $(MAXIMUM_ALLOWED) Service
Ifstr $(Service) != $(KeyNull)
GetRegValue $(Service) Bind value
ifint $(RegLastError) == 0
set outValue = {}
ForListDo *($(value),4)
Split-String $($) "\_" name
ifstr *($(name),6) != $(ProductSoftwareName)
set outValue = >($(outValue), $($))
else
set out = ""
ForListDo $(name)
ifint $(#) != 6
ifint $(#) != 7
set out = $(out)$($)
endif
endif
EndForListDo
set outValue = >($(outValue), $(out))
endif
EndForListDo
set value = {{Bind,$(NoTitle),$(!REG_VT_MULTI_SZ),$(outValue)}}
Shell $(UtilityInf), AddValueList, $(Service), $(value)
endif
GetRegValue $(Service) Export value
ifint $(RegLastError) == 0
set outValue = {}
ForListDo *($(value),4)
Split-String $($) "\_" name
ifstr *($(name),8) != $(ProductSoftwareName)
set outValue = >($(outValue), $($))
else
set out = ""
ForListDo $(name)
ifint $(#) != 8
ifint $(#) != 9
set out = $(out)$($)
endif
endif
EndForListDo
set outValue = >($(outValue), $(out))
endif
EndForListDo
set value = {{Export,$(NoTitle),+
$(!REG_VT_MULTI_SZ),$(outValue)}}
Shell $(UtilityInf), AddValueList, $(Service), $(value)
endif
GetRegValue $(Service) Route value
ifint $(RegLastError) == 0
set outValue = {}
set q = \042\042\042\042\042\042\042\042
set-subst quote = "\042"
ForListDo *($(value),4)
Shell "" ReplaceText $($), $(quote), ""
ifstr $($R0) == STATUS_SUCCESSFUL
Split-String $($R1) " " name
Split-String *($(name),3) "_" product
ifstr *($(product),1) != $(ProductSoftwareName)
set out = ""
ForListDo $(name)
ifstr $($) == " "
set out = $(out)$($)
else
set out = $(out)$(q)$($)$(q)
endif
EndForListDo
Shell "" ReplaceText $(out), $(quote), ""
set outValue = >($(outValue), $($R1))
else
set serviceName = ""
ForListDo $(product)
ifint $(#) > 2
set serviceName = $(serviceName)$($)
endif
EndForListDo
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
$(serviceName) "NdisWan" 7
ifint $(Result) == 0
set out = $(q)*($(name),1)$(q)" "+
$(q)$(serviceName)$(q)
set outValue = >($(outValue), $(out))
else
Shell "" FindNetworkCardProductName +
$(serviceName)
ifstr $($R0) == STATUS_SUCCESSFUL
set out = $(q)*($(name),1)$(q)" "+
$(q)$($R1)$(q)" "+
$(q)$(serviceName)$(q)
set outValue = >($(outValue), $(out))
endif
endif
endif
endif
EndForListDo
set-subst value = {{Route,$(NoTitle),+
$(!REG_VT_MULTI_SZ),$(outValue)}}
Shell $(UtilityInf), AddValueList, $(Service), $(value)
endif
endif
EndForListDo
return STATUS_SUCCESSFUL
;*************************************************************************
;
; SECTION: NdisWanSupport
;
; PURPOSE: Support NdisWan adapters
;
; ARGUMENTS:
;
; RETURNS: $R0 - 0 for yes, 1 for no
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[NdisWanSupport]
Debug-Output "ADVPN: NdisWanSupport"
read-syms FileConstants
return $(NoNdisWanSupport)
;*************************************************************************
;
; SECTION: GetNtVersion
;
; PURPOSE: Get Windows NT Version
;
; ARGUMENTS:
;
; RETURNS: $R0 - NT version or return code
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[GetNtVersion]
ifstr $(!IM_NT_VERSION) != ""
return $(!IM_NT_VERSION)
endif
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(NtCurrentVersion) $(MAXIMUM_ALLOWED) Handle
ifint $(RegLastError) != 0
return STATUS_FAILED
endif
GetRegValue $(Handle) CurrentVersion value
ifint $(RegLastError) != 0
CloseRegKey $(Handle)
return STATUS_FAILED
endif
CloseRegKey $(Handle)
set !IM_NT_VERSION = *($(value),4)
return $(!IM_NT_VERSION)
;*************************************************************************
;
; SECTION: GetNtServicePack
;
; PURPOSE: Get Windows NT Service Pack
;
; ARGUMENTS:
;
; RETURNS: $R0 - NT service pack
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[GetNtServicePack]
Debug-Output "ADVPN: GetNtServicePack"
ifstr $(!IM_NT_SERVICE_PACK) != ""
Debug-Output "ADVPN: Service Pack already set to "$(!IM_NT_SERVICE_PACK)
return $(!IM_NT_SERVICE_PACK)
endif
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(NtCurrentVersion) $(MAXIMUM_ALLOWED) Handle
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Couldn't open Current Version Key"
return 0
endif
GetRegValue $(Handle) $(NtCurrentSP) value
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Couldn't open Current SP"
CloseRegKey $(Handle)
return 0
endif
CloseRegKey $(Handle)
Debug-Output "ADVPN: Read Value of "$(value)
Split-String *($(value),4) " " spvalue
Debug-Output "ADVPN: Split_string Value of "$(spvalue)
set !IM_NT_SERVICE_PACK = *($(spvalue),5)
Debug-Output "ADVPN: Service Pack Version is "$(!IM_NT_SERVICE_PACK)
return $(!IM_NT_SERVICE_PACK)
;*************************************************************************
;
; SECTION: CopyRegTree
;
; PURPOSE: <duplicate registry tree>
;
; ARGUMENTS: $0 - Source Tree
; $1 - Destination Base
; $2 - Destination Key Name
; $3 - Destination Key Index
; $4 - Destination Key Class
; $5 - FORCE overwrite or not
;
; RETURNS: $R0 - 0 if success
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[CopyRegTree]
Debug-Output "ADVPN: CopyRegTree"
read-syms GeneralConstants
read-syms FileConstants
Shell "" GetImSampPath
ifstr $($R0) != STATUS_SUCCESSFUL
goto previous_CopyRegTree
endif
ifstr(i) $(!myLIBHANDLE) == ""
LoadLibrary "x" $($R1)"\wgagent.dll" !myLIBHANDLE
endif
LibraryProcedure Result $(!myLIBHANDLE),CopyRegTree,$($0),$($1),$($2),+
$($3),$($4),$($5)
;FreeLibrary $(myLIBHANDLE)
ifint *($(Result),1) == 0
return STATUS_SUCCESSFUL
else
return STATUS_FAILED
endif
previous_CopyRegTree = +
Shell "" GetNtVersion
new_CopyRegTree = +
OpenRegKey $(!REG_H_LOCAL) "" $($0) $(MAXIMUM_ALLOWED) srcHandle
ifint $(RegLastError) != 0
return STATUS_FAILED
endif
OpenRegKey $(!REG_H_LOCAL) "" $($1) $(MAXIMUM_ALLOWED) dstHandle
ifint $(RegLastError) != 0
CloseRegKey $(srcHandle)
return STATUS_FAILED
endif
CreateRegKey $(dstHandle) {$($2),$($3),$($4)} "" $(MAXIMUM_ALLOWED) "" dst
ifint $(RegLastError) == 0
CloseRegKey $(dstHandle)
else-ifint $(RegLastError) == 1011 ; key already exist
CloseRegKey $(dstHandle)
OpenRegKey $(!REG_H_LOCAL) "" $($1)"\"$($2) $(MAXIMUM_ALLOWED) dst
ifint $(RegLastError) != 0
CloseRegKey $(srcHandle)
return STATUS_FAILED
endif
else
CloseRegKey $(dstHandle)
CloseRegKey $(srcHandle)
return STATUS_FAILED
endif
LibraryProcedure CopyResult $(!NCPA_HANDLE),RegCopyTree,$(srcHandle),$(dst)
Set CopyError = *($(CopyResult),1)
CloseRegKey $(srcHandle)
CloseRegKey $(dst)
Ifint $(CopyError) != 0
return STATUS_FAILED
endif
return STATUS_SUCCESSFUL
;
; Old CopyRegTree routine. There is limitation/bug in EnumRegValue in that
; it can't always read all the registry values. The library procedure in
; NCPA don't seem to have this problem!
;
old_CopyRegTree = +
; Shell $(subroutineinf) SetupMessage,$(!STF_LANGUAGE), "NONFATAL", +
; $($0)" "$($1)" "$($2)" "$($3)" "$($4)
OpenRegKey $(!REG_H_LOCAL) "" $($0) $(MAXIMUM_ALLOWED) KeyHandle
ifint $(RegLastError) != 0
goto error_copyTree
endif
EnumRegValue $(KeyHandle) ValueList
; ifint $(RegLastError) != 0
; CloseRegKey $(KeyHandle)
; goto error_copyTree
; endif
EnumRegKey $(KeyHandle) KeyList
ifint $(RegLastError) != 0
CloseRegKey $(KeyHandle)
goto error_copyTree
endif
CloseRegKey $(KeyHandle)
OpenRegKey $(!REG_H_LOCAL) "" $($1) $(MAXIMUM_ALLOWED) KeyHandle
ifint $(RegLastError) != 0
goto error_copyTree
endif
set NewKey = {$($2),$($3),$($4)}
; Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(NewKey)
CreateRegKey $(KeyHandle) $(NewKey) "" $(MAXIMUM_ALLOWED) "" +
NewKeyHandle
ifint $(RegLastError) == 0
CloseRegKey $(KeyHandle)
goto addValueList_copyTree
else-ifint $(RegLastError) == 1011 ; key already exist
CloseRegKey $(KeyHandle)
goto openRegKey_copyTree
else
CloseRegKey $(KeyHandle)
goto error_copyTree
endif
openRegKey_copyTree = +
OpenRegKey $(!REG_H_LOCAL) "" $($1)"\"$($2) $(MAXIMUM_ALLOWED) +
NewKeyHandle
ifint $(RegLastError) != 0
goto error_copyTree
endif
addValueList_copyTree = +
ifstr $(ValueList) != ""
ForListDo $(ValueList)
ifstr $($5) == FORCE
SetRegValue $(NewKeyHandle) $($)
else
GetRegValue $(NewKeyHandle) *($($),1) value
ifint $(RegLastError) != 0
SetRegValue $(NewKeyHandle) $($)
endif
endif
EndForListDo
endif
CloseRegKey $(NewKeyHandle)
ForListDo $(KeyList)
set NewKey = *($($),1)
Shell "",CopyRegTree,$($0)"\"$(NewKey),$($1)"\"$($2),$(NewKey),+
*($($),2),*($($),3),$($5)
ifint $($ShellCode) != $(!SHELL_CODE_OK)
goto error_copyTree
endif
ifstr $($R0) != STATUS_SUCCESSFUL
goto error_copyTree
endif
EndForListDo
return STATUS_SUCCESSFUL
error_copyTree = +
; Shell $(subroutineinf) SetupMessage,$(!STF_LANGUAGE),"NONFATAL",errCopyTree
OpenRegKey $(!REG_H_LOCAL) "" $($1) $(MAXIMUM_ALLOWED) KeyHandle
ifint $(RegLastError) == 0
DeleteRegTree $(KeyHandle) $($2)
endif
CloseRegKey $(KeyHandle)
return STATUS_FAILED
;*************************************************************************
;
; SECTION: RemoveIMServices
;
; PURPOSE: <remove IM services>
;
; ARGUMENTS:
;
; RETURNS:
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[RemoveIMServices]
Debug-Output "ADVPN: RemoveIMServices"
read-syms GeneralConstants
read-syms FileConstants
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) $(MAXIMUM_ALLOWED) +
KeyHandle
Ifstr $(KeyHandle) != $(KeyNull)
EnumRegKey $(KeyHandle) KeyList
Ifint $(RegLastError) == 0
ForListDo $(KeyList)
Split-String *($($),1) "_" KeyCheck
ifstr *($(KeyCheck),1) == $(ProductSoftwareName)
Debug-Output $(KeyCheck)
ifstr *($(KeyCheck),2) == "_"
Debug-Output *($($),1)
DeleteRegTree $(KeyHandle) *($($),1)
endif
endif
EndForListDo
Endif
CloseRegKey $(KeyHandle)
endif
return
;*************************************************************************
;
; SECTION: RemoveIMCards
;
; PURPOSE: <remove IM cards>
;
; ARGUMENTS: $0 - if "UNWANTED" then only remove unused IM cards
;
; RETURNS: $R0 - STATUS_SUCCESSFUL or STATUS_REBIND
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[RemoveIMCards]
Debug-Output "ADVPN: RemoveIMCards"
read-syms GeneralConstants
read-syms FileConstants
set status = STATUS_SUCCESSFUL
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) $(MAXIMUM_ALLOWED) +
KeyHandle
Ifstr $(KeyHandle) != $(KeyNull)
EnumRegKey $(KeyHandle) KeyList
ifint $(RegLastError) == 0
ForListDo $(KeyList)
OpenRegKey $(!REG_H_LOCAL) "" +
$(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
GetRegValue $(kHandle) ServiceName value
ifint $(RegLastError) == 0
Split-String *($(value),4) "_" name
Debug-Output "ADVPN: RemoveIMCards - value = "$(value)" name = "*($(name),1)
ifstr *($(name),1) == $(ProductSoftwareName)
set skipDelete = NO
GetRegValue $(kHandle) ServiceName value
ifint $(RegLastError) == 0
ifstr $($0) == UNWANTED
Split-String *($(value),4) "_" name
ifstr *($(name),1) == $(ProductSoftwareName)
ForListDo $(KeyList)
OpenRegKey $(!REG_H_LOCAL) "" +
$(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) rHandle
ifstr $(rHandle) != $(KeyNull)
GetRegValue $(rHandle) ServiceName service
ifint $(RegLastError) == 0
set svc = ""
ForListDo $(name)
ifint $(#) > 2
set svc = $(svc)$($)
endif
EndForListDo
ifstr *($(service),4) == $(svc)
set skipDelete = YES
endif
endif
CloseRegKey $(rHandle)
endif
EndForListDo
endif
endif
endif
ifstr $(skipDelete) == NO
;
; delete the corresponding service too
;
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase) +
$(MAXIMUM_ALLOWED) rHandle
ifstr $(rHandle) != $(KeyNull)
DeleteRegTree $(rHandle) *($(value),4)
CloseRegKey $(rHandle)
endif
Debug-Output $($)
DeleteRegTree $(KeyHandle) *($($),1)
set status = STATUS_REBIND
endif
endif
endif
CloseRegKey $(kHandle)
endif
EndForListDo
endif
CloseRegKey $(KeyHandle)
endif
return $(status)
;*************************************************************************
;
; SECTION: AddIMCard
;
; PURPOSE: <add IM card>
;
; ARGUMENTS: $0 - card to add
; $1 - parent key name
; $2 - InfOption
; $3 - card instance
; $4 - NDISWAN?
; $5 - productName
; RETURNS: $R0: STATUS_FAILED, STATUS_SUCCESSFUL, STATUS_REBIND
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[AddIMCard]
Debug-Output "ADVPN: AddIMCard"
Debug-Output "ADVPN: AddIMCard - Card to add "$($0)
Debug-Output "ADVPN: AddIMCard - Parent Key Name "$($1)
Debug-Output "ADVPN: AddIMCard - INF Option "$($2)
Debug-Output "ADVPN: AddIMCard - Card Instance is "$($3)
Debug-Output "ADVPN: AddIMCard - NDISWAN is "$($4)
Debug-Output "ADVPN: AddIMCard - Product Name is "$($5)
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
OpenRegKey $(!REG_H_LOCAL) "" $($1) $(MAXIMUM_ALLOWED) KeyCard
Ifstr $(KeyCard) == $(KeyNull)
return STATUS_FAILED
Endif
EnumRegKey $(KeyCard) cardList
Ifint $(RegLastError) != 0
CloseRegKey $(KeyCard)
return STATUS_FAILED
Endif
ForListDo $(cardList)
set Card = $($1)"\"*($($),1)
set ImProductName = $(ProductSoftwareName)
OpenRegKey $(!REG_H_LOCAL) "" $(Card) $(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
GetRegValue $(kHandle) ServiceName serviceName
Ifint $(RegLastError) == 0
Ifstr *($(serviceName),4) == $(ProductSoftwareName)"_"$($0)
CloseRegKey $(KeyCard)
CloseRegKey $(kHandle)
return STATUS_SUCCESS ;Card already exist
Endif
Endif
CloseRegKey $(kHandle)
Endif
EndForListDo
;CCL:...The adapter entry for each imsamp adapter is created here, matching
; the network card each is bound to, ex. E100B1 and im_E100B1 will both
; have entries as network cards. E100B1 is the actual NIC, im_E100B1
; is the imsamp adapter bound to E100B1.
ForListDo $(cardList)
set Card = $($1)"\"*($($),1)
OpenRegKey $(!REG_H_LOCAL) "" $(Card) $(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
GetRegValue $(kHandle) ServiceName serviceName
Ifint $(RegLastError) == 0
Ifstr *($(serviceName),4) == $($0)
;
; get a new instance value
;
Shell $(UtilityInf),AssignAdapterNumber,"",1
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
set NewCardInstance = 9*($($),1)
Else-Ifstr(i) $($R0) != NO_ERROR
set NewCardInstance = 8*($($),1)
Else
set NewCardInstance = $($R1)
Endif
CreateRegKey $(KeyCard) +
{$(NewCardInstance),$(NoTitle),GenericClass} "" +
$(MAXIMUM_ALLOWED) "" newHandle
Ifstr $(newHandle) != $(KeyNull)
GetRegValue $(kHandle) Title title
GetRegValue $(kHandle) Description desc
set serviceName = $(ProductSoftwareName)"_"$($0)
detect date
Ifint $($4) == 0
set NewValueList = {+
{Title,$(NoTitle),$(!REG_VT_SZ),+
;CCL: "["$(NewCardInstance)"] "+
$(ProductSoftwareTitle)" -> "+
*($(title),4)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(ProductSoftwareTitle)" -> "*($(desc),4)},+
{Manufacturer,$(NoTitle),$(!REG_VT_SZ),+
$(Manufacturer)},+
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(ImProductName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(serviceName)},+
{OperationsSupport,$(NoTitle),+
$(!REG_VT_DWORD),$(ProductHardwareSupport)},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),+
*($(Now),1)}}
else
;set ImProductName = "ATTModemCard"
set NewValueList = {+
{Title,$(NoTitle),$(!REG_VT_SZ),+
;CCL: "["$(NewCardInstance)"] "+
$(ProductSoftwareTitle)" -> "+
*($(title),4)},+
{Description,$(NoTitle),$(!REG_VT_SZ),+
$(ProductSoftwareTitle)" -> "*($(desc),4)},+
{Manufacturer,$(NoTitle),$(!REG_VT_SZ),+
$(Manufacturer)},+
{ProductName,$(NoTitle),$(!REG_VT_SZ),+
$(ImProductName)},+
{ServiceName,$(NoTitle),$(!REG_VT_SZ),+
$(serviceName)},+
{Hidden,$(NoTitle),$(!REG_VT_DWORD),1},+
{InstallDate,$(NoTitle),$(!REG_VT_DWORD),+
*($(Now),1)}}
endif
Shell $(UtilityInf), AddValueList, $(newHandle),+
$(NewValueList)
CreateRegKey $(newHandle) +
{NetRules,$(NoTitle),GenericClass} "" +
$(MAXIMUM_ALLOWED) "" netHandle
Ifstr $(netHandle) != $(KeyNull)
set-subst bindform = "\042"$(serviceName)"\042"+
$(NetRuleHardwareBindForm)
Shell $(UtilityInf),ReduceInfPath,+
$(STF_CONTEXTINFNAME)
set NewValueList = {+
{bindform,$(NoTitle),$(!REG_VT_SZ),+
$(bindform)},+
{class,$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(NetRuleHardwareClass)},+
{type,$(NoTitle),$(!REG_VT_SZ),+
$(serviceName)" "*($(IMAdapters),1)},+
{InfOption,$(NoTitle),$(!REG_VT_SZ),+
$($2)},+
{InfName,$(NoTitle),$(!REG_VT_SZ),+
$($R0)}}
Shell $(UtilityInf), AddValueList, +
$(netHandle), $(NewValueList)
CloseRegKey $(netHandle)
Endif
CloseRegKey $(newHandle)
Endif
Endif
Endif
CloseRegKey $(kHandle)
Endif
EndForListDo
CloseRegKey $(KeyCard)
return STATUS_REBIND
;*************************************************************************
;
; SECTION: ChangeListText
;
; PURPOSE: <change text in list string>
;
; ARGUMENTS: $0 - input string
; $1 - string to be substitued
; $2 - string to substitue with
;
; RETURNS: $R0 - output string
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[ChangeListText]
Debug-Output "ADVPN: ChangeListText"
Debug-Output "ADVPN: ChangeListText - Input String = "$($0)
Debug-Output "ADVPN: ChangeListText - Sting to be substituted = "$($1)
Debug-Output "ADVPN: ChangeListText - Substitute String = "$($2)
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
;Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $($0)" "$($1)" "$($2)
set returnList = {}
set noChange = 1
ForListDo $($0)
set newList = ""
Split-String $($) " " stringList
ForListDo $(stringList)
Ifstr $($) == $($1)
set newList = $(newList)$($2)
set noChange = 0
Else
set newList = $(newList)$($)
Endif
EndForListDo
set returnList = >($(returnList),$(newList))
;Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "NONFATAL", $(returnList)
EndForListDo
Debug-Output "ADVPN: ChangeListText - Return String = "$(returnList)
return $(returnList) $(noChange)
;*************************************************************************
;
; SECTION: ChangeNetRules
;
; PURPOSE: <change netRules>
;
; ARGUMENTS: $0 - netRules key
; $1 - string to be substitued
; $2 - string to substitue with
; $3 - registry text
;
; RETURNS: $R0 - return status
; $R1 - no change status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[ChangeNetRules]
Debug-Output "ADVPN: ChangeNetRules"
Debug-Output "ADVPN: ChangeNetRules String to be substituted = "$($1)
Debug-Output "ADVPN: ChangeNetRules String to substitute with "$($2)
Debug-Output "ADVPN: ChangeNetRules Registry Text "$($3)
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
OpenRegKey $(!REG_H_LOCAL) "" $($0) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
return CANNOT_FIND_COMPONENT_SERVICE
Endif
GetRegValue $(KeyProduct) $($3) bindText
Ifint $(RegLastError) != 0
CloseRegKey $(KeyProduct)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$($0)"\Bindable not found!"
return CANNOT_FIND_COMPONENT_SERVICE
Endif
shell "" ChangeListText *($(bindText),4) $($1) $($2)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(KeyProduct)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$($ShellCode)": ChangeListText shell error!"
return $($ShellCode)
endif
set noChange = $($R1)
set NewValueList = {{*($(bindText),1),*($(bindText),2),*($(bindText),3),+
$($R0)}}
Shell $(UtilityInf), AddValueList, $(KeyProduct), $(NewValueList)
CloseRegKey $(KeyProduct)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$($ShellCode)": AddValueList shell error!"
return $($ShellCode)
Endif
Ifstr(i) $($R0) != NO_ERROR
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$($R0)": AddValueList returns error!"
return $($R0)
Endif
return STATUS_SUCCESS $(noChange)
;*************************************************************************
;
; SECTION: FixupTransportDependOnService
;
; PURPOSE: Remove IM from DependOnService
;
; ARGUMENTS:
;
; RETURNS:
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[FixupTransportDependOnService]
Debug-Output "ADVPN: FixupTransportDependOnService"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
ForListDo $(TransportServiceKeys)
OpenRegKey $(!REG_H_LOCAL) "" $($) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) != $(KeyNull)
GetRegValue $(KeyProduct) DependOnService dependOnList
Ifint $(RegLastError) == 0
set TransportBindList = {}
ForListDo *($(dependOnList),4)
Ifstr $($) != $(ProductSoftwareName)
set TransportBindList = >($(TransportBindList),$($))
endif
EndForListDo
set NewValueList = {DependOnService,$(NoTitle),+
$(!REG_VT_MULTI_SZ),+
$(TransportBindList)}
SetRegValue $(KeyProduct) $(NewValueList)
Ifint $(RegLastError) != 0
set RegistryErrorIndex = $(RegLastError)
CloseRegKey $(KeyProduct)
goto fatal
endif
endif
CloseRegKey $(KeyProduct)
Endif
EndForListDo
return
;*************************************************************************
;
; SECTION: AddToList
;
; PURPOSE: Add new value to list. If new value is already in the
; order list, it is taken out.
;
; ARGUMENTS: $0 - value to add
; $1 - reference value
; $2 - key where list resides
; $3 - name of list
; $4 - add BEFORE or AFTER reference value
;
; RETURNS: $R0 - return status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[AddToList]
Debug-Output "ADVPN: AddToList"
Debug-Output "ADVPN: AddToList - Value to add = "$($0)
Debug-Output "ADVPN: AddToList - Reference value "$($1)
Debug-Output "ADVPN: AddToList - Name of List "$($3)
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
set Status = STATUS_FAILURE
OpenRegKey $(!REG_H_LOCAL) "" $($2) $(MAXIMUM_ALLOWED) KeyGroup
set OldList = {}
Ifstr(i) $(KeyGroup) != $(KeyNull)
GetRegValue $(KeyGroup) $($3) TmpList
ifint $(RegLastError) == 0
ForListDo *($(TmpList), 4)
set OldList = >($(OldList), $($))
EndForListDo
endif
Debug-Output "AddToList current list "$(OldList)
set NewGroupList = {}
ForListDo $(OldList)
ifstr(i) $($) != $($0)
ifstr(i) $($4) == BEFORE
ifstr(i) $($) == $($1)
set NewGroupList = >($(NewGroupList), $($0) )
set Status = STATUS_SUCCESSFUL
endif
set NewGroupList = >($(NewGroupList), $($))
else
set NewGroupList = >($(NewGroupList), $($))
ifstr(i) $($) == $($1)
set NewGroupList = >($(NewGroupList), $($0) )
set Status = STATUS_SUCCESSFUL
endif
endif
endif
EndForListDo
Debug-Output "AddToList new list "$(NewGroupList)
SetRegValue $(KeyGroup) {$($3),$(NoTitle),$(!REG_VT_MULTI_SZ),+
$(NewGroupList)}
CloseRegKey $(KeyGroup)
else
Debug-Output "AddToList error open ServiceGroupOrder key"
endif
return $(Status)
;*************************************************************************
;
; SECTION: SelectInterfaces
;
; PURPOSE: Select NdisWan and NIC interfaces to use for IPSec trans
;
;
; ARGUMENTS:
;
;
; RETURNS: $R0 - return status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[SelectInterfaces]
Debug-Output "ADVPN: SelectInterfaces"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
;Read what version is being installed from the registry. The autoinstall
;updates this value when it starts and deletes it when it's done.
;The auto-install does not consider it a fatal error not to be able to
;update the key, if the key can not be read, or it not an expected value,
;assume install both to be safe.
set Status = STATUS_SUCCESSFUL
;The interfaces value type is always put under main AT&T Global Network Key
OpenRegKey $(!REG_H_LOCAL) "" $(ProductSoftKey) $(MAXIMUM_ALLOWED) KeyHandle
Ifstr $(KeyHandle) != $(KeyNull)
Debug-Output "ADVPN: Opened install type key"
GetRegValue $(KeyHandle) $(InstallTypeValue) value
ifint $(RegLastError) == 0
Debug-Output "ADVPN: Read install type value"
set curType = *($(value),4)
ifstr(i) $(curType) == $(InstallBroadband)
Debug-Output "ADVPN: Broadband! Shelling SelectNICAdapter"
Shell "", SelectNICAdapter
ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
endIf
else-ifstr(i) $(curType) == $(InstallNarrowband)
Debug-Output "ADVPN: Narrowband! Shelling SelectNdisWanAdapter"
Shell "", SelectNdisWanAdapter
Ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
EndIf
else
Debug-Output "ADVPN: Value Unknown - Installing ALL!"
Debug-Output "ADVPN: Shelling SelectNdisWanAdapter"
Shell "", SelectNdisWanAdapter
Ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
EndIf
Debug-Output "ADVPN: Shelling SelectNICAdapter"
Shell "", SelectNICAdapter
ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
endIf
endif
else
; install all if the key can't be read
Debug-Output "ADVPN: Key Can't be Read - Installing ALL!"
Debug-Output "ADVPN: Shelling SelectNdisWanAdapter"
Shell "", SelectNdisWanAdapter
Ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
EndIf
Debug-Output "ADVPN: Shelling SelectNICAdapter"
Shell "", SelectNICAdapter
ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
endIf
endif
CloseRegKey $(KeyHandle)
else
;if key can't be read, assume install all versions
Debug-Output "ADVPN: Key Can't be Opened - Installing ALL!"
Debug-Output "ADVPN: Shelling SelectNdisWanAdapter"
Shell "", SelectNdisWanAdapter
Ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
EndIf
Debug-Output "ADVPN: Shelling SelectNICAdapter"
Shell "", SelectNICAdapter
ifstr $($R0) != STATUS_SUCCESSFUL
set Status = $($R0)
endIf
endif
return $(Status)
;*************************************************************************
;
; SECTION: SelectNICAdapter
;
; PURPOSE: Display a list of Network Adapters for the user to chose.
;
; ARGUMENTS:
;
;
; RETURNS: $R0 - return status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[SelectNICAdapter]
Debug-Output "ADVPN: SelectNICAdapter"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
set status = STATUS_SUCCESSFUL
;
;ASK USER WHAT NIC TO USE IF THEY HAVE MORE THAN ONE
;
Debug-Output "ADVPN: Before we start, ask user to chose NIC"
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$(NetworkCardsKeyName)" empty!"
Return CANNOT_FIND_COMPONENT_SERVICE
Endif
EnumRegKey $(KeyProduct) KeyList
Ifint $(RegLastError) != 0
CloseRegKey $(KeyProduct)
Return $(RegLastError)
Endif
CloseRegKey $(KeyProduct)
;Allow only NIC Cards, no NDISWAN including AsyncMac
;This loop is driven off
;of service name instead of product name as was previously the
;case for narrowband version
;
Debug-Output "ADVPN: Allow only NIC cards"
set FinalCardList = {}
set RASInList = 0
ForListDo $(KeyList)
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) NetCardHandle
Ifstr $(NetCardHandle) != $(KeyNull)
GetRegValue $(NetCardHandle) ServiceName CardService
ifint $(RegLastError) == 0
;LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
;*($(CardService),4) "NdisWan" 7
;ifint $(Result) != 0
;Strip out AsyncMac
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
*($(CardService),4) "AsyncMac" 7
ifint $(Result) != 0
;Strip out our instances of our cards if this is run after narrowband
;is already installed
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
*($(CardService),4) $(ProductSoftwareName) 7
ifint $(Result) != 0
;Now only allow DialOutIP adapter
GetRegValue $(NetCardHandle) ProductName CardProduct
ifint $(RegLastError) == 0
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
*($(CardProduct),4) "NdisWan" 7
ifint $(Result) == 0
Debug-Output "ADVPN: Matched on NdisWan"
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
*($(CardProduct),4) "NdisWanDialoutIp" 16
ifint $(Result) == 0
;Don't allow IPX dialout
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
*($(CardProduct),4) "NdisWanDialoutIpx" 17
ifint $(Result) != 0
set RASInList = 1
;set FinalCardList = >($(FinalCardList),$($))
Debug-Output "ADVPN: Final Card Match is "*($(CardService),4)
endif
endif
else
set FinalCardList = >($(FinalCardList),$($))
Debug-Output "ADVPN: Final Card Match is "*($(CardService),4)
endif
endif
endif
endif
;endif
Endif
Endif
CloseRegKey $(NetCardHandle)
EndForListDo
Debug-Output "ADVPN: Final Card List After Loop is "$(FinalCardList)
;Format for the dialog box (we need description and device name)
set NICCardList = {}
ForListDo $(FinalCardList)
set CardInfo = ""
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) NetCardHandle
Ifstr $(NetCardHandle) != $(KeyNull)
GetRegValue $(NetCardHandle) ServiceName CardService
ifint $(RegLastError) == 0
set CardInfo = $(CardInfo)*($(CardService),4)
endif
;Use title so the instance number is shown
GetRegValue $(NetCardHandle) Title CardTitle
ifint $(RegLastError) == 0
set CardInfo = $(CardInfo)"="*($(CardTitle),4)
endif
set NICCardList = >($(NICCardList),$(CardInfo))
Endif
CloseRegKey $(NetCardHandle)
EndForListDo
;Check if DUN/RAS should be in list
ifint $(RASInList) == 1
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
read-syms ErrorMessages
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_RAS"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_RAS" +
$(szNTRASDisplay)
Debug-Output "ADVPN: Return From DLL: "$(Result)
set CardInfo = "NdisWanX="$(Result)
;set CardInfo = "NdisWanX=Remote Access Service with Dial-Up Networking"
set NICCardList = >($(NICCardList),$(CardInfo))
endif
;CCL** Allow user to select from dialog box.
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmDisplayAdapters"
LibraryProcedure Result $(!PRUNEHANDLE) BmDisplayAdapters $(NICCardList) "Broadband"
Debug-Output "ADVPN: Return From DLL: "$(Result)
Split-String $(Result) ":" TokenResult
ifstr(i) *($(TokenResult),1) == $(DLL_ERROR_INDICATOR)
set status = STATUS_FAILED
set !Error = $(Result)
Debug-Output "ADVPN: Select Adapter Dialog Returned Fatal Error."
endif
Debug-Output "ADVPN: BmDisplayAdapters Complete"
Return $(status)
;*************************************************************************
;
; SECTION: SelectNdisWanAdapter
;
; PURPOSE: This does not display a dialog box. The ndiswan interface
; is determined dynamically at logon time. This function does
; create the BindToAdapter key since that is how it is determined
; if the dial build has been run yet.
;
; ARGUMENTS:
;
;
; RETURNS: $R0 - return status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[SelectNdisWanAdapter]
Debug-Output "ADVPN: SelectNdisWanAdapter"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
set status = STATUS_SUCCESSFUL
Debug-Output "ADVPN: Setting Dummy NdisWan Card in BindToAdapter Key"
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyInfoNarrow) $(MAXIMUM_ALLOWED) SoftKey
Ifstr $(SoftKey) != $(KeyNull)
SetRegValue $(SoftKey) {"BindToAdapter",$(NoTitle),$(!REG_VT_SZ),"NdisWanX"}
CloseRegKey $(SoftKey)
endif
Return $(status)
;*************************************************************************
;
; SECTION: SetAdapterParameter
;
; PURPOSE: Copy Transport Parameters from real adapters to
; IM adapters.
;
; ARGUMENTS: $0 - InfOption
; $1 - FORCE CopyRegTree or not
;
; RETURNS: $R0 - return status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[SetAdapterParameter]
Debug-Output "ADVPN: SetAdapterParameter"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
;
; Copy Transport parameters using IM's bind list
;
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
$(NetworkCardsKeyName)" empty!"
Return CANNOT_FIND_COMPONENT_SERVICE
Endif
EnumRegKey $(KeyProduct) KeyList
Ifint $(RegLastError) != 0
CloseRegKey $(KeyProduct)
Return $(RegLastError)
Endif
CloseRegKey $(KeyProduct)
set status = STATUS_SUCCESSFUL
set dialOutIp = {}
set dialInIp = {}
set !IM_NDISWAN = {}
ForListDo $(KeyList)
OpenRegKey $(!REG_H_LOCAL) "" $(NetworkCardsKeyName)"\"*($($),1) +
$(MAXIMUM_ALLOWED) kHandle
Ifstr $(kHandle) != $(KeyNull)
GetRegValue $(kHandle) ProductName productName
ifint $(RegLastError) == 0
ifstr *($(productName),4) != $(ProductSoftwareName)
GetRegValue $(kHandle) ServiceName value
ifint $(RegLastError) == 0
set ndiswan = 0;
;
; Check for NdisWan adapters
;
ifstr(i) $(!LIBHANDLE) == ""
LoadLibrary "x" setupdll.dll !LIBHANDLE
endif
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp +
*($(value),4) "NdisWan" 7
ifint $(Result) == 0
Shell "" NdisWanSupport
ifint $($R0) == 1
Debug-Output "ADVPN: This will NOT support NDISWAN adapters."
goto next_adapter
endif
;
; NdisWan DialOut IP adapters
;
ifstr(i) *($(productName),4) == NdisWanDialOutIp
ifstr $(dialOutIp) == ""
set dialOutIp = {}
endif
set dialOutIp = >($(dialOutIp),*($(value),4))
set ndiswan = 1;
goto continue_add_adapter
;
; NdisWan DialIn IP adapters
;
else-ifstr(i) *($(productName),4) == NdisWanDialInIp
ifstr $(dialInIp) == ""
set dialInIp = {}
endif
set dialInIp = >($(dialInIp),*($(value),4))
set ndiswan = 1;
goto continue_add_adapter
endif
goto next_adapter
endif
check_hidden_adapter = +
;
; don't attach to hidden adapters
;
GetRegValue $(kHandle) Hidden hidden
ifint $(RegLastError) == 0
ifint *($(hidden),4) == 1
goto next_adapter
endif
endif
;
; make sure adapter is a supported type
;
GetRegValue $(kHandle) Manufacturer manu
ifint $(RegLastError) != 0
goto next_adapter
endif
OpenRegKey $(!REG_H_LOCAL) "" "SOFTWARE\"+
*($(manu),4)"\"*($(productName),4)+
"\CurrentVersion\NetRules" +
$(MAXIMUM_ALLOWED) nHandle
Ifstr $(nHandle) == $(KeyNull)
goto next_adapter
endif
GetRegValue $(nHandle) type type
ifint $(RegLastError) != 0
goto next_adapter
endif
Split-String *($(type),4) " " driver
set addAdapter = 0
ForListDo $(SupportedDrivers) ; currently ndisDriver
ifstr(i) *($(driver),3) == $($)
set addAdapter = 1
endif
EndForListDo
ifint $(addAdapter) != 1
goto next_adapter
endif
continue_add_adapter = +
;
; add software component of IM adapter from
; real adapter
;
set srcDev = *($(value),4)
set dstDev = $(ProductSoftwareName)"_"$(srcDev)
Shell "",CopyRegTree,$(!NTN_ServiceBase)"\"$(srcDev),+
$(!NTN_ServiceBase),$(dstDev),+
$(NoTitle),GenericClass,$($1)
Ifint $($ShellCode) != $(!SHELL_CODE_OK)
CloseRegKey $(kHandle)
Return $($ShellCode)
endif
Ifstr $($R0) != STATUS_SUCCESSFUL
CloseRegKey $(kHandle)
Return $($R0)
endif
ifint $(ndiswan) == 0
;
; remove hardware parameters
;
set parms = $(!NTN_ServiceBase)"\"+
$(dstDev)"\Parameters"
OpenRegKey $(!REG_H_LOCAL) "" $(parms) +
$(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
CloseRegKey $(kHandle)
Shell $(subroutineinf) SetupMessage, +
$(!STF_LANGUAGE), "FATAL", +
$(parms)" empty!"
Return CANNOT_FIND_COMPONENT_SERVICE
Endif
EnumRegValue $(KeyProduct) ValueList
ForListDo $(ValueList)
DeleteRegValue $(KeyProduct) *($($),1)
EndForListDo
CloseRegKey $(KeyProduct)
Endif
;
; add hardware component of IM adapter from
; real adapter
; 3/31/99 added productName to AddIMCard parms
Shell "" AddIMCard $(srcDev) $(NetworkCardsKeyName) +
$($0) *($($),1) $(ndiswan) *($(productName),4)
ifstr $($R0) == STATUS_REBIND
set status = $($R0)
endif
;
; add WINS parameters
;
set srcWINS = $(NetBTServiceKey)"\"$(srcDev)
OpenRegKey $(!REG_H_LOCAL) "" $(srcWINS) +
$(MAXIMUM_ALLOWED) winsHandle
Ifstr $(winsHandle) != $(KeyNull)
Shell "",CopyRegTree,$(srcWINS),$(NetBTServiceKey),+
$(dstDev),$(NoTitle),GenericClass,FORCE
CloseRegKey $(winsHandle)
endif
next_adapter = +
endif
endif
endif
CloseRegKey $(kHandle)
endif
EndForListDo
ForListDo $(dialOutIp)
set !IM_NDISWAN = >($(!IM_NDISWAN),$($))
EndForListDo
ForListDo $(dialInIp)
set !IM_NDISWAN = >($(!IM_NDISWAN),$($))
EndForListDo
Return $(status)
;*************************************************************************
;
; SECTION: ResetAdapterParameter
;
; PURPOSE: Copy Transport Parameters from IM adapters to
; real adapters.
;
; ARGUMENTS:
;
; RETURNS: $R0 - return status
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[ResetAdapterParameter]
Debug-Output "ADVPN: ResetAdapterParameter"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
;
; Copy Transport parameters using IM's bind list
;
OpenRegKey $(!REG_H_LOCAL) "" $(IMLinkageKeyName) $(MAXIMUM_ALLOWED) +
KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
; Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE), "FATAL", +
; $(IMLinkageKeyName)" empty!"
Return CANNOT_FIND_COMPONENT_SERVICE
Endif
GetRegValue $(KeyProduct) Bind bindList
Ifint $(RegLastError) != 0
CloseRegKey $(KeyProduct)
Return $(RegLastError)
endif
set devices = *($(bindList),4)
ForListDo $(devices)
Split-String *($($),1) "\" device
set srcDev = *($(device),4)
Split-String $(srcDev) "_" device
set dstDev = ""
ForListDo $(device)
ifint $(#) > 2
set dstDev = $(dstDev)$($)
endif
EndForListDo
set srcTree = $(!NTN_ServiceBase)"\"$(srcDev)
Shell "",CopyRegTree,$(srcTree),$(!NTN_ServiceBase),+
$(dstDev),$(NoTitle),GenericClass,FORCE
EndForListDo
CloseRegKey $(KeyProduct)
Return STATUS_SUCCESSFUL
;*************************************************************************
;
; SECTION: RemoveIM
;
; PURPOSE: Remove IM is called during remove adapter phase or
; when any fatal error is detected.
;
; ARGUMENTS:
;
; RETURNS:
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[RemoveIM]
Debug-Output "ADVPN: RemoveIM"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyName) $(MAXIMUM_ALLOWED) SoftKey
Ifstr $(SoftKey) != $(KeyNull)
SetRegValue $(SoftKey) {RefCount,$(NoTitle),$(!REG_VT_DWORD),0}
CloseRegKey $(SoftKey)
endif
;Remove the Info associated with the drivers, so the related programs
;(Install, Uninstall, Dialer, etc.) recognize it's no longer installed.
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyInfoBroad) $(MAXIMUM_ALLOWED) SoftKey
Ifstr $(SoftKey) != $(KeyNull)
DeleteRegValue $(SoftKey) $(InterfaceValue)
CloseRegKey $(SoftKey)
endif
OpenRegKey $(!REG_H_LOCAL) "" $(ProductKeyInfoNarrow) $(MAXIMUM_ALLOWED) SoftKey
Ifstr $(SoftKey) != $(KeyNull)
DeleteRegValue $(SoftKey) $(InterfaceValue)
CloseRegKey $(SoftKey)
endif
;
; Remove install file from ReviewPrograms and delete install file
;
OpenRegKey $(!REG_H_LOCAL) "" $(NetRules) $(MAXIMUM_ALLOWED) KeyProduct
Ifstr $(KeyProduct) == $(KeyNull)
goto removeadapter_removeSoftwareComponent
endif
GetRegValue $(KeyProduct),"InfName", infName
ifint $(RegLastError) != 0
Debug-Output "ADVPN: Error trying to get RegValue for InfName"
CloseRegKey $(KeyProduct)
goto removeadapter_removeSoftwareComponent
endif
CloseRegKey $(KeyProduct)
Shell "" AddToList *($(infName),4),,$(ReviewProgram),ReviewPrograms
;CCL: Not sure why this split string is here, I think we just want to add to
;delete list
;Split-String *($(infName),4) "0123456789" checkList
;Ifstr *($(checkList),1) != *($(infName),4)
;Debug-Output "ADVPN: Adding file to Delete List ["$(infName)"]"
;AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\"*($(infName),4)
;Debug-Output "ADVPN: Adding file to Delete List ["$(ProductDriverFile)"]"
;AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\drivers\"$(ProductDriverFile)
;Debug-Output "ADVPN: Adding file to Delete List ["$(ProductDLLFile)"]"
;AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\"$(ProductDLLFile)
;endif
;CCL: I have NO idea what this NEWT nonsense is all about
;Shell "" GetImSampPath
;ifstr $($R0) == STATUS_SUCCESSFUL
;ifstr(i) $(!LIBHANDLE) == ""
;LoadLibrary "x" setupdll.dll !LIBHANDLE
;endif
;set NEWT = $($R1)\newt32.exe
;LibraryProcedure stat,$(!LIBHANDLE),CheckFileExistance $(NEWT)
;ifstr(i) $(stat) != NO
;
; Remove Newt from 'Run' key in registry (CT 7/20/97)
;
;RunProgram ExitCode NEWT32 "" $(NEWT) -u
;
; Remove NEWT32 on the next bootup sequence
;
;AddFileToDeleteList $(NEWT)
;endif
;endif
removeadapter_removeSoftwareComponent = +
Debug-Output "ADVPN: RemoveAdapter_RemoveSoftwareComponent."
;
; Copy back current adapter settings
;
Shell "" ResetAdapterParameter
;
; Remove software component
;
Shell "" MyRemoveSoftwareComponent,$(Manufacturer),$(ProductSoftwareName),""
;
; Change NetRules back
;
ForListDo $(NetRuleDriverKeys)
Shell "" ChangeNetRules *($($),1) *($(IMDrivers),*($($),2)) +
*($(SupportedDrivers),*($($),2)) Bindable
EndForListDo
ForListDo $(NetRuleTransportKeys)
Shell "" ChangeNetRules *($($),1) +
*($(IMTransports),*($($),2)) +
*($(SupportedTransports),*($($),2)) Bindable
EndForListDo
;
; Remove IM services and cards
;
;Shell "" RemoveIMServices
Shell "" RemoveIMCards ALL
Shell "" FixupTransportsAfterRemove
Shell "" FixupServicesAfterRemove
return
;*************************************************************************
;
; SECTION: MyRemoveSoftwareComponent
;
; PURPOSE: Remove software component.
;
; ARGUMENTS: $0 - Manufacturer
; $1 - Product software name
; $2 - Product software name to upgrade to
; $3 - Inf name if this is a upgrade
;
; RETURNS:
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[MyRemoveSoftwareComponent]
Debug-Output "ADVPN: MyRemoveSoftwareComponent"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
ifstr $($2) == ""
Shell $(UtilityInf),RemoveSoftwareComponent,$($0),$($1)
set status = STATUS_SUCCESSFUL
else
set status = STATUS_SUCCESSFUL
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_SoftwareBase)"\"$($0)"\"$($1) +
$(MAXIMUM_ALLOWED) keyHandle
ifstr $(keyHandle) != $(KeyNull)
Debug-Output "Setting removeBobcatINFs to TRUE (3)."
set removeBobcatINFs = TRUE
CloseRegKey $(keyHandle)
set status = STATUS_REBOOT
endif
OpenRegKey $(!REG_H_LOCAL) "" $(!NTN_ServiceBase)"\"$($1) +
$(MAXIMUM_ALLOWED) keyHandle
ifstr $(keyHandle) != $(KeyNull)
Debug-Output "Setting removeBobcatINFs to TRUE (4)."
set removeBobcatINFs = TRUE
CloseRegKey $(keyHandle)
set status = STATUS_REBOOT
endif
ifstr $(status) == STATUS_REBOOT
Shell $(UtilityInf),RemoveSoftwareComponent,$($0),$($1)
;
; remove 4.0 rule
;
ForListDo $(NetRuleDriverKeys)
Shell "" ChangeNetRules *($($),1) NMFTRTransport +
*($(SupportedDrivers),*($($),2)) Bindable
EndForListDo
ForListDo $(NetRuleTransportKeys)
Shell "" ChangeNetRules *($($),1) +
*($(IMTransports),*($($),2)) +
*($(SupportedTransports),*($($),2)) Bindable
EndForListDo
;
; Install new IM after next reboot
;
OpenRegKey $(!REG_H_LOCAL) "" $(RunOnce) +
$(MAXIMUM_ALLOWED) runHandle
ifstr $(runHandle) == $(KeyNull)
CreateRegKey $(!REG_H_LOCAL) {$(RunOnce),0,GenericClass} +
"" $(MAXIMUM_ALLOWED) "" runHandle
endif
ifstr $(runHandle) != $(KeyNull)
SetRegValue $(runHandle) {InstallIM,0,+
$(!REG_VT_SZ),"rundll32 wgagent.dll,DllRegisterServer"}
CloseRegKey $(runHandle)
read-syms ErrorMessages
Debug-Output "ADVPN: Loading ADVNDINT.DLL"
ifstr(i) $(!PRUNEHANDLE) == ""
LoadLibrary "x" advndint.dll !PRUNEHANDLE
endif
Debug-Output "ADVPN: Calling BmGetDefaultLanguageString IDS_NT_PREVIOUS_VERSION"
LibraryProcedure Result $(!PRUNEHANDLE) +
BmGetDefaultLanguageString "IDS_NT_PREVIOUS_VERSION_WARNING" +
$(szPreviousVersionWarning)
Debug-Output "ADVPN: Return From DLL: "$(Result)
Shell $(subroutineinf) SetupMessage, $(!STF_LANGUAGE),+
"NONFATAL", +
$(Result)
endif
endif
endif
ifstr $(removeBobcatINFs) == TRUE
Debug-Output "ADVPN: Attempting to remove BobCat INFs"
shell "" RemoveBobcatINFs
else
Debug-Output "ADVPN: No need to remove BobCat INFs"
endif
return $(status)
;*************************************************************************
;
; SECTION: RemoveBobcatINFs
;
; PURPOSE: Remove bobcat inf files.
;
; ARGUMENTS:
;
; RETURNS:
;
; REFERENCES: <list of global or parent variables referenced>
;
;*************************************************************************
[RemoveBobcatINFs]
Debug-Output "ADVPN: RemoveBobcat INFs"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
set list = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,+
10,11,12,13,14,15,16,17,18,19,+
20,21,22,23,24,25,26,27,28,29,+
30,31,32,33,34,35,36,37,38,39,+
40,41,42,43,44,45,46,47,48,49,+
50,51,52,53,54,55,56,57,58,59,+
60,61,62,63,64,65,66,67,68,69,+
70,71,72,73,74,75,76,77,78,79,+
80,81,82,83,84,85,86,87,88,89,+
90,91,92,93,94,95,96,97,98,99}
;
; Delete bobcat INF instances
;
ForListDo $(list)
set infName = OEMNSV$($).INF
Shell $(infName),ReturnOptions ENG
ifint $($ShellCode) == $(!SHELL_CODE_OK)
ifstr $($R0) == STATUS_SUCCESSFUL
ifstr *($($R2),1) == $(ProductSoftwareTitle)
AddFileToDeleteList $(!STF_WINDOWSSYSPATH)"\"$(infName)
endif
endif
endif
EndForListDo
return
;*************************************************************************
; taken from oemnsvra.inf for NDISWAN
;*************************************************************************
[UpdateLLInterface]
Debug-Output "ADVPN: UpdateLLInterface"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
Debug-Output "UpdateLLInterface: entry"
set Status = STATUS_FAILED
set KeyNull = ""
set LLInterface = "\Device\RASARP"
set IPLinkageKeyName = $(!NTN_ServiceBase)"\TCPIP\Linkage"
OpenRegKey $(!REG_H_LOCAL) "" $(IPLinkageKeyName) $(MAXIMUM_ALLOWED) +
KeyIpLinkage
ifstr $(KeyIpLinkage) == $(KeyNull)
Debug-Output "IM: UpdateLLInterface: couldn't open IP Linkage key"
goto UpdateLLInterfaceEnd
endif
set compareSize = 0
set compareString = $(ProductSoftwareName)"_NdisWan"
Split-String $(compareString) $(compareString) charList
ForListDo $(charList)
set-add compareSize = $(compareSize),1
EndForListDo
set NdisWanList = {}
GetRegValue $(KeyIpLinkage) "Bind" TmpList
ForListDo *($(TmpList),4)
Split-String $($), "\", BindList
QueryListSize ListSize $(BindList)
set ServiceName = *($(BindList), $(ListSize))
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp $(ServiceName) +
$(compareString) $(compareSize)
ifint $(Result) == 0
set NdisWanList = >($(NdisWanList), $(ServiceName))
endif
EndForListDo
CloseRegKey $(KeyIpLinkage)
QueryListSize ListSize $(NdisWanList)
ifint $(ListSize) >= 1
ForListDo $(NdisWanList)
set ServiceKeyName = $(!NTN_ServiceBase)"\"$($)"\Parameters\TCPIP"
OpenRegKey $(!REG_H_LOCAL) "" $(ServiceKeyName) +
$(MAXIMUM_ALLOWED) KeyNdisWan
ifstr $(KeyNdisWan) != $(KeyNull)
SetRegValue $(KeyNdisWan) {IPAddress, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {SubnetMask, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {DefaultGateway, 0, +
$(!REG_VT_MULTI_SZ), {""}}
SetRegValue $(KeyNdisWan) {LLInterface, $(NoTitle),+
$(!REG_VT_SZ), $(LLInterface)}
SetRegValue $(KeyNdisWan) {EnableDHCP, 0, +
$(!REG_VT_DWORD), 0}
else
CreateRegKey $(!REG_H_LOCAL) +
{$(ServiceKeyName),0,GenericClass} "" +
$(MAXIMUM_ALLOWED) "" KeyNdisWan
ifstr $(KeyNdisWan) != $(KeyNull)
SetRegValue $(KeyNdisWan) {IPAddress, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {SubnetMask, 0, +
$(!REG_VT_MULTI_SZ), {"0.0.0.0"}}
SetRegValue $(KeyNdisWan) {DefaultGateway, 0, +
$(!REG_VT_MULTI_SZ), {""}}
SetRegValue $(KeyNdisWan) {LLInterface, 0,+
$(!REG_VT_SZ), $(LLInterface)}
SetRegValue $(KeyNdisWan) {EnableDHCP, 0,+
$(!REG_VT_DWORD), 0}
SetRegValue $(KeyNdisWan) {UseZeroBroadcast, 0, +
$(!REG_VT_DWORD), 0}
else
Debug-Output "IM: UpdateLLInterface: couldn't "+
"create NdisWan params-tcpip key"
goto UpdateLLInterfaceEnd
endif
endif
CloseRegKey $(KeyNdisWan)
EndForListDo
endif
set Status = STATUS_SUCCESSFUL
UpdateLLInterfaceEnd =+
Debug-Output "UpdateLLInterface: exit"
return $(Status)
[SetRasArpBindValueFromTcpIP]
Debug-Output "ADVPN: SetRasArpBindValueFromTcpIP"
read-syms GeneralConstants
read-syms FileConstants
read-syms FileConstantsENG
Debug-Output "SetRasArpBindValueFromTcpIP: entry"
set Status = STATUS_FAILED
set KeyNull = ""
set IPLinkageKeyName = $(!NTN_ServiceBase)"\TCPIP\Linkage"
OpenRegKey $(!REG_H_LOCAL) "" $(IPLinkageKeyName) $(MAXIMUM_ALLOWED) +
KeyIpLinkage
ifstr $(KeyIpLinkage) == $(KeyNull)
Debug-Output "IM: SetRasArpBindValueFromTcpIP: can't open IP Linkage"
goto SetRasArpBindValueFromTcpIPEnd
endif
set compareSize = 0
set compareString = $(ProductSoftwareName)"_NdisWan"
Split-String $(compareString) $(compareString) charList
ForListDo $(charList)
set-add compareSize = $(compareSize),1
EndForListDo
set NdisWanList = {}
GetRegValue $(KeyIpLinkage) "Bind" TmpList
ForListDo *($(TmpList),4)
Split-String $($), "\", BindList
QueryListSize ListSize $(BindList)
set ServiceName = *($(BindList), $(ListSize))
LibraryProcedure Result $(!LIBHANDLE) SetupStrncmp $(ServiceName) +
$(compareString) $(compareSize)
ifint $(Result) == 0
set NdisWanList = >($(NdisWanList), $($))
endif
EndForListDo
set RasArpLinkageKeyName = $(!NTN_ServiceBase)"\RASARP\Linkage"
OpenRegKey $(!REG_H_LOCAL) "" $(RasArpLinkageKeyName) $(MAXIMUM_ALLOWED) +
KeyRasArpLinkage
ifstr $(KeyRasArpLinkage) != $(KeyNull)
SetRegValue $(KeyRasArpLinkage) {Bind, 0, $(!REG_VT_MULTI_SZ), +
$(NdisWanList)}
CloseRegKey $(KeyRasArpLinkage)
endif
CloseRegKey $(KeyIpLinkage)
set Status = STATUS_SUCCESSFUL
SetRasArpBindValueFromTcpIPEnd=+
Debug-Output "SetRasArpBindValueFromTcpIP: entry"
return $(Status)
;*************************************************************************
; end code taken from oemnsvra.inf for NDISWAN
;*************************************************************************
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.