From cf2a6a42bce34bd0c14223cd9e86d2395d3bd01c Mon Sep 17 00:00:00 2001 From: dnobori Date: Thu, 20 Mar 2014 05:45:05 +0900 Subject: [PATCH] v4.06-9430-beta --- AUTHORS.TXT | 3 + BUILD_WINDOWS.TXT | 5 +- README | 6 + README.TXT | 6 + THIRD_PARTY.TXT | 4 + centos/SOURCES/init.d/vpnserver | 2 +- src/BUILD_WINDOWS.TXT | 5 +- src/BuildUtil/BuildUtilCommands.cs | 8 +- src/BuildUtil/BuildUtilMain.cs | 8 +- src/BuildUtil/CodeSign.cs | 8 +- src/BuildUtil/CoreUtil/Bmp.cs | 8 +- src/BuildUtil/CoreUtil/Buf.cs | 8 +- src/BuildUtil/CoreUtil/Cache.cs | 8 +- src/BuildUtil/CoreUtil/Compress.cs | 8 +- src/BuildUtil/CoreUtil/Console.cs | 8 +- src/BuildUtil/CoreUtil/Csv.cs | 8 +- src/BuildUtil/CoreUtil/Env.cs | 8 +- src/BuildUtil/CoreUtil/FileIO.cs | 8 +- src/BuildUtil/CoreUtil/GZip.cs | 8 +- src/BuildUtil/CoreUtil/Kernel.cs | 8 +- src/BuildUtil/CoreUtil/MultiLang.cs | 8 +- src/BuildUtil/CoreUtil/Packer.cs | 8 +- src/BuildUtil/CoreUtil/RC4.cs | 8 +- src/BuildUtil/CoreUtil/ReadIni.cs | 8 +- src/BuildUtil/CoreUtil/Reg.cs | 8 +- src/BuildUtil/CoreUtil/Secure.cs | 8 +- src/BuildUtil/CoreUtil/Stb.cs | 8 +- src/BuildUtil/CoreUtil/Str.cs | 8 +- src/BuildUtil/CoreUtil/Tar.cs | 8 +- src/BuildUtil/CoreUtil/Thread.cs | 8 +- src/BuildUtil/CoreUtil/Time.cs | 8 +- src/BuildUtil/CoreUtil/Util.cs | 8 +- src/BuildUtil/CoreUtil/Win32.cs | 8 +- src/BuildUtil/CoreUtil/Zip.cs | 8 +- src/BuildUtil/PEUtil.cs | 8 +- .../Properties/Resources.Designer.cs | 8 +- src/BuildUtil/Properties/Settings.Designer.cs | 8 +- src/BuildUtil/Test.cs | 8 +- src/BuildUtil/UnixBuildSoftwares.cs | 18 +- src/BuildUtil/VpnBuilder.cs | 8 +- src/BuildUtil/VpnBuilderConfig.cs | 8 +- src/BuildUtil/VpnBuilderConfigTypes.cs | 8 +- .../Web References/HvSignService/Reference.cs | 8 +- .../Web References/SignService/Reference.cs | 8 +- src/BuildUtil/Win32BuildSoftware.cs | 8 +- src/BuildUtil/Win32BuildUtil.cs | 8 +- src/Cedar/Account.c | 8 +- src/Cedar/Account.h | 8 +- src/Cedar/Admin.c | 57 +- src/Cedar/Admin.h | 8 +- src/Cedar/AzureClient.c | 8 +- src/Cedar/AzureClient.h | 8 +- src/Cedar/AzureServer.c | 8 +- src/Cedar/AzureServer.h | 8 +- src/Cedar/Bridge.c | 8 +- src/Cedar/Bridge.h | 8 +- src/Cedar/BridgeUnix.c | 8 +- src/Cedar/BridgeUnix.h | 8 +- src/Cedar/BridgeWin32.c | 8 +- src/Cedar/BridgeWin32.h | 8 +- src/Cedar/CM.c | 70 +- src/Cedar/CM.h | 8 +- src/Cedar/CMInner.h | 8 +- src/Cedar/Cedar.c | 12 +- src/Cedar/Cedar.h | 24 +- src/Cedar/CedarPch.c | 8 +- src/Cedar/CedarPch.h | 8 +- src/Cedar/CedarType.h | 8 +- src/Cedar/Client.c | 8 +- src/Cedar/Client.h | 8 +- src/Cedar/Command.c | 28 +- src/Cedar/Command.h | 8 +- src/Cedar/Connection.c | 8 +- src/Cedar/Connection.h | 8 +- src/Cedar/Console.c | 8 +- src/Cedar/Console.h | 8 +- src/Cedar/DDNS.c | 16 +- src/Cedar/DDNS.h | 8 +- src/Cedar/Database.c | 8 +- src/Cedar/Database.h | 8 +- src/Cedar/EM.c | 8 +- src/Cedar/EM.h | 8 +- src/Cedar/EMInner.h | 8 +- src/Cedar/EtherLog.c | 8 +- src/Cedar/EtherLog.h | 8 +- src/Cedar/Hub.c | 118 ++- src/Cedar/Hub.h | 10 +- src/Cedar/IPsec.c | 8 +- src/Cedar/IPsec.h | 8 +- src/Cedar/IPsec_EtherIP.c | 8 +- src/Cedar/IPsec_EtherIP.h | 8 +- src/Cedar/IPsec_IKE.c | 8 +- src/Cedar/IPsec_IKE.h | 8 +- src/Cedar/IPsec_IPC.c | 39 +- src/Cedar/IPsec_IPC.h | 11 +- src/Cedar/IPsec_IkePacket.c | 8 +- src/Cedar/IPsec_IkePacket.h | 8 +- src/Cedar/IPsec_L2TP.c | 8 +- src/Cedar/IPsec_L2TP.h | 8 +- src/Cedar/IPsec_PPP.c | 14 +- src/Cedar/IPsec_PPP.h | 8 +- src/Cedar/IPsec_Win7.c | 8 +- src/Cedar/IPsec_Win7.h | 8 +- src/Cedar/IPsec_Win7Inner.h | 8 +- src/Cedar/Interop_OpenVPN.c | 50 +- src/Cedar/Interop_OpenVPN.h | 8 +- src/Cedar/Interop_SSTP.c | 8 +- src/Cedar/Interop_SSTP.h | 8 +- src/Cedar/Layer3.c | 8 +- src/Cedar/Layer3.h | 8 +- src/Cedar/Link.c | 8 +- src/Cedar/Link.h | 8 +- src/Cedar/Listener.c | 8 +- src/Cedar/Listener.h | 8 +- src/Cedar/Logging.c | 799 +++++++++++++++++- src/Cedar/Logging.h | 8 +- src/Cedar/NM.c | 108 ++- src/Cedar/NM.h | 8 +- src/Cedar/NMInner.h | 12 +- src/Cedar/Nat.c | 22 +- src/Cedar/Nat.h | 8 +- src/Cedar/NativeStack.c | 8 +- src/Cedar/NativeStack.h | 8 +- src/Cedar/NullLan.c | 8 +- src/Cedar/NullLan.h | 8 +- src/Cedar/Protocol.c | 169 +++- src/Cedar/Protocol.h | 8 +- src/Cedar/Radius.c | 557 +++++++++++- src/Cedar/Radius.h | 15 +- src/Cedar/Remote.c | 8 +- src/Cedar/Remote.h | 8 +- src/Cedar/SM.c | 68 +- src/Cedar/SM.h | 8 +- src/Cedar/SMInner.h | 9 +- src/Cedar/SW.c | 8 +- src/Cedar/SW.h | 8 +- src/Cedar/SWInner.h | 8 +- src/Cedar/Sam.c | 262 +++++- src/Cedar/Sam.h | 8 +- src/Cedar/SeLowUser.c | 8 +- src/Cedar/SeLowUser.h | 8 +- src/Cedar/SecureInfo.c | 8 +- src/Cedar/SecureInfo.h | 8 +- src/Cedar/SecureNAT.c | 8 +- src/Cedar/SecureNAT.h | 8 +- src/Cedar/Server.c | 277 +++++- src/Cedar/Server.h | 28 +- src/Cedar/Session.c | 8 +- src/Cedar/Session.h | 8 +- src/Cedar/UT.c | 8 +- src/Cedar/UT.h | 8 +- src/Cedar/UdpAccel.c | 8 +- src/Cedar/UdpAccel.h | 8 +- src/Cedar/VG.c | 8 +- src/Cedar/VG.h | 8 +- src/Cedar/VLan.c | 8 +- src/Cedar/VLan.h | 8 +- src/Cedar/VLanUnix.c | 8 +- src/Cedar/VLanUnix.h | 8 +- src/Cedar/VLanWin32.c | 8 +- src/Cedar/VLanWin32.h | 8 +- src/Cedar/Virtual.c | 32 +- src/Cedar/Virtual.h | 11 +- src/Cedar/WaterMark.c | 8 +- src/Cedar/WaterMark.h | 8 +- src/Cedar/WebUI.c | 8 +- src/Cedar/WebUI.h | 8 +- src/Cedar/Win32Com.cpp | 8 +- src/Cedar/Win32Com.h | 8 +- src/Cedar/WinJumpList.cpp | 8 +- src/Cedar/WinUi.c | 13 +- src/Cedar/WinUi.h | 8 +- src/Cedar/Wpc.c | 8 +- src/Cedar/Wpc.h | 8 +- src/CurrentBuild.txt | 6 +- src/GlobalConst.h | 8 +- src/Mayaqua/Cfg.c | 8 +- src/Mayaqua/Cfg.h | 8 +- src/Mayaqua/Encrypt.c | 21 +- src/Mayaqua/Encrypt.h | 8 +- src/Mayaqua/FileIO.c | 8 +- src/Mayaqua/FileIO.h | 8 +- src/Mayaqua/Internat.c | 8 +- src/Mayaqua/Internat.h | 8 +- src/Mayaqua/Kernel.c | 10 +- src/Mayaqua/Kernel.h | 8 +- src/Mayaqua/MayaType.h | 10 +- src/Mayaqua/Mayaqua.c | 8 +- src/Mayaqua/Mayaqua.h | 8 +- src/Mayaqua/Memory.c | 8 +- src/Mayaqua/Memory.h | 8 +- src/Mayaqua/Microsoft.c | 8 +- src/Mayaqua/Microsoft.h | 8 +- src/Mayaqua/Network.c | 22 +- src/Mayaqua/Network.h | 8 +- src/Mayaqua/OS.c | 8 +- src/Mayaqua/OS.h | 8 +- src/Mayaqua/Object.c | 8 +- src/Mayaqua/Object.h | 8 +- src/Mayaqua/Pack.c | 8 +- src/Mayaqua/Pack.h | 8 +- src/Mayaqua/Secure.c | 8 +- src/Mayaqua/Secure.h | 8 +- src/Mayaqua/Str.c | 8 +- src/Mayaqua/Str.h | 8 +- src/Mayaqua/Table.c | 8 +- src/Mayaqua/Table.h | 8 +- src/Mayaqua/TcpIp.c | 408 ++++++++- src/Mayaqua/TcpIp.h | 42 +- src/Mayaqua/Tick64.c | 8 +- src/Mayaqua/Tick64.h | 8 +- src/Mayaqua/Tracking.c | 8 +- src/Mayaqua/Tracking.h | 8 +- src/Mayaqua/TunTap.h | 8 +- src/Mayaqua/Unix.c | 14 +- src/Mayaqua/Unix.h | 12 +- src/Mayaqua/Win32.c | 8 +- src/Mayaqua/Win32.h | 8 +- src/Neo/NDIS5.c | 8 +- src/Neo/NDIS5.h | 8 +- src/Neo/Neo.c | 8 +- src/Neo/Neo.h | 8 +- src/Neo/resource.h | 8 +- src/Neo6/NDIS6.c | 8 +- src/Neo6/NDIS6.h | 8 +- src/Neo6/Neo6.c | 8 +- src/Neo6/Neo6.h | 8 +- src/Neo6/resource.h | 8 +- src/PenCore/PenCore.rc | 87 +- src/PenCore/resource.h | 11 +- src/README.TXT | 6 + src/SeLow/SeLow.c | 8 +- src/SeLow/SeLow.h | 8 +- src/SeLow/SeLowCommon.h | 8 +- src/SeLow/resource.h | 8 +- src/See/resource.h | 8 +- src/See/resource1.h | 8 +- src/SeeDll/resource.h | 8 +- src/THIRD_PARTY.TXT | 4 + src/VGate/VGate.c | 8 +- src/VGate/VGate.h | 8 +- src/VGate/resource.h | 8 +- src/Wfp/Wfp.c | 8 +- src/Wfp/Wfp.h | 8 +- src/Wfp/WfpInner.h | 8 +- src/Wfp/resource1.h | 8 +- src/bin/hamcore/SeLow_x64.sys | Bin 38112 -> 38112 bytes src/bin/hamcore/SeLow_x86.sys | Bin 30816 -> 30816 bytes src/bin/hamcore/authors.txt | 77 ++ src/bin/hamcore/inf/selow_x64/SeLow_x64.inf | 4 +- src/bin/hamcore/inf/selow_x64/inf.cat | Bin 6275 -> 6275 bytes src/bin/hamcore/inf/selow_x86/SeLow_x86.inf | 4 +- src/bin/hamcore/inf/selow_x86/inf.cat | Bin 6275 -> 6275 bytes src/bin/hamcore/inf/x64/INF_VPN.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN10.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN100.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN101.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN102.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN103.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN104.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN105.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN106.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN107.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN108.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN109.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN11.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN110.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN111.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN112.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN113.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN114.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN115.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN116.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN117.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN118.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN119.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN12.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN120.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN121.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN122.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN123.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN124.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN125.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN126.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN127.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN13.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN14.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN15.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN16.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN17.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN18.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN19.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN2.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN20.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN21.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN22.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN23.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN24.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN25.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN26.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN27.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN28.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN29.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN3.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN30.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN31.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN32.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN33.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN34.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN35.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN36.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN37.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN38.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN39.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN4.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN40.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN41.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN42.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN43.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN44.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN45.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN46.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN47.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN48.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN49.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN5.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN50.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN51.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN52.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN53.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN54.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN55.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN56.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN57.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN58.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN59.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN6.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN60.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN61.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN62.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN63.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN64.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN65.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN66.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN67.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN68.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN69.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN7.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN70.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN71.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN72.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN73.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN74.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN75.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN76.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN77.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN78.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN79.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN8.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN80.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN81.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN82.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN83.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN84.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN85.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN86.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN87.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN88.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN89.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN9.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN90.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN91.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN92.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN93.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN94.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN95.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN96.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN97.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN98.inf | 2 +- src/bin/hamcore/inf/x64/INF_VPN99.inf | 2 +- src/bin/hamcore/inf/x64/inf.cat | Bin 43113 -> 43113 bytes src/bin/hamcore/inf/x86/INF_VPN.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN10.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN100.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN101.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN102.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN103.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN104.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN105.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN106.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN107.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN108.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN109.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN11.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN110.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN111.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN112.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN113.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN114.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN115.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN116.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN117.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN118.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN119.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN12.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN120.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN121.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN122.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN123.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN124.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN125.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN126.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN127.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN13.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN14.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN15.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN16.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN17.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN18.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN19.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN2.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN20.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN21.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN22.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN23.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN24.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN25.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN26.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN27.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN28.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN29.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN3.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN30.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN31.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN32.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN33.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN34.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN35.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN36.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN37.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN38.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN39.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN4.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN40.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN41.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN42.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN43.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN44.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN45.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN46.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN47.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN48.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN49.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN5.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN50.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN51.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN52.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN53.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN54.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN55.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN56.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN57.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN58.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN59.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN6.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN60.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN61.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN62.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN63.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN64.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN65.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN66.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN67.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN68.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN69.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN7.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN70.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN71.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN72.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN73.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN74.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN75.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN76.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN77.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN78.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN79.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN8.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN80.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN81.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN82.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN83.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN84.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN85.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN86.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN87.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN88.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN89.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN9.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN90.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN91.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN92.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN93.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN94.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN95.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN96.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN97.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN98.inf | 2 +- src/bin/hamcore/inf/x86/INF_VPN99.inf | 2 +- src/bin/hamcore/inf/x86/inf.cat | Bin 43113 -> 43113 bytes src/bin/hamcore/legal.txt | 4 + src/bin/hamcore/pxwfp_x64.sys | Bin 22240 -> 22240 bytes src/bin/hamcore/pxwfp_x86.sys | Bin 18016 -> 18016 bytes src/bin/hamcore/see.sys | Bin 43104 -> 43104 bytes src/bin/hamcore/see_x64.sys | Bin 38240 -> 38240 bytes src/bin/hamcore/strtable_cn.stb | 66 +- src/bin/hamcore/strtable_en.stb | 46 +- src/bin/hamcore/strtable_ja.stb | 39 +- src/bin/hamcore/vpn_driver.sys | Bin 25824 -> 25824 bytes src/bin/hamcore/vpn_driver6.sys | Bin 26208 -> 26208 bytes src/bin/hamcore/vpn_driver6_x64.sys | Bin 28768 -> 28768 bytes src/bin/hamcore/vpn_driver_x64.sys | Bin 29536 -> 29536 bytes src/bin/vpnweb.cab | Bin 195780 -> 195788 bytes src/bin/vpnweb.ocx | Bin 333880 -> 333880 bytes src/hamcorebuilder/hamcorebuilder.c | 8 +- src/makefiles/freebsd_32bit.mak | 2 +- src/makefiles/freebsd_64bit.mak | 2 +- src/makefiles/linux_32bit.mak | 2 +- src/makefiles/linux_64bit.mak | 2 +- src/makefiles/macos_32bit.mak | 2 +- src/makefiles/macos_64bit.mak | 2 +- src/makefiles/openbsd_32bit.mak | 2 +- src/makefiles/openbsd_64bit.mak | 2 +- src/makefiles/solaris_32bit.mak | 2 +- src/makefiles/solaris_64bit.mak | 2 +- src/vpn16/vpn16.c | 8 +- src/vpn16/vpn16.h | 8 +- src/vpnbrand/vpnbrand.h | 8 +- src/vpnbridge/vpnbridge.c | 8 +- src/vpnclient/vpncsvc.c | 8 +- src/vpnclient/vpncsvc.h | 8 +- src/vpncmd/vpncmd.c | 8 +- src/vpncmdsys/vpncmdsys.c | 8 +- src/vpncmdsys/vpncmdsys.h | 8 +- src/vpncmgr/vpncmgr.c | 8 +- src/vpndrvinst/vpndrvinst.c | 8 +- src/vpndrvinst/vpndrvinst.h | 8 +- src/vpninstall/vpninstall.c | 8 +- src/vpninstall/vpninstall.h | 8 +- src/vpnserver/vpnserver.c | 8 +- src/vpnsetup/vpnsetup.c | 8 +- src/vpnsmgr/vpnsmgr.c | 8 +- src/vpnweb/vpnweb.h | 2 +- src/vpnweb/vpnweb_i.c | 2 +- src/vpnweb/vpnweb_p.c | 2 +- src/vpnweb/vpnwebdlg.c | 8 +- src/vpnweb/vpnwebdlg.h | 8 +- src/vpnweb/vpnwebdlg_inner.h | 8 +- 557 files changed, 5422 insertions(+), 637 deletions(-) create mode 100644 src/bin/hamcore/authors.txt diff --git a/AUTHORS.TXT b/AUTHORS.TXT index 8b16f749..3978bd21 100644 --- a/AUTHORS.TXT +++ b/AUTHORS.TXT @@ -58,6 +58,9 @@ CONTRIBUTORS on GitHub: - Dexter Ang https://github.com/thepoch + - YF + https://github.com/yfdyh000 + JOIN THE SOFTETHER VPN DEVELOPMENT ---------------------------------- diff --git a/BUILD_WINDOWS.TXT b/BUILD_WINDOWS.TXT index 06e64f72..32545985 100644 --- a/BUILD_WINDOWS.TXT +++ b/BUILD_WINDOWS.TXT @@ -8,10 +8,11 @@ Requirements You need to install the following software to build SoftEther VPN for Windows. - Microsoft Windows XP, Vista, 7, 8 or later. -- Microsoft Visual Studio 2008. +- Microsoft Visual Studio 2008 with the latest SP (SP1 9.0.30729.4462 QFE). * Note: - Visual Studio 2008 is required to build SoftEther VPN on Windows. + Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows. + Please make sure that VS2008 'SP1' is installed. Visual Studio 2010, 2012 or 2013 is currently not supported. Visual Studio 2008 Express Edition is not supported. Standard Edition, Professional Edition, Team System or Team Suite is diff --git a/README b/README index 56dd08b0..214b1345 100644 --- a/README +++ b/README @@ -50,6 +50,9 @@ SOFTETHER VPN ADVANTAGES - AES 256-bit and RSA 4096-bit encryptions. - Sufficient security features such as logging and firewall inner VPN tunnel. +- User authentication with RADIUS and NT domain controllers. +- User authentication with X.509 client certificate. +- Packet logging. - 1Gbps-class high-speed throughput performance with low memory and CPU usage. - Windows, Linux, Mac, Android, iPhone, iPad and Windows Phone are @@ -59,6 +62,9 @@ SOFTETHER VPN ADVANTAGES - The VPN server runs on Windows, Linux, FreeBSD, Solaris and Mac OS X. - Configure All settings on GUI. - Multi-languages (English, Japanese and Simplified-Chinese). +- No memory leaks. High quality stable codes, intended for long-term runs. + We always verify that there are no memory or resource leaks before + releasing the build. - More details at http://www.softether.org/. diff --git a/README.TXT b/README.TXT index 56dd08b0..214b1345 100644 --- a/README.TXT +++ b/README.TXT @@ -50,6 +50,9 @@ SOFTETHER VPN ADVANTAGES - AES 256-bit and RSA 4096-bit encryptions. - Sufficient security features such as logging and firewall inner VPN tunnel. +- User authentication with RADIUS and NT domain controllers. +- User authentication with X.509 client certificate. +- Packet logging. - 1Gbps-class high-speed throughput performance with low memory and CPU usage. - Windows, Linux, Mac, Android, iPhone, iPad and Windows Phone are @@ -59,6 +62,9 @@ SOFTETHER VPN ADVANTAGES - The VPN server runs on Windows, Linux, FreeBSD, Solaris and Mac OS X. - Configure All settings on GUI. - Multi-languages (English, Japanese and Simplified-Chinese). +- No memory leaks. High quality stable codes, intended for long-term runs. + We always verify that there are no memory or resource leaks before + releasing the build. - More details at http://www.softether.org/. diff --git a/THIRD_PARTY.TXT b/THIRD_PARTY.TXT index 5f24a507..50e42ade 100644 --- a/THIRD_PARTY.TXT +++ b/THIRD_PARTY.TXT @@ -775,6 +775,10 @@ The list of contributors for SoftEther VPN Project: - ELIN https://github.com/el1n + - YF + https://github.com/yfdyh000 + + SoftEther Corporation, the distributor of PacketiX VPN, appreciates all contributors for SoftEther VPN Project very much. diff --git a/centos/SOURCES/init.d/vpnserver b/centos/SOURCES/init.d/vpnserver index 950be63e..1933b6a3 100755 --- a/centos/SOURCES/init.d/vpnserver +++ b/centos/SOURCES/init.d/vpnserver @@ -40,7 +40,7 @@ start() { stop() { echo -n $"Stopping $prog: " - /usr/bin/timeout 30 $exec stop || /usr/bin/killall -q -9 $prog + /usr/bin/timeout 60 $exec stop || /usr/bin/killall -q -9 $prog retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile diff --git a/src/BUILD_WINDOWS.TXT b/src/BUILD_WINDOWS.TXT index 06e64f72..32545985 100644 --- a/src/BUILD_WINDOWS.TXT +++ b/src/BUILD_WINDOWS.TXT @@ -8,10 +8,11 @@ Requirements You need to install the following software to build SoftEther VPN for Windows. - Microsoft Windows XP, Vista, 7, 8 or later. -- Microsoft Visual Studio 2008. +- Microsoft Visual Studio 2008 with the latest SP (SP1 9.0.30729.4462 QFE). * Note: - Visual Studio 2008 is required to build SoftEther VPN on Windows. + Visual Studio 2008 SP1 is required to build SoftEther VPN on Windows. + Please make sure that VS2008 'SP1' is installed. Visual Studio 2010, 2012 or 2013 is currently not supported. Visual Studio 2008 Express Edition is not supported. Standard Edition, Professional Edition, Team System or Team Suite is diff --git a/src/BuildUtil/BuildUtilCommands.cs b/src/BuildUtil/BuildUtilCommands.cs index f244444c..bfd67e7c 100644 --- a/src/BuildUtil/BuildUtilCommands.cs +++ b/src/BuildUtil/BuildUtilCommands.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/BuildUtilMain.cs b/src/BuildUtil/BuildUtilMain.cs index c4f4a0b6..6178026a 100644 --- a/src/BuildUtil/BuildUtilMain.cs +++ b/src/BuildUtil/BuildUtilMain.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CodeSign.cs b/src/BuildUtil/CodeSign.cs index d3fe8183..2d5b8a2e 100644 --- a/src/BuildUtil/CodeSign.cs +++ b/src/BuildUtil/CodeSign.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Bmp.cs b/src/BuildUtil/CoreUtil/Bmp.cs index de49ff98..81b02b19 100644 --- a/src/BuildUtil/CoreUtil/Bmp.cs +++ b/src/BuildUtil/CoreUtil/Bmp.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Buf.cs b/src/BuildUtil/CoreUtil/Buf.cs index 1395441a..650d3104 100644 --- a/src/BuildUtil/CoreUtil/Buf.cs +++ b/src/BuildUtil/CoreUtil/Buf.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Cache.cs b/src/BuildUtil/CoreUtil/Cache.cs index d58c4e54..05645141 100644 --- a/src/BuildUtil/CoreUtil/Cache.cs +++ b/src/BuildUtil/CoreUtil/Cache.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Compress.cs b/src/BuildUtil/CoreUtil/Compress.cs index 9bac9606..ce8c7cd2 100644 --- a/src/BuildUtil/CoreUtil/Compress.cs +++ b/src/BuildUtil/CoreUtil/Compress.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Console.cs b/src/BuildUtil/CoreUtil/Console.cs index 151f9703..63eb7f06 100644 --- a/src/BuildUtil/CoreUtil/Console.cs +++ b/src/BuildUtil/CoreUtil/Console.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Csv.cs b/src/BuildUtil/CoreUtil/Csv.cs index 454eb1c1..48670f0f 100644 --- a/src/BuildUtil/CoreUtil/Csv.cs +++ b/src/BuildUtil/CoreUtil/Csv.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Env.cs b/src/BuildUtil/CoreUtil/Env.cs index dfd72d93..2cdecc17 100644 --- a/src/BuildUtil/CoreUtil/Env.cs +++ b/src/BuildUtil/CoreUtil/Env.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/FileIO.cs b/src/BuildUtil/CoreUtil/FileIO.cs index c0457709..b12f4ac7 100644 --- a/src/BuildUtil/CoreUtil/FileIO.cs +++ b/src/BuildUtil/CoreUtil/FileIO.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/GZip.cs b/src/BuildUtil/CoreUtil/GZip.cs index e7446d3a..73bc0a3e 100644 --- a/src/BuildUtil/CoreUtil/GZip.cs +++ b/src/BuildUtil/CoreUtil/GZip.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Kernel.cs b/src/BuildUtil/CoreUtil/Kernel.cs index 155f876e..a9d4b340 100644 --- a/src/BuildUtil/CoreUtil/Kernel.cs +++ b/src/BuildUtil/CoreUtil/Kernel.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/MultiLang.cs b/src/BuildUtil/CoreUtil/MultiLang.cs index 40c575ff..283e07a4 100644 --- a/src/BuildUtil/CoreUtil/MultiLang.cs +++ b/src/BuildUtil/CoreUtil/MultiLang.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Packer.cs b/src/BuildUtil/CoreUtil/Packer.cs index f3a910cf..54c027a5 100644 --- a/src/BuildUtil/CoreUtil/Packer.cs +++ b/src/BuildUtil/CoreUtil/Packer.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/RC4.cs b/src/BuildUtil/CoreUtil/RC4.cs index 5b9c3c7a..9882c3b4 100644 --- a/src/BuildUtil/CoreUtil/RC4.cs +++ b/src/BuildUtil/CoreUtil/RC4.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/ReadIni.cs b/src/BuildUtil/CoreUtil/ReadIni.cs index ea4c8488..44c1594c 100644 --- a/src/BuildUtil/CoreUtil/ReadIni.cs +++ b/src/BuildUtil/CoreUtil/ReadIni.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Reg.cs b/src/BuildUtil/CoreUtil/Reg.cs index 09612f6c..40434b0d 100644 --- a/src/BuildUtil/CoreUtil/Reg.cs +++ b/src/BuildUtil/CoreUtil/Reg.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Secure.cs b/src/BuildUtil/CoreUtil/Secure.cs index 04e257cc..0d845e32 100644 --- a/src/BuildUtil/CoreUtil/Secure.cs +++ b/src/BuildUtil/CoreUtil/Secure.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Stb.cs b/src/BuildUtil/CoreUtil/Stb.cs index ade01256..f071218d 100644 --- a/src/BuildUtil/CoreUtil/Stb.cs +++ b/src/BuildUtil/CoreUtil/Stb.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Str.cs b/src/BuildUtil/CoreUtil/Str.cs index 5d31bc87..e7e09ce5 100644 --- a/src/BuildUtil/CoreUtil/Str.cs +++ b/src/BuildUtil/CoreUtil/Str.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Tar.cs b/src/BuildUtil/CoreUtil/Tar.cs index ee85d783..d9efbd17 100644 --- a/src/BuildUtil/CoreUtil/Tar.cs +++ b/src/BuildUtil/CoreUtil/Tar.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Thread.cs b/src/BuildUtil/CoreUtil/Thread.cs index 4897a031..6b4335ff 100644 --- a/src/BuildUtil/CoreUtil/Thread.cs +++ b/src/BuildUtil/CoreUtil/Thread.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Time.cs b/src/BuildUtil/CoreUtil/Time.cs index c83041a8..2711582f 100644 --- a/src/BuildUtil/CoreUtil/Time.cs +++ b/src/BuildUtil/CoreUtil/Time.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Util.cs b/src/BuildUtil/CoreUtil/Util.cs index ae355ca6..a00db300 100644 --- a/src/BuildUtil/CoreUtil/Util.cs +++ b/src/BuildUtil/CoreUtil/Util.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Win32.cs b/src/BuildUtil/CoreUtil/Win32.cs index f387204b..f77fbac7 100644 --- a/src/BuildUtil/CoreUtil/Win32.cs +++ b/src/BuildUtil/CoreUtil/Win32.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/CoreUtil/Zip.cs b/src/BuildUtil/CoreUtil/Zip.cs index 3f63286e..54875681 100644 --- a/src/BuildUtil/CoreUtil/Zip.cs +++ b/src/BuildUtil/CoreUtil/Zip.cs @@ -4,7 +4,6 @@ // Copyright (C) 2012-2014 SoftEther VPN Project at University of Tsukuba. All Rights Reserved. // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/PEUtil.cs b/src/BuildUtil/PEUtil.cs index 962e0c23..009bc6fe 100644 --- a/src/BuildUtil/PEUtil.cs +++ b/src/BuildUtil/PEUtil.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/Properties/Resources.Designer.cs b/src/BuildUtil/Properties/Resources.Designer.cs index 1a025dd5..14f45a88 100644 --- a/src/BuildUtil/Properties/Resources.Designer.cs +++ b/src/BuildUtil/Properties/Resources.Designer.cs @@ -9,7 +9,6 @@ //------------------------------------------------------------------------------ // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -80,6 +79,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. namespace BuildUtil.Properties { diff --git a/src/BuildUtil/Properties/Settings.Designer.cs b/src/BuildUtil/Properties/Settings.Designer.cs index 8c882136..6b886d21 100644 --- a/src/BuildUtil/Properties/Settings.Designer.cs +++ b/src/BuildUtil/Properties/Settings.Designer.cs @@ -9,7 +9,6 @@ //------------------------------------------------------------------------------ // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -80,6 +79,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. namespace BuildUtil.Properties { diff --git a/src/BuildUtil/Test.cs b/src/BuildUtil/Test.cs index 8d3160f3..5be0ac72 100644 --- a/src/BuildUtil/Test.cs +++ b/src/BuildUtil/Test.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/UnixBuildSoftwares.cs b/src/BuildUtil/UnixBuildSoftwares.cs index 56d20588..1be25071 100644 --- a/src/BuildUtil/UnixBuildSoftwares.cs +++ b/src/BuildUtil/UnixBuildSoftwares.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; @@ -258,6 +264,16 @@ namespace BuildUtil tar.AddFileSimple(targetName + @"\" + "ReadMeFirst_License.txt", destData, 0, destData.Length, DateTime.Now); } + if (true) + { + string srcData = File.ReadAllText(Path.Combine(Paths.BinDirName, @"hamcore\authors.txt"), + enc); + + byte[] destData = enc.GetBytes(srcData); + + tar.AddFileSimple(targetName + @"\" + "Authors.txt", destData, 0, destData.Length, DateTime.Now); + } + if (true) { string srcData = File.ReadAllText(Path.Combine(Paths.BinDirName, @"hamcore\warning_ja.txt"), diff --git a/src/BuildUtil/VpnBuilder.cs b/src/BuildUtil/VpnBuilder.cs index 7251a421..325cd900 100644 --- a/src/BuildUtil/VpnBuilder.cs +++ b/src/BuildUtil/VpnBuilder.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/VpnBuilderConfig.cs b/src/BuildUtil/VpnBuilderConfig.cs index 91109249..29774c51 100644 --- a/src/BuildUtil/VpnBuilderConfig.cs +++ b/src/BuildUtil/VpnBuilderConfig.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/VpnBuilderConfigTypes.cs b/src/BuildUtil/VpnBuilderConfigTypes.cs index c5e0cc1a..83dc149f 100644 --- a/src/BuildUtil/VpnBuilderConfigTypes.cs +++ b/src/BuildUtil/VpnBuilderConfigTypes.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/Web References/HvSignService/Reference.cs b/src/BuildUtil/Web References/HvSignService/Reference.cs index 75a21dc0..c559b2c2 100644 --- a/src/BuildUtil/Web References/HvSignService/Reference.cs +++ b/src/BuildUtil/Web References/HvSignService/Reference.cs @@ -9,7 +9,6 @@ //------------------------------------------------------------------------------ // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -80,6 +79,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // diff --git a/src/BuildUtil/Web References/SignService/Reference.cs b/src/BuildUtil/Web References/SignService/Reference.cs index 2d9814a6..36fae0c8 100644 --- a/src/BuildUtil/Web References/SignService/Reference.cs +++ b/src/BuildUtil/Web References/SignService/Reference.cs @@ -9,7 +9,6 @@ //------------------------------------------------------------------------------ // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -80,6 +79,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // diff --git a/src/BuildUtil/Win32BuildSoftware.cs b/src/BuildUtil/Win32BuildSoftware.cs index 0d01f904..08c1e49c 100644 --- a/src/BuildUtil/Win32BuildSoftware.cs +++ b/src/BuildUtil/Win32BuildSoftware.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/BuildUtil/Win32BuildUtil.cs b/src/BuildUtil/Win32BuildUtil.cs index 2cb88c83..4814ec25 100644 --- a/src/BuildUtil/Win32BuildUtil.cs +++ b/src/BuildUtil/Win32BuildUtil.cs @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. using System; diff --git a/src/Cedar/Account.c b/src/Cedar/Account.c index f4004d5e..29887dc4 100644 --- a/src/Cedar/Account.c +++ b/src/Cedar/Account.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Account.c diff --git a/src/Cedar/Account.h b/src/Cedar/Account.h index 71e0ed97..5b841bbc 100644 --- a/src/Cedar/Account.h +++ b/src/Cedar/Account.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Account.h diff --git a/src/Cedar/Admin.c b/src/Cedar/Admin.c index bb17b713..f9af5c0c 100644 --- a/src/Cedar/Admin.c +++ b/src/Cedar/Admin.c @@ -16,7 +16,6 @@ // - ELIN (https://github.com/el1n) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -87,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Admin.c @@ -1716,7 +1722,7 @@ UINT StGetAdminMsg(ADMIN *a, RPC_MSG *t) if ( c->Bridge == false) { - if (GetCurrentLangId() != SE_LANG_ENGLISH) + if (GetGlobalServerFlag(GSF_SHOW_OSS_MSG) != 0) { UniStrCat(tmp, tmpsize, _UU("OSS_MSG")); } @@ -2179,6 +2185,11 @@ UINT StSetAcList(ADMIN *a, RPC_AC_LIST *t) return ERR_NOT_SUPPORTED; } + if (GetGlobalServerFlag(GSF_DISABLE_AC) != 0 && LIST_NUM(t->o) >= 1) + { + return ERR_NOT_SUPPORTED_FUNCTION_ON_OPENSOURCE; + } + CHECK_RIGHT; NO_SUPPORT_FOR_BRIDGE; if (s->ServerType == SERVER_TYPE_FARM_MEMBER) @@ -3620,6 +3631,11 @@ UINT StSetSysLog(ADMIN *a, SYSLOG_SETTING *t) SERVER_ADMIN_ONLY; + if (GetGlobalServerFlag(GSF_DISABLE_SYSLOG) != 0 && t->SaveType != SYSLOG_NONE) + { + return ERR_NOT_SUPPORTED_FUNCTION_ON_OPENSOURCE; + } + if (GetServerCapsBool(s, "b_support_syslog") == false) { return ERR_NOT_SUPPORTED; @@ -5017,9 +5033,12 @@ UINT StSetUser(ADMIN *a, RPC_SET_USER *t) CHECK_RIGHT; - if (t->AuthType == AUTHTYPE_USERCERT || t->AuthType == AUTHTYPE_RADIUS || t->AuthType == AUTHTYPE_ROOTCERT || t->AuthType == AUTHTYPE_NT) + if (GetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH) != 0) { - return ERR_NOT_SUPPORTED_AUTH_ON_OPENSOURCE; + if (t->AuthType == AUTHTYPE_USERCERT || t->AuthType == AUTHTYPE_RADIUS || t->AuthType == AUTHTYPE_ROOTCERT || t->AuthType == AUTHTYPE_NT) + { + return ERR_NOT_SUPPORTED_AUTH_ON_OPENSOURCE; + } } if (StrCmpi(t->Name, "*") == 0) @@ -5147,9 +5166,12 @@ UINT StCreateUser(ADMIN *a, RPC_SET_USER *t) CHECK_RIGHT; - if (t->AuthType == AUTHTYPE_USERCERT || t->AuthType == AUTHTYPE_RADIUS || t->AuthType == AUTHTYPE_ROOTCERT || t->AuthType == AUTHTYPE_NT) + if (GetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH) != 0) { - return ERR_NOT_SUPPORTED_AUTH_ON_OPENSOURCE; + if (t->AuthType == AUTHTYPE_USERCERT || t->AuthType == AUTHTYPE_RADIUS || t->AuthType == AUTHTYPE_ROOTCERT || t->AuthType == AUTHTYPE_NT) + { + return ERR_NOT_SUPPORTED_AUTH_ON_OPENSOURCE; + } } if (t->AuthType == AUTHTYPE_USERCERT) @@ -7254,6 +7276,7 @@ UINT StSetSecureNATOption(ADMIN *a, VH_OPTION *t) SERVER *s = a->Server; CEDAR *c = s->Cedar; HUB *h; + char push_routes_str_old[MAX_DHCP_CLASSLESS_ROUTE_TABLE_STR_SIZE]; if (IsZero(t->MacAddress, sizeof(t->MacAddress)) || @@ -7266,6 +7289,17 @@ UINT StSetSecureNATOption(ADMIN *a, VH_OPTION *t) { return ERR_INVALID_PARAMETER; } + if (GetServerCapsBool(s, "b_support_securenat") == false) + { + t->ApplyDhcpPushRoutes = false; + } + if (t->ApplyDhcpPushRoutes) + { + if (NormalizeClasslessRouteTableStr(t->DhcpPushRoutes, sizeof(t->DhcpPushRoutes), t->DhcpPushRoutes) == false) + { + return ERR_INVALID_PARAMETER; + } + } CHECK_RIGHT; @@ -7315,7 +7349,12 @@ UINT StSetSecureNATOption(ADMIN *a, VH_OPTION *t) } } + StrCpy(push_routes_str_old, sizeof(push_routes_str_old), h->SecureNATOption->DhcpPushRoutes); Copy(h->SecureNATOption, t, sizeof(VH_OPTION)); + if (t->ApplyDhcpPushRoutes == false) + { + StrCpy(h->SecureNATOption->DhcpPushRoutes, sizeof(h->SecureNATOption->DhcpPushRoutes), push_routes_str_old); + } if (h->Type != HUB_TYPE_STANDALONE && h->Cedar != NULL && h->Cedar->Server != NULL && h->Cedar->Server->ServerType == SERVER_TYPE_FARM_CONTROLLER) @@ -7381,6 +7420,7 @@ UINT StGetSecureNATOption(ADMIN *a, VH_OPTION *t) Zero(t, sizeof(VH_OPTION)); StrCpy(t->HubName, sizeof(t->HubName), hubname); Copy(t, h->SecureNATOption, sizeof(VH_OPTION)); + t->ApplyDhcpPushRoutes = true; ReleaseHub(h); @@ -7617,6 +7657,11 @@ UINT StSetHubRadius(ADMIN *a, RPC_RADIUS *t) return ERR_NOT_SUPPORTED; } + if (GetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH) != 0 && IsEmptyStr(t->RadiusServerName) == false) + { + return ERR_NOT_SUPPORTED_FUNCTION_ON_OPENSOURCE; + } + CHECK_RIGHT; LockHubList(c); diff --git a/src/Cedar/Admin.h b/src/Cedar/Admin.h index 15ee26be..7715ba0e 100644 --- a/src/Cedar/Admin.h +++ b/src/Cedar/Admin.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Admin.h diff --git a/src/Cedar/AzureClient.c b/src/Cedar/AzureClient.c index 00614d09..0ba2840f 100644 --- a/src/Cedar/AzureClient.c +++ b/src/Cedar/AzureClient.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // AzureClient.c diff --git a/src/Cedar/AzureClient.h b/src/Cedar/AzureClient.h index 906c677a..d5267fbe 100644 --- a/src/Cedar/AzureClient.h +++ b/src/Cedar/AzureClient.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // AzureClient.h diff --git a/src/Cedar/AzureServer.c b/src/Cedar/AzureServer.c index 1ffd2935..b185a5d3 100644 --- a/src/Cedar/AzureServer.c +++ b/src/Cedar/AzureServer.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // AzureServer.c diff --git a/src/Cedar/AzureServer.h b/src/Cedar/AzureServer.h index c43d9dae..1d237107 100644 --- a/src/Cedar/AzureServer.h +++ b/src/Cedar/AzureServer.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // AzureServer.h diff --git a/src/Cedar/Bridge.c b/src/Cedar/Bridge.c index 978d273e..363651f3 100644 --- a/src/Cedar/Bridge.c +++ b/src/Cedar/Bridge.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Bridge.c diff --git a/src/Cedar/Bridge.h b/src/Cedar/Bridge.h index 31a996ac..011876c7 100644 --- a/src/Cedar/Bridge.h +++ b/src/Cedar/Bridge.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Bridge.h diff --git a/src/Cedar/BridgeUnix.c b/src/Cedar/BridgeUnix.c index 82d23642..326c1f35 100644 --- a/src/Cedar/BridgeUnix.c +++ b/src/Cedar/BridgeUnix.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // BridgeUnix.c diff --git a/src/Cedar/BridgeUnix.h b/src/Cedar/BridgeUnix.h index b7c1403d..9e7bd655 100644 --- a/src/Cedar/BridgeUnix.h +++ b/src/Cedar/BridgeUnix.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // BridgeUnix.h diff --git a/src/Cedar/BridgeWin32.c b/src/Cedar/BridgeWin32.c index 0a6db392..9f07f40a 100644 --- a/src/Cedar/BridgeWin32.c +++ b/src/Cedar/BridgeWin32.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // BridgeWin32.c diff --git a/src/Cedar/BridgeWin32.h b/src/Cedar/BridgeWin32.h index 99adbd38..5991bfb9 100644 --- a/src/Cedar/BridgeWin32.h +++ b/src/Cedar/BridgeWin32.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // BridgeWin32.h diff --git a/src/Cedar/CM.c b/src/Cedar/CM.c index 3181f7cb..bdbbcae6 100644 --- a/src/Cedar/CM.c +++ b/src/Cedar/CM.c @@ -16,7 +16,6 @@ // - ELIN (https://github.com/el1n) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -87,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // CM.c @@ -6847,6 +6853,17 @@ void CmEditAccountDlgUpdate(HWND hWnd, CM_ACCOUNT *a) GetTxtA(hWnd, E_HOSTNAME, a->ClientOption->Hostname, sizeof(a->ClientOption->Hostname)); Trim(a->ClientOption->Hostname); + if (InStr(a->ClientOption->Hostname, "/tcp")) + { + Check(hWnd, R_DISABLE_NATT, true); + } + else + { + Check(hWnd, R_DISABLE_NATT, false); + } + + SetEnable(hWnd, R_DISABLE_NATT, !IsEmptyStr(a->ClientOption->Hostname)); + // Port number a->ClientOption->Port = GetInt(hWnd, C_PORT); @@ -7278,6 +7295,15 @@ void CmEditAccountDlgInit(HWND hWnd, CM_ACCOUNT *a) SetTextA(hWnd, E_HOSTNAME, a->ClientOption->Hostname); StrCpy(a->old_server_name, sizeof(a->old_server_name), a->ClientOption->Hostname); + if (InStr(a->ClientOption->Hostname, "/tcp")) + { + Check(hWnd, R_DISABLE_NATT, true); + } + else + { + Check(hWnd, R_DISABLE_NATT, false); + } + // Port number CbSetHeight(hWnd, C_PORT, 18); CbAddStr(hWnd, C_PORT, _UU("CM_PORT_1"), 0); @@ -7442,6 +7468,8 @@ UINT CmEditAccountDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, voi NMHDR *n; X *x; K *k; + char tmp[MAX_PATH]; + bool no_update_natt_check = false; // Validate arguments if (hWnd == NULL) { @@ -7483,6 +7511,39 @@ UINT CmEditAccountDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, voi } break; case WM_COMMAND: + switch (wParam) + { + case R_DISABLE_NATT: + Zero(tmp, sizeof(tmp)); + GetTxtA(hWnd, E_HOSTNAME, tmp, sizeof(tmp)); + + if (IsChecked(hWnd, R_DISABLE_NATT)) + { + if (InStr(tmp, "/tcp") == false) + { + StrCat(tmp, sizeof(tmp), "/tcp"); + + SetTextA(hWnd, E_HOSTNAME, tmp); + } + } + else + { + if (InStr(tmp, "/tcp")) + { + UINT i = SearchStrEx(tmp, "/tcp", 0, false); + + if (i != INFINITE) + { + tmp[i] = 0; + + SetTextA(hWnd, E_HOSTNAME, tmp); + } + } + } + + CmEditAccountDlgStartEnumHub(hWnd, a); + break; + } switch (LOWORD(wParam)) { case E_ACCOUNT_NAME: @@ -7531,6 +7592,13 @@ UINT CmEditAccountDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, voi break; } break; + case BN_PUSHED: + switch (LOWORD(wParam)) + { + case R_DISABLE_NATT: + break; + } + break; } if (HIWORD(wParam) == 0) { diff --git a/src/Cedar/CM.h b/src/Cedar/CM.h index 1d497442..728f8a01 100644 --- a/src/Cedar/CM.h +++ b/src/Cedar/CM.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // CM.h diff --git a/src/Cedar/CMInner.h b/src/Cedar/CMInner.h index 06e95196..b7388792 100644 --- a/src/Cedar/CMInner.h +++ b/src/Cedar/CMInner.h @@ -16,7 +16,6 @@ // - ELIN (https://github.com/el1n) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -87,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // CMInner.h diff --git a/src/Cedar/Cedar.c b/src/Cedar/Cedar.c index 04d3697a..b2600e52 100644 --- a/src/Cedar/Cedar.c +++ b/src/Cedar/Cedar.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Cedar.c @@ -1246,6 +1252,8 @@ void CleanupCedar(CEDAR *c) DeleteLock(c->OpenVPNPublicPortsLock); + DeleteLock(c->CurrentRegionLock); + Free(c); } @@ -1505,6 +1513,8 @@ CEDAR *NewCedar(X *server_x, K *server_k) c->CedarSuperLock = NewLock(); + c->CurrentRegionLock = NewLock(); + #ifdef BETA_NUMBER c->Beta = BETA_NUMBER; #endif // BETA_NUMBER diff --git a/src/Cedar/Cedar.h b/src/Cedar/Cedar.h index c0f972da..b003af64 100644 --- a/src/Cedar/Cedar.h +++ b/src/Cedar/Cedar.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Cedar.h @@ -114,10 +120,10 @@ // Version number -#define CEDAR_VER 405 +#define CEDAR_VER 406 // Build Number -#define CEDAR_BUILD 9423 +#define CEDAR_BUILD 9430 // Beta number //#define BETA_NUMBER 3 @@ -137,11 +143,11 @@ // Specifies the build date #define BUILD_DATE_Y 2014 -#define BUILD_DATE_M 2 -#define BUILD_DATE_D 18 -#define BUILD_DATE_HO 19 -#define BUILD_DATE_MI 9 -#define BUILD_DATE_SE 44 +#define BUILD_DATE_M 3 +#define BUILD_DATE_D 20 +#define BUILD_DATE_HO 4 +#define BUILD_DATE_MI 8 +#define BUILD_DATE_SE 6 // Tolerable time difference #define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000) @@ -1003,6 +1009,8 @@ typedef struct CEDAR char CurrentDDnsFqdn[MAX_SIZE]; // FQDN of the current DDNS char OpenVPNPublicPorts[MAX_SIZE]; // OpenVPN public UDP port list LOCK *OpenVPNPublicPortsLock; // Lock of OpenVPN public UDP port list + LOCK *CurrentRegionLock; // Current region lock + char CurrentRegion[128]; // Current region } CEDAR; // Type of CEDAR diff --git a/src/Cedar/CedarPch.c b/src/Cedar/CedarPch.c index 57a239de..f6752dc9 100644 --- a/src/Cedar/CedarPch.c +++ b/src/Cedar/CedarPch.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // CedarPch.c diff --git a/src/Cedar/CedarPch.h b/src/Cedar/CedarPch.h index ab4803fe..ceefea80 100644 --- a/src/Cedar/CedarPch.h +++ b/src/Cedar/CedarPch.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // CedarPch.h diff --git a/src/Cedar/CedarType.h b/src/Cedar/CedarType.h index 8c850e1d..d02e6c14 100644 --- a/src/Cedar/CedarType.h +++ b/src/Cedar/CedarType.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // CedarType.h diff --git a/src/Cedar/Client.c b/src/Cedar/Client.c index 9f57f057..17c5d9a2 100644 --- a/src/Cedar/Client.c +++ b/src/Cedar/Client.c @@ -16,7 +16,6 @@ // - nattoheaven (https://github.com/nattoheaven) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -87,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Client.c diff --git a/src/Cedar/Client.h b/src/Cedar/Client.h index abfd4e56..bad47c99 100644 --- a/src/Cedar/Client.h +++ b/src/Cedar/Client.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Client.h diff --git a/src/Cedar/Command.c b/src/Cedar/Command.c index 972f3135..9ae8bdc3 100644 --- a/src/Cedar/Command.c +++ b/src/Cedar/Command.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Command.c @@ -18846,6 +18852,13 @@ UINT PsDhcpGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) // To save the log CtInsert(ct, _UU("CMD_SecureNatHostGet_Column_LOG"), t.SaveLog ? _UU("SEC_YES") : _UU("SEC_NO")); + // Push routing table + if (t.ApplyDhcpPushRoutes) + { + StrToUni(tmp, sizeof(tmp), t.DhcpPushRoutes); + CtInsert(ct, _UU("CMD_DhcpGet_Column_PUSHROUTE"), tmp); + } + CtFree(ct, c); } @@ -19013,6 +19026,7 @@ UINT PsDhcpSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) {"DNS2", CmdPrompt, _UU("CMD_DhcpSet_Prompt_DNS2"), CmdEvalIp, NULL}, {"DOMAIN", CmdPrompt, _UU("CMD_DhcpSet_Prompt_DOMAIN"), NULL, NULL}, {"LOG", CmdPrompt, _UU("CMD_NatSet_Prompt_LOG"), CmdEvalNotEmpty, NULL}, + {"PUSHROUTE", NULL, _UU("CMD_DhcpSet_PUSHROUTE"), NULL, NULL}, }; // If virtual HUB is not selected, it's an error @@ -19055,6 +19069,9 @@ UINT PsDhcpSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) StrCpy(t.DhcpDomainName, sizeof(t.DhcpDomainName), GetParamStr(o, "DOMAIN")); t.SaveLog = GetParamYes(o, "LOG"); + StrCpy(t.DhcpPushRoutes, sizeof(t.DhcpPushRoutes), GetParamStr(o, "PUSHROUTE")); + t.ApplyDhcpPushRoutes = true; + if (ok == false) { // Parameter is invalid @@ -19075,6 +19092,15 @@ UINT PsDhcpSet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param) FreeParamValueList(o); return ret; } + + if (IsEmptyStr(GetParamStr(o, "PUSHROUTE")) == false) + { + if (GetCapsBool(ps->CapsList, "b_suppport_push_route") == false && + GetCapsBool(ps->CapsList, "b_suppport_push_route_config")) + { + CmdPrintError(c, ERR_NOT_SUPPORTED_FUNCTION_ON_OPENSOURCE); + } + } } } diff --git a/src/Cedar/Command.h b/src/Cedar/Command.h index 68a5c27b..9b091bea 100644 --- a/src/Cedar/Command.h +++ b/src/Cedar/Command.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Command.h diff --git a/src/Cedar/Connection.c b/src/Cedar/Connection.c index 29999a85..96d76568 100644 --- a/src/Cedar/Connection.c +++ b/src/Cedar/Connection.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Connection.c diff --git a/src/Cedar/Connection.h b/src/Cedar/Connection.h index fdbae898..4af0843d 100644 --- a/src/Cedar/Connection.h +++ b/src/Cedar/Connection.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Connection.h diff --git a/src/Cedar/Console.c b/src/Cedar/Console.c index 62104c28..fede3e4d 100644 --- a/src/Cedar/Console.c +++ b/src/Cedar/Console.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Console.c diff --git a/src/Cedar/Console.h b/src/Cedar/Console.h index 7e39a81f..2ab7ef75 100644 --- a/src/Cedar/Console.h +++ b/src/Cedar/Console.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Console.h diff --git a/src/Cedar/DDNS.c b/src/Cedar/DDNS.c index 13ff8ec5..7f198081 100644 --- a/src/Cedar/DDNS.c +++ b/src/Cedar/DDNS.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // DDNS.c @@ -652,6 +658,7 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace if (err == ERR_NO_ERROR) { char snat_t[MAX_SIZE]; + char current_region[128]; // Current host name PackGetStr(ret, "current_hostname", c->CurrentHostName, sizeof(c->CurrentHostName)); @@ -659,6 +666,7 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace PackGetStr(ret, "current_ipv4", c->CurrentIPv4, sizeof(c->CurrentIPv4)); PackGetStr(ret, "current_ipv6", c->CurrentIPv6, sizeof(c->CurrentIPv6)); PackGetStr(ret, "dns_suffix", c->DnsSuffix, sizeof(c->DnsSuffix)); + PackGetStr(ret, "current_region", current_region, sizeof(current_region)); // SecureNAT connectivity check parameters Zero(snat_t, sizeof(snat_t)); @@ -688,6 +696,12 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace c->CurrentHostName, c->CurrentFqdn, c->CurrentIPv4, c->CurrentIPv6, c->CurrentAzureIp, c->CurrentAzureTimestamp, c->CurrentAzureSignature, c->AzureCertHash); + + if (IsEmptyStr(current_region) == false) + { + // Update the current region + SiUpdateCurrentRegion(c->Cedar, current_region, false); + } } } Unlock(c->Lock); diff --git a/src/Cedar/DDNS.h b/src/Cedar/DDNS.h index e24f4f16..f1bc1579 100644 --- a/src/Cedar/DDNS.h +++ b/src/Cedar/DDNS.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // DDNS.h diff --git a/src/Cedar/Database.c b/src/Cedar/Database.c index 82a6f0ef..715c0e64 100644 --- a/src/Cedar/Database.c +++ b/src/Cedar/Database.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Database.c diff --git a/src/Cedar/Database.h b/src/Cedar/Database.h index 9e978940..25ae7f11 100644 --- a/src/Cedar/Database.h +++ b/src/Cedar/Database.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Database.h diff --git a/src/Cedar/EM.c b/src/Cedar/EM.c index 12ed4ec0..9a9517ce 100644 --- a/src/Cedar/EM.c +++ b/src/Cedar/EM.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // EM.c diff --git a/src/Cedar/EM.h b/src/Cedar/EM.h index 917d2037..04a25edd 100644 --- a/src/Cedar/EM.h +++ b/src/Cedar/EM.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // EM.h diff --git a/src/Cedar/EMInner.h b/src/Cedar/EMInner.h index 07c6b404..3173664a 100644 --- a/src/Cedar/EMInner.h +++ b/src/Cedar/EMInner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // EMInner.h diff --git a/src/Cedar/EtherLog.c b/src/Cedar/EtherLog.c index 183ec64c..7429c8dc 100644 --- a/src/Cedar/EtherLog.c +++ b/src/Cedar/EtherLog.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // EtherLog.c diff --git a/src/Cedar/EtherLog.h b/src/Cedar/EtherLog.h index 50656a03..af1ecbd1 100644 --- a/src/Cedar/EtherLog.h +++ b/src/Cedar/EtherLog.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // EtherLog.h diff --git a/src/Cedar/Hub.c b/src/Cedar/Hub.c index 678251a6..429fa1ca 100644 --- a/src/Cedar/Hub.c +++ b/src/Cedar/Hub.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Hub.c @@ -572,6 +578,8 @@ void DataToHubOptionStruct(HUB_OPTION *o, RPC_ADMIN_OPTION *ao) GetHubAdminOptionDataAndSet(ao, "BroadcastLimiterStrictMode", &o->BroadcastLimiterStrictMode); GetHubAdminOptionDataAndSet(ao, "MaxLoggedPacketsPerMinute", &o->MaxLoggedPacketsPerMinute); GetHubAdminOptionDataAndSet(ao, "DoNotSaveHeavySecurityLogs", &o->DoNotSaveHeavySecurityLogs); + GetHubAdminOptionDataAndSet(ao, "DropBroadcastsInPrivacyFilterMode", &o->DropBroadcastsInPrivacyFilterMode); + GetHubAdminOptionDataAndSet(ao, "DropArpInPrivacyFilterMode", &o->DropArpInPrivacyFilterMode); } // Convert the contents of the HUB_OPTION to data @@ -633,6 +641,8 @@ void HubOptionStructToData(RPC_ADMIN_OPTION *ao, HUB_OPTION *o, char *hub_name) Add(aol, NewAdminOption("BroadcastLimiterStrictMode", o->BroadcastLimiterStrictMode)); Add(aol, NewAdminOption("MaxLoggedPacketsPerMinute", o->MaxLoggedPacketsPerMinute)); Add(aol, NewAdminOption("DoNotSaveHeavySecurityLogs", o->DoNotSaveHeavySecurityLogs)); + Add(aol, NewAdminOption("DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode)); + Add(aol, NewAdminOption("DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode)); Zero(ao, sizeof(RPC_ADMIN_OPTION)); @@ -775,13 +785,102 @@ char *GenerateAcStr(AC *ac) // Calculate whether the specified IP address is rejected by the access list bool IsIpDeniedByAcList(IP *ip, LIST *o) { + UINT i; + // Validate arguments + if (ip == NULL || o == NULL) + { + return false; + } + + if (GetGlobalServerFlag(GSF_DISABLE_AC) != 0) + { + return false; + } + + for (i = 0;i < LIST_NUM(o);i++) + { + AC *ac = LIST_DATA(o, i); + + if (IsIpMaskedByAc(ip, ac)) + { + if (ac->Deny == false) + { + return false; + } + else + { + return true; + } + } + } + return false; } // Calculate whether the specified IP address is masked by the AC bool IsIpMaskedByAc(IP *ip, AC *ac) { - return false; + UINT uip, net, mask; + // Validate arguments + if (ip == NULL || ac == NULL) + { + return false; + } + + if (GetGlobalServerFlag(GSF_DISABLE_AC) != 0) + { + return false; + } + + if (IsIP4(ip)) + { + // IPv4 + uip = IPToUINT(ip); + net = IPToUINT(&ac->IpAddress); + mask = IPToUINT(&ac->SubnetMask); + + if (ac->Masked == false) + { + if (uip == net) + { + return true; + } + } + else + { + if ((uip & mask) == (net & mask)) + { + return true; + } + } + + return false; + } + else + { + // IPv6 + if (ac->Masked == false) + { + if (CmpIpAddr(ip, &ac->IpAddress) == 0) + { + return true; + } + } + else + { + IP and1, and2; + + IPAnd6(&and1, ip, &ac->SubnetMask); + IPAnd6(&and2, &ac->IpAddress, &ac->SubnetMask); + + if (CmpIpAddr(&and1, &and2) == 0) + { + return true; + } + } + + return false; + } } // Set the AC @@ -3831,6 +3930,8 @@ void StorePacket(HUB *hub, SESSION *s, PKT *packet) TRAFFIC traffic; UINT64 now = Tick64(); bool no_heavy = false; + bool drop_broadcast_packet_privacy = false; + bool drop_arp_packet_privacy = false; // Validate arguments if (hub == NULL || packet == NULL) { @@ -3851,6 +3952,8 @@ void StorePacket(HUB *hub, SESSION *s, PKT *packet) if (hub->Option != NULL) { no_heavy = hub->Option->DoNotSaveHeavySecurityLogs; + drop_broadcast_packet_privacy = hub->Option->DropBroadcastsInPrivacyFilterMode; + drop_arp_packet_privacy = hub->Option->DropArpInPrivacyFilterMode; } // Lock the entire MAC address table @@ -4760,13 +4863,13 @@ UPDATE_FDB: } if (s != NULL && - (packet->BroadcastPacket == false && + ((drop_broadcast_packet_privacy || packet->BroadcastPacket == false) && s->Policy->PrivacyFilter && dest_session->Policy->PrivacyFilter) ) { // Privacy filter - if (packet->TypeL3 != L3_ARPV4) + if (drop_arp_packet_privacy || packet->TypeL3 != L3_ARPV4) { goto DISCARD_UNICAST_PACKET; } @@ -4942,13 +5045,13 @@ DISCARD_UNICAST_PACKET: } if (s != NULL && - (packet->BroadcastPacket == false && + ((drop_broadcast_packet_privacy || packet->BroadcastPacket == false) && s->Policy->PrivacyFilter && dest_session->Policy->PrivacyFilter) ) { // Privacy filter - if (packet->TypeL3 != L3_ARPV4) + if (drop_arp_packet_privacy || packet->TypeL3 != L3_ARPV4) { discard = true; } @@ -6858,6 +6961,9 @@ HUB *NewHub(CEDAR *cedar, char *HubName, HUB_OPTION *option) h->Option->VlanTypeId = MAC_PROTO_TAGVLAN; } + h->Option->DropBroadcastsInPrivacyFilterMode = true; + h->Option->DropArpInPrivacyFilterMode = true; + Rand(h->HubSignature, sizeof(h->HubSignature)); // SecureNAT related diff --git a/src/Cedar/Hub.h b/src/Cedar/Hub.h index 0da31bdd..30873025 100644 --- a/src/Cedar/Hub.h +++ b/src/Cedar/Hub.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Hub.h @@ -245,6 +251,8 @@ struct HUB_OPTION bool BroadcastLimiterStrictMode; // Strictly broadcast packets limiting mode UINT MaxLoggedPacketsPerMinute; // Maximum number of logging target packets per minute bool DoNotSaveHeavySecurityLogs; // Do not take heavy security log + bool DropBroadcastsInPrivacyFilterMode; // Drop broadcasting packets if the both source and destination session is PrivacyFilter mode + bool DropArpInPrivacyFilterMode; // Drop ARP packets if the both source and destination session is PrivacyFilter mode }; // MAC table entry diff --git a/src/Cedar/IPsec.c b/src/Cedar/IPsec.c index 95d37d26..766d6c67 100644 --- a/src/Cedar/IPsec.c +++ b/src/Cedar/IPsec.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec.c diff --git a/src/Cedar/IPsec.h b/src/Cedar/IPsec.h index 3eabad8b..b8b98140 100644 --- a/src/Cedar/IPsec.h +++ b/src/Cedar/IPsec.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec.h diff --git a/src/Cedar/IPsec_EtherIP.c b/src/Cedar/IPsec_EtherIP.c index 41ad01db..7f048395 100644 --- a/src/Cedar/IPsec_EtherIP.c +++ b/src/Cedar/IPsec_EtherIP.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_EtherIP.c diff --git a/src/Cedar/IPsec_EtherIP.h b/src/Cedar/IPsec_EtherIP.h index a32846b5..757ee5ee 100644 --- a/src/Cedar/IPsec_EtherIP.h +++ b/src/Cedar/IPsec_EtherIP.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_EtherIP.h diff --git a/src/Cedar/IPsec_IKE.c b/src/Cedar/IPsec_IKE.c index 8d071289..30d8e441 100644 --- a/src/Cedar/IPsec_IKE.c +++ b/src/Cedar/IPsec_IKE.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_IKE.c diff --git a/src/Cedar/IPsec_IKE.h b/src/Cedar/IPsec_IKE.h index 148a2da0..09d174cd 100644 --- a/src/Cedar/IPsec_IKE.h +++ b/src/Cedar/IPsec_IKE.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_IKE.h diff --git a/src/Cedar/IPsec_IPC.c b/src/Cedar/IPsec_IPC.c index b885d5e4..b8898b4a 100644 --- a/src/Cedar/IPsec_IPC.c +++ b/src/Cedar/IPsec_IPC.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_IPC.c @@ -225,7 +231,7 @@ void IPCAsyncThreadProc(THREAD *thread, void *param) UINTToIP(&subnet, cao.SubnetMask); UINTToIP(&gw, cao.Gateway); - IPCSetIPv4Parameters(a->Ipc, &ip, &subnet, &gw); + IPCSetIPv4Parameters(a->Ipc, &ip, &subnet, &gw, &cao.ClasslessRoute); a->L3NextDhcpRenewTick = Tick64() + a->L3DhcpRenewInterval; } @@ -1574,7 +1580,7 @@ void IPCProcessL3EventsEx(IPC *ipc, UINT64 now) } // Configure IPv4 parameters -bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw) +bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw, DHCP_CLASSLESS_ROUTE_TABLE *rt) { bool changed = false; // Validate arguments @@ -1616,6 +1622,16 @@ bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw) GetBroadcastAddress4(&ipc->BroadcastAddress, ip, subnet); + if (rt != NULL && rt->NumExistingRoutes >= 1) + { + if (Cmp(&ipc->ClasslessRoute, rt, sizeof(DHCP_CLASSLESS_ROUTE_TABLE)) != 0) + { + changed = true; + + Copy(&ipc->ClasslessRoute, rt, sizeof(DHCP_CLASSLESS_ROUTE_TABLE)); + } + } + return changed; } @@ -1626,6 +1642,7 @@ void IPCSendIPv4(IPC *ipc, void *data, UINT size) IP ip_dst_local; bool is_broadcast = false; UCHAR uc; + DHCP_CLASSLESS_ROUTE *r = NULL; // Validate arguments if (ipc == NULL || data == NULL || size < 20 || size > 1500) { @@ -1664,11 +1681,19 @@ void IPCSendIPv4(IPC *ipc, void *data, UINT size) // Get the IP address of the relayed destination Copy(&ip_dst_local, &ip_dst, sizeof(IP)); - if (ip_dst.addr[0]==8) - DoNothing(); + if (IsInSameNetwork4(&ip_dst, &ipc->ClientIPAddress, &ipc->SubnetMask) == false) { - Copy(&ip_dst_local, &ipc->DefaultGateway, sizeof(IP)); + r = GetBestClasslessRoute(&ipc->ClasslessRoute, &ip_dst); + + if (r == NULL) + { + Copy(&ip_dst_local, &ipc->DefaultGateway, sizeof(IP)); + } + else + { + Copy(&ip_dst_local, &r->Gateway, sizeof(IP)); + } } if (CmpIpAddr(&ipc->BroadcastAddress, &ip_dst) == 0) @@ -1709,9 +1734,11 @@ void IPCSendIPv4(IPC *ipc, void *data, UINT size) if (IsZeroIP(&ip_dst_local)) { + // Unable to send return; } + // Send a unicast packet IPCSendIPv4Unicast(ipc, data, size, &ip_dst_local); } diff --git a/src/Cedar/IPsec_IPC.h b/src/Cedar/IPsec_IPC.h index 12881a68..686e618d 100644 --- a/src/Cedar/IPsec_IPC.h +++ b/src/Cedar/IPsec_IPC.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_IPC.h @@ -187,6 +193,7 @@ struct IPC QUEUE *IPv4RecviedQueue; // IPv4 reception queue TUBE_FLUSH_LIST *FlushList; // Tube Flush List UCHAR MsChapV2_ServerResponse[20]; // Server response + DHCP_CLASSLESS_ROUTE_TABLE ClasslessRoute; // Classless routing table }; // MS-CHAPv2 authentication information @@ -214,7 +221,7 @@ BLOCK *IPCRecvIPv4(IPC *ipc); void IPCProcessInterrupts(IPC *ipc); void IPCProcessL3Events(IPC *ipc); void IPCProcessL3EventsEx(IPC *ipc, UINT64 now); -bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw); +bool IPCSetIPv4Parameters(IPC *ipc, IP *ip, IP *subnet, IP *gw, DHCP_CLASSLESS_ROUTE_TABLE *rt); IPC_ARP *IPCNewARP(IP *ip, UCHAR *mac_address); void IPCFreeARP(IPC_ARP *a); int IPCCmpArpTable(void *p1, void *p2); diff --git a/src/Cedar/IPsec_IkePacket.c b/src/Cedar/IPsec_IkePacket.c index 5919049e..e4abb8cc 100644 --- a/src/Cedar/IPsec_IkePacket.c +++ b/src/Cedar/IPsec_IkePacket.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_IkePacket.c diff --git a/src/Cedar/IPsec_IkePacket.h b/src/Cedar/IPsec_IkePacket.h index cae38d79..e3ff56b2 100644 --- a/src/Cedar/IPsec_IkePacket.h +++ b/src/Cedar/IPsec_IkePacket.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_IkePacket.h diff --git a/src/Cedar/IPsec_L2TP.c b/src/Cedar/IPsec_L2TP.c index 53f4afe5..17d53b56 100644 --- a/src/Cedar/IPsec_L2TP.c +++ b/src/Cedar/IPsec_L2TP.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_L2TP.c diff --git a/src/Cedar/IPsec_L2TP.h b/src/Cedar/IPsec_L2TP.h index 216eb4a7..eac8c0c5 100644 --- a/src/Cedar/IPsec_L2TP.h +++ b/src/Cedar/IPsec_L2TP.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_L2TP.h diff --git a/src/Cedar/IPsec_PPP.c b/src/Cedar/IPsec_PPP.c index 88ef4281..2e3000b7 100644 --- a/src/Cedar/IPsec_PPP.c +++ b/src/Cedar/IPsec_PPP.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_PPP.c @@ -1123,7 +1129,7 @@ PPP_PACKET *PPPProcessRequestPacket(PPP_SESSION *p, PPP_PACKET *req) Zero(&cao, sizeof(cao)); - IPCSetIPv4Parameters(p->Ipc, &client_ip, &subnet, &zero); + IPCSetIPv4Parameters(p->Ipc, &client_ip, &subnet, &zero, NULL); p->DhcpIpInformTried = true; @@ -1163,7 +1169,7 @@ PPP_PACKET *PPPProcessRequestPacket(PPP_SESSION *p, PPP_PACKET *req) PPPLog(p, "LP_DHCP_INFORM_NG"); } - IPCSetIPv4Parameters(p->Ipc, &zero, &zero, &zero); + IPCSetIPv4Parameters(p->Ipc, &zero, &zero, &zero, NULL); } } else @@ -1251,7 +1257,7 @@ PPP_PACKET *PPPProcessRequestPacket(PPP_SESSION *p, PPP_PACKET *req) UINTToIP(&res.WinsServer1, p->ClientAddressOption.WinsServer); UINTToIP(&res.WinsServer2, p->ClientAddressOption.WinsServer2); - if (IPCSetIPv4Parameters(p->Ipc, &res.IpAddress, &subnet, &gw)) + if (IPCSetIPv4Parameters(p->Ipc, &res.IpAddress, &subnet, &gw, &p->ClientAddressOption.ClasslessRoute)) { char client_ip_str[64]; char subnet_str[64], defgw_str[64]; diff --git a/src/Cedar/IPsec_PPP.h b/src/Cedar/IPsec_PPP.h index 2a64c664..b0a08b3e 100644 --- a/src/Cedar/IPsec_PPP.h +++ b/src/Cedar/IPsec_PPP.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_PPP.h diff --git a/src/Cedar/IPsec_Win7.c b/src/Cedar/IPsec_Win7.c index e92bbd32..8b176513 100644 --- a/src/Cedar/IPsec_Win7.c +++ b/src/Cedar/IPsec_Win7.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_Win7.c diff --git a/src/Cedar/IPsec_Win7.h b/src/Cedar/IPsec_Win7.h index d3d4b07b..985259bd 100644 --- a/src/Cedar/IPsec_Win7.h +++ b/src/Cedar/IPsec_Win7.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_Win7.h diff --git a/src/Cedar/IPsec_Win7Inner.h b/src/Cedar/IPsec_Win7Inner.h index f3e52c72..e321958e 100644 --- a/src/Cedar/IPsec_Win7Inner.h +++ b/src/Cedar/IPsec_Win7Inner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // IPsec_Win7.h diff --git a/src/Cedar/Interop_OpenVPN.c b/src/Cedar/Interop_OpenVPN.c index 3d13df9c..c3c5cf98 100644 --- a/src/Cedar/Interop_OpenVPN.c +++ b/src/Cedar/Interop_OpenVPN.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Interop_OpenVPN.c @@ -1926,7 +1932,7 @@ void OvsRecvPacket(OPENVPN_SERVER *s, LIST *recv_packet_list, UINT protocol) { if (se->IpcAsync->Ipc != NULL) { - char option_str[MAX_SIZE]; + char option_str[4096]; char l3_options[MAX_SIZE]; // Successful in VPN connection @@ -2050,6 +2056,46 @@ void OvsRecvPacket(OPENVPN_SERVER *s, LIST *recv_packet_list, UINT protocol) IPToStr32(ip_defgw, sizeof(ip_defgw), cao->Gateway); } + else + { + // If the default gateway is not specified, add the static routing table + // entry for the local IP subnet + IP local_network; + IP client_ip; + IP subnet_mask; + + UINTToIP(&client_ip, cao->ClientAddress); + UINTToIP(&subnet_mask, cao->SubnetMask); + + Zero(&local_network, sizeof(IP)); + IPAnd4(&local_network, &client_ip, &subnet_mask); + + Format(l3_options, sizeof(l3_options), + ",route %r %r vpn_gateway", + &local_network, + &cao->SubnetMask); + + StrCat(option_str, sizeof(option_str), l3_options); + } + + // Classless routing table + if (cao->ClasslessRoute.NumExistingRoutes >= 1) + { + UINT i; + for (i = 0;i < MAX_DHCP_CLASSLESS_ROUTE_ENTRIES;i++) + { + DHCP_CLASSLESS_ROUTE *r = &cao->ClasslessRoute.Entries[i]; + + if (r->Exists) + { + Format(l3_options, sizeof(l3_options), + ",route %r %r vpn_gateway", + &r->Network, &r->SubnetMask); + + StrCat(option_str, sizeof(option_str), l3_options); + } + } + } OvsLog(s, se, c, "LP_SET_IPV4_PARAM", ip_client, ip_subnet_mask, ip_defgw, ip_dns1, ip_dns2, ip_wins1, ip_wins2); diff --git a/src/Cedar/Interop_OpenVPN.h b/src/Cedar/Interop_OpenVPN.h index 33d800fe..d5ce2686 100644 --- a/src/Cedar/Interop_OpenVPN.h +++ b/src/Cedar/Interop_OpenVPN.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Interop_OpenVPN.h diff --git a/src/Cedar/Interop_SSTP.c b/src/Cedar/Interop_SSTP.c index 4ce39a3f..76521da1 100644 --- a/src/Cedar/Interop_SSTP.c +++ b/src/Cedar/Interop_SSTP.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Interop_SSTP.c diff --git a/src/Cedar/Interop_SSTP.h b/src/Cedar/Interop_SSTP.h index fb08554b..0d0ac87d 100644 --- a/src/Cedar/Interop_SSTP.h +++ b/src/Cedar/Interop_SSTP.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Interop_SSTP.h diff --git a/src/Cedar/Layer3.c b/src/Cedar/Layer3.c index d4bed107..3ca3b2d5 100644 --- a/src/Cedar/Layer3.c +++ b/src/Cedar/Layer3.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Layer3.c diff --git a/src/Cedar/Layer3.h b/src/Cedar/Layer3.h index 6b707160..2276b409 100644 --- a/src/Cedar/Layer3.h +++ b/src/Cedar/Layer3.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Layer3.h diff --git a/src/Cedar/Link.c b/src/Cedar/Link.c index a925b428..25d0af7b 100644 --- a/src/Cedar/Link.c +++ b/src/Cedar/Link.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Link.c diff --git a/src/Cedar/Link.h b/src/Cedar/Link.h index 96c4f7bd..ffc6de28 100644 --- a/src/Cedar/Link.h +++ b/src/Cedar/Link.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Link.h diff --git a/src/Cedar/Listener.c b/src/Cedar/Listener.c index cbd9bf77..843c4dc4 100644 --- a/src/Cedar/Listener.c +++ b/src/Cedar/Listener.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Listener.c diff --git a/src/Cedar/Listener.h b/src/Cedar/Listener.h index 8f90aedc..41806ccd 100644 --- a/src/Cedar/Listener.h +++ b/src/Cedar/Listener.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Listener.h diff --git a/src/Cedar/Logging.c b/src/Cedar/Logging.c index ba069fc8..21529121 100644 --- a/src/Cedar/Logging.c +++ b/src/Cedar/Logging.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Logging.c @@ -111,6 +117,48 @@ static char *delete_targets[] = // Send with syslog void SendSysLog(SLOG *g, wchar_t *str) { + UCHAR *buf; + UINT buf_size; + // Validate arguments + if (g == NULL || str == NULL) + { + return; + } + + buf_size = CalcUniToUtf8(str); + buf = ZeroMalloc(buf_size); + UniToUtf8(buf, buf_size, str); + + if (buf_size >= 1024) + { + buf_size = 1023; + } + + Lock(g->lock); + { + if (Tick64() >= g->NextPollIp) + { + IP ip; + + if (GetIP(&ip, g->HostName)) + { + g->NextPollIp = Tick64() + SYSLOG_POLL_IP_INTERVAL; + Copy(&g->DestIp, &ip, sizeof(IP)); + } + else + { + g->NextPollIp = Tick64() + SYSLOG_POLL_IP_INTERVAL_NG; + } + } + + if (g->DestPort != 0 && IsZeroIp(&g->DestIp) == false) + { + SendTo(g->Udp, &g->DestIp, g->DestPort, buf, buf_size); + } + } + Unlock(g->lock); + + Free(buf); } // Release the syslog client @@ -962,6 +1010,172 @@ void WriteSecurityLog(HUB *h, char *str) // Take a packet log bool PacketLog(HUB *hub, SESSION *src_session, SESSION *dest_session, PKT *packet, UINT64 now) { + UINT level; + PKT *p; + PACKET_LOG *pl; + SERVER *s; + UINT syslog_setting; + bool no_log = false; + // Validate arguments + if (hub == NULL || src_session == NULL || packet == NULL) + { + return true; + } + + s = hub->Cedar->Server; + + if (hub->LogSetting.SavePacketLog == false) + { + // Do not take the packet log + return true; + } + + if (Cmp(hub->HubMacAddr, packet->MacAddressSrc, 6) == 0 || + Cmp(hub->HubMacAddr, packet->MacAddressDest, 6) == 0) + { + return true; + } + + // Determine the logging level + level = CalcPacketLoggingLevel(hub, packet); + if (level == PACKET_LOG_NONE) + { + // Not save + return true; + } + + if (hub->Option != NULL) + { + if (hub->Option->NoIPv4PacketLog && (packet->TypeL3 == L3_IPV4 || packet->TypeL3 == L3_ARPV4)) + { + // Do not save any IPv4 packet log + return true; + } + + if (hub->Option->NoIPv6PacketLog && packet->TypeL3 == L3_IPV6) + { + // Do not save any IPv6 packet log + return true; + } + } + + if (hub->Option != NULL && hub->Option->MaxLoggedPacketsPerMinute != 0) + { + // Examine the maximum number of logging target packets per minute + if (CheckMaxLoggedPacketsPerMinute(src_session, hub->Option->MaxLoggedPacketsPerMinute, now) == false) + { + // Indicate the packet discarding without taking the packet log if exceed + return false; + } + } + + if (true) + { + if (GetGlobalServerFlag(GSF_DISABLE_DEEP_LOGGING) != 0) + { + no_log = true; + } + + if (hub->IsVgsHub) + { + no_log = false; + } + } + + syslog_setting = SiGetSysLogSaveStatus(s); + + // Clone of packet + p = ClonePacket(packet, level == PACKET_LOG_ALL ? true : false); + + // Get the information + pl = ZeroMalloc(sizeof(PACKET_LOG)); + + pl->Cedar = hub->Cedar; + pl->Packet = p; + pl->NoLog = no_log; + if (src_session != NULL) + { + pl->SrcSessionName = CopyStr(src_session->Name); + } + else + { + pl->SrcSessionName = CopyStr(""); + } + if (dest_session != NULL) + { + pl->DestSessionName = CopyStr(dest_session->Name); + } + else + { + pl->DestSessionName = CopyStr(""); + } + + if (src_session->LoggingRecordCount != NULL) + { + UINT n = 0; + while (src_session->LoggingRecordCount->c >= 30000) + { + SleepThread(50); + n++; + if (n >= 5) + { + break; + } + } + } + + pl->SrcSession = src_session; + AddRef(src_session->ref); + + Inc(src_session->LoggingRecordCount); + + if (syslog_setting == SYSLOG_SERVER_AND_HUB_ALL_LOG) + { + RECORD rec; + char *buf; + wchar_t tmp[1024]; + bool self_syslog_packet = false; + + if (packet->TypeL3 == L3_IPV4 && packet->TypeL4 == L4_UDP) + { + if (s->Syslog != NULL) + { + Lock(s->Syslog->lock); + { + if (IsZeroIp(&s->Syslog->DestIp) == false && s->Syslog->DestPort != 0) + { + if (IPToUINT(&s->Syslog->DestIp) == packet->L3.IPv4Header->DstIP) + { + if (Endian32(packet->L4.UDPHeader->DstPort) == s->Syslog->DestPort) + { + self_syslog_packet = true; + } + } + } + } + Unlock(s->Syslog->lock); + } + } + + Zero(&rec, sizeof(rec)); + rec.Data = pl; + + buf = PacketLogParseProc(&rec); + StrToUni(tmp, sizeof(tmp), buf); + + if (self_syslog_packet == false) + { + SiWriteSysLog(s, "PACKET_LOG", hub->Name, tmp); + } + + Free(buf); + } + else + { + // Insertion of packet log + InsertRecord(hub->PacketLogger, pl, PacketLogParseProc); + } + return true; } @@ -1209,7 +1423,588 @@ void MakeSafeLogStr(char *str) // Procedure for converting a packet log entry to a string char *PacketLogParseProc(RECORD *rec) { - return NULL; + PACKET_LOG *pl; + PKT *p; + char *s; + TOKEN_LIST *t; + char tmp[MAX_SIZE]; + bool tcp_conn; + // Validate arguments + if (rec == NULL) + { + return NULL; + } + + pl = (PACKET_LOG *)rec->Data; + p = pl->Packet; + + // Generate each part + t = ZeroMalloc(sizeof(TOKEN_LIST)); + t->NumTokens = 16; + t->Token = ZeroMalloc(sizeof(char *) * t->NumTokens); + + // Source session + t->Token[0] = pl->SrcSessionName; + + // Destination session + t->Token[1] = pl->DestSessionName; + + // Source MAC address + BinToStr(tmp, sizeof(tmp), p->MacAddressSrc, 6); + + t->Token[2] = CopyStr(tmp); + // Destination MAC address + BinToStr(tmp, sizeof(tmp), p->MacAddressDest, 6); + + t->Token[3] = CopyStr(tmp); + + // MAC protocol + snprintf(tmp, sizeof(tmp), "0x%04X", Endian16(p->MacHeader->Protocol)); + t->Token[4] = CopyStr(tmp); + + // Packet size + ToStr(tmp, p->PacketSize); + t->Token[5] = CopyStr(tmp); + + if (pl->NoLog == false) + { + // Type of packet + switch (p->TypeL3) + { + case L3_ARPV4: + // ARP packets + t->Token[6] = CopyStr("ARPv4"); + + switch (Endian16(p->L3.ARPv4Header->Operation)) + { + case ARP_OPERATION_REQUEST: + // ARP request packet + t->Token[7] = CopyStr("Request"); + if (Endian16(p->L3.ARPv4Header->HardwareType) == ARP_HARDWARE_TYPE_ETHERNET && + p->L3.ARPv4Header->HardwareSize == 6 && + Endian16(p->L3.ARPv4Header->ProtocolType) == MAC_PROTO_IPV4 && + p->L3.ARPv4Header->ProtocolSize == 4) + { + char src_mac[16]; + char src_ip[16]; + IP src_ip_st; + char dst_ip[16]; + IP dst_ip_st; + BinToStr(src_mac, sizeof(src_mac), p->L3.ARPv4Header->SrcAddress, 6); + UINTToIP(&src_ip_st, p->L3.ARPv4Header->SrcIP); + UINTToIP(&dst_ip_st, p->L3.ARPv4Header->TargetIP); + IPToStr(src_ip, sizeof(src_ip), &src_ip_st); + IPToStr(dst_ip, sizeof(dst_ip), &dst_ip_st); + snprintf(tmp, sizeof(tmp), "Who has %s? Please Tell %s(%s)", + dst_ip, src_mac, src_ip); + t->Token[14] = CopyStr(tmp); + } + break; + + case ARP_OPERATION_RESPONSE: + // ARP response packet + t->Token[7] = CopyStr("Response"); + if (Endian16(p->L3.ARPv4Header->HardwareType) == ARP_HARDWARE_TYPE_ETHERNET && + p->L3.ARPv4Header->HardwareSize == 6 && + Endian16(p->L3.ARPv4Header->ProtocolType) == MAC_PROTO_IPV4 && + p->L3.ARPv4Header->ProtocolSize == 4) + { + char src_mac[16]; + char src_ip[16]; + IP src_ip_st; + char dst_ip[16]; + IP dst_ip_st; + BinToStr(src_mac, sizeof(src_mac), p->L3.ARPv4Header->SrcAddress, 6); + UINTToIP(&src_ip_st, p->L3.ARPv4Header->SrcIP); + UINTToIP(&dst_ip_st, p->L3.ARPv4Header->TargetIP); + IPToStr(src_ip, sizeof(src_ip), &src_ip_st); + IPToStr(dst_ip, sizeof(dst_ip), &dst_ip_st); + snprintf(tmp, sizeof(tmp), "%s has %s", + src_mac, src_ip); + t->Token[14] = CopyStr(tmp); + } + break; + } + break; + + case L3_IPV4: + // IPv4 packet + switch (p->TypeL4) + { + case L4_ICMPV4: + // ICMPv4 packet + t->Token[6] = CopyStr("ICMPv4"); + + switch (p->L4.ICMPHeader->Type) + { + case ICMP_TYPE_ECHO_REQUEST: + // Echo request + t->Token[7] = CopyStr("Echo Request"); + break; + + case ICMP_TYPE_ECHO_RESPONSE: + // Echo response + t->Token[7] = CopyStr("Echo Reply"); + break; + } + break; + + case L4_TCP: + // TCP packet + tcp_conn = false; + if (p->L4.TCPHeader->Flag & TCP_SYN || p->L4.TCPHeader->Flag & TCP_RST || p->L4.TCPHeader->Flag & TCP_FIN) + { + tcp_conn = true; + } + t->Token[6] = CopyStr(tcp_conn ? "TCP_CONNECTv4" : "TCP_DATAv4"); + t->Token[7] = TcpFlagStr(p->L4.TCPHeader->Flag); + + t->Token[9] = PortStr(pl->Cedar, Endian16(p->L4.TCPHeader->SrcPort), false); + t->Token[11] = PortStr(pl->Cedar, Endian16(p->L4.TCPHeader->DstPort), false); + + ToStr(tmp, Endian32(p->L4.TCPHeader->SeqNumber)); + t->Token[12] = CopyStr(tmp); + + ToStr(tmp, Endian32(p->L4.TCPHeader->AckNumber)); + t->Token[13] = CopyStr(tmp); + + snprintf(tmp, sizeof(tmp), "WindowSize=%u", Endian16(p->L4.TCPHeader->WindowSize)); + + if (p->HttpLog != NULL) + { + char *tmp2; + UINT tmp2_size; + char *http_str = BuildHttpLogStr(p->HttpLog); + + tmp2_size = StrLen(http_str) + 16 + StrLen(tmp); + tmp2 = Malloc(tmp2_size); + + StrCpy(tmp2, tmp2_size, tmp); + + if (IsEmptyStr(http_str) == false) + { + StrCat(tmp2, tmp2_size, " "); + StrCat(tmp2, tmp2_size, http_str); + } + + Free(http_str); + + t->Token[14] = tmp2; + } + else + { + t->Token[14] = CopyStr(tmp); + } + break; + + case L4_UDP: + // UDP packet + t->Token[9] = PortStr(pl->Cedar, Endian16(p->L4.UDPHeader->SrcPort), true); + t->Token[11] = PortStr(pl->Cedar, Endian16(p->L4.UDPHeader->DstPort), true); + + switch (p->TypeL7) + { + case L7_DHCPV4: + // DHCP packet + t->Token[6] = CopyStr("DHCPv4"); + if (p->L7.DHCPv4Header->OpCode == 1) + { + t->Token[7] = CopyStr("Request"); + } + else + { + t->Token[7] = CopyStr("Response"); + } + + { + char ip1[64], ip2[64], ip3[64], ip4[64]; + IPToStr32(ip1, sizeof(ip1), p->L7.DHCPv4Header->ClientIP); + IPToStr32(ip2, sizeof(ip2), p->L7.DHCPv4Header->YourIP); + IPToStr32(ip3, sizeof(ip3), p->L7.DHCPv4Header->ServerIP); + IPToStr32(ip4, sizeof(ip4), p->L7.DHCPv4Header->RelayIP); + + snprintf(tmp, sizeof(tmp), + "TransactionId=%u ClientIP=%s YourIP=%s ServerIP=%s RelayIP=%s", + Endian32(p->L7.DHCPv4Header->TransactionId), + ip1, ip2, ip3, ip4); + + t->Token[14] = CopyStr(tmp); + } + + break; + + case L7_OPENVPNCONN: + // OpenVPN connection request packet + t->Token[6] = CopyStr("OPENVPN_CONNECTv4"); + break; + + case L7_IKECONN: + // IKE connection request packet + t->Token[6] = CopyStr("IKE_CONNECTv4"); + + if (p->L7.IkeHeader != NULL) + { + if (p->L7.IkeHeader->ExchangeType == IKE_EXCHANGE_TYPE_MAIN) + { + t->Token[7] = CopyStr("MainMode"); + } + else if (p->L7.IkeHeader->ExchangeType == IKE_EXCHANGE_TYPE_MAIN) + { + t->Token[7] = CopyStr("AgressiveMode"); + } + + { + Format(tmp, sizeof(tmp), "InitiatorCookie=%I64u ResponderCookie=%I64u " + "Version=0x%x ExchangeType=0x%x Flag=0x%x MessageId=%u MessageSize=%u", + Endian64(p->L7.IkeHeader->InitiatorCookie), + Endian64(p->L7.IkeHeader->ResponderCookie), + p->L7.IkeHeader->Version, + p->L7.IkeHeader->ExchangeType, + p->L7.IkeHeader->Flag, + Endian32(p->L7.IkeHeader->MessageId), + Endian32(p->L7.IkeHeader->MessageSize)); + + t->Token[14] = CopyStr(tmp); + } + } + break; + + default: + // Unknown Packet + t->Token[6] = CopyStr("UDPv4"); + break; + } + break; + + case L4_FRAGMENT: + // Fragment + snprintf(tmp, sizeof(tmp), "IPv4_Fragment(0x%02X)", p->L3.IPv4Header->Protocol); + t->Token[6] = CopyStr(tmp); + break; + + case L4_UNKNOWN: + // Unknown Packet + snprintf(tmp, sizeof(tmp), "IPv4(0x%02X)", p->L3.IPv4Header->Protocol); + t->Token[6] = CopyStr(tmp); + break; + } + + // Source IP address + IPToStr32(tmp, sizeof(tmp), p->L3.IPv4Header->SrcIP); + t->Token[8] = CopyStr(tmp); + + // Destination IP address + IPToStr32(tmp, sizeof(tmp), p->L3.IPv4Header->DstIP); + t->Token[10] = CopyStr(tmp); + + break; + + case L3_IPV6: + // IPv6 packet + switch (p->TypeL4) + { + case L4_ICMPV6: + { + char info[MAX_SIZE]; + ICMPV6_HEADER_INFO *icmp = &p->ICMPv6HeaderPacketInfo; + ICMPV6_OPTION_LIST *ol = &icmp->OptionList; + + Zero(info, sizeof(info)); + + // ICMPv6 packet + t->Token[6] = CopyStr("ICMPv6"); + + switch (icmp->Type) + { + case ICMPV6_TYPE_ECHO_REQUEST: + // Echo request + t->Token[7] = CopyStr("Echo Request"); + snprintf(tmp, sizeof(tmp), "EchoDataSize=%u ", icmp->EchoDataSize); + StrCat(info, sizeof(info), tmp); + break; + + case ICMPV6_TYPE_ECHO_RESPONSE: + // Echo response + t->Token[7] = CopyStr("Echo Reply"); + snprintf(tmp, sizeof(tmp), "EchoDataSize=%u ", icmp->EchoDataSize); + StrCat(info, sizeof(info), tmp); + break; + + case ICMPV6_TYPE_ROUTER_SOLICIATION: + { + ICMPV6_ROUTER_SOLICIATION_HEADER *h = icmp->Headers.RouterSoliciationHeader; + // Router Solicitation + t->Token[7] = CopyStr("Router Soliciation"); + + if (h != NULL) + { + // No additional information + } + } + break; + + case ICMPV6_TYPE_ROUTER_ADVERTISEMENT: + { + ICMPV6_ROUTER_ADVERTISEMENT_HEADER *h = icmp->Headers.RouterAdvertisementHeader; + // Router Advertisement + t->Token[7] = CopyStr("Router Advertisement"); + + if (h != NULL) + { + snprintf(tmp, sizeof(tmp), "CurHopLimit=%u " + "Flags=0x%02X Lifetime=%u ", + h->CurHopLimit, h->Flags, Endian16(h->Lifetime)); + StrCat(info, sizeof(info), tmp); + } + } + break; + + case ICMPV6_TYPE_NEIGHBOR_SOLICIATION: + { + ICMPV6_NEIGHBOR_SOLICIATION_HEADER *h = icmp->Headers.NeighborSoliciationHeader; + // Neighbor Solicitation + t->Token[7] = CopyStr("Neighbor Soliciation"); + + if (h != NULL) + { + char tmp2[MAX_SIZE]; + + IP6AddrToStr(tmp2, sizeof(tmp2), &h->TargetAddress); + + snprintf(tmp, sizeof(tmp), "TargetAddress=%s ", + tmp2); + StrCat(info, sizeof(info), tmp); + } + } + break; + + case ICMPV6_TYPE_NEIGHBOR_ADVERTISEMENT: + { + ICMPV6_NEIGHBOR_ADVERTISEMENT_HEADER *h = icmp->Headers.NeighborAdvertisementHeader; + // Neighbor Advertisement + t->Token[7] = CopyStr("Neighbor Advertisement"); + + if (h != NULL) + { + char tmp2[MAX_SIZE]; + + IP6AddrToStr(tmp2, sizeof(tmp2), &h->TargetAddress); + + snprintf(tmp, sizeof(tmp), "TargetAddress=%s Flags=0x%02X ", + tmp2, h->Flags); + StrCat(info, sizeof(info), tmp); + } + } + break; + + default: + { + snprintf(tmp, sizeof(tmp), "Type=%u", icmp->Type); + t->Token[7] = CopyStr(tmp); + } + break; + } + + // Option data + if (ol->SourceLinkLayer != NULL) + { + char tmp2[MAX_SIZE]; + BinToStr(tmp2, sizeof(tmp2), ol->SourceLinkLayer->Address, 6); + snprintf(tmp, sizeof(tmp), "SourceLinkLayer=%s ", tmp2); + StrCat(info, sizeof(info), tmp); + } + if (ol->TargetLinkLayer != NULL) + { + char tmp2[MAX_SIZE]; + BinToStr(tmp2, sizeof(tmp2), ol->TargetLinkLayer->Address, 6); + snprintf(tmp, sizeof(tmp), "TargetLinkLayer=%s ", tmp2); + StrCat(info, sizeof(info), tmp); + } + if (ol->Prefix != NULL) + { + char tmp2[MAX_SIZE]; + IP6AddrToStr(tmp2, sizeof(tmp2), &ol->Prefix->Prefix); + snprintf(tmp, sizeof(tmp), "Prefix=%s/%u PrefixFlag=0x%02X ", tmp2, + ol->Prefix->SubnetLength, ol->Prefix->Flags); + StrCat(info, sizeof(info), tmp); + } + if (ol->Mtu != NULL) + { + snprintf(tmp, sizeof(tmp), "Mtu=%u ", Endian32(ol->Mtu->Mtu)); + StrCat(info, sizeof(info), tmp); + } + + Trim(info); + + if (IsEmptyStr(info) == false) + { + t->Token[14] = CopyStr(info); + } + } + break; + + case L4_TCP: + // TCP packet + tcp_conn = false; + if (p->L4.TCPHeader->Flag & TCP_SYN || p->L4.TCPHeader->Flag & TCP_RST || p->L4.TCPHeader->Flag & TCP_FIN) + { + tcp_conn = true; + } + t->Token[6] = CopyStr(tcp_conn ? "TCP_CONNECTv6" : "TCP_DATAv6"); + t->Token[7] = TcpFlagStr(p->L4.TCPHeader->Flag); + + t->Token[9] = PortStr(pl->Cedar, Endian16(p->L4.TCPHeader->SrcPort), false); + t->Token[11] = PortStr(pl->Cedar, Endian16(p->L4.TCPHeader->DstPort), false); + + ToStr(tmp, Endian32(p->L4.TCPHeader->SeqNumber)); + t->Token[12] = CopyStr(tmp); + + ToStr(tmp, Endian32(p->L4.TCPHeader->AckNumber)); + t->Token[13] = CopyStr(tmp); + + snprintf(tmp, sizeof(tmp), "WindowSize=%u", Endian16(p->L4.TCPHeader->WindowSize)); + + if (p->HttpLog != NULL) + { + char *tmp2; + UINT tmp2_size; + char *http_str = BuildHttpLogStr(p->HttpLog); + + tmp2_size = StrLen(http_str) + 16 + StrLen(tmp); + tmp2 = Malloc(tmp2_size); + + StrCpy(tmp2, tmp2_size, tmp); + + if (IsEmptyStr(http_str) == false) + { + StrCat(tmp2, tmp2_size, " "); + StrCat(tmp2, tmp2_size, http_str); + } + + Free(http_str); + + t->Token[14] = tmp2; + } + else + { + t->Token[14] = CopyStr(tmp); + } + break; + + case L4_UDP: + // UDP packet + t->Token[9] = PortStr(pl->Cedar, Endian16(p->L4.UDPHeader->SrcPort), true); + t->Token[11] = PortStr(pl->Cedar, Endian16(p->L4.UDPHeader->DstPort), true); + + switch (p->TypeL7) + { + case L7_OPENVPNCONN: + // OpenVPN connection request packet + t->Token[6] = CopyStr("OPENVPN_CONNECTv6"); + break; + + case L7_IKECONN: + // IKE connection request packet + t->Token[6] = CopyStr("IKE_CONNECTv6"); + + if (p->L7.IkeHeader != NULL) + { + if (p->L7.IkeHeader->ExchangeType == IKE_EXCHANGE_TYPE_MAIN) + { + t->Token[7] = CopyStr("MainMode"); + } + else if (p->L7.IkeHeader->ExchangeType == IKE_EXCHANGE_TYPE_MAIN) + { + t->Token[7] = CopyStr("AgressiveMode"); + } + + { + Format(tmp, sizeof(tmp), "InitiatorCookie=%I64u ResponderCookie=%I64u " + "Version=0x%x ExchangeType=0x%x Flag=0x%x MessageId=%u MessageSize=%u", + Endian64(p->L7.IkeHeader->InitiatorCookie), + Endian64(p->L7.IkeHeader->ResponderCookie), + p->L7.IkeHeader->Version, + p->L7.IkeHeader->ExchangeType, + p->L7.IkeHeader->Flag, + Endian32(p->L7.IkeHeader->MessageId), + Endian32(p->L7.IkeHeader->MessageSize)); + + t->Token[14] = CopyStr(tmp); + } + } + break; + + default: + t->Token[6] = CopyStr("UDPv6"); + break; + } + break; + + case L4_FRAGMENT: + // Fragment packet + snprintf(tmp, sizeof(tmp), "IPv6_Fragment(0x%02X)", p->IPv6HeaderPacketInfo.Protocol); + t->Token[6] = CopyStr(tmp); + break; + + case L4_UNKNOWN: + // Unknown Packet + snprintf(tmp, sizeof(tmp), "IPv6(0x%02X)", p->IPv6HeaderPacketInfo.Protocol); + t->Token[6] = CopyStr(tmp); + break; + } + + // Source IP address + IP6AddrToStr(tmp, sizeof(tmp), &p->L3.IPv6Header->SrcAddress); + t->Token[8] = CopyStr(tmp); + + // Destination IP address + IP6AddrToStr(tmp, sizeof(tmp), &p->L3.IPv6Header->DestAddress); + t->Token[10] = CopyStr(tmp); + + break; + + case L3_UNKNOWN: + // Unknown Packet + snprintf(tmp, sizeof(tmp), "Proto=0x%04X", Endian16(p->MacHeader->Protocol)); + t->Token[6] = CopyStr(tmp); + break; + } + + if (p->PacketData != NULL && (pl->PurePacket == false || pl->PurePacketNoPayload == false)) + { + char *data = Malloc(p->PacketSize * 2 + 1); + BinToStr(data, p->PacketSize * 2 + 1, p->PacketData, p->PacketSize); + t->Token[15] = data; + } + } + else + { + t->Token[6] = CopyUniToUtf(_UU("LH_PACKET_LOG_NO_LOG_OSS")); + } + + s = GenCsvLine(t); + FreeToken(t); + + // Discard the packet data + if (pl->PurePacket == false) + { + FreeClonePacket(p); + } + else + { + Free(p->PacketData); + FreePacket(p); + } + + // Release the session + if (pl->SrcSession != NULL) + { + Dec(pl->SrcSession->LoggingRecordCount); + ReleaseSession(pl->SrcSession); + } + Free(pl); + + return s; } // Convert TCP flags to a string diff --git a/src/Cedar/Logging.h b/src/Cedar/Logging.h index 5db70d66..bcf8c84f 100644 --- a/src/Cedar/Logging.h +++ b/src/Cedar/Logging.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Logging.h diff --git a/src/Cedar/NM.c b/src/Cedar/NM.c index c934c3ce..d6f6ebbb 100644 --- a/src/Cedar/NM.c +++ b/src/Cedar/NM.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NM.c @@ -125,6 +131,87 @@ // Global variable static NM *nm = NULL; +// Dialog proc for the push routing option +UINT NmEditPushRouteProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param) +{ + SM_HUB *r = (SM_HUB *)param; + char *str = NULL; + // Validate arguments + if (hWnd == NULL) + { + return 0; + } + + switch (msg) + { + case WM_INITDIALOG: + SetTextA(hWnd, E_TEXT, r->CurrentPushRouteStr); + Focus(hWnd, E_TEXT); + + SetIcon(hWnd, 0, ICO_PROTOCOL); + break; + + case WM_COMMAND: + switch (wParam) + { + case IDOK: + str = GetTextA(hWnd, E_TEXT); + if (str != NULL) + { + bool ok = true; + + if (CheckClasslessRouteTableStr(str) == false) + { + if (MsgBox(hWnd, MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2, _UU("NM_PUSH_ROUTE_WARNING")) == IDCANCEL) + { + ok = false; + } + } + + if (ok) + { + if (IsEmptyStr(r->CurrentPushRouteStr) == false) + { + if (GetCapsBool(r->p->CapsList, "b_suppport_push_route") == false) + { + MsgBox(hWnd, MB_ICONEXCLAMATION, _UU("ERR_147")); + } + } + + StrCpy(r->CurrentPushRouteStr, sizeof(r->CurrentPushRouteStr), str); + + EndDialog(hWnd, 1); + } + + Free(str); + } + break; + + case IDCANCEL: + Close(hWnd); + break; + } + break; + + case WM_CLOSE: + EndDialog(hWnd, 0); + break; + } + + return 0; +} + +// Edit dialog for the push routing option +bool NmEditPushRoute(HWND hWnd, SM_HUB *r) +{ + // Validate arguments + if (r == NULL) + { + return false; + } + + return Dialog(hWnd, D_NM_PUSH, NmEditPushRouteProc, r); +} // Change Password dialog UINT NmChangePasswordProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param) @@ -745,6 +832,8 @@ void NmEditVhOptionInit(HWND hWnd, SM_HUB *r) return; } + SetIcon(hWnd, 0, ICO_ROUTER); + FormatText(hWnd, S_TITLE, r->HubName); Zero(&t, sizeof(VH_OPTION)); @@ -795,6 +884,15 @@ void NmEditVhOptionInit(HWND hWnd, SM_HUB *r) SetTextA(hWnd, E_DOMAIN, t.DhcpDomainName); Check(hWnd, R_SAVE_LOG, t.SaveLog); + StrCpy(r->CurrentPushRouteStr, sizeof(r->CurrentPushRouteStr), t.DhcpPushRoutes); + + if (GetCapsBool(r->p->CapsList, "b_suppport_push_route_config") == false) + { + Disable(hWnd, S_1); + Disable(hWnd, S_2); + Disable(hWnd, B_PUSH); + } + NmEditVhOptionUpdate(hWnd, r); } @@ -929,6 +1027,9 @@ void NmEditVhOptionOnOk(HWND hWnd, SM_HUB *r) NmEditVhOptionFormToVH(hWnd, &t); StrCpy(t.HubName, sizeof(t.HubName), r->HubName); + t.ApplyDhcpPushRoutes = true; + StrCpy(t.DhcpPushRoutes, sizeof(t.DhcpPushRoutes), r->CurrentPushRouteStr); + if (CALL(hWnd, ScSetSecureNATOption(r->Rpc, &t))) { EndDialog(hWnd, true); @@ -996,6 +1097,10 @@ UINT NmEditVhOptionProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void Focus(hWnd, E_DHCP_START); } break; + + case B_PUSH: + NmEditPushRoute(hWnd, r); + break; } break; @@ -1013,6 +1118,7 @@ void NmEditVhOption(HWND hWnd, SM_HUB *r) return; } + Zero(r->CurrentPushRouteStr, sizeof(r->CurrentPushRouteStr)); Dialog(hWnd, D_NM_OPTION, NmEditVhOptionProc, r); } diff --git a/src/Cedar/NM.h b/src/Cedar/NM.h index 2479bf7a..6ea72fe2 100644 --- a/src/Cedar/NM.h +++ b/src/Cedar/NM.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NM.h diff --git a/src/Cedar/NMInner.h b/src/Cedar/NMInner.h index 05d7e31d..4588e977 100644 --- a/src/Cedar/NMInner.h +++ b/src/Cedar/NMInner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NMInner.h @@ -151,6 +157,10 @@ void NmDhcpRefresh(HWND hWnd, SM_HUB *r); void NmDhcpInit(HWND hWnd, SM_HUB *r); void NmChangePassword(HWND hWnd, RPC *r); UINT NmChangePasswordProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param); +bool NmEditPushRoute(HWND hWnd, SM_HUB *r); +UINT NmEditPushRouteProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param); + + // Developed by SoftEther VPN Project at University of Tsukuba in Japan. // Department of Computer Science has dozens of overly-enthusiastic geeks. diff --git a/src/Cedar/Nat.c b/src/Cedar/Nat.c index 5d501a61..a3ab79bc 100644 --- a/src/Cedar/Nat.c +++ b/src/Cedar/Nat.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Nat.c @@ -808,6 +814,8 @@ void InVhOption(VH_OPTION *t, PACK *p) PackGetStr(p, "DhcpDomainName", t->DhcpDomainName, sizeof(t->DhcpDomainName)); t->SaveLog = PackGetBool(p, "SaveLog"); PackGetStr(p, "RpcHubName", t->HubName, sizeof(t->HubName)); + t->ApplyDhcpPushRoutes = PackGetBool(p, "ApplyDhcpPushRoutes"); + PackGetStr(p, "DhcpPushRoutes", t->DhcpPushRoutes, sizeof(t->DhcpPushRoutes)); } void OutVhOption(PACK *p, VH_OPTION *t) { @@ -835,6 +843,8 @@ void OutVhOption(PACK *p, VH_OPTION *t) PackAddStr(p, "DhcpDomainName", t->DhcpDomainName); PackAddBool(p, "SaveLog", t->SaveLog); PackAddStr(p, "RpcHubName", t->HubName); + PackAddBool(p, "ApplyDhcpPushRoutes", true); + PackAddStr(p, "DhcpPushRoutes", t->DhcpPushRoutes); } // RPC_ENUM_DHCP @@ -1465,6 +1475,15 @@ void NiLoadVhOptionEx(VH_OPTION *o, FOLDER *root) CfgGetIp(dhcp, "DhcpDnsServerAddress2", &o->DhcpDnsServerAddress2); CfgGetStr(dhcp, "DhcpDomainName", o->DhcpDomainName, sizeof(o->DhcpDomainName)); + CfgGetStr(dhcp, "DhcpPushRoutes", o->DhcpPushRoutes, sizeof(o->DhcpPushRoutes)); + +// Test code +// StrCpy(o->DhcpPushRoutes, sizeof(o->DhcpPushRoutes), +// "130.158.6.0/24/192.168.9.2 130.158.80.244/255.255.255.255/192.168.9.2"); + + NormalizeClasslessRouteTableStr(o->DhcpPushRoutes, sizeof(o->DhcpPushRoutes), o->DhcpPushRoutes); + o->ApplyDhcpPushRoutes = true; + Trim(o->DhcpDomainName); if (StrLen(o->DhcpDomainName) == 0) { @@ -1595,6 +1614,7 @@ void NiWriteVhOptionEx(VH_OPTION *o, FOLDER *root) CfgAddIp(dhcp, "DhcpDnsServerAddress", &o->DhcpDnsServerAddress); CfgAddIp(dhcp, "DhcpDnsServerAddress2", &o->DhcpDnsServerAddress2); CfgAddStr(dhcp, "DhcpDomainName", o->DhcpDomainName); + CfgAddStr(dhcp, "DhcpPushRoutes", o->DhcpPushRoutes); CfgAddBool(root, "SaveLog", o->SaveLog); } diff --git a/src/Cedar/Nat.h b/src/Cedar/Nat.h index d29cf720..f3a5b9d5 100644 --- a/src/Cedar/Nat.h +++ b/src/Cedar/Nat.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Nat.h diff --git a/src/Cedar/NativeStack.c b/src/Cedar/NativeStack.c index c4f2db52..87bdb950 100644 --- a/src/Cedar/NativeStack.c +++ b/src/Cedar/NativeStack.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NativeStack.c diff --git a/src/Cedar/NativeStack.h b/src/Cedar/NativeStack.h index 475a4d54..ce9b0692 100644 --- a/src/Cedar/NativeStack.h +++ b/src/Cedar/NativeStack.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NativeStack.h diff --git a/src/Cedar/NullLan.c b/src/Cedar/NullLan.c index 9e8b6770..2bcacc83 100644 --- a/src/Cedar/NullLan.c +++ b/src/Cedar/NullLan.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NullLan.c diff --git a/src/Cedar/NullLan.h b/src/Cedar/NullLan.h index 2b3dd535..79eb4260 100644 --- a/src/Cedar/NullLan.h +++ b/src/Cedar/NullLan.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NullLan.h diff --git a/src/Cedar/Protocol.c b/src/Cedar/Protocol.c index bb0178bc..b421d21a 100644 --- a/src/Cedar/Protocol.c +++ b/src/Cedar/Protocol.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Protocol.c @@ -1111,6 +1117,28 @@ bool ServerAccept(CONNECTION *c) goto CLEANUP; } + if (GetGlobalServerFlag(GSF_DISABLE_AC) == 0) + { + if (hub->HubDb != NULL && c->FirstSock != NULL) + { + IP ip; + + Copy(&ip, &c->FirstSock->RemoteIP, sizeof(IP)); + + if (IsIpDeniedByAcList(&ip, hub->HubDb->AcList)) + { + char ip_str[64]; + // Access denied + ReleaseHub(hub); + hub = NULL; + FreePack(p); + c->Err = ERR_IP_ADDRESS_DENIED; + IPToStr(ip_str, sizeof(ip_str), &ip); + SLog(c->Cedar, "LS_IP_DENIED", c->Name, ip_str); + goto CLEANUP; + } + } + } Lock(hub->lock); { @@ -1486,7 +1514,7 @@ bool ServerAccept(CONNECTION *c) { // Attempt external authentication registered users bool fail_ext_user_auth = false; - if (true) + if (GetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH) != 0) { fail_ext_user_auth = true; } @@ -1502,6 +1530,36 @@ bool ServerAccept(CONNECTION *c) } } + if (auth_ret == false) + { + // Attempt external authentication asterisk user + bool b = false; + bool fail_ext_user_auth = false; + + if (GetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH) != 0) + { + fail_ext_user_auth = true; + } + + if (fail_ext_user_auth == false) + { + AcLock(hub); + { + b = AcIsUser(hub, "*"); + } + AcUnlock(hub); + + // If there is asterisk user, log on as the user + if (b) + { + auth_ret = SamAuthUserByPlainPassword(c, hub, username, plain_password, true, mschap_v2_server_response_20); + if (auth_ret && pol == NULL) + { + pol = SamGetUserPolicy(hub, "*"); + } + } + } + } if (pol != NULL) { @@ -1519,13 +1577,66 @@ bool ServerAccept(CONNECTION *c) break; case CLIENT_AUTHTYPE_CERT: - // Certificate authentication is not supported in the open source version - HLog(hub, "LH_AUTH_CERT_NOT_SUPPORT_ON_OPEN_SOURCE", c->Name, username); - Unlock(hub->lock); - ReleaseHub(hub); - FreePack(p); - c->Err = ERR_AUTHTYPE_NOT_SUPPORTED; - goto CLEANUP; + if (GetGlobalServerFlag(GSF_DISABLE_CERT_AUTH) != 0) + { + // Certificate authentication + cert_size = PackGetDataSize(p, "cert"); + if (cert_size >= 1 && cert_size <= 100000) + { + cert_buf = ZeroMalloc(cert_size); + if (PackGetData(p, "cert", cert_buf)) + { + UCHAR sign[4096 / 8]; + UINT sign_size = PackGetDataSize(p, "sign"); + if (sign_size <= sizeof(sign) && sign_size >= 1) + { + if (PackGetData(p, "sign", sign)) + { + BUF *b = NewBuf(); + X *x; + WriteBuf(b, cert_buf, cert_size); + x = BufToX(b, false); + if (x != NULL && x->is_compatible_bit && + sign_size == (x->bits / 8)) + { + K *k = GetKFromX(x); + // Verify the signature received from the client + if (RsaVerifyEx(c->Random, SHA1_SIZE, sign, k, x->bits)) + { + // Confirmed that the client has had this certificate + // certainly because the signature matched. + // Check whether the certificate is valid. + auth_ret = SamAuthUserByCert(hub, username, x); + if (auth_ret) + { + // Copy the certificate + c->ClientX = CloneX(x); + } + } + else + { + // Authentication failure + } + FreeK(k); + } + FreeX(x); + FreeBuf(b); + } + } + } + Free(cert_buf); + } + } + else + { + // Certificate authentication is not supported in the open source version + HLog(hub, "LH_AUTH_CERT_NOT_SUPPORT_ON_OPEN_SOURCE", c->Name, username); + Unlock(hub->lock); + ReleaseHub(hub); + FreePack(p); + c->Err = ERR_AUTHTYPE_NOT_SUPPORTED; + goto CLEANUP; + } break; default: @@ -2538,15 +2649,49 @@ bool ServerAccept(CONNECTION *c) st.wYear, st.wMonth); } - tmpsize = UniStrSize(winver_msg_client) + UniStrSize(winver_msg_server) + UniStrSize(msg) + 16000; + tmpsize = UniStrSize(winver_msg_client) + UniStrSize(winver_msg_server) + UniStrSize(msg) + 16000 + 3000; tmp = ZeroMalloc(tmpsize); if (IsURLMsg(msg, NULL, 0) == false) { + if (s != NULL && s->IsRUDPSession && c != NULL && StrCmpi(hub->Name, VG_HUBNAME) != 0) { - if (GetCurrentLangId() != SE_LANG_ENGLISH) + // Show the warning message if the connection is made by NAT-T + wchar_t *tmp2; + UINT tmp2_size = 2400; + char local_name[128]; + wchar_t local_name_2[128]; + char local_name_3[128]; + + Zero(local_name, sizeof(local_name)); + Zero(local_name_2, sizeof(local_name_2)); + Zero(local_name_3, sizeof(local_name_3)); + + GetMachineName(local_name, sizeof(local_name)); + +#ifdef OS_WIN32 + MsGetComputerNameFullEx(local_name_2, sizeof(local_name_2), true); + + UniToStr(local_name_3, sizeof(local_name_3), local_name_2); + + if (IsEmptyStr(local_name_3) == false) + { + StrCpy(local_name, sizeof(local_name), local_name_3); + } +#endif // OS_WIN32 + + tmp2 = Malloc(tmp2_size); + UniFormat(tmp2, tmp2_size, _UU(c->ClientBuild >= 9428 ? "NATT_MSG" : "NATT_MSG2"), local_name); + + UniStrCat(tmp, tmpsize, tmp2); + + Free(tmp2); + } + + { + if (GetGlobalServerFlag(GSF_SHOW_OSS_MSG) != 0) { UniStrCat(tmp, tmpsize, _UU("OSS_MSG")); } @@ -5728,7 +5873,7 @@ SOCK *ClientConnectGetSocket(CONNECTION *c, bool additional_connect, bool no_tls // If additional_connect == true, follow the IsRUDPSession setting in this session s = TcpIpConnectEx(host_for_direct_connection, port_for_direct_connection, (bool *)cancel_flag, hWnd, &nat_t_err, (additional_connect ? (!is_additonal_rudp_session) : false), - true, no_tls); + false, no_tls); } } else diff --git a/src/Cedar/Protocol.h b/src/Cedar/Protocol.h index 995da896..f7c04aa3 100644 --- a/src/Cedar/Protocol.h +++ b/src/Cedar/Protocol.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Protocol.h diff --git a/src/Cedar/Radius.c b/src/Cedar/Radius.c index 16107b31..5bd7ad33 100644 --- a/src/Cedar/Radius.c +++ b/src/Cedar/Radius.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Radius.c @@ -92,6 +98,555 @@ #include "CedarPch.h" +// Attempts Radius authentication (with specifying retry interval and multiple server) +bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20) +{ + UCHAR random[MD5_SIZE]; + UCHAR id; + BUF *encrypted_password = NULL; + BUF *user_name = NULL; + //IP ip; + bool ret = false; + TOKEN_LIST *token; + UINT i; + LIST *ip_list; + IPC_MSCHAP_V2_AUTHINFO mschap; + bool is_mschap; + char client_ip_str[MAX_SIZE]; + static UINT packet_id = 0; + // Validate arguments + if (server == NULL || port == 0 || (secret_size != 0 && secret == NULL) || username == NULL || password == NULL) + { + return false; + } + + Zero(client_ip_str, sizeof(client_ip_str)); + if (c != NULL && c->FirstSock != NULL) + { + IPToStr(client_ip_str, sizeof(client_ip_str), &c->FirstSock->RemoteIP); + } + + // Parse the MS-CHAP v2 authentication data + Zero(&mschap, sizeof(mschap)); + is_mschap = ParseAndExtractMsChapV2InfoFromPassword(&mschap, password); + + // Split the server into tokens + token = ParseToken(server, " ,;\t"); + + // Get the IP address of the server + ip_list = NewListFast(NULL); + for(i = 0; i < token->NumTokens; i++) + { + IP *tmp_ip = Malloc(sizeof(IP)); + if (GetIP(tmp_ip, token->Token[i])) + { + Add(ip_list, tmp_ip); + } + else if (GetIPEx(tmp_ip, token->Token[i], true)) + { + Add(ip_list, tmp_ip); + } + else + { + Free(tmp_ip); + } + } + + FreeToken(token); + + if(LIST_NUM(ip_list) == 0) + { + ReleaseList(ip_list); + return false; + } + + // Random number generation + Rand(random, sizeof(random)); + + // ID generation + id = (UCHAR)(packet_id % 254 + 1); + packet_id++; + + if (is_mschap == false) + { + // Encrypt the password + encrypted_password = RadiusEncryptPassword(password, random, secret, secret_size); + if (encrypted_password == NULL) + { + // Encryption failure + ReleaseList(ip_list); + return false; + } + } + + // Generate the user name packet + user_name = RadiusCreateUserName(username); + + if (user_name != NULL) + { + // Generate a password packet + BUF *user_password = (is_mschap ? NULL : RadiusCreateUserPassword(encrypted_password->Buf, encrypted_password->Size)); + BUF *nas_id = RadiusCreateNasId(CEDAR_SERVER_STR); + + if (is_mschap || user_password != NULL) + { + UINT64 start; + UINT64 next_send_time; + UCHAR tmp[MAX_SIZE]; + UINT recv_buf_size = 32768; + UCHAR *recv_buf = MallocEx(recv_buf_size, true); + // Generate an UDP packet + BUF *p = NewBuf(); + UCHAR type = 1; + SOCK *sock; + USHORT sz = 0; + UINT pos = 0; + BOOL *finish = ZeroMallocEx(sizeof(BOOL) * LIST_NUM(ip_list), true); + + Zero(tmp, sizeof(tmp)); + + WriteBuf(p, &type, 1); + WriteBuf(p, &id, 1); + WriteBuf(p, &sz, 2); + WriteBuf(p, random, 16); + WriteBuf(p, user_name->Buf, user_name->Size); + + if (is_mschap == false) + { + UINT ui; + // PAP + WriteBuf(p, user_password->Buf, user_password->Size); + WriteBuf(p, nas_id->Buf, nas_id->Size); + + // Service-Type + ui = Endian32(2); + RadiusAddValue(p, 6, 0, 0, &ui, sizeof(ui)); + + // NAS-Port-Type + ui = Endian32(5); + RadiusAddValue(p, 61, 0, 0, &ui, sizeof(ui)); + + // Tunnel-Type + ui = Endian32(1); + RadiusAddValue(p, 64, 0, 0, &ui, sizeof(ui)); + + // Tunnel-Medium-Type + ui = Endian32(1); + RadiusAddValue(p, 65, 0, 0, &ui, sizeof(ui)); + + // Calling-Station-Id + RadiusAddValue(p, 31, 0, 0, client_ip_str, StrLen(client_ip_str)); + + // Tunnel-Client-Endpoint + RadiusAddValue(p, 66, 0, 0, client_ip_str, StrLen(client_ip_str)); + } + else + { + // MS-CHAP v2 + static UINT session_id = 0; + USHORT us; + UINT ui; + char *ms_ras_version = "MSRASV5.20"; + UCHAR ms_chapv2_response[50]; + + // Acct-Session-Id + us = Endian16(session_id % 254 + 1); + session_id++; + RadiusAddValue(p, 44, 0, 0, &us, sizeof(us)); + + // NAS-IP-Address + if (c != NULL && c->FirstSock != NULL && c->FirstSock->IPv6 == false) + { + ui = IPToUINT(&c->FirstSock->LocalIP); + RadiusAddValue(p, 4, 0, 0, &ui, sizeof(ui)); + } + + // Service-Type + ui = Endian32(2); + RadiusAddValue(p, 6, 0, 0, &ui, sizeof(ui)); + + // MS-RAS-Vendor + ui = Endian32(311); + RadiusAddValue(p, 26, 311, 9, &ui, sizeof(ui)); + + // MS-RAS-Version + RadiusAddValue(p, 26, 311, 18, ms_ras_version, StrLen(ms_ras_version)); + + // NAS-Port-Type + ui = Endian32(5); + RadiusAddValue(p, 61, 0, 0, &ui, sizeof(ui)); + + // Tunnel-Type + ui = Endian32(1); + RadiusAddValue(p, 64, 0, 0, &ui, sizeof(ui)); + + // Tunnel-Medium-Type + ui = Endian32(1); + RadiusAddValue(p, 65, 0, 0, &ui, sizeof(ui)); + + // Calling-Station-Id + RadiusAddValue(p, 31, 0, 0, client_ip_str, StrLen(client_ip_str)); + + // Tunnel-Client-Endpoint + RadiusAddValue(p, 66, 0, 0, client_ip_str, StrLen(client_ip_str)); + + // MS-RAS-Client-Version + RadiusAddValue(p, 26, 311, 35, ms_ras_version, StrLen(ms_ras_version)); + + // MS-RAS-Client-Name + RadiusAddValue(p, 26, 311, 34, client_ip_str, StrLen(client_ip_str)); + + // MS-CHAP-Challenge + RadiusAddValue(p, 26, 311, 11, mschap.MsChapV2_ServerChallenge, sizeof(mschap.MsChapV2_ServerChallenge)); + + // MS-CHAP2-Response + Zero(ms_chapv2_response, sizeof(ms_chapv2_response)); + Copy(ms_chapv2_response + 2, mschap.MsChapV2_ClientChallenge, 16); + Copy(ms_chapv2_response + 2 + 16 + 8, mschap.MsChapV2_ClientResponse, 24); + RadiusAddValue(p, 26, 311, 25, ms_chapv2_response, sizeof(ms_chapv2_response)); + + // NAS-ID + WriteBuf(p, nas_id->Buf, nas_id->Size); + } + + SeekBuf(p, 0, 0); + + WRITE_USHORT(((UCHAR *)p->Buf) + 2, (USHORT)p->Size); + + // Create a socket + sock = NewUDPEx(0, IsIP6(LIST_DATA(ip_list, pos))); + + // Transmission process start + start = Tick64(); + if(interval < RADIUS_RETRY_INTERVAL) + { + interval = RADIUS_RETRY_INTERVAL; + } + else if(interval > RADIUS_RETRY_TIMEOUT) + { + interval = RADIUS_RETRY_TIMEOUT; + } + next_send_time = start + (UINT64)interval; + + while (true) + { + UINT server_port; + UINT recv_size; + //IP server_ip; + SOCKSET set; + UINT64 now; + +SEND_RETRY: + //SendTo(sock, &ip, port, p->Buf, p->Size); + SendTo(sock, LIST_DATA(ip_list, pos), port, p->Buf, p->Size); + + Debug("send to host:%u\n", pos); + + next_send_time = Tick64() + (UINT64)interval; + +RECV_RETRY: + now = Tick64(); + if (next_send_time <= now) + { + // Switch the host to refer + pos++; + pos = pos % LIST_NUM(ip_list); + + goto SEND_RETRY; + } + + if ((start + RADIUS_RETRY_TIMEOUT) < now) + { + // Time-out + break; + } + + InitSockSet(&set); + AddSockSet(&set, sock); + Select(&set, (UINT)(next_send_time - now), NULL, NULL); + + recv_size = RecvFrom(sock, LIST_DATA(ip_list, pos), &server_port, recv_buf, recv_buf_size); + + if (recv_size == 0) + { + Debug("Radius recv_size 0\n"); + finish[pos] = TRUE; + for(i = 0; i < LIST_NUM(ip_list); i++) + { + if(finish[i] == FALSE) + { + // Switch the host to refer + pos++; + pos = pos % LIST_NUM(ip_list); + goto SEND_RETRY; + } + } + // Failure + break; + } + else if (recv_size == SOCK_LATER) + { + // Waiting + goto RECV_RETRY; + } + else + { + // Check such as the IP address + if (/*Cmp(&server_ip, &ip, sizeof(IP)) != 0 || */server_port != port) + { + goto RECV_RETRY; + } + // Success + if (recv_buf[0] == 2) + { + ret = true; + + if (is_mschap && mschap_v2_server_response_20 != NULL) + { + // Cutting corners Zurukko + UCHAR signature[] = {0x1A, 0x33, 0x00, 0x00, 0x01, 0x37, 0x1A, 0x2D, 0x00, 0x53, 0x3D, }; + UINT i = SearchBin(recv_buf, 0, recv_buf_size, signature, sizeof(signature)); + + if (i == INFINITE || ((i + sizeof(signature) + 40) > recv_buf_size)) + { + ret = false; + } + else + { + char tmp[MAX_SIZE]; + BUF *b; + + Zero(tmp, sizeof(tmp)); + Copy(tmp, recv_buf + i + sizeof(signature), 40); + + b = StrToBin(tmp); + + if (b != NULL && b->Size == 20) + { + WHERE; + Copy(mschap_v2_server_response_20, b->Buf, 20); + } + else + { + WHERE; + ret = false; + } + + FreeBuf(b); + } + } + } + break; + } + } + + Free(finish); + + // Release the socket + ReleaseSock(sock); + + FreeBuf(p); + FreeBuf(user_password); + + Free(recv_buf); + } + + FreeBuf(nas_id); + FreeBuf(user_name); + } + + // Release the ip_list + for(i = 0; i < LIST_NUM(ip_list); i++) + { + IP *tmp_ip = LIST_DATA(ip_list, i); + Free(tmp_ip); + } + ReleaseList(ip_list); + + // Release the memory + FreeBuf(encrypted_password); + + return ret; +} + +// Adding Attributes +void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size) +{ + UINT len; + // Validate arguments + if (b == NULL || (data == NULL && size != 0)) + { + return; + } + + // type + WriteBufChar(b, t); + + // length + len = 2 + size; + if (t == 26) + { + len += 6; + } + WriteBufChar(b, (UCHAR)len); + + if (t != 26) + { + // value + WriteBuf(b, data, size); + } + else + { + // vendor + WriteBufInt(b, v); + + // vendor type + WriteBufChar(b, vt); + + // length2 + len = size + 2; + WriteBufChar(b, (UCHAR)len); + + // value + WriteBuf(b, data, size); + } +} + +// Create a password attribute for Radius +BUF *RadiusCreateUserPassword(void *data, UINT size) +{ + BUF *b; + UCHAR code, sz; + // Validate arguments + if (size != 0 && data == NULL || size >= 253) + { + return NULL; + } + + b = NewBuf(); + code = 2; + sz = 2 + (UCHAR)size; + WriteBuf(b, &code, 1); + WriteBuf(b, &sz, 1); + WriteBuf(b, data, size); + + return b; +} + +// Generate an ID attribute of Nas +BUF *RadiusCreateNasId(char *name) +{ + BUF *b; + UCHAR code, size; + // Validate arguments + if (name == NULL) + { + return NULL; + } + if (StrLen(name) == 0 || StrLen(name) >= 128) + { + return NULL; + } + + b = NewBuf(); + code = 32; + size = 2 + (UCHAR)StrLen(name); + WriteBuf(b, &code, 1); + WriteBuf(b, &size, 1); + WriteBuf(b, name, StrLen(name)); + + return b; +} + +// Create a user name attribute for Radius +BUF *RadiusCreateUserName(wchar_t *username) +{ + BUF *b; + UCHAR code, size; + UCHAR utf8[254]; + // Validate arguments + if (username == NULL) + { + return NULL; + } + + // Convert the user name to a Unicode string + UniToStr(utf8, sizeof(utf8), username); + utf8[253] = 0; + + b = NewBuf(); + code = 1; + size = 2 + (UCHAR)StrLen(utf8); + WriteBuf(b, &code, 1); + WriteBuf(b, &size, 1); + WriteBuf(b, utf8, StrLen(utf8)); + + return b; +} + +// Encrypt the password for the Radius +BUF *RadiusEncryptPassword(char *password, UCHAR *random, UCHAR *secret, UINT secret_size) +{ + UINT n, i; + BUF *buf; + UCHAR c[16][16]; // Result + UCHAR b[16][16]; // Result + UCHAR p[16][16]; // Password + // Validate arguments + if (password == NULL || random == NULL || (secret_size != 0 && secret == NULL)) + { + return NULL; + } + if (StrLen(password) > 256) + { + // Password is too long + return NULL; + } + + // Initialize + Zero(c, sizeof(c)); + Zero(p, sizeof(p)); + Zero(b, sizeof(b)); + + // Divide the password per 16 characters + Copy(p, password, StrLen(password)); + // Calculate the number of blocks + n = StrLen(password) / 16; + if ((StrLen(password) % 16) != 0) + { + n++; + } + + // Encryption processing + for (i = 0;i < n;i++) + { + // Calculation of b[i] + UINT j; + BUF *tmp = NewBuf(); + WriteBuf(tmp, secret, secret_size); + if (i == 0) + { + WriteBuf(tmp, random, 16); + } + else + { + WriteBuf(tmp, c[i - 1], 16); + } + Hash(b[i], tmp->Buf, tmp->Size, false); + FreeBuf(tmp); + + // Calculation of c[i] + for (j = 0;j < 16;j++) + { + c[i][j] = p[i][j] ^ b[i][j]; + } + } + + // Return the results + buf = NewBuf(); + WriteBuf(buf, c, n * 16); + return buf; +} // Developed by SoftEther VPN Project at University of Tsukuba in Japan. diff --git a/src/Cedar/Radius.h b/src/Cedar/Radius.h index 25c347c1..14c6798b 100644 --- a/src/Cedar/Radius.h +++ b/src/Cedar/Radius.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Radius.h @@ -97,6 +103,13 @@ #define RADIUS_RETRY_INTERVAL 500 // Retransmission interval #define RADIUS_RETRY_TIMEOUT (10 * 1000) // Time-out period +// Function prototype +bool RadiusLogin(CONNECTION *c, char *server, UINT port, UCHAR *secret, UINT secret_size, wchar_t *username, char *password, UINT interval, UCHAR *mschap_v2_server_response_20); +BUF *RadiusEncryptPassword(char *password, UCHAR *random, UCHAR *secret, UINT secret_size); +BUF *RadiusCreateUserName(wchar_t *username); +BUF *RadiusCreateUserPassword(void *data, UINT size); +BUF *RadiusCreateNasId(char *name); +void RadiusAddValue(BUF *b, UCHAR t, UINT v, UCHAR vt, void *data, UINT size); #endif // RADIUS_H diff --git a/src/Cedar/Remote.c b/src/Cedar/Remote.c index 6d965e07..49dda2f3 100644 --- a/src/Cedar/Remote.c +++ b/src/Cedar/Remote.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Remote.c diff --git a/src/Cedar/Remote.h b/src/Cedar/Remote.h index 09b9d1e5..1379a46a 100644 --- a/src/Cedar/Remote.h +++ b/src/Cedar/Remote.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Remote.h diff --git a/src/Cedar/SM.c b/src/Cedar/SM.c index acf8104e..4c0093dc 100644 --- a/src/Cedar/SM.c +++ b/src/Cedar/SM.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SM.c @@ -702,6 +708,19 @@ UINT SmDDnsDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param) } break; + case B_HINT2: + // Hint2 (for DDNS key) + { + wchar_t tmp[MAX_SIZE * 4]; + wchar_t *keystr; + + keystr = GetText(hWnd, E_KEY); + UniFormat(tmp, sizeof(tmp), _UU("SM_DDNS_KEY_MSG"), keystr); + Free(keystr); + OnceMsg(hWnd, _UU("SM_DDNS_KEY_TITLE"), tmp, false, ICO_DISPLAY); + } + break; + case B_PROXY: // Proxy settings if (true) @@ -835,8 +854,45 @@ UINT SmDDnsDlg(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param) return 0; } + +// Get the ddns key from the server configuration file +static UINT SmDdnsGetKey(char *key, SM_DDNS *d){ + RPC *rpc = d->s->Rpc; + RPC_CONFIG config; + UINT err; + BUF *buf; + FOLDER *root, *ddnsfolder; + + // Validate arguments + if(d == NULL || d->s == NULL || key == NULL){ + return ERR_INTERNAL_ERROR; + } + + Zero(&config, sizeof(config)); + err = ScGetConfig(d->s->Rpc, &config); + if(err != ERR_NO_ERROR){ + return err; + } + + buf = NewBufFromMemory(config.FileData, StrLen(config.FileData)); + FreeRpcConfig(&config); + + root = CfgBufTextToFolder(buf); + FreeBuf(buf); + + ddnsfolder = CfgGetFolder(root, "DDnsClient"); + err = CfgGetByte(ddnsfolder, "Key", key, 20); + + CfgDeleteFolder(root); + + return (err == 20) ? ERR_NO_ERROR : ERR_INTERNAL_ERROR; +} + void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d) { + char key[20]; + char encodedkey[20 * 4 + 32]; + // Validate arguments if (hWnd == NULL || d == NULL) { @@ -854,6 +910,7 @@ void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d) DlgFont(hWnd, S_STATUS4, 0, true); DlgFont(hWnd, S_STATUS5, 0, true); DlgFont(hWnd, S_STATUS6, 0, true); + DlgFont(hWnd, S_STATUS8, 0, true); SetFont(hWnd, S_SUFFIX, GetFont("Verdana", 10, false, false, false, false)); SetFont(hWnd, E_NEWHOST, GetFont("Verdana", 10, false, false, false, false)); @@ -861,6 +918,7 @@ void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d) SetFont(hWnd, E_HOST, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 10, false, false, false, false)); SetFont(hWnd, E_IPV4, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 10, false, false, false, false)); SetFont(hWnd, E_IPV6, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 10, false, false, false, false)); + SetFont(hWnd, E_KEY, GetFont((MsIsWinXPOrGreater() ? "Verdana" : NULL), 8, false, false, false, false)); DlgFont(hWnd, IDOK, 0, true); @@ -871,6 +929,13 @@ void SmDDnsDlgInit(HWND hWnd, SM_DDNS *d) Hide(hWnd, B_PROXY); + if(SmDdnsGetKey(key, d) == ERR_NO_ERROR){ + encodedkey[ B64_Encode(encodedkey, key, 20) ] = 0; + SetTextA(hWnd, E_KEY, encodedkey); + }else{ + SetText(hWnd, E_KEY, _UU("SM_DDNS_KEY_ERR")); + } + SmDDnsRefresh(hWnd, d); } @@ -878,6 +943,7 @@ void SmDDnsRefresh(HWND hWnd, SM_DDNS *d) { DDNS_CLIENT_STATUS st; INTERNET_SETTING t; + // Validate arguments if (hWnd == NULL || d == NULL) { diff --git a/src/Cedar/SM.h b/src/Cedar/SM.h index 5fa56588..261c206a 100644 --- a/src/Cedar/SM.h +++ b/src/Cedar/SM.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SM.h diff --git a/src/Cedar/SMInner.h b/src/Cedar/SMInner.h index 63ef0786..8f2beb33 100644 --- a/src/Cedar/SMInner.h +++ b/src/Cedar/SMInner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SMInner.h @@ -209,6 +215,7 @@ typedef struct SM_HUB SM_SERVER *p; // P RPC *Rpc; // RPC char *HubName; // HUB name + char CurrentPushRouteStr[MAX_DHCP_CLASSLESS_ROUTE_TABLE_STR_SIZE]; // Current editing push routing table string } SM_HUB; // Show the User list diff --git a/src/Cedar/SW.c b/src/Cedar/SW.c index bcbb45c8..0733391a 100644 --- a/src/Cedar/SW.c +++ b/src/Cedar/SW.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SW.c diff --git a/src/Cedar/SW.h b/src/Cedar/SW.h index 668201f0..94a4479d 100644 --- a/src/Cedar/SW.h +++ b/src/Cedar/SW.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SW.h diff --git a/src/Cedar/SWInner.h b/src/Cedar/SWInner.h index d23dbc27..9f62c5f3 100644 --- a/src/Cedar/SWInner.h +++ b/src/Cedar/SWInner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SWInner.h diff --git a/src/Cedar/Sam.c b/src/Cedar/Sam.c index b12a97f9..7520e40a 100644 --- a/src/Cedar/Sam.c +++ b/src/Cedar/Sam.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Sam.c @@ -156,13 +162,263 @@ bool SamAuthUserByAnonymous(HUB *h, char *username) // Plaintext password authentication of user bool SamAuthUserByPlainPassword(CONNECTION *c, HUB *hub, char *username, char *password, bool ast, UCHAR *mschap_v2_server_response_20) { - return false; + bool b = false; + wchar_t *name = NULL; + bool auth_by_nt = false; + HUB *h; + // Validate arguments + if (hub == NULL || c == NULL || username == NULL) + { + return false; + } + + if (GetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH) != 0) + { + return false; + } + + h = hub; + + AddRef(h->ref); + + // Get the user name on authentication system + AcLock(hub); + { + USER *u; + u = AcGetUser(hub, ast == false ? username : "*"); + if (u) + { + Lock(u->lock); + { + if (u->AuthType == AUTHTYPE_RADIUS) + { + // Radius authentication + AUTHRADIUS *auth = (AUTHRADIUS *)u->AuthData; + if (ast || auth->RadiusUsername == NULL || UniStrLen(auth->RadiusUsername) == 0) + { + name = CopyStrToUni(username); + } + else + { + name = CopyUniStr(auth->RadiusUsername); + } + auth_by_nt = false; + } + else if (u->AuthType == AUTHTYPE_NT) + { + // NT authentication + AUTHNT *auth = (AUTHNT *)u->AuthData; + if (ast || auth->NtUsername == NULL || UniStrLen(auth->NtUsername) == 0) + { + name = CopyStrToUni(username); + } + else + { + name = CopyUniStr(auth->NtUsername); + } + auth_by_nt = true; + } + } + Unlock(u->lock); + ReleaseUser(u); + } + } + AcUnlock(hub); + + if (name != NULL) + { + if (auth_by_nt == false) + { + // Radius authentication + char radius_server_addr[MAX_SIZE]; + UINT radius_server_port; + char radius_secret[MAX_SIZE]; + char suffix_filter[MAX_SIZE]; + wchar_t suffix_filter_w[MAX_SIZE]; + UINT interval; + + Zero(suffix_filter, sizeof(suffix_filter)); + Zero(suffix_filter_w, sizeof(suffix_filter_w)); + + // Get the Radius server information + if (GetRadiusServerEx2(hub, radius_server_addr, sizeof(radius_server_addr), &radius_server_port, radius_secret, sizeof(radius_secret), &interval, suffix_filter, sizeof(suffix_filter))) + { + Unlock(hub->lock); + + StrToUni(suffix_filter_w, sizeof(suffix_filter_w), suffix_filter); + + if (UniIsEmptyStr(suffix_filter_w) || UniEndWith(name, suffix_filter_w)) + { + // Attempt to login + b = RadiusLogin(c, radius_server_addr, radius_server_port, + radius_secret, StrLen(radius_secret), + name, password, interval, mschap_v2_server_response_20); + } + + Lock(hub->lock); + } + else + { + HLog(hub, "LH_NO_RADIUS_SETTING", name); + } + } + else + { + // NT authentication (Not available for non-Win32) +#ifdef OS_WIN32 + IPC_MSCHAP_V2_AUTHINFO mschap; + Unlock(hub->lock); + + if (ParseAndExtractMsChapV2InfoFromPassword(&mschap, password) == false) + { + // Plaintext password authentication + b = MsCheckLogon(name, password); + } + else + { + UCHAR challenge8[8]; + UCHAR nt_pw_hash_hash[16]; + char nt_name[MAX_SIZE]; + + UniToStr(nt_name, sizeof(nt_name), name); + + // MS-CHAPv2 authentication + MsChapV2_GenerateChallenge8(challenge8, mschap.MsChapV2_ClientChallenge, + mschap.MsChapV2_ServerChallenge, + mschap.MsChapV2_PPPUsername); + + Debug("MsChapV2_PPPUsername = %s, nt_name = %s\n", mschap.MsChapV2_PPPUsername, nt_name); + + b = MsPerformMsChapV2AuthByLsa(nt_name, challenge8, mschap.MsChapV2_ClientResponse, nt_pw_hash_hash); + + if (b) + { + if (mschap_v2_server_response_20 != NULL) + { + MsChapV2Server_GenerateResponse(mschap_v2_server_response_20, nt_pw_hash_hash, + mschap.MsChapV2_ClientResponse, challenge8); + } + } + } + + Lock(hub->lock); +#else // OS_WIN32 + // Nothing to do other than Win32 +#endif // OS_WIN32 + } + + // Memory release + Free(name); + } + + ReleaseHub(h); + + return b; } // Certificate authentication of user bool SamAuthUserByCert(HUB *h, char *username, X *x) { - return false; + bool b = false; + // Validate arguments + if (h == NULL || username == NULL || x == NULL) + { + return false; + } + + if (GetGlobalServerFlag(GSF_DISABLE_CERT_AUTH) != 0) + { + return false; + } + + // Check expiration date + if (CheckXDateNow(x) == false) + { + return false; + } + + // Check the Certification Revocation List + if (IsValidCertInHub(h, x) == false) + { + // Bad + wchar_t tmp[MAX_SIZE * 2]; + + // Log the contents of the certificate + GetAllNameFromX(tmp, sizeof(tmp), x); + + HLog(h, "LH_AUTH_NG_CERT", username, tmp); + return false; + } + + AcLock(h); + { + USER *u; + u = AcGetUser(h, username); + if (u) + { + Lock(u->lock); + { + if (u->AuthType == AUTHTYPE_USERCERT) + { + // Check whether to matche with the registered certificate + AUTHUSERCERT *auth = (AUTHUSERCERT *)u->AuthData; + if (CompareX(auth->UserX, x)) + { + b = true; + } + } + else if (u->AuthType == AUTHTYPE_ROOTCERT) + { + // Check whether the certificate has been signed by the root certificate + AUTHROOTCERT *auth = (AUTHROOTCERT *)u->AuthData; + if (h->HubDb != NULL) + { + LockList(h->HubDb->RootCertList); + { + X *root_cert; + root_cert = GetIssuerFromList(h->HubDb->RootCertList, x); + if (root_cert != NULL) + { + b = true; + if (auth->CommonName != NULL && UniIsEmptyStr(auth->CommonName) == false) + { + // Compare the CN + if (UniStrCmpi(x->subject_name->CommonName, auth->CommonName) != 0) + { + b = false; + } + } + if (auth->Serial != NULL && auth->Serial->size >= 1) + { + // Compare the serial number + if (CompareXSerial(x->serial, auth->Serial) == false) + { + b = false; + } + } + } + } + UnlockList(h->HubDb->RootCertList); + } + } + } + Unlock(u->lock); + ReleaseUser(u); + } + } + AcUnlock(h); + + if (b) + { + wchar_t tmp[MAX_SIZE * 2]; + + // Log the contents of the certificate + GetAllNameFromX(tmp, sizeof(tmp), x); + + HLog(h, "LH_AUTH_OK_CERT", username, tmp); + } + + return b; } // Get the root certificate that signed the specified certificate from the list diff --git a/src/Cedar/Sam.h b/src/Cedar/Sam.h index 164b1c24..61eb1739 100644 --- a/src/Cedar/Sam.h +++ b/src/Cedar/Sam.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Sam.h diff --git a/src/Cedar/SeLowUser.c b/src/Cedar/SeLowUser.c index c4694177..191ad066 100644 --- a/src/Cedar/SeLowUser.c +++ b/src/Cedar/SeLowUser.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SeLowUser.c diff --git a/src/Cedar/SeLowUser.h b/src/Cedar/SeLowUser.h index 05c9b13e..531fd881 100644 --- a/src/Cedar/SeLowUser.h +++ b/src/Cedar/SeLowUser.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SeLowUser.h diff --git a/src/Cedar/SecureInfo.c b/src/Cedar/SecureInfo.c index af739f11..3bbe69cb 100644 --- a/src/Cedar/SecureInfo.c +++ b/src/Cedar/SecureInfo.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SecureInfo.c diff --git a/src/Cedar/SecureInfo.h b/src/Cedar/SecureInfo.h index e39a5c2d..821fca5f 100644 --- a/src/Cedar/SecureInfo.h +++ b/src/Cedar/SecureInfo.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SecureInfo.h diff --git a/src/Cedar/SecureNAT.c b/src/Cedar/SecureNAT.c index 4d77779b..fbb4b751 100644 --- a/src/Cedar/SecureNAT.c +++ b/src/Cedar/SecureNAT.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SecureNAT.c diff --git a/src/Cedar/SecureNAT.h b/src/Cedar/SecureNAT.h index a73f718b..2452ab0a 100644 --- a/src/Cedar/SecureNAT.h +++ b/src/Cedar/SecureNAT.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SecureNAT.h diff --git a/src/Cedar/Server.c b/src/Cedar/Server.c index f4adda60..a0de204c 100644 --- a/src/Cedar/Server.c +++ b/src/Cedar/Server.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Server.c @@ -100,6 +106,8 @@ char *BRIDGE_CONFIG_FILE_NAME = "@vpn_bridge.config"; static bool server_reset_setting = false; +static volatile UINT global_server_flags[NUM_GLOBAL_SERVER_FLAGS] = {0}; + // Set the OpenVPN and SSTP setting void SiSetOpenVPNAndSSTPConfig(SERVER *s, OPENVPN_SSTP_CONFIG *c) { @@ -825,6 +833,40 @@ UINT SiGetSysLogSaveStatus(SERVER *s) // Send a syslog void SiWriteSysLog(SERVER *s, char *typestr, char *hubname, wchar_t *message) { + wchar_t tmp[1024]; + char machinename[MAX_HOST_NAME_LEN + 1]; + char datetime[MAX_PATH]; + SYSTEMTIME st; + // Validate arguments + if (s == NULL || typestr == NULL || message == NULL) + { + return; + } + + if (GetGlobalServerFlag(GSF_DISABLE_SYSLOG) != 0) + { + return; + } + + // Host name + GetMachineName(machinename, sizeof(machinename)); + + // Date and time + LocalTime(&st); + GetDateTimeStrMilli(datetime, sizeof(datetime), &st); + + if (IsEmptyStr(hubname) == false) + { + UniFormat(tmp, sizeof(tmp), L"[%S/VPN/%S] (%S) <%S>: %s", + machinename, hubname, datetime, typestr, message); + } + else + { + UniFormat(tmp, sizeof(tmp), L"[%S/VPN] (%S) <%S>: %s", + machinename, datetime, typestr, message); + } + + SendSysLog(s->Syslog, tmp); } // Write the syslog configuration @@ -1207,6 +1249,22 @@ void DestroyServerCapsCache(SERVER *s) Unlock(s->CapsCacheLock); } +// Flush the Caps list for this server +void FlushServerCaps(SERVER *s) +{ + CAPSLIST t; + // Validate arguments + if (s == NULL) + { + return; + } + + DestroyServerCapsCache(s); + + Zero(&t, sizeof(t)); + GetServerCaps(s, &t); +} + // Get the Caps list for this server void GetServerCaps(SERVER *s, CAPSLIST *t) { @@ -1230,15 +1288,63 @@ void GetServerCaps(SERVER *s, CAPSLIST *t) Unlock(s->CapsCacheLock); } -// Main of the aquisition of Caps of the server -void GetServerCapsMain(SERVER *s, CAPSLIST *t) +// Update the global server flags +void UpdateGlobalServerFlags(SERVER *s, CAPSLIST *t) { + bool is_restricted = false; // Validate arguments if (s == NULL || t == NULL) { return; } + is_restricted = SiIsEnterpriseFunctionsRestrictedOnOpenSource(s->Cedar); + + SetGlobalServerFlag(GSF_DISABLE_PUSH_ROUTE, is_restricted); + SetGlobalServerFlag(GSF_DISABLE_RADIUS_AUTH, is_restricted); + SetGlobalServerFlag(GSF_DISABLE_CERT_AUTH, is_restricted); + SetGlobalServerFlag(GSF_DISABLE_DEEP_LOGGING, is_restricted); + SetGlobalServerFlag(GSF_DISABLE_AC, is_restricted); + SetGlobalServerFlag(GSF_DISABLE_SYSLOG, is_restricted); +} + +// Set a global server flag +void SetGlobalServerFlag(UINT index, UINT value) +{ + // Validate arguments + if (index >= NUM_GLOBAL_SERVER_FLAGS) + { + return; + } + + global_server_flags[index] = value; +} + +// Get a global server flag +UINT GetGlobalServerFlag(UINT index) +{ + // Validate arguments + if (index >= NUM_GLOBAL_SERVER_FLAGS) + { + return 0; + } + + return global_server_flags[index]; +} + +// Main of the aquisition of Caps of the server +void GetServerCapsMain(SERVER *s, CAPSLIST *t) +{ + bool is_restricted = false; + + // Validate arguments + if (s == NULL || t == NULL) + { + return; + } + + is_restricted = SiIsEnterpriseFunctionsRestrictedOnOpenSource(s->Cedar); + // Initialize InitCapsList(t); @@ -1299,7 +1405,7 @@ void GetServerCapsMain(SERVER *s, CAPSLIST *t) AddCapsBool(t, "b_support_qos", true); // syslog - AddCapsBool(t, "b_support_syslog", false); + AddCapsBool(t, "b_support_syslog", true); // IPsec // (Only works in stand-alone mode currently) @@ -1382,6 +1488,10 @@ void GetServerCapsMain(SERVER *s, CAPSLIST *t) // SecureNAT function is available AddCapsBool(t, "b_support_securenat", true); + // Pushing routing table function of SecureNAT Virtual DHCP Server is available + AddCapsBool(t, "b_suppport_push_route", !is_restricted); + AddCapsBool(t, "b_suppport_push_route_config", true); + if (s->ServerType != SERVER_TYPE_STANDALONE) { AddCapsBool(t, "b_virtual_nat_disabled", true); @@ -1428,7 +1538,9 @@ void GetServerCapsMain(SERVER *s, CAPSLIST *t) // VPN client can be connected AddCapsBool(t, "b_vpn_client_connect", s->Cedar->Bridge == false ? true : false); - AddCapsBool(t, "b_support_radius", false); + // External authentication server is available + AddCapsBool(t, "b_support_radius", s->ServerType != SERVER_TYPE_FARM_MEMBER && + s->Cedar->Bridge == false); // Local-bridge function is available AddCapsBool(t, "b_local_bridge", IsBridgeSupported()); @@ -1463,7 +1575,8 @@ void GetServerCapsMain(SERVER *s, CAPSLIST *t) // Server authentication can be used in cascade connection AddCapsBool(t, "b_support_cascade_cert", true); - AddCapsBool(t, "b_support_config_log", false); + // the log file settings is modifiable + AddCapsBool(t, "b_support_config_log", s->ServerType != SERVER_TYPE_FARM_MEMBER); // Automatic deletion of log file is available AddCapsBool(t, "b_support_autodelete", true); @@ -1515,6 +1628,8 @@ void GetServerCapsMain(SERVER *s, CAPSLIST *t) // Support for CRL AddCapsBool(t, "b_support_crl", true); + // Supports AC + AddCapsBool(t, "b_support_ac", true); } // Supports downloading a log file @@ -1614,6 +1729,8 @@ void GetServerCapsMain(SERVER *s, CAPSLIST *t) // VPN4 AddCapsBool(t, "b_vpn4", true); + + UpdateGlobalServerFlags(s, t); } // SYSLOG_SETTING @@ -3123,6 +3240,7 @@ void IncrementServerConfigRevision(SERVER *s) FOLDER *SiWriteConfigurationToCfg(SERVER *s) { FOLDER *root; + char region[128]; // Validate arguments if (s == NULL) { @@ -3131,6 +3249,10 @@ FOLDER *SiWriteConfigurationToCfg(SERVER *s) root = CfgCreateFolder(NULL, TAG_ROOT); + SiGetCurrentRegion(s->Cedar, region, sizeof(region)); + + CfgAddStr(root, "Region", region); + CfgAddInt(root, "ConfigRevision", s->ConfigRevision); SiWriteListeners(CfgCreateFolder(root, "ListenerList"), s); @@ -3829,6 +3951,25 @@ void SiLoadHubOptionCfg(FOLDER *f, HUB_OPTION *o) o->BroadcastLimiterStrictMode = CfgGetBool(f, "BroadcastLimiterStrictMode"); o->MaxLoggedPacketsPerMinute = CfgGetInt(f, "MaxLoggedPacketsPerMinute"); o->DoNotSaveHeavySecurityLogs = CfgGetBool(f, "DoNotSaveHeavySecurityLogs"); + + if (CfgIsItem(f, "DropBroadcastsInPrivacyFilterMode")) + { + o->DropBroadcastsInPrivacyFilterMode = CfgGetBool(f, "DropBroadcastsInPrivacyFilterMode"); + } + else + { + o->DropBroadcastsInPrivacyFilterMode = true; + } + + if (CfgIsItem(f, "DropArpInPrivacyFilterMode")) + { + o->DropArpInPrivacyFilterMode = CfgGetBool(f, "DropArpInPrivacyFilterMode"); + } + else + { + o->DropArpInPrivacyFilterMode = true; + } + o->NoLookBPDUBridgeId = CfgGetBool(f, "NoLookBPDUBridgeId"); o->AdjustTcpMssValue = CfgGetInt(f, "AdjustTcpMssValue"); o->DisableAdjustTcpMss = CfgGetBool(f, "DisableAdjustTcpMss"); @@ -3939,6 +4080,8 @@ void SiWriteHubOptionCfg(FOLDER *f, HUB_OPTION *o) CfgAddBool(f, "BroadcastLimiterStrictMode", o->BroadcastLimiterStrictMode); CfgAddInt(f, "MaxLoggedPacketsPerMinute", o->MaxLoggedPacketsPerMinute); CfgAddBool(f, "DoNotSaveHeavySecurityLogs", o->DoNotSaveHeavySecurityLogs); + CfgAddBool(f, "DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode); + CfgAddBool(f, "DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode); CfgAddBool(f, "NoLookBPDUBridgeId", o->NoLookBPDUBridgeId); CfgAddInt(f, "AdjustTcpMssValue", o->AdjustTcpMssValue); CfgAddBool(f, "DisableAdjustTcpMss", o->DisableAdjustTcpMss); @@ -7075,6 +7218,8 @@ void SiCalledUpdateHub(SERVER *s, PACK *p) o.NoManageVlanId = PackGetBool(p, "NoManageVlanId"); o.MaxLoggedPacketsPerMinute = PackGetInt(p, "MaxLoggedPacketsPerMinute"); o.DoNotSaveHeavySecurityLogs = PackGetBool(p, "DoNotSaveHeavySecurityLogs"); + o.DropBroadcastsInPrivacyFilterMode = PackGetBool(p, "DropBroadcastsInPrivacyFilterMode"); + o.DropArpInPrivacyFilterMode = PackGetBool(p, "DropArpInPrivacyFilterMode"); o.VlanTypeId = PackGetInt(p, "VlanTypeId"); if (o.VlanTypeId == 0) { @@ -8913,6 +9058,8 @@ void SiPackAddCreateHub(PACK *p, HUB *h) PackAddInt(p, "BroadcastStormDetectionThreshold", h->Option->BroadcastStormDetectionThreshold); PackAddInt(p, "MaxLoggedPacketsPerMinute", h->Option->MaxLoggedPacketsPerMinute); PackAddBool(p, "DoNotSaveHeavySecurityLogs", h->Option->DoNotSaveHeavySecurityLogs); + PackAddBool(p, "DropBroadcastsInPrivacyFilterMode", h->Option->DropBroadcastsInPrivacyFilterMode); + PackAddBool(p, "DropArpInPrivacyFilterMode", h->Option->DropArpInPrivacyFilterMode); PackAddInt(p, "ClientMinimumRequiredBuild", h->Option->ClientMinimumRequiredBuild); PackAddBool(p, "FixForDLinkBPDU", h->Option->FixForDLinkBPDU); PackAddBool(p, "BroadcastLimiterStrictMode", h->Option->BroadcastLimiterStrictMode); @@ -10311,6 +10458,122 @@ FARM_CONTROLLER *SiStartConnectToController(SERVER *s) return f; } +// Get the current version +void SiGetCurrentRegion(CEDAR *c, char *region, UINT region_size) +{ + ClearStr(region, region_size); + // Validate arguments + if (c == NULL || region == NULL) + { + return; + } + + Lock(c->CurrentRegionLock); + { + StrCpy(region, region_size, c->CurrentRegion); + } + Unlock(c->CurrentRegionLock); + + if (IsEmptyStr(region)) + { + if (GetCurrentLangId() == SE_LANG_JAPANESE) + { + StrCpy(region, region_size, "JP"); + } + else if (GetCurrentLangId() == SE_LANG_CHINESE_ZH) + { + StrCpy(region, region_size, "CN"); + } + } +} + +// Check whether some enterprise functions are restricted +// +// ** Hints by Daiyuu Nobori, written on March 19, 2014 ** +// +// The following 'enterprise functions' are implemented on SoftEther VPN Server +// since March 19, 2014. However, these functions are disabled on +// SoftEther VPN Servers which run in Japan and China. +// +// - RADIUS / NT Domain user authentication +// - RSA certificate authentication +// - Deep-inspect packet logging +// - Source IP address control list +// - syslog transfer +// +// The SoftEther VPN Project intentionally disables these functions for users +// in Japan and China. The reason is: Daiyuu Nobori, the chief author of +// SoftEther VPN, has been liable to observe the existing agreements and +// restrictions between him and some companies. The agreements have regulated +// the region-limited restriction to implement and distribute the above +// enterprise functions on the SoftEther VPN open-source program. +// +// Therefore, the SoftEther VPN Project distributes the binary program and +// the source code with the "SiIsEnterpriseFunctionsRestrictedOnOpenSource" +// function. This function identifies whether the SoftEther VPN Server +// program is running in either Japan or China. If the restricted region is +// detected, then the above enterprise functions will be disabled. +// +// Please note that the above restriction has been imposed only on the +// original binaries and source codes from the SoftEther VPN Project. +// Anyone, except Daiyuu Nobori, who understands and writes the C language +// program can remove this restriction at his own risk. +// +bool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c) +{ + char region[128]; + bool ret = false; + // Validate arguments + if (c == NULL) + { + return false; + } + + + SiGetCurrentRegion(c, region, sizeof(region)); + + if (StrCmpi(region, "JP") == 0 || StrCmpi(region, "CN") == 0) + { + ret = true; + } + + return ret; +} + +// Update the current region +void SiUpdateCurrentRegion(CEDAR *c, char *region, bool force_update) +{ + bool changed = false; + // Validate arguments + if (c == NULL) + { + return; + } + + if (IsEmptyStr(region) == false) + { + Lock(c->CurrentRegionLock); + { + if (StrCmpi(c->CurrentRegion, region) != 0) + { + StrCpy(c->CurrentRegion, sizeof(c->CurrentRegion), region); + changed = true; + } + } + Unlock(c->CurrentRegionLock); + } + + if (force_update) + { + changed = true; + } + + if (changed) + { + FlushServerCaps(c->Server); + } +} + // Create a server SERVER *SiNewServer(bool bridge) { @@ -10461,6 +10724,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server) SiInitDeadLockCheck(s); + SiUpdateCurrentRegion(s->Cedar, "", true); + return s; } diff --git a/src/Cedar/Server.h b/src/Cedar/Server.h index 319e3eca..27803e94 100644 --- a/src/Cedar/Server.h +++ b/src/Cedar/Server.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Server.h @@ -397,6 +403,17 @@ struct LOG_FILE }; +// Global server flags +#define NUM_GLOBAL_SERVER_FLAGS 128 +#define GSF_DISABLE_PUSH_ROUTE 1 +#define GSF_DISABLE_RADIUS_AUTH 2 +#define GSF_DISABLE_CERT_AUTH 3 +#define GSF_DISABLE_DEEP_LOGGING 4 +#define GSF_DISABLE_AC 5 +#define GSF_DISABLE_SYSLOG 6 +#define GSF_SHOW_OSS_MSG 7 + + // Virtual HUB creation history struct SERVER_HUB_CREATE_HISTORY { @@ -630,6 +647,7 @@ void InRpcSysLogSetting(SYSLOG_SETTING *t, PACK *p); void OutRpcSysLogSetting(PACK *p, SYSLOG_SETTING *t); void GetServerCaps(SERVER *s, CAPSLIST *t); +void FlushServerCaps(SERVER *s); bool GetServerCapsBool(SERVER *s, char *name); UINT GetServerCapsInt(SERVER *s, char *name); void GetServerCapsMain(SERVER *s, CAPSLIST *t); @@ -637,6 +655,10 @@ void InitServerCapsCache(SERVER *s); void FreeServerCapsCache(SERVER *s); void DestroyServerCapsCache(SERVER *s); +void SetGlobalServerFlag(UINT index, UINT value); +UINT GetGlobalServerFlag(UINT index); +void UpdateGlobalServerFlags(SERVER *s, CAPSLIST *t); + bool IsAdminPackSupportedServerProduct(char *name); @@ -663,6 +685,10 @@ void SiApplyAzureConfig(SERVER *s, DDNS_CLIENT_STATUS *ddns_status); void SiSetAzureEnable(SERVER *s, bool enabled); bool SiGetAzureEnable(SERVER *s); +void SiUpdateCurrentRegion(CEDAR *c, char *region, bool force_update); +void SiGetCurrentRegion(CEDAR *c, char *region, UINT region_size); +bool SiIsEnterpriseFunctionsRestrictedOnOpenSource(CEDAR *c); + #endif // SERVER_H diff --git a/src/Cedar/Session.c b/src/Cedar/Session.c index 7403b2cd..828ca911 100644 --- a/src/Cedar/Session.c +++ b/src/Cedar/Session.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Session.c diff --git a/src/Cedar/Session.h b/src/Cedar/Session.h index 0191a7fd..5655947c 100644 --- a/src/Cedar/Session.h +++ b/src/Cedar/Session.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Session.h diff --git a/src/Cedar/UT.c b/src/Cedar/UT.c index 3293667e..3ef42d83 100644 --- a/src/Cedar/UT.c +++ b/src/Cedar/UT.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // UT.c diff --git a/src/Cedar/UT.h b/src/Cedar/UT.h index 8d4c9c0f..35b7c2b2 100644 --- a/src/Cedar/UT.h +++ b/src/Cedar/UT.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // UT.h diff --git a/src/Cedar/UdpAccel.c b/src/Cedar/UdpAccel.c index 1be02aae..59abc216 100644 --- a/src/Cedar/UdpAccel.c +++ b/src/Cedar/UdpAccel.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // UdpAccel.c diff --git a/src/Cedar/UdpAccel.h b/src/Cedar/UdpAccel.h index 240a45f4..e0ebbcf1 100644 --- a/src/Cedar/UdpAccel.h +++ b/src/Cedar/UdpAccel.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // UdpAccel.h diff --git a/src/Cedar/VG.c b/src/Cedar/VG.c index 5f6befcf..637aea41 100644 --- a/src/Cedar/VG.c +++ b/src/Cedar/VG.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VG.c diff --git a/src/Cedar/VG.h b/src/Cedar/VG.h index 218255c4..25013570 100644 --- a/src/Cedar/VG.h +++ b/src/Cedar/VG.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VG.h diff --git a/src/Cedar/VLan.c b/src/Cedar/VLan.c index e0e9c710..2b781382 100644 --- a/src/Cedar/VLan.c +++ b/src/Cedar/VLan.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VLan.c diff --git a/src/Cedar/VLan.h b/src/Cedar/VLan.h index 639f57ad..bc95c2db 100644 --- a/src/Cedar/VLan.h +++ b/src/Cedar/VLan.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VLan.h diff --git a/src/Cedar/VLanUnix.c b/src/Cedar/VLanUnix.c index d40235dc..93e51d71 100644 --- a/src/Cedar/VLanUnix.c +++ b/src/Cedar/VLanUnix.c @@ -16,7 +16,6 @@ // - nattoheaven (https://github.com/nattoheaven) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -87,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VLanUnix.c diff --git a/src/Cedar/VLanUnix.h b/src/Cedar/VLanUnix.h index ceccd1a0..4f2b529b 100644 --- a/src/Cedar/VLanUnix.h +++ b/src/Cedar/VLanUnix.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VLanUnix.h diff --git a/src/Cedar/VLanWin32.c b/src/Cedar/VLanWin32.c index ae83d3ec..f802f3f2 100644 --- a/src/Cedar/VLanWin32.c +++ b/src/Cedar/VLanWin32.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VLanWin32.c diff --git a/src/Cedar/VLanWin32.h b/src/Cedar/VLanWin32.h index 831ca694..11d511b5 100644 --- a/src/Cedar/VLanWin32.h +++ b/src/Cedar/VLanWin32.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // VLanWin32.h diff --git a/src/Cedar/Virtual.c b/src/Cedar/Virtual.c index 21e5d6b8..1bc8b132 100644 --- a/src/Cedar/Virtual.c +++ b/src/Cedar/Virtual.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Virtual.c @@ -2695,7 +2701,7 @@ NATIVE_STACK *NnGetNextInterface(NATIVE_NAT *t) UINTToIP(&subnet, opt.SubnetMask); UINTToIP(&gw, opt.Gateway); - IPCSetIPv4Parameters(ret->Ipc, &ip, &subnet, &gw); + IPCSetIPv4Parameters(ret->Ipc, &ip, &subnet, &gw, &opt.ClasslessRoute); // Determine the DNS server to use UINTToIP(&ret->DnsServerIP, opt.DnsServer); @@ -9427,6 +9433,11 @@ void VirtualDhcpServer(VH *v, PKT *p) ret.DnsServer2 = v->DhcpDns2; ret.Gateway = v->DhcpGateway; + if (GetGlobalServerFlag(GSF_DISABLE_PUSH_ROUTE) == 0) + { + Copy(&ret.ClasslessRoute, &v->PushRoute, sizeof(DHCP_CLASSLESS_ROUTE_TABLE)); + } + if (opt->Opcode != DHCP_INFORM) { char client_mac[MAX_SIZE]; @@ -9775,6 +9786,10 @@ void GetVirtualHostOption(VH *v, VH_OPTION *o) // Save a log o->SaveLog = v->SaveLog; + + // Pushing route option + BuildClasslessRouteTableStr(o->DhcpPushRoutes, sizeof(o->DhcpPushRoutes), &v->PushRoute); + o->ApplyDhcpPushRoutes = true; } UnlockVirtual(v); } @@ -9869,6 +9884,19 @@ void SetVirtualHostOption(VH *v, VH_OPTION *vo) // Save a log v->SaveLog = vo->SaveLog; + + // DHCP routing table pushing setting + if (vo->ApplyDhcpPushRoutes) + { + DHCP_CLASSLESS_ROUTE_TABLE rt; + + Zero(&rt, sizeof(rt)); + + if (ParseClasslessRouteTableStr(&rt, vo->DhcpPushRoutes)) + { + Copy(&v->PushRoute, &rt, sizeof(DHCP_CLASSLESS_ROUTE_TABLE)); + } + } } UnlockVirtual(v); } diff --git a/src/Cedar/Virtual.h b/src/Cedar/Virtual.h index 8c4a38ff..aed5d825 100644 --- a/src/Cedar/Virtual.h +++ b/src/Cedar/Virtual.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Virtual.h @@ -374,6 +380,7 @@ struct VH LIST *DhcpLeaseList; // DHCP lease list UINT64 LastDhcpPolling; // Time which the DHCP list polled last bool SaveLog; // Save a log + DHCP_CLASSLESS_ROUTE_TABLE PushRoute; // Pushing routing table COUNTER *Counter; // Session counter UINT DhcpId; // DHCP ID UINT64 LastSendBeacon; // Time which the beacon has been sent last @@ -408,6 +415,8 @@ struct VH_OPTION IP DhcpDnsServerAddress2; // Assigned DNS server address 2 char DhcpDomainName[MAX_HOST_NAME_LEN + 1]; // Assigned domain name bool SaveLog; // Save a log + bool ApplyDhcpPushRoutes; // Apply flag for DhcpPushRoutes + char DhcpPushRoutes[MAX_DHCP_CLASSLESS_ROUTE_TABLE_STR_SIZE]; // DHCP pushing routes }; // DHCP lease entry diff --git a/src/Cedar/WaterMark.c b/src/Cedar/WaterMark.c index 575c7cdb..6307d6b7 100644 --- a/src/Cedar/WaterMark.c +++ b/src/Cedar/WaterMark.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WaterMark.c diff --git a/src/Cedar/WaterMark.h b/src/Cedar/WaterMark.h index 275f9bd8..0d6b1af0 100644 --- a/src/Cedar/WaterMark.h +++ b/src/Cedar/WaterMark.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WaterMark.h diff --git a/src/Cedar/WebUI.c b/src/Cedar/WebUI.c index c36a085e..ce169661 100644 --- a/src/Cedar/WebUI.c +++ b/src/Cedar/WebUI.c @@ -14,7 +14,6 @@ // Author: Tetsuo Sugiyama // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WebUI.c diff --git a/src/Cedar/WebUI.h b/src/Cedar/WebUI.h index 2872a330..34f454df 100644 --- a/src/Cedar/WebUI.h +++ b/src/Cedar/WebUI.h @@ -14,7 +14,6 @@ // Author: Tetsuo Sugiyama // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WebUI.h diff --git a/src/Cedar/Win32Com.cpp b/src/Cedar/Win32Com.cpp index 0bd99b00..46c8bb4a 100644 --- a/src/Cedar/Win32Com.cpp +++ b/src/Cedar/Win32Com.cpp @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Win32Com.c diff --git a/src/Cedar/Win32Com.h b/src/Cedar/Win32Com.h index c14ca535..7cb0f430 100644 --- a/src/Cedar/Win32Com.h +++ b/src/Cedar/Win32Com.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Win32Com.h diff --git a/src/Cedar/WinJumpList.cpp b/src/Cedar/WinJumpList.cpp index dedf4b35..342f10e2 100644 --- a/src/Cedar/WinJumpList.cpp +++ b/src/Cedar/WinJumpList.cpp @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WinJumpList.cpp diff --git a/src/Cedar/WinUi.c b/src/Cedar/WinUi.c index 81463be4..593a3a6b 100644 --- a/src/Cedar/WinUi.c +++ b/src/Cedar/WinUi.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WinUi.c @@ -3671,6 +3677,8 @@ void AboutDlgInit(HWND hWnd, WINUI_ABOUT *a) //DlgFont(hWnd, S_INFO4, 8, false); SetShow(hWnd, B_UPDATE_CONFIG, (a->Update != NULL)); + + Show(hWnd, B_AUTHORS); } // Version information procedure @@ -3721,6 +3729,9 @@ UINT AboutDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *param case B_UPDATE_CONFIG: ConfigUpdateUi(a->Update, hWnd); break; + case B_AUTHORS: + ShowTextFile(hWnd, "|authors.txt", _UU("DLG_ABOUT_AUTHORS"), ICO_ZURUHAM); + break; case B_LANGUAGE: // Language settings if (true) diff --git a/src/Cedar/WinUi.h b/src/Cedar/WinUi.h index 8db66d9f..a9161253 100644 --- a/src/Cedar/WinUi.h +++ b/src/Cedar/WinUi.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WinUi.h diff --git a/src/Cedar/Wpc.c b/src/Cedar/Wpc.c index de04979b..392b75ee 100644 --- a/src/Cedar/Wpc.c +++ b/src/Cedar/Wpc.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Wpc.c diff --git a/src/Cedar/Wpc.h b/src/Cedar/Wpc.h index 7f9428a3..2836fc59 100644 --- a/src/Cedar/Wpc.h +++ b/src/Cedar/Wpc.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Wpc.h diff --git a/src/CurrentBuild.txt b/src/CurrentBuild.txt index 01c586ed..2103431d 100644 --- a/src/CurrentBuild.txt +++ b/src/CurrentBuild.txt @@ -1,4 +1,4 @@ -BUILD_NUMBER 9423 -VERSION 405 +BUILD_NUMBER 9430 +VERSION 406 BUILD_NAME beta -BUILD_DATE 20140218_190944 +BUILD_DATE 20140320_040806 diff --git a/src/GlobalConst.h b/src/GlobalConst.h index bb0a9cd9..563e805f 100644 --- a/src/GlobalConst.h +++ b/src/GlobalConst.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. #pragma warning(disable : 4819) diff --git a/src/Mayaqua/Cfg.c b/src/Mayaqua/Cfg.c index 3a7766dd..f00d2b68 100644 --- a/src/Mayaqua/Cfg.c +++ b/src/Mayaqua/Cfg.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Cfg.c diff --git a/src/Mayaqua/Cfg.h b/src/Mayaqua/Cfg.h index 005f2011..8bb03bd3 100644 --- a/src/Mayaqua/Cfg.h +++ b/src/Mayaqua/Cfg.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Cfg.h diff --git a/src/Mayaqua/Encrypt.c b/src/Mayaqua/Encrypt.c index d2b985d8..2f1b0016 100644 --- a/src/Mayaqua/Encrypt.c +++ b/src/Mayaqua/Encrypt.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Encrypt.c @@ -1806,7 +1812,6 @@ X509 *NewX509(K *pub, K *priv, X *ca, NAME *name, UINT days, X_SERIAL *serial) notBefore = SystemTime64(); notAfter = notBefore + (UINT64)days * (UINT64)3600 * (UINT64)24 * (UINT64)1000; - // Creating a X509 x509 = X509_new(); if (x509 == NULL) @@ -1814,6 +1819,9 @@ X509 *NewX509(K *pub, K *priv, X *ca, NAME *name, UINT days, X_SERIAL *serial) return NULL; } + // Make it a v3 certificate + X509_set_version(x509, 2L); + // Set the Expiration t1 = X509_get_notBefore(x509); t2 = X509_get_notAfter(x509); @@ -1873,7 +1881,8 @@ X509 *NewX509(K *pub, K *priv, X *ca, NAME *name, UINT days, X_SERIAL *serial) X509_set_pubkey(x509, pub->pkey); // Signature - X509_sign(x509, priv->pkey, EVP_sha1()); + // 2014.3.19 set the initial digest algorithm to SHA-256 + X509_sign(x509, priv->pkey, EVP_sha256()); } Unlock(openssl_lock); @@ -1915,6 +1924,9 @@ X509 *NewRootX509(K *pub, K *priv, NAME *name, UINT days, X_SERIAL *serial) return NULL; } + // Make it a v3 certificate + X509_set_version(x509, 2L); + // Set the Expiration t1 = X509_get_notBefore(x509); t2 = X509_get_notAfter(x509); @@ -1975,7 +1987,8 @@ X509 *NewRootX509(K *pub, K *priv, NAME *name, UINT days, X_SERIAL *serial) X509_set_pubkey(x509, pub->pkey); // Signature - X509_sign(x509, priv->pkey, EVP_sha1()); + // 2014.3.19 set the initial digest algorithm to SHA-256 + X509_sign(x509, priv->pkey, EVP_sha256()); } Unlock(openssl_lock); diff --git a/src/Mayaqua/Encrypt.h b/src/Mayaqua/Encrypt.h index 5a77c7db..a73c40e4 100644 --- a/src/Mayaqua/Encrypt.h +++ b/src/Mayaqua/Encrypt.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Encrypt.h diff --git a/src/Mayaqua/FileIO.c b/src/Mayaqua/FileIO.c index d3609134..82b4b772 100644 --- a/src/Mayaqua/FileIO.c +++ b/src/Mayaqua/FileIO.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // FileIO.c diff --git a/src/Mayaqua/FileIO.h b/src/Mayaqua/FileIO.h index 52ddf28a..71b2ff30 100644 --- a/src/Mayaqua/FileIO.h +++ b/src/Mayaqua/FileIO.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // FileIO.h diff --git a/src/Mayaqua/Internat.c b/src/Mayaqua/Internat.c index c10a6a23..d3a9c60f 100644 --- a/src/Mayaqua/Internat.c +++ b/src/Mayaqua/Internat.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Internat.c diff --git a/src/Mayaqua/Internat.h b/src/Mayaqua/Internat.h index 8001ab1f..00bc6cc0 100644 --- a/src/Mayaqua/Internat.h +++ b/src/Mayaqua/Internat.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Internat.h diff --git a/src/Mayaqua/Kernel.c b/src/Mayaqua/Kernel.c index a058d29a..b18aa2d1 100644 --- a/src/Mayaqua/Kernel.c +++ b/src/Mayaqua/Kernel.c @@ -12,9 +12,10 @@ // http://www.softether.org/ // // Author: Daiyuu Nobori +// Contributors: +// - nattoheaven (https://github.com/nattoheaven) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Kernel.c diff --git a/src/Mayaqua/Kernel.h b/src/Mayaqua/Kernel.h index 29b9de05..cac78560 100644 --- a/src/Mayaqua/Kernel.h +++ b/src/Mayaqua/Kernel.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. #ifndef KERNEL_H diff --git a/src/Mayaqua/MayaType.h b/src/Mayaqua/MayaType.h index cf2ea562..bf4af8bc 100644 --- a/src/Mayaqua/MayaType.h +++ b/src/Mayaqua/MayaType.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // MayaType.h @@ -548,6 +554,8 @@ typedef struct ICMPV6_HEADER_INFO ICMPV6_HEADER_INFO; typedef struct DHCPV4_DATA DHCPV4_DATA; typedef struct DHCP_OPTION DHCP_OPTION; typedef struct DHCP_OPTION_LIST DHCP_OPTION_LIST; +typedef struct DHCP_CLASSLESS_ROUTE DHCP_CLASSLESS_ROUTE; +typedef struct DHCP_CLASSLESS_ROUTE_TABLE DHCP_CLASSLESS_ROUTE_TABLE; typedef struct HTTPLOG HTTPLOG; typedef struct DHCP_MODIFY_OPTION DHCP_MODIFY_OPTION; typedef struct NBTDG_HEADER NBTDG_HEADER; diff --git a/src/Mayaqua/Mayaqua.c b/src/Mayaqua/Mayaqua.c index 64cb8c8f..c7d78b72 100644 --- a/src/Mayaqua/Mayaqua.c +++ b/src/Mayaqua/Mayaqua.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Mayaqua.c diff --git a/src/Mayaqua/Mayaqua.h b/src/Mayaqua/Mayaqua.h index f8afede8..1965c76f 100644 --- a/src/Mayaqua/Mayaqua.h +++ b/src/Mayaqua/Mayaqua.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Mayaqua.h diff --git a/src/Mayaqua/Memory.c b/src/Mayaqua/Memory.c index da2598c9..4c953d57 100644 --- a/src/Mayaqua/Memory.c +++ b/src/Mayaqua/Memory.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Memory.c diff --git a/src/Mayaqua/Memory.h b/src/Mayaqua/Memory.h index 46d97700..ee0dbf59 100644 --- a/src/Mayaqua/Memory.h +++ b/src/Mayaqua/Memory.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Memory.h diff --git a/src/Mayaqua/Microsoft.c b/src/Mayaqua/Microsoft.c index 7b249267..21c91a30 100644 --- a/src/Mayaqua/Microsoft.c +++ b/src/Mayaqua/Microsoft.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Microsoft.c diff --git a/src/Mayaqua/Microsoft.h b/src/Mayaqua/Microsoft.h index b4798c18..774bd6dd 100644 --- a/src/Mayaqua/Microsoft.h +++ b/src/Mayaqua/Microsoft.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Microsoft.h diff --git a/src/Mayaqua/Network.c b/src/Mayaqua/Network.c index 2cbb9edb..820cfb7f 100644 --- a/src/Mayaqua/Network.c +++ b/src/Mayaqua/Network.c @@ -12,9 +12,10 @@ // http://www.softether.org/ // // Author: Daiyuu Nobori +// Contributors: +// - nattoheaven (https://github.com/nattoheaven) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +86,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Network.c @@ -14379,7 +14387,7 @@ void ConnectThreadForTcp(THREAD *thread, void *param) IPToStr(hostname, sizeof(hostname), &p->Ip); sock = ConnectEx3(hostname, p->Port, p->Timeout, p->CancelFlag, NULL, NULL, false, false, true); - if (sock != NULL && p->Tcp_SslNoTls) + if (sock != NULL && p->Tcp_TryStartSsl) { bool ssl_ret = false; // Attempt the SSL negotiation to take this opportunity @@ -14756,14 +14764,14 @@ SOCK *ConnectEx3(char *hostname, UINT port, UINT timeout, bool *cancel_flag, cha p2_spent_time = (UINT)(p2.FinishedTick - start_tick); // Decide the grace time for results of TCP until settled. - // The grace time is three times the duration of the R-UDP, and at least 250 milliseconds from the start, - // and up to 1500 milliseconds after the R-UDP results settled - p1_wait_time = p2_spent_time * 3; - p1_wait_time = MAX(p1_wait_time, 250); + // The grace time is four times the duration of the R-UDP, and at least 400 milliseconds from the start, + // and up to 2500 milliseconds after the R-UDP results settled + p1_wait_time = p2_spent_time * 4; + p1_wait_time = MAX(p1_wait_time, 400); //Debug("p2_spent_time = %u, p1_wait_time = %u\n", p2_spent_time, p1_wait_time); tcp_giveup_tick = start_tick + (UINT64)p1_wait_time; - tcp_giveup_tick = MIN(tcp_giveup_tick, (p2.FinishedTick + 1500ULL)); + tcp_giveup_tick = MIN(tcp_giveup_tick, (p2.FinishedTick + 2500ULL)); if (now >= tcp_giveup_tick) { diff --git a/src/Mayaqua/Network.h b/src/Mayaqua/Network.h index 2d4a633d..f062fb98 100644 --- a/src/Mayaqua/Network.h +++ b/src/Mayaqua/Network.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Network.h diff --git a/src/Mayaqua/OS.c b/src/Mayaqua/OS.c index 17265ae4..3cbb1e08 100644 --- a/src/Mayaqua/OS.c +++ b/src/Mayaqua/OS.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // OS.c diff --git a/src/Mayaqua/OS.h b/src/Mayaqua/OS.h index befd542f..13322214 100644 --- a/src/Mayaqua/OS.h +++ b/src/Mayaqua/OS.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // OS.h diff --git a/src/Mayaqua/Object.c b/src/Mayaqua/Object.c index e90fecab..2fc3a34a 100644 --- a/src/Mayaqua/Object.c +++ b/src/Mayaqua/Object.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Object.c diff --git a/src/Mayaqua/Object.h b/src/Mayaqua/Object.h index 6d870cd7..c5aec422 100644 --- a/src/Mayaqua/Object.h +++ b/src/Mayaqua/Object.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Object.h diff --git a/src/Mayaqua/Pack.c b/src/Mayaqua/Pack.c index f5099791..65a65237 100644 --- a/src/Mayaqua/Pack.c +++ b/src/Mayaqua/Pack.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Pack.c diff --git a/src/Mayaqua/Pack.h b/src/Mayaqua/Pack.h index 40ee08e0..8078eb1d 100644 --- a/src/Mayaqua/Pack.h +++ b/src/Mayaqua/Pack.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Pack.h diff --git a/src/Mayaqua/Secure.c b/src/Mayaqua/Secure.c index 0dbb617e..b2507e3e 100644 --- a/src/Mayaqua/Secure.c +++ b/src/Mayaqua/Secure.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Secure.c diff --git a/src/Mayaqua/Secure.h b/src/Mayaqua/Secure.h index 743c1eb1..874986d3 100644 --- a/src/Mayaqua/Secure.h +++ b/src/Mayaqua/Secure.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Secure.h diff --git a/src/Mayaqua/Str.c b/src/Mayaqua/Str.c index d71b7692..9c94de6b 100644 --- a/src/Mayaqua/Str.c +++ b/src/Mayaqua/Str.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Str.c diff --git a/src/Mayaqua/Str.h b/src/Mayaqua/Str.h index 6e6377d3..19df5bf7 100644 --- a/src/Mayaqua/Str.h +++ b/src/Mayaqua/Str.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Str.h diff --git a/src/Mayaqua/Table.c b/src/Mayaqua/Table.c index 4952894e..0edd19f5 100644 --- a/src/Mayaqua/Table.c +++ b/src/Mayaqua/Table.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Table.c diff --git a/src/Mayaqua/Table.h b/src/Mayaqua/Table.h index 2e77a0f1..11ace0f9 100644 --- a/src/Mayaqua/Table.h +++ b/src/Mayaqua/Table.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Table.h diff --git a/src/Mayaqua/TcpIp.c b/src/Mayaqua/TcpIp.c index 0ec28cea..8bb6c595 100644 --- a/src/Mayaqua/TcpIp.c +++ b/src/Mayaqua/TcpIp.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // TcpIp.c @@ -3350,6 +3356,19 @@ LIST *BuildDhcpOption(DHCP_OPTION_LIST *opt) FreeBuf(dns_buf); + if (opt->ClasslessRoute.NumExistingRoutes >= 1) + { + BUF *b = DhcpBuildClasslessRouteData(&opt->ClasslessRoute); + + if (b != NULL) + { + Add(o, NewDhcpOption(DHCP_ID_CLASSLESS_ROUTE, b->Buf, b->Size)); + Add(o, NewDhcpOption(DHCP_ID_MS_CLASSLESS_ROUTE, b->Buf, b->Size)); + + FreeBuf(b); + } + } + return o; } @@ -3486,6 +3505,20 @@ DHCP_OPTION_LIST *ParseDhcpOptionList(void *data, UINT size) } } + // Classless static routing table entries + // RFC 3442 + a = GetDhcpOption(o, DHCP_ID_CLASSLESS_ROUTE); + if (a != NULL) + { + DhcpParseClasslessRouteData(&ret->ClasslessRoute, a->Data, a->Size); + } + // Microsoft Extension + a = GetDhcpOption(o, DHCP_ID_MS_CLASSLESS_ROUTE); + if (a != NULL) + { + DhcpParseClasslessRouteData(&ret->ClasslessRoute, a->Data, a->Size); + } + break; } @@ -3495,6 +3528,343 @@ DHCP_OPTION_LIST *ParseDhcpOptionList(void *data, UINT size) return ret; } +// Normalize the classless routing table string +bool NormalizeClasslessRouteTableStr(char *dst, UINT dst_size, char *src) +{ + DHCP_CLASSLESS_ROUTE_TABLE t; + // Validate arguments + if (dst == NULL || src == NULL) + { + return false; + } + + Zero(&t, sizeof(t)); + if (ParseClasslessRouteTableStr(&t, src)) + { + BuildClasslessRouteTableStr(dst, dst_size, &t); + + return true; + } + + return false; +} + +// Build the string from the classless routing table +void BuildClasslessRouteTableStr(char *str, UINT str_size, DHCP_CLASSLESS_ROUTE_TABLE *t) +{ + UINT i; + UINT num = 0; + ClearStr(str, str_size); + // Validate arguments + if (str == NULL || t == NULL) + { + return; + } + + for (i = 0;i < MAX_DHCP_CLASSLESS_ROUTE_ENTRIES;i++) + { + DHCP_CLASSLESS_ROUTE *r = &t->Entries[i]; + + if (r->Exists) + { + char tmp[128]; + + Zero(tmp, sizeof(tmp)); + BuildClasslessRouteStr(tmp, sizeof(tmp), r); + + if (IsEmptyStr(tmp) == false) + { + if (num >= 1) + { + StrCat(str, str_size, ", "); + } + + StrCat(str, str_size, tmp); + + num++; + } + } + } +} + +// Build the string from the classless routing table entry +void BuildClasslessRouteStr(char *str, UINT str_size, DHCP_CLASSLESS_ROUTE *r) +{ + ClearStr(str, str_size); + // Validate arguments + if (str == NULL || r == NULL || r->Exists == false) + { + return; + } + + Format(str, str_size, "%r/%r/%r", &r->Network, &r->SubnetMask, &r->Gateway); +} + +// Check the classless routing table string +bool CheckClasslessRouteTableStr(char *str) +{ + DHCP_CLASSLESS_ROUTE_TABLE d; + + // Validate arguments + if (str == NULL) + { + return false; + } + + return ParseClasslessRouteTableStr(&d, str); +} + +// Parse the classless routing table string +bool ParseClasslessRouteTableStr(DHCP_CLASSLESS_ROUTE_TABLE *d, char *str) +{ + bool ret = true; + TOKEN_LIST *t; + // Validate arguments + if (d == NULL || str == NULL) + { + return false; + } + + Zero(d, sizeof(DHCP_CLASSLESS_ROUTE_TABLE)); + + t = ParseTokenWithoutNullStr(str, NULL); + + if (t != NULL) + { + UINT i; + + for (i = 0;i < t->NumTokens;i++) + { + DHCP_CLASSLESS_ROUTE r; + + Zero(&r, sizeof(r)); + if (ParseClasslessRouteStr(&r, t->Token[i])) + { + if (d->NumExistingRoutes < MAX_DHCP_CLASSLESS_ROUTE_ENTRIES) + { + Copy(&d->Entries[d->NumExistingRoutes], &r, sizeof(DHCP_CLASSLESS_ROUTE)); + d->NumExistingRoutes++; + } + else + { + // Overflow + ret = false; + break; + } + } + else + { + // Parse error + ret = false; + break; + } + } + } + + FreeToken(t); + + return ret; +} + +// Parse the classless routing table entry string +bool ParseClasslessRouteStr(DHCP_CLASSLESS_ROUTE *r, char *str) +{ + TOKEN_LIST *t; + bool ret = false; + char tmp[MAX_PATH]; + // Validate arguments + if (r == NULL || str == NULL) + { + return false; + } + + StrCpy(tmp, sizeof(tmp), str); + Trim(tmp); + + t = ParseTokenWithoutNullStr(str, "/"); + if (t == NULL) + { + return false; + } + + if (t->NumTokens == 3) + { + char ip_and_mask[MAX_PATH]; + char gateway[MAX_PATH]; + + Zero(r, sizeof(DHCP_CLASSLESS_ROUTE)); + + Format(ip_and_mask, sizeof(ip_and_mask), "%s/%s", t->Token[0], t->Token[1]); + StrCpy(gateway, sizeof(gateway), t->Token[2]); + + if (ParseIpAndSubnetMask46(ip_and_mask, &r->Network, &r->SubnetMask)) + { + r->SubnetMaskLen = SubnetMaskToInt4(&r->SubnetMask); + + if (StrToIP(&r->Gateway, gateway)) + { + if (IsIP4(&r->Gateway) && IsIP4(&r->Network) && IsIP4(&r->SubnetMask)) + { + r->Exists = true; + + IPAnd4(&r->Network, &r->Network, &r->SubnetMask); + + ret = true; + } + } + } + } + + FreeToken(t); + + return ret; +} + +// Build the classless static routing table data for a DHCP message +BUF *DhcpBuildClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t) +{ + BUF *b; + UINT i; + // Validate arguments + if (t == NULL || t->NumExistingRoutes == 0) + { + return NULL; + } + + b = NewBuf(); + + for (i = 0;i < MAX_DHCP_CLASSLESS_ROUTE_ENTRIES;i++) + { + DHCP_CLASSLESS_ROUTE *r = &t->Entries[i]; + + if (r->Exists && r->SubnetMaskLen <= 32) + { + if (b->Size <= (255 - 9)) + { + UCHAR c; + UINT data_len; + UINT ip32; + UCHAR tmp[4]; + + // Width of subnet mask + c = (UCHAR)r->SubnetMaskLen; + WriteBuf(b, &c, 1); + + // Number of significant octets + data_len = (r->SubnetMaskLen + 7) / 8; + Zero(tmp, sizeof(tmp)); + Copy(tmp, &r->Network, data_len); + WriteBuf(b, tmp, data_len); + + // Gateway + ip32 = IPToUINT(&r->Gateway); + WriteBuf(b, &ip32, sizeof(UINT)); + } + } + } + + SeekBufToBegin(b); + + return b; +} + +// Parse a classless static routing table entries from the DHCP message +void DhcpParseClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t, void *data, UINT size) +{ + BUF *b; + // Validate arguments + if (t == NULL || data == NULL || size == 0) + { + return; + } + + b = MemToBuf(data, size); + + while (b->Current < b->Size) + { + UCHAR c; + UINT subnet_mask_len; + UINT data_len; + UCHAR tmp[4]; + IP ip; + IP mask; + IP gateway; + DHCP_CLASSLESS_ROUTE r; + UINT ip32; + bool exists = false; + UINT i; + + // Subnet mask length + c = ReadBufChar(b); + subnet_mask_len = c; + if (subnet_mask_len > 32) + { + // Invalid data + break; + } + + data_len = (subnet_mask_len + 7) / 8; + if (data_len > 4) + { + // Invalid data + break; + } + + Zero(tmp, sizeof(tmp)); + if (ReadBuf(b, tmp, data_len) != data_len) + { + // Invalid data + break; + } + + // IP address body + Zero(&ip, sizeof(IP)); + Copy(ip.addr, tmp, data_len); + + Zero(&mask, sizeof(mask)); + IntToSubnetMask4(&mask, subnet_mask_len); + + // Gateway address + Zero(&gateway, sizeof(gateway)); + if (ReadBuf(b, &ip32, sizeof(UINT)) != sizeof(UINT)) + { + // Invalid data + break; + } + UINTToIP(&gateway, ip32); + + Zero(&r, sizeof(r)); + r.Exists = true; + Copy(&r.Gateway, &gateway, sizeof(IP)); + Copy(&r.Network, &ip, sizeof(IP)); + Copy(&r.SubnetMask, &mask, sizeof(IP)); + r.SubnetMaskLen = subnet_mask_len; + + for (i = 0;i < MAX_DHCP_CLASSLESS_ROUTE_ENTRIES;i++) + { + if (Cmp(&t->Entries[i], &r, sizeof(DHCP_CLASSLESS_ROUTE)) == 0) + { + exists = true; + break; + } + } + + if (exists == false) + { + if (t->NumExistingRoutes >= MAX_DHCP_CLASSLESS_ROUTE_ENTRIES) + { + // Overflow + break; + } + + Copy(&t->Entries[t->NumExistingRoutes], &r, sizeof(DHCP_CLASSLESS_ROUTE)); + t->NumExistingRoutes++; + } + } + + FreeBuf(b); +} + // Finding a DHCP option DHCP_OPTION *GetDhcpOption(LIST *o, UINT id) { @@ -3518,6 +3888,42 @@ DHCP_OPTION *GetDhcpOption(LIST *o, UINT id) return ret; } +// Get the best classless routing table entry from the routing table +DHCP_CLASSLESS_ROUTE *GetBestClasslessRoute(DHCP_CLASSLESS_ROUTE_TABLE *t, IP *ip) +{ + DHCP_CLASSLESS_ROUTE *ret = NULL; + UINT i; + UINT max_mask = 0; + // Validate arguments + if (t == NULL || ip == NULL) + { + return NULL; + } + if (t->NumExistingRoutes == 0) + { + return NULL; + } + + for (i = 0;i < MAX_DHCP_CLASSLESS_ROUTE_ENTRIES;i++) + { + DHCP_CLASSLESS_ROUTE *e = &t->Entries[i]; + + if (e->Exists) + { + if (IsInSameNetwork4(ip, &e->Network, &e->SubnetMask)) + { + if (max_mask <= e->SubnetMaskLen) + { + max_mask = e->SubnetMaskLen; + ret = e; + } + } + } + } + + return ret; +} + // Release the DHCP option void FreeDhcpOptions(LIST *o) { diff --git a/src/Mayaqua/TcpIp.h b/src/Mayaqua/TcpIp.h index 7ca7ed67..eccbf883 100644 --- a/src/Mayaqua/TcpIp.h +++ b/src/Mayaqua/TcpIp.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // TcpIp.h @@ -602,6 +608,9 @@ struct ICMPV6_HEADER_INFO #define DHCP_ID_CLIENT_ID 0x3d #define DHCP_ID_VENDOR_ID 0x3c #define DHCP_ID_REQ_PARAM_LIST 0x37 +#define DHCP_ID_CLASSLESS_ROUTE 0x79 +#define DHCP_ID_MS_CLASSLESS_ROUTE 0xF9 + // DHCP client action #define DHCP_DISCOVER 1 @@ -749,6 +758,26 @@ struct DHCP_OPTION void *Data; // Data }; +// DHCP classless static route entry +struct DHCP_CLASSLESS_ROUTE +{ + bool Exists; // Existing flag + IP Network; // Network address + IP SubnetMask; // Subnet mask + IP Gateway; // Gateway + UINT SubnetMaskLen; // Subnet mask length +}; + +#define MAX_DHCP_CLASSLESS_ROUTE_ENTRIES 64 +#define MAX_DHCP_CLASSLESS_ROUTE_TABLE_STR_SIZE 3200 + +// DHCP classless static route table +struct DHCP_CLASSLESS_ROUTE_TABLE +{ + UINT NumExistingRoutes; // Number of existing routing table entries + DHCP_CLASSLESS_ROUTE Entries[MAX_DHCP_CLASSLESS_ROUTE_ENTRIES]; // Entries +}; + // DHCP option list struct DHCP_OPTION_LIST { @@ -770,6 +799,7 @@ struct DHCP_OPTION_LIST UINT DnsServer2; // DNS server address 2 UINT WinsServer; // WINS server address 1 UINT WinsServer2; // WINS server address 2 + DHCP_CLASSLESS_ROUTE_TABLE ClasslessRoute; // Classless static routing table }; // Modification option in the DHCP packet @@ -870,6 +900,16 @@ HTTPLOG *ParseHttpAccessLog(PKT *pkt); BUF *DhcpModify(DHCP_MODIFY_OPTION *m, void *data, UINT size); BUF *DhcpModifyIPv4(DHCP_MODIFY_OPTION *m, void *data, UINT size); +DHCP_CLASSLESS_ROUTE *GetBestClasslessRoute(DHCP_CLASSLESS_ROUTE_TABLE *t, IP *ip); +void DhcpParseClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t, void *data, UINT size); +BUF *DhcpBuildClasslessRouteData(DHCP_CLASSLESS_ROUTE_TABLE *t); +bool ParseClasslessRouteStr(DHCP_CLASSLESS_ROUTE *r, char *str); +bool ParseClasslessRouteTableStr(DHCP_CLASSLESS_ROUTE_TABLE *d, char *str); +bool CheckClasslessRouteTableStr(char *str); +void BuildClasslessRouteStr(char *str, UINT str_size, DHCP_CLASSLESS_ROUTE *r); +void BuildClasslessRouteTableStr(char *str, UINT str_size, DHCP_CLASSLESS_ROUTE_TABLE *t); +bool NormalizeClasslessRouteTableStr(char *dst, UINT dst_size, char *src); + #ifdef OS_WIN32 diff --git a/src/Mayaqua/Tick64.c b/src/Mayaqua/Tick64.c index 0654963d..a28f26ef 100644 --- a/src/Mayaqua/Tick64.c +++ b/src/Mayaqua/Tick64.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Tick64.c diff --git a/src/Mayaqua/Tick64.h b/src/Mayaqua/Tick64.h index c754d684..07312c4c 100644 --- a/src/Mayaqua/Tick64.h +++ b/src/Mayaqua/Tick64.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Tick64.h diff --git a/src/Mayaqua/Tracking.c b/src/Mayaqua/Tracking.c index d0ff53ae..20ba42cc 100644 --- a/src/Mayaqua/Tracking.c +++ b/src/Mayaqua/Tracking.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Tracking.c diff --git a/src/Mayaqua/Tracking.h b/src/Mayaqua/Tracking.h index 498d8a1f..aa4a9557 100644 --- a/src/Mayaqua/Tracking.h +++ b/src/Mayaqua/Tracking.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Tracking.h diff --git a/src/Mayaqua/TunTap.h b/src/Mayaqua/TunTap.h index 0555fcd1..b0ce4dd9 100644 --- a/src/Mayaqua/TunTap.h +++ b/src/Mayaqua/TunTap.h @@ -5,7 +5,6 @@ // Header file of the TUN / TAP device driver // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -76,6 +75,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. #ifndef TUNTAP_H diff --git a/src/Mayaqua/Unix.c b/src/Mayaqua/Unix.c index 58ceb0b9..0193a4fc 100644 --- a/src/Mayaqua/Unix.c +++ b/src/Mayaqua/Unix.c @@ -17,7 +17,6 @@ // - nattoheaven (https://github.com/nattoheaven) // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -88,6 +87,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Unix.c @@ -2497,7 +2503,13 @@ void UnixStopService(char *name) } else { + // SIGKILL + char tmp[256]; + + Format(tmp, sizeof(tmp), "killall -KILL %s", name); + UniPrint(_UU("UNIX_SVC_STOP_FAILED"), svc_title); + system(tmp); } } diff --git a/src/Mayaqua/Unix.h b/src/Mayaqua/Unix.h index 104a9f5c..272378cd 100644 --- a/src/Mayaqua/Unix.h +++ b/src/Mayaqua/Unix.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Unix.h @@ -105,8 +111,8 @@ #define UNIX_MAX_FD_MACOS (10000) // Maximum number of FDs (Mac OS X) #define MAXIMUM_WAIT_OBJECTS 64 // Maximum number of select -#define UNIX_SERVICE_STOP_TIMEOUT_1 (600 * 1000) // Timeout to stop the service -#define UNIX_SERVICE_STOP_TIMEOUT_2 (900 * 1000) // Timeout to stop the service (parent process) +#define UNIX_SERVICE_STOP_TIMEOUT_1 (60 * 1000) // Timeout to stop the service +#define UNIX_SERVICE_STOP_TIMEOUT_2 (90 * 1000) // Timeout to stop the service (parent process) // Service related diff --git a/src/Mayaqua/Win32.c b/src/Mayaqua/Win32.c index d1430d68..dbea236f 100644 --- a/src/Mayaqua/Win32.c +++ b/src/Mayaqua/Win32.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Win32.c diff --git a/src/Mayaqua/Win32.h b/src/Mayaqua/Win32.h index e01915ed..bb298198 100644 --- a/src/Mayaqua/Win32.h +++ b/src/Mayaqua/Win32.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Win32.h diff --git a/src/Neo/NDIS5.c b/src/Neo/NDIS5.c index 6bba7df9..56b091db 100644 --- a/src/Neo/NDIS5.c +++ b/src/Neo/NDIS5.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NDIS5.c diff --git a/src/Neo/NDIS5.h b/src/Neo/NDIS5.h index 7fd34246..014ade3f 100644 --- a/src/Neo/NDIS5.h +++ b/src/Neo/NDIS5.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NDIS5.h diff --git a/src/Neo/Neo.c b/src/Neo/Neo.c index f333503a..16827f63 100644 --- a/src/Neo/Neo.c +++ b/src/Neo/Neo.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Neo.c diff --git a/src/Neo/Neo.h b/src/Neo/Neo.h index ae901144..196a5f65 100644 --- a/src/Neo/Neo.h +++ b/src/Neo/Neo.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Neo.h diff --git a/src/Neo/resource.h b/src/Neo/resource.h index 18c313d3..737e72a7 100644 --- a/src/Neo/resource.h +++ b/src/Neo/resource.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/Neo6/NDIS6.c b/src/Neo6/NDIS6.c index 843f2968..7ab06548 100644 --- a/src/Neo6/NDIS6.c +++ b/src/Neo6/NDIS6.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NDIS6.c diff --git a/src/Neo6/NDIS6.h b/src/Neo6/NDIS6.h index a531eccf..622ceb15 100644 --- a/src/Neo6/NDIS6.h +++ b/src/Neo6/NDIS6.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // NDIS6.h diff --git a/src/Neo6/Neo6.c b/src/Neo6/Neo6.c index 09d186db..ccf295de 100644 --- a/src/Neo6/Neo6.c +++ b/src/Neo6/Neo6.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Neo6.c diff --git a/src/Neo6/Neo6.h b/src/Neo6/Neo6.h index b6a578b2..d2c9ca7b 100644 --- a/src/Neo6/Neo6.h +++ b/src/Neo6/Neo6.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Neo6.h diff --git a/src/Neo6/resource.h b/src/Neo6/resource.h index 18c313d3..737e72a7 100644 --- a/src/Neo6/resource.h +++ b/src/Neo6/resource.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/PenCore/PenCore.rc b/src/PenCore/PenCore.rc index 0f1e4d76..bb799ace 100644 --- a/src/PenCore/PenCore.rc +++ b/src/PenCore/PenCore.rc @@ -13,7 +13,7 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Japanese resources +// “ú–{Œê resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) #ifdef _WIN32 @@ -498,7 +498,7 @@ BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 412 TOPMARGIN, 7 - BOTTOMMARGIN, 300 + BOTTOMMARGIN, 318 END D_NM_NAT, DIALOG @@ -1261,6 +1261,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 284 END + + D_NM_PUSH, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 360 + TOPMARGIN, 7 + BOTTOMMARGIN, 286 + END END #endif // APSTUDIO_INVOKED @@ -1505,8 +1513,9 @@ BEGIN RTEXT "@STATIC4",S_STATIC4,14,101,54,10 EDITTEXT E_HOSTNAME,72,99,126,12,ES_AUTOHSCROLL RTEXT "@STATIC5",S_STATIC5,14,119,54,10 - COMBOBOX C_PORT,72,115,81,48,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "@STATIC6",S_STATIC66,159,119,46,11 + COMBOBOX C_PORT,72,115,77,48,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + CONTROL "@R_DISABLE_NATT",R_DISABLE_NATT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,152,117,57,10 + LTEXT "@STATIC6",S_STATIC66,172,159,46,11,NOT WS_VISIBLE RTEXT "@STATIC7",S_STATIC7,14,137,54,10 COMBOBOX C_HUBNAME,72,133,126,72,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP GROUPBOX "@STATIC8",IDC_STATIC,7,161,206,108 @@ -1724,7 +1733,8 @@ FONT 9, "MS UI Gothic", 400, 0, 0x80 BEGIN DEFPUSHBUTTON "@IDCANCEL",IDCANCEL,250,339,76,18 CONTROL 224,S_LOGO,"Static",SS_BITMAP,7,6,319,76 - LTEXT "@S_INFO1",S_INFO1,7,83,319,17 + LTEXT "@S_INFO1",S_INFO1,7,83,240,17 + PUSHBUTTON "@B_AUTHORS",B_AUTHORS,251,83,75,18 LTEXT "@S_INFO2",S_INFO2,7,101,319,39 LTEXT "@S_INFO4",S_INFO4,7,143,319,61 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,211,319,1 @@ -2742,15 +2752,15 @@ BEGIN PUSHBUTTON "@IDCANCEL",IDCANCEL,279,356,65,17 END -D_NM_OPTION DIALOGEX 0, 0, 419, 307 +D_NM_OPTION DIALOGEX 0, 0, 419, 325 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "@D_NM_OPTION" FONT 9, "MS UI Gothic", 400, 0, 0x80 BEGIN - ICON ICO_ROUTER,IDC_STATIC,7,7,20,20 + ICON ICO_ROUTER,IDC_STATIC,7,7,18,21 LTEXT "@S_TITLE",S_TITLE,29,11,357,19 GROUPBOX "@STATIC1",IDC_STATIC,7,40,199,83 - ICON ICO_NIC_ONLINE,IDC_STATIC,14,55,20,20 + ICON ICO_NIC_ONLINE,IDC_STATIC,14,55,18,21 RTEXT "@STATIC2",IDC_STATIC,39,60,59,12 EDITTEXT E_MAC,102,59,81,12,ES_AUTOHSCROLL RTEXT "@STATIC3",IDC_STATIC,39,81,59,11 @@ -2768,7 +2778,11 @@ BEGIN RTEXT "@STATIC10",IDC_STATIC,10,198,88,11 EDITTEXT E_UDP,102,196,39,12,ES_CENTER | ES_AUTOHSCROLL | ES_NUMBER LTEXT "@STATIC11",IDC_STATIC,145,198,51,10 - CONTROL "@R_SAVE_LOG",R_SAVE_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,255,190,10 + GROUPBOX "@S_1",S_1,7,227,199,72 + ICON ICO_PROTOCOL,IDC_STATIC,14,239,18,21 + LTEXT "@S_2",S_2,40,243,159,20 + PUSHBUTTON "@B_PUSH",B_PUSH,55,269,143,19 + CONTROL "@R_SAVE_LOG",R_SAVE_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,308,190,10 GROUPBOX "@STATIC12",IDC_STATIC,211,40,201,228 CONTROL "@R_USE_DHCP",R_USE_DHCP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,218,56,161,10 RTEXT "@STATIC13",IDC_STATIC,218,74,84,11 @@ -2791,8 +2805,8 @@ BEGIN CONTROL "",E_DNS2,"SysIPAddress32",WS_TABSTOP,306,226,75,13 RTEXT "@STATIC22",IDC_STATIC,218,249,84,12 EDITTEXT E_DOMAIN,306,247,98,12,ES_AUTOHSCROLL - DEFPUSHBUTTON "@IDOK",IDOK,274,281,64,19 - PUSHBUTTON "@IDCANCEL",IDCANCEL,348,281,64,19 + DEFPUSHBUTTON "@IDOK",IDOK,274,299,64,19 + PUSHBUTTON "@IDCANCEL",IDCANCEL,348,299,64,19 END D_NM_NAT DIALOGEX 0, 0, 451, 337 @@ -4072,20 +4086,23 @@ BEGIN LTEXT "@S_22",IDC_STATIC,7,89,401,34 LTEXT "@S_3",IDC_STATIC,7,125,401,25 GROUPBOX "@S_4",IDC_STATIC,7,153,194,123 - LTEXT "@S_STATUS3",S_STATUS3,14,170,182,11 - EDITTEXT E_HOST,17,184,155,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - PUSHBUTTON "@B_HINT",B_HINT,174,181,24,17 - LTEXT "@S_STATUS4",S_STATUS4,14,205,171,11 - EDITTEXT E_IPV4,17,217,172,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER - LTEXT "@S_STATUS5",S_STATUS5,14,239,171,10 - EDITTEXT E_IPV6,17,251,172,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER + LTEXT "@S_STATUS3",S_STATUS3,14,165,182,11 + EDITTEXT E_HOST,17,178,155,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER + PUSHBUTTON "@B_HINT",B_HINT,174,176,24,17 + LTEXT "@S_STATUS4",S_STATUS4,14,197,171,11 + EDITTEXT E_IPV4,17,209,172,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER + LTEXT "@S_STATUS5",S_STATUS5,14,228,171,10 + EDITTEXT E_IPV6,17,240,172,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER + LTEXT "@S_STATUS8",S_STATUS8,14,258,31,11 + EDITTEXT E_KEY,41,258,131,15,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER + PUSHBUTTON "@B_HINT2",B_HINT2,174,255,24,17 GROUPBOX "@S_5",IDC_STATIC,206,153,202,123 LTEXT "@S_STATUS6",S_STATUS6,212,170,189,11 EDITTEXT E_NEWHOST,215,184,86,15,ES_AUTOHSCROLL LTEXT "",S_SUFFIX,303,186,98,12 LTEXT "@S_STATUS7",S_STATUS7,219,201,182,34 - DEFPUSHBUTTON "@IDOK",IDOK,218,237,119,18 - PUSHBUTTON "@B_RESTORE",B_RESTORE,341,237,60,18 + DEFPUSHBUTTON "@IDOK",IDOK,218,240,119,18 + PUSHBUTTON "@B_RESTORE",B_RESTORE,341,240,60,18 ICON ICO_INFORMATION,IDC_STATIC,7,282,20,20 LTEXT "@S_2",S_2,30,281,378,25 PUSHBUTTON "@B_DISABLE",B_DISABLE,7,310,145,18 @@ -4234,8 +4251,8 @@ CAPTION "@D_SW_EULA" FONT 9, "MS UI Gothic", 400, 0, 0x80 BEGIN LTEXT "@S_1",IDC_STATIC,7,2,309,12,WS_TABSTOP - EDITTEXT E_TEXT,7,19,309,139,ES_MULTILINE | ES_READONLY | WS_VSCROLL - CONTROL "@B_AGREE",B_AGREE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,168,297,12 + EDITTEXT E_TEXT,7,19,309,126,ES_MULTILINE | ES_READONLY | WS_VSCROLL + CONTROL "@B_AGREE",B_AGREE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,150,297,12 END D_SW_WARNING DIALOGEX 0, 0, 323, 181 @@ -4244,7 +4261,7 @@ CAPTION "@D_SW_WARNING" FONT 9, "MS UI Gothic", 400, 0, 0x80 BEGIN LTEXT "@S_1",IDC_STATIC,22,2,294,19,WS_TABSTOP - EDITTEXT E_TEXT,7,27,309,141,ES_MULTILINE | ES_READONLY | WS_VSCROLL + EDITTEXT E_TEXT,7,27,309,135,ES_MULTILINE | ES_READONLY | WS_VSCROLL ICON ICO_INFORMATION,IDC_STATIC,0,0,20,20 END @@ -4594,6 +4611,24 @@ BEGIN ICON ICO_RESEARCH,IDC_STATIC,7,185,20,20 END +D_NM_PUSH DIALOGEX 0, 0, 367, 293 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "@D_NM_PUSH" +FONT 9, "MS UI Gothic", 400, 0, 0x80 +BEGIN + ICON ICO_PROTOCOL,IDC_STATIC,7,7,18,21 + LTEXT "@S1",S1,35,11,325,28,WS_TABSTOP + LTEXT "@S2",S2,35,39,325,34 + LTEXT "@S3",S3,35,75,325,34 + LTEXT "@S4",S4,35,111,325,34 + GROUPBOX "@S5",S5,23,145,337,111 + EDITTEXT E_TEXT,35,203,315,42,ES_MULTILINE | WS_VSCROLL + LTEXT "@S6",IDC_STATIC,35,159,315,42 + DEFPUSHBUTTON "@IDOK",IDOK,222,267,64,19 + PUSHBUTTON "@IDCANCEL",IDCANCEL,296,267,64,19 + LTEXT "@S7",IDC_STATIC,35,272,185,13 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -4807,12 +4842,12 @@ END // BIN_WINPCAP BIN "Dummy.bin" -#endif // Japanese resources +#endif // “ú–{Œê resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// -// English resources +// ‰pŒê (•Ä‘) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 @@ -4873,7 +4908,7 @@ BMP_ZURUKKO BITMAP "Zurukko.bmp" BMP_VPNGATEEN BITMAP "VPNGateEN.bmp" BMP_VPNGATEJA BITMAP "VPNGateJA.bmp" BMP_UNIVTSUKUBA BITMAP "UnivTsukuba.bmp" -#endif // English resources +#endif // ‰pŒê (•Ä‘) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/PenCore/resource.h b/src/PenCore/resource.h index 040eff0d..df43db6c 100644 --- a/src/PenCore/resource.h +++ b/src/PenCore/resource.h @@ -13,6 +13,7 @@ #define B_SIMULATION 3 #define B_RESTORE 3 #define B_MESSAGE 3 +#define B_PUSH 3 #define B_HUB_STATUS 4 #define IDCANCEL2 4 #define B_SECURE_MANAGER 4 @@ -34,6 +35,7 @@ #define B_LEGAL3 8 #define B_LANGUAGE 8 #define B_STOP 9 +#define B_AUTHORS 9 #define B_EDIT 10 #define S_STATUSBAR 101 #define ICO_TEST 103 @@ -245,6 +247,7 @@ #define S_SUFFIX 1020 #define E_PASSPHRASE 1021 #define S_STATUS7 1021 +#define S_STATUS8 1022 #define E_USERNAME 1023 #define C_TYPE 1024 #define E_HUBNAME 1024 @@ -363,6 +366,7 @@ #define B_IMPORT2 1089 #define B_REGENERATE 1089 #define B_FACTORY 1089 +#define R_RETRY2 1089 #define R_REMOTE_ONLY 1090 #define IDC_STATIC4 1090 #define B_DELETE 1091 @@ -966,10 +970,12 @@ #define E_IPV4 1467 #define E_NEWHOST 1468 #define B_NSLOOKUP 1469 +#define E_KEY 1469 #define B_HINT 1470 #define S_DDNS 1470 #define R_OVER_ICMP 1471 #define S_AZURE 1471 +#define B_HINT2 1471 #define R_OVER_ICMP2 1472 #define R_OVER_DNS 1472 #define B_WIZ_NEXT 1472 @@ -1018,6 +1024,7 @@ #define B_VGS 1513 #define S_VGS3 1514 #define S_TSUKUBA 1515 +#define R_DISABLE_NATT 1516 #define B_ONLINE 1655 #define D_NM_CONNECT 1998 #define D_NM_MAIN 1999 @@ -1126,6 +1133,8 @@ #define D_VGS_CONFIG 2094 #define D_VGS_OPTION 2095 #define D_VGS_WARNING 2096 +#define D_DEFAULT3 2097 +#define D_NM_PUSH 2097 #define ID_Menu40011 40011 #define CMD_CONNECT 40020 #define CMD_STATUS 40021 @@ -1198,7 +1207,7 @@ #define _APS_NO_MFC 1 #define _APS_NEXT_RESOURCE_VALUE 242 #define _APS_NEXT_COMMAND_VALUE 40111 -#define _APS_NEXT_CONTROL_VALUE 1516 +#define _APS_NEXT_CONTROL_VALUE 1517 #define _APS_NEXT_SYMED_VALUE 102 #endif #endif diff --git a/src/README.TXT b/src/README.TXT index 56dd08b0..214b1345 100644 --- a/src/README.TXT +++ b/src/README.TXT @@ -50,6 +50,9 @@ SOFTETHER VPN ADVANTAGES - AES 256-bit and RSA 4096-bit encryptions. - Sufficient security features such as logging and firewall inner VPN tunnel. +- User authentication with RADIUS and NT domain controllers. +- User authentication with X.509 client certificate. +- Packet logging. - 1Gbps-class high-speed throughput performance with low memory and CPU usage. - Windows, Linux, Mac, Android, iPhone, iPad and Windows Phone are @@ -59,6 +62,9 @@ SOFTETHER VPN ADVANTAGES - The VPN server runs on Windows, Linux, FreeBSD, Solaris and Mac OS X. - Configure All settings on GUI. - Multi-languages (English, Japanese and Simplified-Chinese). +- No memory leaks. High quality stable codes, intended for long-term runs. + We always verify that there are no memory or resource leaks before + releasing the build. - More details at http://www.softether.org/. diff --git a/src/SeLow/SeLow.c b/src/SeLow/SeLow.c index 010a42ad..39f16547 100644 --- a/src/SeLow/SeLow.c +++ b/src/SeLow/SeLow.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SeLow.c diff --git a/src/SeLow/SeLow.h b/src/SeLow/SeLow.h index cbecfde0..90636c55 100644 --- a/src/SeLow/SeLow.h +++ b/src/SeLow/SeLow.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SeLow.h diff --git a/src/SeLow/SeLowCommon.h b/src/SeLow/SeLowCommon.h index 7f9f12ba..f6606d1c 100644 --- a/src/SeLow/SeLowCommon.h +++ b/src/SeLow/SeLowCommon.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // SeLowCommon.h diff --git a/src/SeLow/resource.h b/src/SeLow/resource.h index 18c313d3..737e72a7 100644 --- a/src/SeLow/resource.h +++ b/src/SeLow/resource.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/See/resource.h b/src/See/resource.h index e72cfc22..e39f6c6a 100644 --- a/src/See/resource.h +++ b/src/See/resource.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/See/resource1.h b/src/See/resource1.h index d5b1b28c..fc123fda 100644 --- a/src/See/resource1.h +++ b/src/See/resource1.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/SeeDll/resource.h b/src/SeeDll/resource.h index 4afb83ba..9a73f28d 100644 --- a/src/SeeDll/resource.h +++ b/src/SeeDll/resource.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/THIRD_PARTY.TXT b/src/THIRD_PARTY.TXT index 5f24a507..50e42ade 100644 --- a/src/THIRD_PARTY.TXT +++ b/src/THIRD_PARTY.TXT @@ -775,6 +775,10 @@ The list of contributors for SoftEther VPN Project: - ELIN https://github.com/el1n + - YF + https://github.com/yfdyh000 + + SoftEther Corporation, the distributor of PacketiX VPN, appreciates all contributors for SoftEther VPN Project very much. diff --git a/src/VGate/VGate.c b/src/VGate/VGate.c index 9b7a18fe..b385ab66 100644 --- a/src/VGate/VGate.c +++ b/src/VGate/VGate.c @@ -9,7 +9,6 @@ // Main source // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -80,6 +79,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. #include diff --git a/src/VGate/VGate.h b/src/VGate/VGate.h index c7721bf1..b12586ac 100644 --- a/src/VGate/VGate.h +++ b/src/VGate/VGate.h @@ -9,7 +9,6 @@ // Main header // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -80,6 +79,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. #ifndef VGATE_H diff --git a/src/VGate/resource.h b/src/VGate/resource.h index d6f15e3a..5ca0dc9e 100644 --- a/src/VGate/resource.h +++ b/src/VGate/resource.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/Wfp/Wfp.c b/src/Wfp/Wfp.c index 97511ac2..f9adf037 100644 --- a/src/Wfp/Wfp.c +++ b/src/Wfp/Wfp.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Wfp.c diff --git a/src/Wfp/Wfp.h b/src/Wfp/Wfp.h index c5fc5b24..e6d5535a 100644 --- a/src/Wfp/Wfp.h +++ b/src/Wfp/Wfp.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Wfp.h diff --git a/src/Wfp/WfpInner.h b/src/Wfp/WfpInner.h index 26e3e678..8a24d93b 100644 --- a/src/Wfp/WfpInner.h +++ b/src/Wfp/WfpInner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // WfpInner.h diff --git a/src/Wfp/resource1.h b/src/Wfp/resource1.h index b8acf353..31ec672a 100644 --- a/src/Wfp/resource1.h +++ b/src/Wfp/resource1.h @@ -4,7 +4,6 @@ // // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -75,6 +74,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Next default values for new objects diff --git a/src/bin/hamcore/SeLow_x64.sys b/src/bin/hamcore/SeLow_x64.sys index 410faf46f9a1d2d3caf5d146cba5a302c0a8211d..5064dc44d057691106658c72cab97600d33548b0 100644 GIT binary patch delta 766 zcmaE`lIg)prVSNL%nWBVCs#B1GC6u~KE>2!0pf2Cw|>biU^hi{uXxZYw@uL|4P4h} z9p4;a?_k2q#=ydGRfT~8OmCiB9Lgwc#-PKXz+eC-Eg4K0j2J98vzGcYW0gp)Xkiqw z*l|ATcmMi?2d&S%lpSIs*$pnGZvI73>-3Ohhv;I7X zyeA$^@mLvp;!m)zw3Kdi^a2*~&y)VetlQdd{CZy9Hf49ih2KuhEK^RpZ#ye|iB(YS zbNkF@viNP5yA zBfbas?@s@Ee>0qTfj6or%)$;+jZ@uVm}!2SsKoAsLk%<*|Stg zIQd#$`#CG}|f9*=HrEmVr@Vt9v^QBDn zzWD|DI<*+xtL~Q57f5wfAH8t;P1g0t7mm#jX?Z6RzcM3retZ25scBw4*D9Tj_!HkH z-ClfnpS_B>)wRFHtMiSwvUbhMzHn-Hujxjar{)+QrteVJQS&xU%&d7{wl{MH`gyb=DW@2{ioySR1P(~U$$IJ tYkTr_+Zipck@>fFoOg$^wcw1KsTavsXLm0}z_%Xp0cv;Y*rm zH=4P)ZU3`SKR`4M1pov9&LjW;1pov9&a<6!RRI$<04x9?05AY703ZN405kwH05Y=$ zbxi{kH2^FCAOJ7`EC3(?IRG>OG5|8OWq5=E6k?yu^}g5{#grY-Oqv*IgC{J{J+u9J zeHRpdt66~h*ng*qyq%wE=Q8oWKE+a#j*&rsAET$(tl>VJuJ2|y2ZU0}a`mo?j}dB1 z%9Y6EN|*?}UvGx9HF{uN7Lxx6DPS@Afm0tkMa^xd0OZn)M+cXV>8bbQCY46Z4{HwlFffIF*Y$aH8(IbS}-F92`Yw2hW8Bt z2?Q|~1QhI^AQOwpf*m0jl&LNQUo01odCtw$`v zagWdL8P%H{DL-sm`pZ%z&EeDc*nyy($zQGOhgTB2<5`h)c=I#l!Hl69?&KIe*1B}l z$8djIHCKJ<&i~HIGyxssmxFymhwjLa${rlNR%PRFI&#BoqP`^Rw}HTOJew! w#FAIIal_Gd)^@(n?vi7)T=T(BiZ=pM6cCvW5_BtTgnFmC<;LZ!{HOx}0QU)Fpa1{> diff --git a/src/bin/hamcore/SeLow_x86.sys b/src/bin/hamcore/SeLow_x86.sys index fa868d79a074b6eb6880ceab8c8cce5d1c24f7b5..3685c1be4c5e9905c613159d36c19fe57a707b35 100644 GIT binary patch delta 766 zcmV1F6d?v&S*50}uOG5|TVWmyCS6uif^NWCF3!$V>YM=?|WgGHmk4zqn- zeHRq)N|Zv6wJV&l9^?WScPqTk--srY4s}6)U4b>c50+p4iRM7AyX%%Acpp*NE|_f4 z-kBwaBd0LrCOsW^$k7%LX)9+lgan*u9p)jc6Ie4;I7{#jhXCgRY@)DI)x523%2{#o z*dRg7B34h^_ZKRR-LrEIezZ&FoE?Bmi%gk=7xc|Ou5XttSI<U&LNQUo0D5f71H#4I z_tSi5Rd-~g!gj`)#>93J$LTmljFx#81T(DMpsz6PNKFH=Mr;?l3HOOMk%Lv;XZYA{iRP z6(GS0iIwME?^*rBx`v#QY{W}5=3uG^;VT9jN`1s<$jvRJcmD}AapCC%)Y}TVVrLW_ zZ@w3b5vK{T(s9Bo$@35If#NG8EmvTI>8VE8s?I%(iS*!-GOAXL%q$~sjkBR)l)vt> w7M3Q7zg&iC6z4rgtzNJvI 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 literal 43113 zcmd6w2Urzp)~!i`fMUR$z?=wm$QV$fVpfb85m8YA1yl^Jh>Ec>XIe31XmgIOnA@Cl z&JiQV_SVa8W}Kdxf9C$rt$OY-z&Ul!0c)}L+H0@xtJ6wSdW5-UwdDHAS$T~uOwy9l zTPsQFEliA!4c3aKd9LafBNz1%cl9w}^_BkW zF<12&ZrQhuj0__VD`9{8btcAUh7hH>;_$2%~uQ z(}xeG><H4=Hn8(D#&{AnprjgMQ^#lUd ze~i2O&+%3NK`us)>OVVBz3;8wGN>N`>S=P!Uwzb5y``uh{_3ZjdJ>$LxBA>b_2VZK z6B8ACLC8gY0A&2sCk3fL#9zH7hy-RM;-~&fuv63*@?6hs&_ABHT~6Cv2)sh(q?dd`A{K|NzQ z9`RP6g|osF7$4y zCqm%kqMmz@dbZx#xVWiU_^DWc2@El)Sh#0n7^I>BZ4KGz!LC5{)l!9?Dnjm>Ae1|{ z&Xs3D+h$J6-}+Vho$VVREo>90Cqmxp`Eu4^;;Mf5s+ALvjf`tHWdA39m|+jhR+D^q)a zU6ndOWrC-Aw(tigxTy#r??Eb3)EDaGo?S^&jobqnaN%*^Z0=BD9xAF@Ae49cJ)is6 z^NlcfUl{A!*~Hi?A}~@<4uJ{$L4D*r(H>v*jOks}6P4tjeNRzQ15MBXNt&agex**S zIBhs&6YSQl^`xbDJN$mqe$0bzSDH;3e_TI=3@SEM71acbT-CFrPjS9fQcj-(4OANT z_^QtiRBzMy>GJ5dXZ9l=nsCTA@u6$2_N)7iiN2Dax#n@@Ati^K>xmFJpfwmQ&YJr1 zS5d%xp+%T4B^v{(h-%~>IN>aDLa-22T~w5`sIsC(Dpav|`1Q$|w5^f%tgVXnxZmDc zUxZK`Z}sdrSMTf(7xnB#t-%5Qz$_|@{^q7WAIC`Vqq^MHSEAcgswN11Trh0T)ci*m zUOCvUcKx~|$G0itrYA!10`27tan*21ykLOJ3#lqM^{AhUjrag&6jU3Z4We)gH^tM%%*Tr#Im(-pedbTh--E(|ZeG!5^GMm8?&XexOgetQHgCLzB z-2qRI;}@l;F$Pj)zUt8cZ4kQW*m(c+`5Dujk0`n|BjrKQ!zF6#iBN#b0lE`vf+oWa zCU+2lGcxvq12a4tj+YiEjVk~(IK+H!&;+5CLf+~vrZJR?zQ%M$UC{}d_jz5QCLFS}2zp=3 zW5vsw!AEzEDjXGZYqW!pz8u0cd#LA)`+-T^CI`U_!XXk4Gzg4viLgbSB;Ua{Ks`bp zpiPz8{T}wq<1o+lYt9y(SGoL{@KI47>-9s3OpLmsQ!_`<$B5ft3mA!Wq<+w2Iy=}g z?~}EmP4qCdj83SHr!H5pZ{vDjj|}sZGTDJveCIhiR-8LTz6>xb#yyD5%N&a z59dsM;SoWInjt@PQ9t1oGaHHxW6*D&NA|%psX90HILK*(P^DvKe%?JYvTIb3Prfyd zdp>$rNZYO_Lj3hPYi0@N3U1*MsU9YJYKd9|1Ms2Ncnv;LRGWJARq@h_LsdFeNcIb| za(KSKn$@G(tw$9evsPCQF|X65;DW4e;CCc3q<*-~JSHl{1V;`@J@Ra{n~WAe#q+fA z)K$J5uI%&lVdrD_JtvQ=;T^Xj*Ms|da)>^}90n4&Y36k1SiZv=xFh}toMg6uGq?b- zWv)f9=>6ItESd$IWL*e6&}#7G7XDfr zrB>>VKHfjM>^`4+(T<-6mhSfLVxxC@B19Kr>O!q?i|DbWi;@z70cX#ID_SI*05~E$ z8+a9(4c1yHwM+Aa#$#&l4Ssd~doJ^@&Yx2+&ot8)A(V$Y;mnyes25ZRUde36`OBIR z>#8!1QCrNasFvi{pddP}CyCP2gI;8mh+UxX02o&gBs1Vr)wZ!TN zjz`un&|o@0YK$U*BkPJdZrl`HgLhh`AMS(fGxne9wbMCrbMom!?kCR$*VZxpz#Hcz z7;p*oMOWxcqB=YSteETZk356NWvw39#Bq8WDy{{GyhlaNsd_Q>*0g!strpFk{PK%c zT{}HF1THc$NVY0dgs2lr%w&OIf;8J%XH00$UC{h&{{Z0d=g z&k6^6MP;GVBx!I@8-#p%PuTOV@alf~EX%H(96IQ19udxI-9&iqpsFdGs_e(*hyiG6{C|H*UYsW@>W#^qHgITHX5c zSbv1rrAO_61Ia#9g!FXOnp&e@$?7cpqL;~rclYuP##I>Nq?v^Q7LMSnxeOpi7?;uINBqdlF@o?R)hRpoCEVa zw3^a=Tc%Tko>@~m8XY*JFGBq7(OM=|&KOnZteNDQWLZC>qQHepV*a42WNJl`a7C<% z_-RsQeuoe4>sZ#v&_C?$q{qL1`F8GU)9QL6#2zWmUFr(GmNjU!8;wD=aYdwxOd({o z_#+gW{)VS!hNb&yg8ij&=q>WS^>aB%R2T$}WaNxzm7maEzbaQ^LTpju#YqXvS(Xn6x zx+1Oy_k-Th_sPoGbIyKp@sNC_!$~?#WyxM_ao1WP)HrnOjL}mYT>khvzRLd5!&_H> zHbTer1AV0n!4m2SXG7g_lw*7+;gHz`o}kB|!DFnfkz~U%)JmHaw(-{;OK0`Cwc}Rt ztwnz>V0FId;w`20;}Dq`-WevyZdcjs0WNS$auMcO+0g)6U?TY2*aN|RC3-QfZ$nsg`}HdRG8C$E+@ z5N0##P5K@>owI7K&0N;H>v4nG{&nwuF45#=iOC6fPqwI*S5FSf9z9tr!wI3g;(%C1 zgf-L;n7|U;G`Dd~Ot)2*>LZa62 z2hM;K-HfUcCqPf9&y$9L6uwAi4(d^o6XsoQJawDWU(J3lTjAnF&;4I#wJ%$&WMeNK zcUaNi@i({{$%1639?C>-W6uj~)vR}b5(vQ`CKXaf*e3Z24pSRH)b{zw$xCZJUTQt~ z`u$@( z>ocDJvTRbql*&PcgC13kYmlHPLZHLS4r|QZh9juAcp%oCnLE%M$@Hl z!7MEtW9YB3y_S1KZq2=Om-mL(?f101|KOf}2;pm}8dR7nk_-*cNctgH|K#k`L#LSV z$;zlau#z=Mx*V8kgHSi0j{BEg9NKl@8(%XM$HC5*hdtP+Cqndld^Br@_#T)9Z%}D4 zp`&sBbTMWSoD(%DT155%K48bQwBS%gkM1XzrEf_L*b{PUtoKcq(=Y4ls6(K`+88|H z4C&#_q~OJIQE3>)lusrt-5bU%rDz z@78m_xs^69+NsK!+>KVxANQrCLn$Tu-7R1U)g)OWzFFLmtdQY$I4e>#CJ@=LM|O=u z{e8V3e<`a=S}1nR)~9Vkd#*5Bx!zzDp4o9u)zf=zbmEfw4k@UuOr!L3xC9>56Y4Cx z({MrTFCvo`WtR+zJOrNM&YAJ4H!To~OStV=v&1;%MBy<_-@Mu}yGlx{e@9nowJh5( zbpJnjhZGQEqF}!;Jdt@+FyqW&21<;cb44|?KS;>FEV{j@mSnZsB>Hi)rW=mUN=eCF zc*1qvsZlrU*RpM>Cx_4s> z@g>ugC2havuX8c;b@NZ#4X4Yyr|XFjY783G31eY9tTB_=tV;{{Te@hS3ar(%~@#!|~DHHt>&M9Z#LIi0?pYuR@_ImA>?CJ%cg4?(-x>5!9x zz$VsxGP%J@;o6;EI)W3-R1Sy9O|wKLa&|54Xf+)Y0~#ppT!r; z^r`1m^Q(Rcp}AzS(w*qz>;j>yk+4^|d2HyupC=DnvgMb>njWmdff%z4c20s!;<_)S7+$5Lf zF)a`p;WBRL#J5f7xO`f3JJ6-Y?_TH41NB5muD?UA>G))yw z88yT$aYH$n;3Q?0h+d`*hemf8@zHTy$LJvELj}JlzPXuc;jSx(WUm7C!Wqgwdwe#E zl(PoSWXdBXYt)+T`9P=XawJIfLGl7Es%*^rje)^#cHNui-;_EmSJr_Aoxb$elS61V zJzSCw7(%|tJSuJ*HzZ@Aum#8?s!5#b{j)%-%^jUU02#4@Zazz7%0A}^WQApH)L^vCS#xJiIAkIu!AX`?u8Sik28JXmSKs!Ta5Td zw4EJna0_+D1xU)IjSi)jnr?N!{=DV)ENg$cJp97=-VWY6>JZG4d4l?)a_HamCDfT( zlWB~~5Hj1n(gDFt3muxD@wje2>s}2*Qj;7OZydeep~AGbdUA+9jhDv% z(YNSQR2oR+?2?gvu*?;b*@7CWtK{0EP@?x*AhclT&$B&Fz1_K>$;@QWkuwg59-h@o zKZICg1|Jf8`ZW_ftl~CtFa3=f18*c5ELz2CkxX(pOy)NxT+$LP5L&ctWxbT=^_quP z>|WFA+|lihMJFxQ7a{6|YC^Mdjc^5zE%`j&TBb6N$*wAL0CbAlqtkPgzOT&{FpKtw z3<*pg@t|X`mm^l}sh;jU_?I<$A_QAN15V%qg)ww-Nw38Lpf@NvyJgrf0(U@`=hFk3 zO5mXu99q)v$*#Mt({`AQa$v~!(?cuuMM&m(+07wrk}O*G4w2T=(a2(1lf^s2 z9=e-wi+qH%goH>FgeHC)Q?bU!DP?bZ%rLGo^6JaiCVTZnh^Y!UBkNu8K=zg6sF_`1 z2ws|w4^H3$i_j-n#LfqF9`)AdYR;vPN1s~R=IgST%Yt2_mRECd+;(oNo(RDWcE!lP zM%igk?!mkUcAy~D#VjlPW^e{{dw7GZwQp~sCqhhE^eeOmS11WIS&zKy2a^bF0T-%^ zSq;v?D7+H-EIZZc`&uCMYxAo!-5rL`{LQ@0wyX!ueu;Fv=A z)oy-D82-~){Wyez$SRNcV!F8KG5U?xz#DQP*K8bQe;&OLRAse;Is_ebUJHaa-)?Xy zF!e~w9p!DaJ|8OIah}oHIDHXfj>rAs2W0}~HabK#ao$vvtPu%kP-pTpoMMhAB3aT# zsW-oM@R+o^R_az4yAuh6L%q&!I$2LogqYfM_MeHnX8w}hLUb_JGN>c!kvW8_qN4a9 zX_JHv4B?^{9NN;w(PykxzCx$keDN;!(~Zm1EX(S+UIs_#W%MN3!y(Ge-WSw`4lZsR z9g?eo==G>O`H`%R$Vxw{wH63%Z65ii&g2(a7X8joKev1G&X4gXbM@qqT>C>mmlYmy zKkSc@^&WVFisQ7o2926SvB|RWQE*7E+tW&icI}Vo^R(rFlRamotl3z-TlbCD`E=AF zx;!dO^~jC|m?9b@Q$2{$_erniItEFn@!TXvvI~OrA19>+hxXYPtK{9ltMt=02PQmN zwsD)S$-5T%afmaQ)iQDq@qVnR%DWFRr@|h&N(TL=B3bc})##i&0G9;D+Fb8?pjFov zH#*O(TmQaKM)NzFxlS#5ovbH9Ol0(KI=g%)4PqxA{a;cv)LGoK>;i##I3z)r`GnOr z{H7KhI_ToI!R?;k>K(ZUOr86@SU{^M55x6ENc=KN%)CzDl3TbQ{E~Eb+>!Kp7)267 zYC=Uacc4|&ohAq+cKc=Er%PQohq~7rWL7VBS|bZ!(=a01$n-t_Bd_1 z-kwKg@}N3pucx?5`WiZ>1wzN%`gQR9y64!r_~Ii6J0Eyqwqs`{JrQE9Laq*yL=n#; zxd#4**%XFI-hrya9?%hm#tr1`$YKW80-+P7O{1R_X>t2v)f#2(y4^Fec-!=Xo(Rb< z2HYUsoLZ7=UpRvEk*ifmIGAR6O!j<;6K794nJhfR6={Lc$rIjdS{8_#cXeC)mjxcK zbuo>Nud5$I{M{v?mt8?r4s|4}LAXY84!kxK8MVYt5Bfc|D3dJ-lB}3%gV2Q;Mx9?Q z8u8-2&7@UZKF1tcy)q$FPlV_|q-HX4$nH&WLamwdnQW;;ao+O2MB;>ajP+LB5{NPF zYr&z5wNH+%fAY$Wz&jU;T-!M!@bJ)>S9&5O=O?<0AChcQ-Z_T^8Z{DU2uA1-%#vgl zzl27C6VKFUFYKj5P0rp-eKw&qrF=2=zq1pHY_FsV&{a*_XU2}i;t=ExKyKa;m;P|`Eoe!77%yj&3a#A%ivoqn# z97?80-AJY=S5Dyx=~}X55%-O|B>SK`$sd{9w0Vb=Yu-ijjrr|Rud*lR4}Z0}Ty3Ys z=wJ2Z5R8#4H)L-Ex+Cu!LzkE7LK14}`JjQ*=5@^a)Fl|nPGT)MbbYM*lKwABRL!)W zG%c<7>QOfy=h5-%DbA1i0wmal$9Xe{QAy-L_-S!POd8}N>>8rK%bdbJGDdnCSEy@& z(9LR@gO1#{`6)DSAG;w%%Qswal+Z&@4$-w`o@ag_$ESC*_YU7I`x>O%k;|evunZQV zT4*;~1c&emS|D`mXoD3Kmlrxv#sB)~uueNJ7Pyq>s(uKGH|8rYNTyg+o3nRSIU|V( zM_>hitHkiV8V3Ed78*(30mDjCI^` zP6v|NO0ERPC6mmO&C=PKJj6#!R>X6uGMQg<@>}|$>%I3-&p|AH0tewaY6ic1o;1}~;n{7=s65%+OXcqDq9Ol;ch^nCiNP}G)n z8$10pu-k{tx4U(AoOY*}o>fLSVjY!pID)|MA@|o>gr$zoGNJ?_ahrIjzC9~MehLgir4fNA-=Q)~8SHlO&x{ka{ z8hc@6S1cMMc`I`*y`F56^?F(DK*vP$@t#^#*~j(0x_b=Rf2_}}%4Y&+lwD!JXnJKm ztBks0uD};Dt@8;g;6cj9>Z2SbfuGFWRSh_oGuL{!(;b?aJkE z{WR@jr1s9k;J0Fa$Se4cfb^mf(oBh6o^rU=r!p-t7@nb+(XTn*0kWzmy_R~ z2eoMTs(ktIqJ5gKsXo1X?;Cn@C}$3X8?uHfh~QqBPElzx5$X%qO~tXENash3aM<`p zJf=3+nSG1uJm_KhUMo`i-fwSFVd1)n?^8SIi;&a|6(zGg9iKB7rzF>M(DhMpNj-Qb zsv|m$BV^v!452HYr|M0Mu<~=PYgyp>o55QTb<`ChI6}HXuVR`dMPyo)J>^s&D`GH= zS%a$-Sgpkc$(0RoP+rFjtVNamF>G=PtKWRvpA5(fJ-0a5%U^q0`Rl=SvoYQxjtoll;S`J^M2BP?L5~8_peg-u!D#C9k<QO6O^Oils2F6DiN-HHfU~OAS4%qug#KuQlskBo^n*eRuX*wnVjpAWZ;j8cC~ zSXAH0=pOd|zDk**c?~WG7Z-z){lCznd0iBPi>u<|>hA6C9jbKt;UC*7B$#{iNx2^Z zGR|dWnq-{MNIh<4l4NXbw0`x*;Fb+%l`3d;x#FNH<=Rw>xxTH^0spw(`}aCE3;j}P z|9}*K=e)O^Do7 z{r5R#R>zjC)VQDBdc%z`&BIJWmaTjr?2s!VaH;dSlaJ;+`eWkVHg#$rntHv#$04rw z2U&f|>_65w_4`57=5tnF>a$>4_25` z8?z#2g*wlDAKl^j@%XvtZ~XMC&b8-_5}j@+F6Ozbo2wMFFg7-;q*PGK<=j_{lZ*6> zkMCQ<**PXWuCG&kHg%lBW1_M-R@&Cs_`6wd#a#VnVr-<;QU8Rc?aaIs55+CbB~3|o z`t!x%v3-7ct+O!dM?(4gI;qde=5y(aW_c8=oPU97ZpDV5nvdUPrq+qMQib~k%*rZu zOH>XUiYrBhIr;g4*?e(yQQW*74L{ODtsm17BaBQf=S>>)YIr+k<*S~XKi{(~y|ZbO zc}LIA%UUcb^7GSDQ!N9c-$y-bJ5+i6De~v?an=Q6>aAGgUEpK2_4C%1$VhqCZl=+% zC-XGkaN4jecZX_&zup~Ox=o|>h+slhIRp_D5bqA&#Rce*YeB-{Y zPrKA_Pc9zYRJTl)*|9S{R>a?1n!Dwdk?u89CYI0Bf6L9}2J=h!STzgwN#|qc3ks9l!U5&!vp`j>i-2(w&IPQ4btA(5Xi@pW@U%8FlR(8__o=E;2qQc965;$`7(Lb5N=&RnjV@RY)%P zLp}fSy6A{_=UA0{|E`8j6+3=Xd9z|lk;Fn>hIB6xn0MB(am}26GCSdx{{8E>hJRtd zs^rE-Q*=9Q8V+aZ9g>VQ-Hl4T#(`!o}K<(dX!Vd#kq2nf3n|R^MXfCI7b5 z<64>-RwU%DIdNUzeYJ;O+U;B|)Oc_v@)z4XYQo}D^IeM~sJCwNAg!U?&jd~rLn zXVkB|ZXdc)?AqI7nM3v$s#R>8>5dsbWy{p*5;=HyFVp!yH~5rU#X%X>>3OACzx7eS zcgrX^@#3h4J$#3*H!YfAdGFWsEi)aL3`;a^IyP%x@6e#aCmf1TxZF4Ofn)I4F0tuL zinr+N-|6bbAk%d{Z7RHK@WHxbg;y0+tyrvT#e_fIfz7FRUPu1e>mF@(x!3HHC7S&O zGR^y~^n1nN^$-2t#XG0pcl|*({&T;FklFU4`hV*8h)F~&LgMxxd;X$uYwv(;*Pqm7aWJh<)O zu-uH7`>Xr!TX4DOrj)u(Uykb|j$ratO?BLDUSBfCv6 zzPn=LoyTX(Ej_)%Wbnd))7nR5yet~O%Qv~&_1ujnPMtW#asI#nyPg-*;|E@|Y40+j z^#s@5SHh13|5D@N!Kbd)XJ0Qa`EJ6VD;wKPsCm_G*!+#O1VJ)eQ7dB9v-5 z_f<1c=Fj?%k8{lS0|Von;{J4V*`~nrZ_hPJuKxGuhDC-s{pG37@o{mE;bD$FT%5uq zVpW~WRvLH3RWYPFr#b%kYRtp`@M_gI{I`z4tQ_Ze7z- zH%{Ig^n2N!=2y44Y>L|Z&Y@Dc>;2$vQF$L`^svdwwZy&8&~Zf$J=t(;!;>5Khx+9^ zF(dx^mJT;}d)oOYJWSYpqKcXQ;+3x(9vEA7icR8~0$*=*7!cjGlTBcdZ*<;uPrc@@ zuW{9~U;eM925m|lvO4nJx700pid26+yuD@ZdF}5OIc7T|%E-wpZ+g{94tF-Z3teHn zws5M0b8yLP<#uNLkube^M)LZku^lsOZ)(19kZX0PA=|IpTiW(})~k5?Q;(M_Z5+l0 z*V%q*_|d&S<$8vP%-tOszxrV5TEnN_&e&DzvRQvsrgo?@wMb;DV1csNy*%fPE|b6d zttC~qcTeb_@>ikKz+mLeA|8sTtCztGPvfqRCZ2!ZRYoNLAWjXMmpphy&q4?KZksyta|!z~HYX>H+5b9U zi@{so{^8qlyV2P5ovI!9=c^6+E^(_V+3Iy#_Tf&pbQ6;ML$=50bKSCwV-t;yZLm?na%*FW7O& z>sYT&#fGm*T{7^}n+|5{n;XVGud!iOx3o?RtZpwpy6tqy#dj@VC7qh_w9*Dkn{OS1 zrUzf>Y*K1N?E;5h+9iCxm(r-4L%o22C=;uPp9`*9VMz9B^&&o_$k+YvkJ;r2SW6YD zX8-8?RcUI3O4yqPD*lSExurU?m>H+J7^`Ogf8}nNq)XeHp^ePZf0;W>6(0`TnRzOz zDy6Bal;Sil0(9=e}Z+?Dpr6ii-&E9~<#k z4;CJ#YGV9fe`5R(>b0S8$9^kPE9LusdsLaPaZTz!J(;!oAJpq#8pD5~UddC}RyPmv z&23rhv4=-%j~X%K3^g8|J#%Z4b$YX}7Y3Y}Q)F9G%qQp9bGOwT8W2|3+GFUoz^rGl zww@iA^(5@-^G*+5tbWpaa>kXo8I`*iOgX=J>ez(sS)+1$RUQ4tIBi_!w!3eW2MiAK zYd^oU#j)F?GaH}Y@b2xHQjZGWvp%}>tZ~QVPAAsvD>(XEofT_0JRSBtW97$J`Cmrw zKh-#STDiy3i50&jj9Zth(tA_V`)d zTWek?ENbp}vEGXKCU=K5-Qy8nyKnF;>%cP$J2_Z4Z(ppjudQ|J(^B(i+vWeTzLUrL z#6ilULFP6kZd(^KB$-uL6|Ay}v9Z!agW1RAUkRe6d9LaOrSq`P(w%8uo!*Qtqzm+1dJ%=gR6wi`fotyX<9y zGkHVXHhb{G{EGF0)+cHXf7kc;0^9OW_TDpnaLhiyBHswx=l&g=*`HY1tAB@%@l!58 z`jX`_@J{PG0S_~pc7L~YRE1{Y9!HL!UsNV_)tNGFcb;}UG;#IBvX4&|Xz?_7ql;US z3F~6|mJPYKWnzZq>0?96&i;6Q;lZarC%$R$sAT$s!s)A<%z7ICI;eQeutp~?f3Ff9 zdu8*7F9rOL%~{iV>-`TA=SD9~GO<>YOf3G6wYee5_@gRM@1RVq*0$Ru|3CTuAK26J zpUCrPUT6V%a>7H)T!wsVM^shP;9>A^_jFN0|A{J<=@t0o9%56+3 zcyjRuukz2YKX8m`q&%MHU1vw|729bpJK~1l*yPbSYgN>V?`?yYZd*K~(xNu&jc0HE z6!+QN@80=m?HaFsa3keT|G8K0*xfyD+jDKu-18;ISdPqd!z!y?NVV{0r+@j}dQV;!$(|QXh(?zdC$#ko!%KE+cjgteWC@X;sC@*pS=K c>&(<0-8=6805W5NE&u=k diff --git a/src/bin/hamcore/inf/x86/INF_VPN.inf b/src/bin/hamcore/inf/x86/INF_VPN.inf index 3a864c5b..291483bd 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN10.inf b/src/bin/hamcore/inf/x86/INF_VPN10.inf index 54f4dac7..02e05a52 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN10.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN10.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN10.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN100.inf b/src/bin/hamcore/inf/x86/INF_VPN100.inf index 692b9d6d..c880b78d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN100.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN100.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN100.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN101.inf b/src/bin/hamcore/inf/x86/INF_VPN101.inf index 67d00b18..e43d4cf8 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN101.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN101.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN101.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN102.inf b/src/bin/hamcore/inf/x86/INF_VPN102.inf index ebf8b08d..a236e90a 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN102.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN102.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN102.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN103.inf b/src/bin/hamcore/inf/x86/INF_VPN103.inf index e38b344f..e5ecc408 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN103.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN103.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN103.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN104.inf b/src/bin/hamcore/inf/x86/INF_VPN104.inf index 0bba77fd..7bffeb5e 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN104.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN104.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN104.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN105.inf b/src/bin/hamcore/inf/x86/INF_VPN105.inf index e4b81991..3f1b116d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN105.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN105.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN105.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN106.inf b/src/bin/hamcore/inf/x86/INF_VPN106.inf index a7e87fc7..bcbd11b9 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN106.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN106.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN106.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN107.inf b/src/bin/hamcore/inf/x86/INF_VPN107.inf index 7a0db7d9..065b2464 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN107.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN107.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN107.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN108.inf b/src/bin/hamcore/inf/x86/INF_VPN108.inf index cc8af17f..24f7b4d4 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN108.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN108.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN108.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN109.inf b/src/bin/hamcore/inf/x86/INF_VPN109.inf index 59ab9c7a..b8d79062 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN109.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN109.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN109.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN11.inf b/src/bin/hamcore/inf/x86/INF_VPN11.inf index 7a4ab4f9..40f393b5 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN11.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN11.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN11.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN110.inf b/src/bin/hamcore/inf/x86/INF_VPN110.inf index d8bbbb1d..1c0d8b2c 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN110.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN110.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN110.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN111.inf b/src/bin/hamcore/inf/x86/INF_VPN111.inf index d9ae5356..efeb88f3 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN111.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN111.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN111.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN112.inf b/src/bin/hamcore/inf/x86/INF_VPN112.inf index 042970ae..81e2758b 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN112.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN112.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN112.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN113.inf b/src/bin/hamcore/inf/x86/INF_VPN113.inf index da91862e..b871d3b9 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN113.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN113.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN113.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN114.inf b/src/bin/hamcore/inf/x86/INF_VPN114.inf index df5c9c81..98287e74 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN114.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN114.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN114.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN115.inf b/src/bin/hamcore/inf/x86/INF_VPN115.inf index 407e9895..7a281e2d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN115.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN115.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN115.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN116.inf b/src/bin/hamcore/inf/x86/INF_VPN116.inf index f33476f5..210f5ea2 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN116.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN116.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN116.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN117.inf b/src/bin/hamcore/inf/x86/INF_VPN117.inf index a024403e..81126854 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN117.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN117.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN117.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN118.inf b/src/bin/hamcore/inf/x86/INF_VPN118.inf index 02db1a8e..a3277f56 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN118.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN118.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN118.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN119.inf b/src/bin/hamcore/inf/x86/INF_VPN119.inf index c916cb85..49000442 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN119.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN119.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN119.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN12.inf b/src/bin/hamcore/inf/x86/INF_VPN12.inf index f1d92c94..e25a0dbf 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN12.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN12.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN12.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN120.inf b/src/bin/hamcore/inf/x86/INF_VPN120.inf index 0ac5d060..7e052dad 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN120.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN120.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN120.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN121.inf b/src/bin/hamcore/inf/x86/INF_VPN121.inf index 40be4b64..80267a2c 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN121.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN121.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN121.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN122.inf b/src/bin/hamcore/inf/x86/INF_VPN122.inf index a61f80af..9ecff402 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN122.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN122.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN122.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN123.inf b/src/bin/hamcore/inf/x86/INF_VPN123.inf index 40747ffb..2149d502 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN123.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN123.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN123.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN124.inf b/src/bin/hamcore/inf/x86/INF_VPN124.inf index 8af9be3b..44a9d41b 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN124.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN124.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN124.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN125.inf b/src/bin/hamcore/inf/x86/INF_VPN125.inf index 42ba8632..1370b643 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN125.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN125.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN125.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN126.inf b/src/bin/hamcore/inf/x86/INF_VPN126.inf index 896db9d9..c21eeff4 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN126.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN126.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN126.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN127.inf b/src/bin/hamcore/inf/x86/INF_VPN127.inf index 92ab50be..09fdbc8a 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN127.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN127.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN127.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN13.inf b/src/bin/hamcore/inf/x86/INF_VPN13.inf index ce3e177d..06e23695 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN13.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN13.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN13.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN14.inf b/src/bin/hamcore/inf/x86/INF_VPN14.inf index 82012d01..5de8c8bd 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN14.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN14.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN14.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN15.inf b/src/bin/hamcore/inf/x86/INF_VPN15.inf index 0cb07723..fe089943 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN15.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN15.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN15.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN16.inf b/src/bin/hamcore/inf/x86/INF_VPN16.inf index 2ec9e8a8..19cac486 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN16.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN16.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN16.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN17.inf b/src/bin/hamcore/inf/x86/INF_VPN17.inf index b859c0bf..a3d9c5ec 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN17.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN17.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN17.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN18.inf b/src/bin/hamcore/inf/x86/INF_VPN18.inf index eccae765..49a3b67d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN18.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN18.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN18.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN19.inf b/src/bin/hamcore/inf/x86/INF_VPN19.inf index 07b2378a..3b85e99d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN19.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN19.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN19.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN2.inf b/src/bin/hamcore/inf/x86/INF_VPN2.inf index 80808d47..fed37ae2 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN2.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN2.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN2.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN20.inf b/src/bin/hamcore/inf/x86/INF_VPN20.inf index e9ec88b9..6595ae65 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN20.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN20.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN20.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN21.inf b/src/bin/hamcore/inf/x86/INF_VPN21.inf index 376fabfa..1d426d67 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN21.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN21.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN21.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN22.inf b/src/bin/hamcore/inf/x86/INF_VPN22.inf index b85b5e05..72e6bfb5 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN22.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN22.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN22.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN23.inf b/src/bin/hamcore/inf/x86/INF_VPN23.inf index b537063d..f6c10f95 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN23.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN23.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN23.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN24.inf b/src/bin/hamcore/inf/x86/INF_VPN24.inf index f13526be..35b42fc8 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN24.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN24.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN24.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN25.inf b/src/bin/hamcore/inf/x86/INF_VPN25.inf index dc69d8ff..d3a8feb7 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN25.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN25.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN25.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN26.inf b/src/bin/hamcore/inf/x86/INF_VPN26.inf index ccbfe903..2eea72bf 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN26.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN26.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN26.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN27.inf b/src/bin/hamcore/inf/x86/INF_VPN27.inf index 6df288a7..94a089a3 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN27.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN27.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN27.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN28.inf b/src/bin/hamcore/inf/x86/INF_VPN28.inf index 163de2f9..c06dbf1b 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN28.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN28.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN28.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN29.inf b/src/bin/hamcore/inf/x86/INF_VPN29.inf index 559aef9a..bf5a4251 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN29.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN29.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN29.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN3.inf b/src/bin/hamcore/inf/x86/INF_VPN3.inf index d0c65eef..7c6513df 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN3.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN3.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN3.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN30.inf b/src/bin/hamcore/inf/x86/INF_VPN30.inf index 3324037f..663677f1 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN30.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN30.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN30.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN31.inf b/src/bin/hamcore/inf/x86/INF_VPN31.inf index a3f428d5..3040db7a 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN31.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN31.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN31.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN32.inf b/src/bin/hamcore/inf/x86/INF_VPN32.inf index daa00829..3d79c8a0 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN32.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN32.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN32.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN33.inf b/src/bin/hamcore/inf/x86/INF_VPN33.inf index 1724d88a..44bb181a 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN33.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN33.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN33.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN34.inf b/src/bin/hamcore/inf/x86/INF_VPN34.inf index 0d143398..893188c0 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN34.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN34.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN34.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN35.inf b/src/bin/hamcore/inf/x86/INF_VPN35.inf index 3c2ddcf3..568d21e5 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN35.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN35.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN35.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN36.inf b/src/bin/hamcore/inf/x86/INF_VPN36.inf index 9e4cda63..32915a3a 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN36.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN36.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN36.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN37.inf b/src/bin/hamcore/inf/x86/INF_VPN37.inf index 966a3c2f..67c02420 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN37.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN37.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN37.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN38.inf b/src/bin/hamcore/inf/x86/INF_VPN38.inf index 013adb67..d080114d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN38.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN38.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN38.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN39.inf b/src/bin/hamcore/inf/x86/INF_VPN39.inf index 571c52c0..0bbb28dd 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN39.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN39.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN39.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN4.inf b/src/bin/hamcore/inf/x86/INF_VPN4.inf index 625f11db..c3963001 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN4.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN4.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN4.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN40.inf b/src/bin/hamcore/inf/x86/INF_VPN40.inf index 5b2d701f..1372272d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN40.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN40.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN40.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN41.inf b/src/bin/hamcore/inf/x86/INF_VPN41.inf index 068f1812..6e6a9579 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN41.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN41.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN41.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN42.inf b/src/bin/hamcore/inf/x86/INF_VPN42.inf index c438c6cd..6ffab130 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN42.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN42.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN42.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN43.inf b/src/bin/hamcore/inf/x86/INF_VPN43.inf index c4150946..f2b96c95 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN43.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN43.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN43.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN44.inf b/src/bin/hamcore/inf/x86/INF_VPN44.inf index ef5b7f6e..02dc4981 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN44.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN44.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN44.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN45.inf b/src/bin/hamcore/inf/x86/INF_VPN45.inf index 631fa1ec..229e5787 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN45.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN45.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN45.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN46.inf b/src/bin/hamcore/inf/x86/INF_VPN46.inf index 6af9d1a8..168cd410 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN46.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN46.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN46.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN47.inf b/src/bin/hamcore/inf/x86/INF_VPN47.inf index 5c4f4aa8..1dd564f1 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN47.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN47.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN47.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN48.inf b/src/bin/hamcore/inf/x86/INF_VPN48.inf index e8cb4194..b6d993d7 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN48.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN48.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN48.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN49.inf b/src/bin/hamcore/inf/x86/INF_VPN49.inf index 2b3c11a6..fc6bd47f 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN49.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN49.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN49.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN5.inf b/src/bin/hamcore/inf/x86/INF_VPN5.inf index 0fdf491f..1373ed55 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN5.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN5.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN5.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN50.inf b/src/bin/hamcore/inf/x86/INF_VPN50.inf index 06c69580..220006a0 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN50.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN50.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN50.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN51.inf b/src/bin/hamcore/inf/x86/INF_VPN51.inf index f232f71a..14450334 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN51.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN51.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN51.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN52.inf b/src/bin/hamcore/inf/x86/INF_VPN52.inf index 90d84f30..6dceba57 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN52.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN52.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN52.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN53.inf b/src/bin/hamcore/inf/x86/INF_VPN53.inf index 9c6ff37f..5f1512ab 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN53.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN53.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN53.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN54.inf b/src/bin/hamcore/inf/x86/INF_VPN54.inf index 6deac2e2..31d30329 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN54.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN54.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN54.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN55.inf b/src/bin/hamcore/inf/x86/INF_VPN55.inf index 875310a1..80a58fdf 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN55.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN55.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN55.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN56.inf b/src/bin/hamcore/inf/x86/INF_VPN56.inf index 07641d68..8d01bb0e 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN56.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN56.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN56.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN57.inf b/src/bin/hamcore/inf/x86/INF_VPN57.inf index 5b4c705d..e0abcac4 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN57.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN57.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN57.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN58.inf b/src/bin/hamcore/inf/x86/INF_VPN58.inf index 7e0eca17..26253c35 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN58.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN58.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN58.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN59.inf b/src/bin/hamcore/inf/x86/INF_VPN59.inf index 188e31df..1a2d3ada 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN59.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN59.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN59.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN6.inf b/src/bin/hamcore/inf/x86/INF_VPN6.inf index fa3f9219..88bb4412 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN6.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN6.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN6.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN60.inf b/src/bin/hamcore/inf/x86/INF_VPN60.inf index 9351776f..20fe3e78 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN60.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN60.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN60.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN61.inf b/src/bin/hamcore/inf/x86/INF_VPN61.inf index a1318e9b..05d46ff9 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN61.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN61.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN61.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN62.inf b/src/bin/hamcore/inf/x86/INF_VPN62.inf index 0f918cc2..8f685047 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN62.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN62.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN62.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN63.inf b/src/bin/hamcore/inf/x86/INF_VPN63.inf index 78710d27..66c8641a 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN63.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN63.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN63.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN64.inf b/src/bin/hamcore/inf/x86/INF_VPN64.inf index 98bce2a4..c3ce7f81 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN64.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN64.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN64.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN65.inf b/src/bin/hamcore/inf/x86/INF_VPN65.inf index fb3ab92e..5c9c9755 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN65.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN65.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN65.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN66.inf b/src/bin/hamcore/inf/x86/INF_VPN66.inf index 31998ef6..d6652bee 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN66.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN66.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN66.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN67.inf b/src/bin/hamcore/inf/x86/INF_VPN67.inf index 6adbe0e5..f22e0d2f 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN67.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN67.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN67.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN68.inf b/src/bin/hamcore/inf/x86/INF_VPN68.inf index 71abf1cc..cbfc5ef1 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN68.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN68.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN68.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN69.inf b/src/bin/hamcore/inf/x86/INF_VPN69.inf index 2c5b8c5a..4c6ae08e 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN69.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN69.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN69.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN7.inf b/src/bin/hamcore/inf/x86/INF_VPN7.inf index 74f829ad..3e2bb8f3 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN7.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN7.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN7.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN70.inf b/src/bin/hamcore/inf/x86/INF_VPN70.inf index 68ca8f97..453df13c 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN70.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN70.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN70.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN71.inf b/src/bin/hamcore/inf/x86/INF_VPN71.inf index be19e3be..cba87b74 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN71.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN71.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN71.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN72.inf b/src/bin/hamcore/inf/x86/INF_VPN72.inf index 77accca6..7e4f4474 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN72.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN72.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN72.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN73.inf b/src/bin/hamcore/inf/x86/INF_VPN73.inf index 175a57eb..b42497f8 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN73.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN73.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN73.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN74.inf b/src/bin/hamcore/inf/x86/INF_VPN74.inf index b5773317..c7cafc06 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN74.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN74.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN74.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN75.inf b/src/bin/hamcore/inf/x86/INF_VPN75.inf index 1a1bb5fb..ab1fb1ba 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN75.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN75.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN75.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN76.inf b/src/bin/hamcore/inf/x86/INF_VPN76.inf index 39afbb59..8d818489 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN76.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN76.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN76.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN77.inf b/src/bin/hamcore/inf/x86/INF_VPN77.inf index d3dc0727..3f8c4f9e 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN77.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN77.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN77.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN78.inf b/src/bin/hamcore/inf/x86/INF_VPN78.inf index f2efd4fc..76cd7bee 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN78.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN78.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN78.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN79.inf b/src/bin/hamcore/inf/x86/INF_VPN79.inf index 2478e923..a5968420 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN79.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN79.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN79.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN8.inf b/src/bin/hamcore/inf/x86/INF_VPN8.inf index 4a3cafa1..0db65db1 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN8.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN8.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN8.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN80.inf b/src/bin/hamcore/inf/x86/INF_VPN80.inf index 5209a68d..9f278c60 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN80.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN80.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN80.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN81.inf b/src/bin/hamcore/inf/x86/INF_VPN81.inf index 83668554..d4e8d0fb 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN81.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN81.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN81.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN82.inf b/src/bin/hamcore/inf/x86/INF_VPN82.inf index f380a40f..aec556bf 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN82.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN82.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN82.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN83.inf b/src/bin/hamcore/inf/x86/INF_VPN83.inf index 101eb5ec..5c9cbfeb 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN83.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN83.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN83.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN84.inf b/src/bin/hamcore/inf/x86/INF_VPN84.inf index 05243da1..18ce7d91 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN84.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN84.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN84.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN85.inf b/src/bin/hamcore/inf/x86/INF_VPN85.inf index 315af6ca..31d325e6 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN85.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN85.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN85.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN86.inf b/src/bin/hamcore/inf/x86/INF_VPN86.inf index 3d06d7c5..73765fd9 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN86.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN86.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN86.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN87.inf b/src/bin/hamcore/inf/x86/INF_VPN87.inf index 7a487646..c13940eb 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN87.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN87.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN87.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN88.inf b/src/bin/hamcore/inf/x86/INF_VPN88.inf index a5f43abb..d79eb52e 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN88.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN88.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN88.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN89.inf b/src/bin/hamcore/inf/x86/INF_VPN89.inf index d571b269..dbac77ef 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN89.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN89.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN89.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN9.inf b/src/bin/hamcore/inf/x86/INF_VPN9.inf index c49b4987..993ec28d 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN9.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN9.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN9.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN90.inf b/src/bin/hamcore/inf/x86/INF_VPN90.inf index cb52196d..df6a6bd5 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN90.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN90.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN90.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN91.inf b/src/bin/hamcore/inf/x86/INF_VPN91.inf index 0acbc947..a1039a94 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN91.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN91.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN91.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN92.inf b/src/bin/hamcore/inf/x86/INF_VPN92.inf index ea0d1fe5..80bf4aa5 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN92.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN92.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN92.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN93.inf b/src/bin/hamcore/inf/x86/INF_VPN93.inf index 60c5eb6b..5f9da6d7 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN93.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN93.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN93.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN94.inf b/src/bin/hamcore/inf/x86/INF_VPN94.inf index 1a875e82..ee3a17dd 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN94.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN94.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN94.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN95.inf b/src/bin/hamcore/inf/x86/INF_VPN95.inf index 00146ad1..832b7309 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN95.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN95.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN95.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN96.inf b/src/bin/hamcore/inf/x86/INF_VPN96.inf index b07cb930..7faa40a2 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN96.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN96.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN96.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN97.inf b/src/bin/hamcore/inf/x86/INF_VPN97.inf index 44d5a95a..e8403b59 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN97.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN97.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN97.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN98.inf b/src/bin/hamcore/inf/x86/INF_VPN98.inf index 529851ae..1e3d7414 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN98.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN98.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN98.cat diff --git a/src/bin/hamcore/inf/x86/INF_VPN99.inf b/src/bin/hamcore/inf/x86/INF_VPN99.inf index ade1b1ab..29ca2c8e 100644 --- a/src/bin/hamcore/inf/x86/INF_VPN99.inf +++ b/src/bin/hamcore/inf/x86/INF_VPN99.inf @@ -8,7 +8,7 @@ Signature = "$Windows NT$" Class = Net ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318} Provider = %CompanyName% -DriverVer = 02/17/2014, 4.5.0.9422 +DriverVer = 03/20/2014, 4.6.0.9429 CatalogFile.NT = inf_VPN99.cat diff --git a/src/bin/hamcore/inf/x86/inf.cat b/src/bin/hamcore/inf/x86/inf.cat index 8fe95f50c894bd5c95bb1c23607d7dc63d911944..74c8c7d282e1758e0a9cfe53c5def1082b3378e2 100644 GIT binary patch literal 43113 zcmdU&2UryOw(YwCK|nB|m?b!ffly7xNLJKQR2%~)L{wBj2`WZJ#W)7cj-x0BFrcDi z7#$Os7;_%ejF>YjirH5`{=*#4+;i@^?|!f9``+o(P+e8sO)b}6d+ojd-6N%BMj9G7 zOl_4~Y^F8ROHaxCPD;t_sHfHHOeJH(GL6jj^=g#SNGWMk4UHQaY7Mk0o+jG#l(Zyy zSE5wT(B#jZ<+NIZ3g4{Io_5l;YP%=dzE^9LIoGS2>D(k&owv@z-A(7!T{8dbbiI;S zb&*oEbqqR68lA>n6Ql{$_{m#A^4-5=kEHR`cxl{9Zr<`fFZrxM`M9JBkdJuCcUO(C zeD{?12WVX6dysstzec0cO*krr|MhlyS_54tse|P3)t>6B>Ll0FG%dNc*YwrIYhpD+ zG?AJF`QDtHWb+jQ29>qFA6wO`Vl*jW+2rSD!{aj&&;8z3>igFVmebSIg-RXkwAGB3 z|BOKSk8+nU!B_rsTr`gIA08+__LjGF@-0BV0QULIM?K{&Nxu2ZcQ^UZ_m|K2F1gG= z%~(A>JsEp}kf;1a7x~7E2FRxfoH!MfJmfvT@|$q=VCg3R^p=0R$$Q;pR6$rg0y%d@ z5HhM{vuW;&1x8WXZL9dsZylx$*p#R)Lf`{?Tx2}l<-4B@GAscrPZ>2|8HXVGr-ytO zoN<-Ua4k9NDnH9hz6Z!Zb@DzXIAmn|qTYAA23Uw|nQB|qI{JObtIAo+-g{2MNL$Y;3yNn>C6ImDN{e9XJ#6(F~#A_$qzNNehs7gX@B zZ&XA(_YFNeF5cEfU4;DPtM-(y*k8V(Io|Rk5mNy&FTCVOM3T3BR*;N`r@Vy%!Kgs_ z<|Z=?Y}lhy2BCeUPb^z>uxGVl!O!iNdSu@z6CbV~LdX}90*l<`Yvwmx0TWmu$;aGe zu1NBJ7>4@jWIW&)SV<*kakgJcq$v?)6Lp)$fczVj$ZljcbR6XdQ&^;v&xBdMP;qbh25Uf!^GT7!Cx~)f8Kt)H zJUX}Ot57rd1#7#_@oKr^=&psG)ImL%v!!`C4I!pZrLY?;LTFw}>&}dwAq0 z-%u!22yF_Kx7|xna#4gsRcyb@oA5)QzP6eL=dAafefIoT*EBT|LVJi4u9b|1^FeFy zfW#O1-b4N!B>zU6QEXTFCu{;Mq2pfiQKdLkBj@Iu`G;$NoN{UQ)rYs2nC`6ny{a7Y zm9O1X#)$aBUJCuiAK{0<180a!B7>ndB^8F0?B}frhiVkpJz+HGh1K$~ z!5LrbZEIex{fX*oa>!4#I6Z^Ib;5X^u_E;1eh8#qQbbCvf7%4fkP z93%RzL@ulOYIaU$#a~vv_B>ZG_;5nAN2XVns)rEO25ca{P$Qy+eJBzh01c^5+L7jgD^<+M^JLuB)EeTkp=zb^U-ReP?;#J zZ*Beik~KeG-a5fHXX2xqv&W?Gd#ENt-~n5x<*6RfY0*t1ql)n^_UmFs4#3n7UTK~N|H4(xa!VbEu zFi7--=&8aWdK_Nz4Ge|;fD<{4YJ=ZIBaFgP1}cJ(bM?e0w(p8O22EY!IHg{Td(F=6 z$yN^`;f(2mdC1pH@0os>=#&Z6h&B8WdM@f#>I`z4&@Xa6YK;$2#xc4UEPRzUv0dV0 zY336BVOOl}qkFwq6CqFe`ssWKmrR}q3%WmO4lV!{f=vP=`~aP4kQDVieMf3K&Q~JJ zJWY=Jk2*f!)AGsvk1t*woZ6|~n@?&YL`LF@g+>ddA*Yl5#S8>JBA!rk91#5BH?Bzd zD3qOEwwoddc@?#_aTwfg|Knv5Pd8oJRCl>)g(5W(5f+_e$u9?mU zKdHE=@5%3IvcLoF!Vlq}L>~!Pu0)i1pAS6Lykg{(uHj)hjUp?pNLpq4hnfh%7%>YH zT~>Olct5hbm>}{KRK$EtbX$c3XCKUhYj95)$JqFErOSQVEp#?3j0`LH<#CnXXTq}7 zM2P+vv4o?>^H669h2g64)AWCYCgH8A_wfNlr0BHa$c4fy!=Yx8(S>6Qyu&86-+!x7 z{GhwF^+p{~6CwCRT}pM2P)3JZSo~6O zZPm#!Ha7DxqnuPQBPdW5ek3*ujBf9upJG~!N1w7Dfu)$MPyTP5H zl5JRq2LeBMhg%~1DKoeCvCP|YtjwER##2MjzU}T*;YR89PQ>D=CX<)w86c5bYQHbXYXIq z=5_i|Ewg9u)@mZee1lkGCI&OmVWx#l8u5#wOI=#~ljYHAy3}Iz41A*2CGRQ2A;0t^ zGYhqM?PecHd@{(Ws#W5#rWe&ji1{+^u(T)7+6LHxG7~*i^i*x=6z&L>rcwbbxQ9Q& zBjBx-;ZVTvx^AX(CtWd~f8Yt&*O zL_dHU1q3+@l<0pb(;o^BUM{cp~%&wP8kt?-p}dG2wt|cqh>h!CzAMqU?T(MA^3o;zH|0 z^&M*FW3HF;W6GX}mKUz6hY*S*DhCuBE{N4rFo=9kd{M=d$H-hn6uyz)M4G7i#bg$) zDG_BMei!4sTD}_gUG}kUciY?@u>W?&JT(!bIu)@)CMRM*4QGh{uwn-H$cj$l3ja*x zp(&}-f( zBQ+5c9Ydl7t>JpvMqfncBKE{1sth6x1xJa5F2OA^VIw}3K&Xqyn`6`7?9Z9I;e%Dv zq5HP|G0@FUU4+nPTpwx#LMRP+pR6XBhMTogPybxKGY+y4pdQWybwne z;n3Ql6KuK}zcTxLdcjNg`$HP+&9AE_LafUpQ^5z}`iLJU&eXGXtm)+oza!QZq0qQ) z)CiQok8@CSB@pU*GiXizW9z;Sl`mXv^Gy@?Ax|o+*vW@4I6@+Xm=d0vEj%I$#F~6` zn>hzefpJ6}-B+d|aEab5eIjK#`Q3c>^;t4p^JwcS8;A7+`(E4`JGHl(9HMJMb|QO& z13DwrTC9sDf8mhm9*MOK#8m0ZKGB0jhfr&U5Xx}1trGkuvv!rThxATJ%U#|LY@sGX zbUDBX7KxrAJz3$V$@645xCCloCf1$N6QYZTuH&>}A!jKOWxey8JjfhhC4BGn-S20Q z8C!L6bJGp#AtYw0Z~(0qD}!*!qE>|~VxmYK38zH#(G39;I4AO*nAa-9p~!9n^dfcz z4AHfJd)VjRA32t$mt)mLh-!iOf&)Yt^%t5$j$*Y3IgE;n2^q0QHWSE+x=qw`!T~6g z?fd&RTGMK4gMGg*Yw0uFK{u>(Tw4`8Xk;)k7lb9`bKuePkPvC!o2zlcNTMM`iep=i|2B`aUftT5+bzrOK1`uIlW{iYs= z=)m)@k7x9hZ(su#=#rt^9HDO{Fd~*p>oS~>P%3Z}J#1xiSz`2^5mwiKtamf6T+Nw7 z_l$lTRP=+I2ni;D0~I~~M(hzE7mG7XGqLVXL3jLtmvCcF1ed@NRYJKyh?iJh7;OLdIsoBl=|UhU%5rVU+{>!3a$UBO(ut5?vF{7CnAtJazJypu6uneX%+_ z`OU^z7i#{ouf_RgY9fTb;{I?tL=fE|G>83SCQtk@8={jB&(JKY4l!RWt?R)~84gWc zIPkc`vxwz|%NpMpu`REWlWAswnh4=!&=Ju`6n!$fjJQMM28MtOh*1Bd*5VOWn$RSw z6s91`aA?xR?H4MY+Vg$g;spEh>-;huQ&v7v6Cu=>x(vOh{t`V{a=wT&>I}M#s0}d( zYIsEENBC-?(8L@)B_(udip{)&XE`}9-Z-tiQQO(%anhlERn$d@2%=NZ42U{R^g8Ht z(6`1rGBYFBgCS?pKLaI{o16z`;%r3_YJ7Tdg}kAYf6cP|TyN*^WghCi?V%<@;`^D% z*>uRj0S6#D(p3AX5y*&2o(w0vkH~85r5A!vQmT_bb@!{ovE%bsW<7H_f8bNQvnTha ztJuj$Us?M@CPQE7qKWw{z8QVOSu^*bszsH-50qe=`0Nmwjpw3CN^oeFMa;T2*_-r# z-ZG$$QQ-^CcfRW!)#Q-qeNdUQvP^XEVT@QC#599kkLD1G?4{d5?}+S%OCZxT83J7; z5Src6tA1vsgY(0BKR#VO%4}26dG|FcAym(xqnNK!LBI`aFuI6bJN}T$U1WATBB(ce z@dn_7qvkl(87d9yKuRp&E5SRMD`6|GuzrJpeZ!`>(x=C(d?I|zS z)7LALo^Jhr`OSv2yBvL4cIlji42Mu>(SOB9 z!V*z+5N~({P~=%ep72!67nNIiK6{o&$AgwntmbuTFs#+3w?+&5=c%~zoNUE)f(?F} z>lXc2@;dkke~4zG%K{~|9S(38>qqGJD>a>-o8<5%+1onHCC4IvSlcdBre^!7IGqLq zA^G-G(>id&@dv&gYJL5v@w(wE6j`YP{cdVE6bP+ZOirzu)Zr`-(|wA_P;!q=!r;;*0Ma zBEN$IY@t45Ed*GSmzd0o{7=<^(0?<3)+f)=u(WxNoeNimQf+ zEwNgNyk6Q55%WW?8Z1Bwgoq^~3$D>oqmD(#h&OnLb}50-kJ63PMFZ2k0vabCnO~zp z!n`HB-l)kTv670e2hk!r(5MlUd(lNgW5j37MO`A$fo)<11il-^hJlJ8^f}_a-4Oq3 z<@RB>H3oo3=hs0m#Tvb^wyLS;mC#<~U&5Xz1Vr>jPFf)^5aXoZ_$YsK96I1jWaY3wjCF=`EKpjWz z!6X)ir*akB=(iFGrTg0^9DCivs;OuBg}u@*wLWm9b#wKij4UKNWTG=ot{1C4sl3Ge zhwMguLcW4gXcF}+T8(1@Ay|d3D}m5Td$Z^5yWQ!3X2Y0@&k`$Cw?0xoUQL8h7&5z9 zX$C^nXkxO6Hj$ykXMxabp-5;u{YARA;E5N<6)5xRg*C~0t=pIVIrn4sigjfs>Saf+ zn7v(Hgy2AF#V(wns9LGcP$|4K*^RS^B(c7a3er0rM&5^4YvgYN*e0G}_ z-F&I{vQ6ifsJQYRM5w&rk@)l&XrR49ZN!>Rw1}z#U(HQqHnf{gE_#GtM75QOvaCkQ zsR=Xl&BDgGx4&_5%2S)xRd=Y#A^!EL=1V{I3JPR#)LT>>sE_D$kkw%m`i##+gE%U3 zA=zIMgys(D+v4oD`n~JeRlTyzXwJd=n_sAjkm$;T3)hL#pv+u3o`~w5I+fWh%1lP1 z11nSrkBKJ1L|nKs2yICEG-~LEgZ?A$F0TIWWWy(~OqN$v6Col>tP>_mxMK0?XCeoW z4O7H)RrqRh99zs@VH(bnGFtTYmEh3EycIiMEnRQ*PJ1OWZ$LF5fcp2X+>jDZrDVuq3Pg6mZug&vBgY{cvGsQpFPtd>O+3(t#>AT z?zp2@)K9Zko>sA=Pqjhk3*SSQBFf0=ctWaHTn>C9e+lo*)CdPo-lwuB&w(EtQ$~k2 z`+U6d>U@WQ4+$5Kw2!O%_(_WgD*jg~-~lx!UPnw;=_A4%Rukj1>5hnrk*Lb(qLIm{ zP?(T_5KbHQR%Ye-Pd%g0-dNtc*^_bWcDD{m$e-E#sfs#8)R3`o(o`Q*4k$P5VAg{= z5o=_5QDN{He!)AKCsd05B-*5e4(;$Pw2#l*=eoYm73=(pK3|SLxv)Sz9U_KMYWneF z-a~F9my7SGM1gRVte9mkgbLvuagt~{K7g16XDTx#5ZY-o{ktKD)(2Q6xBN9SG|a1; zd&CrV5yJBjW#o07Au~d75!DEq!#=TkPk2V~6#7Np$480v*2>IYcaDsnW7qxdk#lxo zA!Da*_DLMocdVKSF)tLIRPwr5QzfQAs1JDy28r3e=qBQk#2kbyFTNjyOa{l4;LskY zv5R^~xjgD+a5(CRcdPX0c)a{oJ%p$q@Ia!M%GypCg(l;C;Fjp{Gy7m4yb`@wY7*Qu zbuB(yOiYwO=zzcX+@mvAREw!mWyO&wzvPVIUni=I5GqTS$2o%yiYq1_sIusei5eeA zfEVI?@|f`5cy81lWl{v83$JSLUa(=hW$VvPZ}xjX-Ae1ZO-+PQ8Btx3<%#e< z%)||DhsW$EL*cPG3SuAxTg3Mxiy`WGyloSYOrZ_JXzo`*gz zRu>^$54F5lEk)-LWhQpWXzUf8S}?;MFsm19K}9tJnz$mOPl+hYYkV+0|IPuc=~{c= zol~D{KVKNvPfdixw4P26(L+~ARPJJ(6EKF6R1FY|Pt~;n3l$ z<%YQ=YMP`bboGdJIDfW$pyM$$5fU{yH3zGNa5>@=9?XTPM{$EdWkyWvze5M6@0jF z(FdTBJQ&fzUC%(KCMTo9f!Fxc-`u{<{XJTl7_NZ9Y{P z)hhKll^9(P7)16WhC~OAS{8IfH7ooRd&p*DCX0(=CZGgDC*qs0zF6x@%I-0Ny<9I8 z_2^ZwM8*FW9!dj$Sc}MAQz6cvq6Iq_PzDvhvQ~F^c=gUg6;0=Z8O#65PAYe!UJ*LR9y5xSa&75 z&|=L4C=h!%NAX!ADqV6Ll^JeRnR(ew%k!)BK4zQh4_Mc>)ssxi57&ZK{I)N;s$?h> z2bE#<2lZL$v=EKr%EcNOG@BepY>AmHZkjj*C7iet9J-k^+F{*{{F#m|>Wm*zVo+X+pL2@gHRrP6xi|##3r~Y z!J#|le(J72qGG!@JC?rjt1$m_k&p8wH4&nwAd1jvv0_TBAEN4FOXxItj#?iFgaaUh ziBEFyY$BBkM49f#(=XMozgoH>D)U)FO8m~dRabo8tKxTAiPgVcH690dOg~7hX@nbS zjF>!A%i@6O3(?g_p~Y$}{381~R|yV1i{E?jU16%vg>H>)7xx={erfXJ3+izQG*D+^ zhbW&;T0*>_Lhy-IRpcu?x0uV)Jwvrw`9YkC`8ChRdvi8=rUZvxPV)KUxp%^? z%Lm#uwW*o-rv8*V<&Ursp*qwfRQV{7=qpm8;-cY<@Y8%c4b@U+ zbxe`%x~%+r_3b620d75-mmeSU@t#_%W8}|FGq0cvCMNgjkEp>w3V(=pg9{lRhh3`T zFbICpv1M8&y4vFNW&b~aX8LUn*Ev(3=jWXcY_@3WhTfNJwTx&im3(Fzr0AKU!T4ix zyO_UHRfxVLD8dw1`51c6bd6(To`@5t`lTPK%qQ{Qb_ojJT*kOshHF%d6&BT6K0gpW zUCn4CS8=_pNW>MPzErMa@+?+VfuM*wu`*BiN4g>OC2`fF%2j5S%zK+z$?m5TJ;OYG zjGEs*?{slXzy~!E5;=^%2XRFvXDy?cl))(Bc&KZs;OJ|Mek=-3#EF?JXHw59q1Ydy zzbQK3y8ELKC(kw34j9+s#<9(f)IcabrQ$>>MgN(6?~<;sr`6M|FmB%C4`YtB>-MP4 z(h(O7KQ@uf42>J6wn{BF(`w6<(MS_!=u9PJL;cPMh8B9=eRWkN3m%lUDAy%2J|QwL z#@au8Xr!*PREgb27N!A-aec#MhDQw<5~(XMznZ+)#KJIiVEBlHNL_8ICOb?mDvKS~ z{*iGBQT?ML!V{umV{}$hZ4T>OSpIo9G%8wtm+ zRn1%^or|mF;_B}0?%iGL_0=ESxl`%enOIcrloTBvlMoqU?H?OAG&WAWog_Jlx3mB2 zFmGtxsq`H?MaB(}iinJt-`d*Ix}}S(Qnp_Mq%EV-Ptlgw$ooz7QnXsl){WbOL)$E> zRmtRvUD90JE)8R^@2Z#QA3yleey5P`A1WUjKFeQg=f8brL158?ouhLTPS{@FK3}6( z{O!~I+jjqRIZhYtvuGeYp`q#k@ zWkv?Bah`VS{*wEjXBKp6(dD#k{B~kqstJ zKGdgj-m&9NDqlS?q0q`K;bxlchWz3W31jT<6}PTAeqHWz$L#5k*4|rhZ#g!+c=51` zdkaEVwz=E${ay2Q4lCA2TA#nN@WHV$YudF6_)@(fz$nf1^1w;SJqL~K7kIKy(74cp z7Gn-4y*Pewn4Z2?qs^G`UYbx`@=saY+`!VHa_^tMhw>f8YYs>a%IO=1;sM=lHW=2+fnB>#fZeh&P zqn?8%+LWE;`{>4RU0T#05j>@#rD3nNUW05aWpt=Maoi3m#h|_%@fAeGn;OWHrqMdL zyXD^FZ-1=R<*V@V3oN}#6N?Hhhs5>`AJQpmK#X8q3fJXjL9I>}AvDgsxITb=h;52X(O<2SaK?8MvD`RZ-_WBWz&#|f4ApM`2p z`^xt#?7LhqZiC07=biTZP3qP4?DYB{{exo1)ei_UP3)<;+|(psx%Hsc#euCo`((tl zsPsPi{f?mAK^eQs+1JAT)&1_^}aa_X>r*39td(E?bzxK(89^u1t11_B?H_kcQ zFnLvi&z_xDMNKZphg!Y*I#mD8cC`HOafULBa4s8jWyiAV`=2(yoSV?|M6y+;bI2&E zC5NpIe5B@5Q$quJQzNw9+#}&eroZ-!QF$Z zoOGx@S8hy%I zxbU}q;Yp@p$J?e3zx#)O8`}lX4mI*WxZ=vd?X!H^Kb!2eyW-)xFZ*>Ztl|>euFJ~o zsjKxaH>`8A&8-^|7pqQl3ER?ZN%zbj>xYe&lL;?nOq;q8a;s+ty`9lbZ(XM%m_k zlkIeL=;3|sCe|za!St7`_Djm%s!%^}{YfDtDcUYFQk|r71YJpr){`p`OCH&gM*o}i zYLqO+m!@9X3=EJWrG}-CWiwFc&-hP>cP#M(BjTOn|8#RDroi*BbM;ai{o~y5sBovh zo$8zrAMY3u?l{23DIzjX)~OPuahF^rUAl9+3ZxmZC=ce8D z^b7O#*Qd6#Td~wfzt)XYx08Og8EANQhl~8(F+~pbB3$nT_lq{Wmpj0`xXfzzA!DXl z9(kDad(Oif)<=ewKe-^``i>qqfAO^PA9-)&PbcdeSZAz%(I#(dgSqC(XDfcZ(PMZ_ z`(EaOLB26&TON5W-P-u7@vsUXYb9+@9=$QD=+m+tG-ria`)D{Vvs1y)X%a^tr9X- zsiMtwFV7{D>r`m;`|A3;`;SbV^>?9Cz+jZtA|8^btC!9TPvb6^CZ2yjlqRHpB~GnF zN-a}a3!~t^;c?-Eqe}M}Sr~=JCk{^R8?LJ=RY9RlEX+H__D={*7$}QS8>co-I@x$~ zz|^8z$H@4|@VJP9*5NVztOFv4M-GV{8XXyvQ2Jc`zd!ds3fRW-siU$6R?Zu`D{bQY z8rD>IjUGxb8R26@L%S~To2=#Blv%iDJvZL3;-Lp}Gij&o+m z{_u;H*HcaQ2II%uJ8W5f-m`eB)$u#^7G7KFz1`*Z-Oz0d*4bP+HP>zH&Wu^Er;pEi zSTroRS)1CoUM)PlAa1h7pcA!UWv{K2|4ZDjb1QfywKgm~H@(u;;JtTKip!>WJgM(H zW^~!My{E7E`G{BkpkCF+XD?el;_}NL23tGmraft#v!P#luN5YLWE|ghre;Qg@$;0^ z3m(e^Rf1X$=2` zdZngqZe-ZWx2$o~2Ob{Zc{GllrfYov+}Yn}n`VZ5yg2;q63bmFvG1H;EZx;)OhCAg zsmGXWfyIxX?>slH_+j|fC%x`I-S}|uoZR2y7uff&H0we}+SHM|izk)!YB2ewHho&* zu7X#o!$$@Ag)Q%Gl>f)%!f(&y6up{K>wcx%rpNc3)Al^!bTa#3rODS?WNprQH10|6 z`nS(3Jc~JW`rFibwhv;G?LLg0wxvwH6=%O}sh#dNqpQ=_+@J%gFFt&5-6 z?`~Xs@Yv_~>=z?fb#T1YGAp57!MOJOJR+J64PIm#cy?tk2h$E=)xPz$FkSYj*7C(x z72a&^<*_w6Nm`X;XkOzF(`vdDgGRD~+3RVw(f|c&AH9Dih{lFx8ky_s)hMG$pD;tJ z_E(q3SYK!QC$CdHO|(+2uf7%2RA(+HbdwU&r+DgVt4MYK@jL^aT-rBrZ*Saoep=`V zXV-G~dzXFDB!8Zj>d3@_X-XVeY4}m0XO^Uc4rokH)vn=_Q3OVYbCx8p0nrHx2+r1 zSbgi48!g*p75?gy>Aj<=+nNOhp~GyhUeJs(tn{f#e7#|H+f3SQzP0Fl+KA8nyI=6M zx6H1o*KU1zzlTN%%??hsah*S=?yL4ke@&ij_pJX9FLy`$6mRJ3b8+a5y)v|rFN=t!lzseM+a=$T3>dPe`i+EACGeJjgT5tNBj+IH(z_%FWy zEB5sKFXZ{NUuXn*N}GqqWpw4`jOZr0>b!Lx?ru7{JNI|;w0S-|prL28hD}GDztJK5 zy3=Qm*T4S@I`nCgdQUIWYMfbQ#Y=sXGH>^O=sYSoY!7g2#t-t-8nkzR&Z8!}>N|m2NdI^X9?Ow{FH$Ef$U)v?aQ5d7Wc1 zTjrUsh`(OV>f>1N21W;(T^m+rmxa;mF?s{b7C(D`VBxz%JKp|q{rS%N^}GHMUVF>W zXPzt!pJ{UDTIZx4x2vqR@3Fq)(V;JzH$S&Hru~Gj2~TVJgc?@3v)ImYVyyjzCUe)F zUv<(;H?XP2xNT3~%?LT@|AASQH_P)){6GzUb*h$5n30EIRuL_{1Fb50n?G%Ds%(NWA} z9u>?v=ZK2o)}L2)*txrR?{|M+)%Jqj)zv^9&U2pgocC=;N?H?TVqP<)aY}Act*JqJ z(wg>C(wa5~TCL7fGB+`AXBWJ$yPzR)tPC$p5NtQj*rusEwrI z79ih(HEtR&jl0HA<163ul<(^_{u&RBkNi1M{`ar@?(!KP@;SWHPd?8_{v0TO4$^pQ zG#cI5Gg6PgzMX-AuC3I@zPV}$kZ*KB=e1>bfd}Q2Z z2I%sU0^dMI5HgtLS4paMU~BKk9cMJD9MZa81%t0@A_SLxWh6Z04@t%ZzVO*wJ`NJz z@^OAOe)0!=@s^MB92kNsRRC_j@>#)(AY}BZXLt9l-fzPCKY18d{Y$aRv*zDa6CrBI zC%?w1b|3kwgJm4h1W@sl(LgEC1F8sC`R5pp<5Hk72CB?A*O*_-HQlWVlRvhc!(6oV?2*DA5`ReIW9`g12SDssJ~ztA2<1xN+4ufzKv1N&AJngE&uKF>}A_5EH=J%Ruds{{hl&1 zQa)4A9s0OVW(BpzQP>eEBS4#=bD=oYqOXh`?toqlt2`A!$f8yUZSUx1BOBU&tLNs~ z(9Q8PLU96R)Tk@CgDNv$pj4<6z8a14mv7$k4Q?^T!apBn5E`f1SG8+gQPT>k#nvtO zV`uyZ`&2a%qBg(-m1YtPlo9ZfuNy^X7Ujz6V$87kN!Y^_!aUCzOdjL{%xKE^A-hYt zW3SI~8s2i!=b;X7w#{8<6dkD^LZlZc4?ZVAzFLr=o{h;^uMQ+a>vT|Vj(MAV~s)-OT8eD|t2pyth;i>)Q<8*ZT9LI14 z=ueQ$7g$8afg4T%7P%>cP?ZMD!oqBpJpILV+QO+X`Zk?E&@o9(giu{N5vqdT(A}vr z5;3k_xFc9b*Q2KJNoW#I6Rwe;pzYME5*(^pr1Qwhy?)BJ$!IYuJ*(KqL47*Jsfm!7 zB+wB05h)N@aN}QU40eGSyprTIz=Z?=CeicpLp;kgrvyUPFGiM$${vz^tK?5hOePF| z(CO6t<7y%VDh2v0>V|m(b*8V0Bvy2J;T@UhQEzY&X+Cos&YKBE3506&u&%oH@uaG6 zT2DG+abxnI%`@*cQxhQ+h$kC~RdjLt^&ffkxhCltv) zxh<|i3505Gp46x2@&0RdQ%g>Ncz%3*m95V&sfiFw!5yM5@CI!mD+3R)A_h+6AE*sI zi_V2U;~a6BbT={aE0Zxgk1-p5sddK^zt22(*|B*01^d1Q4N?;!Sb^K2Zs=GjE;$jM z300=2i7qeJgbMsKjuFKItzh|;0wbzOtfS$Z3lyE65AS#_*$2}r^PMuYy=#wwpJ&AR##QO=(Zjl?wRNwd zPa@Pqh=~jiiGBn|Fa;io^&jDrn7G7wAVMyJHVK`AJ$NKIsEi+yMrXeK_3?qI&O;MN z_wt{*)dH(84x-XTYAw7Z9*De*E=GsPSK^L1PX3B3606oqttjf!#->)i z^swP+>wQky2bUP0j_Ii4iXt-y{6VR?LbR9c9<-QO#dM11;2K#OL#voZxR0~unF3!a zDbmZ_GtE}6w@TeVcjfGw_pYwHT{c|XT1^h2GIT34G;(OFi0;JH3XAA!V&Z2F2tG06 z;-N+7;|z|{1(lgxz05tk9cgvHgz@6bTdljy|FwJTul?0U2#3Q|M!lf81-S;RK4^~c zh~#56Bq`&EyhiPO@TAG`5&pI8{C;`(<@aURBfQi^hzW~sO`3tP z7WpEoL+!yPu?iw|h|gkmmaKz1WPJ^!M6RZUWAu*m8}&Z*&e?C9?49l;+FX5`zIKC} z2ywmOf)-O>A~W-nD+w<|Psa^XQA{8rGXfbDh%PVia+iqcaQo_d=>O- z;QR8g=RMLkSfnOGVrIw7;BG`7j~;QoA~{35VF}7C)`$dJI7{KSMS_IRD}j*jl86so zZyrB+d$Yyu4fO*5sAn^*shS9}BY`fDo5uU0)MBQGM@$j7i7^y)}VrGR; z_-S|s+u)cob6M>{gYrIE7t78GNgUJAyVB~B&raM|6Cr8{X0ZB&j~1%KF|qrDE{9iy zYaj@#1U{T8`WTJ?ub|9aR>yGN*q)sX0~W@gsPnaWxuEM&vp=ef5R4I5O0~fXn8Sod zmx5nZ9s51RUL*QFRVmT{oFyx>tV=7CQ`dQYJ-Yg-i8YP&d7WyFcAl^%^RT~~2r-2T ze^)%RqK5;%8#W8e?e@r ziIiIz4h3vBdNY0fED~D(?^(2&+bwsfvm{f?_mR<%r z%=zSwOtPe~a10!knOpjzyMTuSWRKIq%qbB@*2L~aMes)wW%M$qZm<$?bZwI;j(`Ls~2g5(Xw z<~$`3YF??I|8b)nizEA6WmR!Mczx#stNm&sgeLQ@6*5=B8Sa6Y*cntXx3c;HYPfAN zli(82D&e(BK$PK7tJ1ob#Y*(k4=Pinj5cS+=F^L&jZhaMCI>O!i~Srhr(o_7`-;dp z#F``O1Wv+3lf#Prpr{$RD#4*v%Lfg9up#8avTj;~8;P426?vN(tR6xjK?RWsQBSyK zy1n29l_T5_b3bm02?XB_bA+#^4hu9)nO+vsDzIFvpM5WRFQ6?og)VA2cm6GM=m-)5h=n zb|d=qWfk8&#nlVl!8yVux|Qha=nxKw{nN~2ct!SBpagc@!iQhLmVx~I20smURxFp+f=KH!Brf=41@!z1A%#Y~Uegj1xB z=(sWnb^2}0`>Z!T-o<_CH1^($6(3h^9XMG{gisn(g)0<1V)hdIg9M}C2TUOiqT7Lo zNNv#{(nsbH)La=I>fCaA@|n-$^*y(r+^@U2!7D1ND&JhqnO^QGAfKr zjcNlAJ{P>>4o8XhP;n&ItPd$sWnEfV+&MRKr9RZx<7Lax3*pXVdY4rbA*OOx!>AUK zkBN6k3H9MUus9|m$?Vm7ZN{+qO;% z)k8?^4PvIJdvV3o5Sa%$%yD+TFq6O$I+}QgA~=a1Mq-~DXE56-!J+Q;u9|EeIiliEiFZchp2YeZ7~-OoNk1aj zEt8t!_ZUeRi}solV4j^V#=@2h5&v0}=aA=wzciTMM@ zu;K%wxKBO=Vt6O=BIY>3ER;&5A;L{5p+m7ptEN>ASbf=c?W%R#42DHspSwxLcX3i< z?B5i7gYeFHYLPpm;&>d=dpbXAPI3mGbT~MKZ^9eEI;D14B{=x4Flm0XyIF?*s%QLu z$MF_ZRor0(Lf}G&A}69liR_T>M3sq^F=kb9F1ihu@KL-H^#NDW^OWFFf;6I1*(c*} zm8kBL;8kvKsKMFpRn)68xKXfbiZXNcU<5bV%gFS>Ov+v%Rx?Cm#ydJdMC?2gJJ{Uw zS)~L*dZ&lI$}Jh6+GEDNPdlGW4)3ofyipe+ltrv5Gk1ujh;BtcqqB)=M65znW#WA? zD3jRx3G?6|#}z@S;koEWVTXRMn0#Q8=e*r*HWsU-V)_9dqL<-uaEknkqA+{GB-VsP zn#hz!$HP-nmpsNlvQq6d#T zt0qEVLq~@bFbZ|SC4n4|#QR#szBCxdeg1Iuf8(y zWA4SHxra^`S+5>KB&y^(AVgnBk;E=wd?LK!MjeTK8Z_Y<7_yHD4}fNqzM)r2Ae1!u zmq|r`Pk+`cW=Ue!so2pi49+C0ixBD~)>OGlJRzx}*z3R%t{msc-bIn0k(9t9944=T zJxuz_yqi4fn9g-l^INSxCfnX^`Eu{*8oM)8d^b5)PY0*Z!w0%J)h7BCyIaXVV47Hu z#vO`8glBjyT@bfOC-01CAvKz}ZBv=5NfzZlzssx`bxKVR(Vtl3AseE5lkZ6B3l%bKlzZ@%THGm-jQlk0-;H^RXdh>kkPYanUbM5KaP#_ zFK)eCO@!!7Or`X2v95#9VTvbtW}=59A{h}5h$^J!nAy;Ao)xLTGWpPyc5C}R4<7g` z{khMqs78&=dj0uMML$IUX1<_mm`_PDNEgvyk=iq(GLeA^>O|LqJt(x;S50;zzKSvk zP3=&-^!5vPZr926m^k^v$DNgY-;Y<5LtHQY9GzvIOzeN5V(^Y)4MX^BCVH|)x*ENV z351jcpTKe0s6>@b?X~E7<=49}$60&TDpG&1=jx$FE~`JyblwJ;1YF+zANJx=XTF@a@jq+tIyJ~_jzZM!$0mjt74K*-3T{L4v(9r zw~KlMGttXXa@-IZnn>7~+DNUL(ZuA>V`UuUJpHKjh_NHiKMr-Ny)s~kvG-3CjMU^1 zN<`+tzC|&Ch?#?m5`Pa>u!>2aN@9j%%}gA{Y4f+@1ml$XTYB?eFMFO9yHLCR>6#6H z-U#3QXveA>Y9hq-QD@AmV(k#;!@R-tL3N20d$@(_(7%MDv%-OjkpEj$6^NS=}wN&D~z9hY-7~xLU58tEGlmi)TfVTB5_F&IKKv zqvEgSqFQu5W)(0*v6R`Rx4iqX?0R3O+@F}|`~Jp`at2i|$1YV9A#!Trfj|g{jHiYf z^mC!wOs?!HA`PK`fd!R_3rD-bht99edxKVZUdXQWU_jPbefjM!pS~Sl5PW~Rnh0^# z>~G~N;R>t~y_?*JoQ(B)@pomwplOZ!!O zat8EltKvI>nKnp=@Ivf2XG){S#5Bqb#{5cBi)u5K;Iugp#iG7I2HuJ3P6?%6d%|f~ z#HWxg6hC4clkM-BXx!k zqMw195(sT7mhd;eCm7MJhY!luEQjz(Tv)I*4?BEz7=gN;bjnDIr9M%AG>I74PL zkxdH?;&r$wZe(b5e8G_i+Mr+#0r;(8g(5Uci}faVB~3?ry0 zR2W>~6&;-nmPrFdh4U6##Tk4BB@o)-drg}AQ{NZC4ej0Peq2&|uZ=cKO%5?XpfpVF zB29xq;$56LXR&L6b!Sq2>JXHuMyd-3g-U@V(~A-a?Tqhm!T7R?lz(=rkQ3Ownkvd=TSIkzgyc<9v5f<8Gs?rZ&0T zKl}9IA(tOsN%nZ4CPH*D<_=tun8R3WrpiD`tY(k|p*CbicmmurKAcyg)>NNhml7P> zlM)%S-MVk;y{lvLzU|kf#~0AoIs4~ z;&n_U%1j;miht^Se5zN~TPKfCFfZ3O@7;(~D*pW;5+RftuSh0@A0#1TrBJM_((AZS zPKFl2HfoLJQS7}!$#F%jcPPQ3gT7mb_o;uVNAcv|sg8BK4S3kFsfsBq2;qI0%TOd# zhxtLMF!du=HsA;SivA_0eUcK`!*q+z^Nccn=%D|wbgxcEQ4U*MYfC3&9^KV$Y`l6^ z23M#T91VF`!McUOgFFqshzWy^&#DnCWh5e^1Cnv`YN}P4zomDm)#uRS)|yfkI_KCw z*;J=mYJ-i%)I~_VvzO_#U?sX>jf{DMSwp<9LFhG_19E7$=w_t;Vk%LlmmO*!X!9(l zOQ({5%-xxHr1ZB@cQ&_I6Cr8@=758kP?_Sz3I`a#BIeox*G(k~FMu1MD$ym5F_9>t zLx)40Huu@Hf6VRUG52kJlACzd^=Y9dLZTC)Ep#+oAAL>a_RO(7rcbfDD0GK&@Q7lM zBbA4X!XYR#+aKMV;Hv*LrgMp}ZNqlycbM&a__Cjx2$8Ld>0F>hMkdyy(HZ(0IxODT zAoiz;cPro->Gvd!H~@I2j1C=JXP@AF&!t-Z4!?$lmC9VYd2Lx0|E4Dugr^ogo}OOd zh(Msg=}wP+@CWl}U z-5#$jR-%RO(*Mz9`WzV~*wFbnOZXq|qteW-oTF4PJF$Fp#;aPUi{jpAH*aRswAq~l z?^W$(tZ0z=(6i86rdPT-6(y#4G9u;?k(mjHgo3l~fltJ5!YeRRLa9#{Et!>a)4SWm zS>>J2Ti%Xdy)Y?6O%5@eq9|0A*iDUZ1|PA@Q_S~b7mS!L&}cdw(+9~b2^*adomT>( z)4pG)FL4|c9(612>8b7&%57NuN3MDZv95}i;DDGbxN7Enn1Y*T>H-Dv&O5xLaNSg& zSYKneHD|MStIRv_&IivPTF%(PveAZ??Y2h61^luLxzdou+Y@h;&AEEE$(fa& zl{25Hi4fh|UA|tF2)$*sOynJ?w#Y?5fJ$PY2-!V1Qb_nFCO47PDx=hw+`s3z^gEg2 zI%A7z)comZBMvuIv6s=s@r!srvAY9xp|goRQD`zfjY{HQkV22}&~!4^ghax`F(s5b zds*JymAdf5+A|XxBpL7T)Bl{Sihmge-q6hp@*!%9D@CXA*6fG@3si^N67PSd&yh@v zyb(u4HzTQ30->B)TZiA?uen$I!+=Fog4(y-?{uw~npH+_A@U*eM3G~lL1JwheG$7E zL_JY~V2T^SiK9?BZ+taKDS^Sv;bilbQ&L=^f=2SNvBZ z#;neVnB1s3)R@c-MHkO7r7-EEOVpkc2;Hb~=E}TwV_UTNdE=>PmGn6yQ>S-U6Cp8E z2u&dY0wKIL7znQ^F-Ii`NR6Z*w5I+`+7cC%}rzC%MN_y>>qZnAx`UsKEb zGaS`JNHC~ix3K6|>|?|UiG7S>zdlY9Hj#ngnW!sr5uw{4$KFR}9OLc7Yr7BL{iUmS zM7f-x-?z4MXun%U$4LL;x?v6#gfE0g;=L|(c{Cc%h`CMF6bOL{uOpqN;?Qwrs_bs^ z_-Av5&cCy>Xi(O%#62q~$o~Zxl{n;R)P{bA?urarxMq<$;()k%CJ$y(a-f3sL~4vz zvZDt5;R9DKICSRU{P=V`uxFZM)^(OYNZ+_8R(YlTW6U_-@;&+~e1)s1ACnOo%qRl` z1C118Vo}RPYotx`HqaXBI!hfTk3vVRB}YR8cc+hW z4@Q6ky^J)LNepIjRIIh4PdujIkvYOg@&To?#s?QXr!>!a-tEDsg{7~IS(v%wZkCE! zqgcZb=^>5~$BYj`q0nr8+k!#3B~TJR5uL_?;{`YZCt#EkJ?+V|zQ%SRI_c96kI1tt zzVBqjxrZhH4P9xvVi6fBaQi`58p{8Lu0J@0;)q&7VOSr-2Qkqymrx&6A4hQp1?eKX z1iMJ!m_pcnh1XO9p{IlD?`|DdB{I65@tMHLV{xO;ma$S3A*!iBhYR+5;+t_fBCEw! z^K0N3{t%6aS5zRiM!#eAgEavq5PIGv)$rz#puN+~I|iNiIs9NxxtS{NMH9R7LtD>XhiP)0|KHP*4K(oJHG3QOUvs{+%a|`t zzfKH&q5XVN%_<|CrgBgkx;gLmrPtzfaLrU62q1uBRUa(GREIJ#({YY)R7zCYOE;;l zT|e{Fq37PV4&JcQ>DAlIz12pDtD}Pn$ov*+=v;V7dL%(CXE;H`=07?T?QQi&>iUqAe4qfMJU;%B#P{kht;b8$1@d{d7@VtpCUBjzxi zBFCsZfdOp7Gm$moe5g6x4_=eHBB>NBj?|qJ2<4fD744Ka=Tz|#L+Tl3q;2R_p_wYH z)9FdY#z{$rFXWG~bVCEJfq~8FnNRaZ9%Fep+NeVCY!?p`8 z_;wbyB|?YwkBHSrMLGn;#Se&!7vD~jT*SAl{*R~mh7O?x-!U{QesD}=RD%4i9h@B+ zxye&o<-!1IjWvczT5FAb+`=G9tJP#|*xICRv$++DTjW$5HobCK&A4m391jH~^gX!W zrFEyg5(fvT1!$`UY+H6G=-s28BeL`-D`#(;r7_5D@qGWboq<*Rp6V7<=Um|FfZ_?I zlP1M%tM$ix`wj8s9a{{nn4!C#7ZPC*x_aIFCQimfgI2jtJpFL~!*7%Cgf*ylWX83o zA4j;~8)lLBYEY`*qVI#s+Nrdzn8reXgb3(J32YBYoDP#gHCl19^LkU?a0H!ULQX&(7;fu(XJT#SsI(0 z|EsjKGAdMP8ks8RqLc5AaK9ZN@k?xi* zrMUcfab$eILa%idj4Dj106!P`oP0jpRWm9gSrq&PhGvo#U)7rLWF*&#iByBf#f&OR z6<5j})|Hh?3+CAH1@rmh>?V2mIO_`2L#`jgv12uc<_o6|dpV|~wC-i}_Rn|C?e?@v zGU@8wZFQTarKUWoFvC1B_I>}S9Y#uzKE+I_l3-apuF=|!zQsP)%viX&TvpoCj&n4> zo-Wd2%URuOvo1AQs4|a-HSAGsPVCX6-hIYZGE4J&a{Y2x1G^zjCe$ot z6297}Pvzn(LduRCy+cYesv%drji`7_BU#ckTGy7hJ-htvhn2z#m5+Z=!Btw=+BE7H z*CV1|XiV=|huFc+2@yJ*e1zmeHf<9ZrjIIGW!T}7(bFbJ!0u61sN zZ@XPtx2vVJsk`6UE_>^Oj|-~mnp|AI_RgQv*VnI`@bbe?ua9}2l}3zdIb)T{)CqS^ zzdsP!YeSisng_!7bb1s!`+J?l9*gH6J?h%);@2MKlG=4T^10!VwBu6U@~_@_?&{ZZ z(bvb9PHbyvpKEmDT<^8|yQ|FFULNOJCv9?-B7=6^NNKvHTz!kyO?(!eUo&n0ywArb z*Q#D@bj`feH`Z?SnOXVs>SuXfA_iv#UOHK1v}=Ep#O3;idv;cQS0_86ZN;~ROZD$; zN6Y_SXDG8MXS3Lx9gBY6|Ga*7mcHxB#ENTNTMw5S@w9_cL#e)0*ThJ^tC2kZs&NBt zDM!jOK`!bcLx#BY&gWBt{41lbUE`w$#3jV&z-?NTm`>bRW^HTu{-uCnmOb9c6UNW6k$3Uz`1n{j!p4 zHI=&@zFzO0<$#>K?;jpcGuQ6PnB&!@lj*NV*90~RsWyCL(UoQE%vf~hH-E=Hb^6VH zc=U9!{?XH~OzHnRv_)H=$q{dlB@K?*H`dKkm(}n15(kS8uCE$@8{OD+U3Nf+SqW{8 zbZdtetuuM^fCKeLXJ@+B%)0Y_YLRKz`mQ>*FFL$y|Bpk@?`tyKzT{A|>3JT<_9g$i z_tuf?Wv;$G@oL1u5_QY$GTc48ekJ<`-D8H2>0`KLO4CoTYB)*B;m;i7{WJRi(KD;~ zRch{mzMXo9 zfbc7qf(M!O!0mz z`n{y{`KNyG=3CJ3dlb@*|J?5(WWK$q^`H7ZViFaPka+yZp1(ZO(l>C|o+`ftHrZqK zec7uBi_n>y=Ux5P$-3#`*zYNIL)%%GJZ;pV*4MRj=3L$vG0d{_@#ZOm@81e&R(bY| zgS7$LZeNeQSbCyc=gr~s zJFQtG9<8K^rbcWAy=(ByG?38$vyLO zlNkSP1<*PYuKbZH;jH6UU^H^jV?zA9NyP*oTFKuW#-ye^UZGC z)QDeqN(f1kHcUn;R4PKz<+o@9ISnesqiVF#|DnB_CQ1nftyeY!y`?CrX2E0G4A}pu ze|>^;z8@Hp;F9pe&E=Z{?|+f^dt3DyYIWoezx0_33RJ^QH`AXv{ zxl6iq*L3H?uf{z553iPO!~fP1xD_%&!AD|NST!wSf3f+MHj$+pgnR8R`rw~r>R&pg ze|F^gGBvc$w&^uB&0kIJA$bp7kzCz0uFRGj)vl#qm}R&wrDe6H3mO_$xPJQXus|gXjR&T3Z`e5kxQ#FhnR;+v7>`>}Y)2$NE75j3%%i!2n;Z{Mxez8S2Kk-?RQTvMdK$|ZW zhHXn6u_5N&*F`&ul&bZ5OlR|Y3p?K_b;5RRe~pVz(KSC!b-KOfU8l9$O(hpOxi%?( zwep^(>`T8pLw)O3Uiv+q`_}z#vI>Y zzjAbB=z`1`{f5JKb;r!Om9@7*j?o}lrgqCRwOq(l@nV&(`FPJCZ*NoU=E@qs^%^=T z?e9XRfWau3MZ6?$cORV(p2kxiO}u|Rl*XnM5~rrE3oMhFt!a}U5%CdyV+xL#+M2da z7}R%Aj|g39sU!+zVQUo{*GnIykCsKKnM*SlooqaL!qT=(o2Z1Si1^58hltpo4uMgF zqx!`S=pPlUFLp7G_rTd9K;G-u&sdkj*Rq^v+GK zc>JE@oU6-xx4GTD-*)TlUn=FCp6-#cb48l_nd51X-wn*F*Uawr+c}44$B(z|bJFhZ z#?{47WXAt7-Nt8FQ@(xn@aT&uaLM9AVbH+s{jPAMrWSC%nvwBh$FSWR};`pw!f0=Y<_7le~=2l<32G448v714KE%k~W zc~Nob=eudmdpb1=4D4@U@!)gu^=ox0KJA|Cvr2tA`2Ix20s(6)Bh~t!oxdzi%~1&l zqaZ0j@-s2dUmi?%)5>Q5|Kx6%r0r~t&_?Fyzs((nQhg3qH1d{YRZ5ptDaH9;yB}Or z?*#e(k+Sv0N1ULs>`zC4Z@5!DGoF#pB19N{EUa6d(0>4;C3AYoh+|Ur}F3 zy|$F>I&keGN9*smlI_1Fv~2w3bnb?KQm=n$4F83CrOen=%Oup#%)IU+FR%7qwc{r0 zYCk-G?&eg>HLbr~9DHtmsa;8NpIl!r*i~m_U_?VpuaQ@Sa-Y83d46K<T1WpqhK zwPXdWZlKjly%m^!4E~iM{x^{rXkTkmvB}3KtiCa9?*4Hpnpmh%*&B&}xR=yO+X_n&#<61%MAAiJ(p@6WilENgq+7L!Ny zNRIS9liO)c_d2@F>}l&ACXKFl(%n%?3r~U?wa*@I&`Vwo9od- zEWRcet+wgSLSMg1n|zy2K0c%WL$Bc51M7ZV<(s>3U|QV4M)Bo}B`r>`V|O|0(8Eh# z_UxMy8%JbRQ3k-Wr^awYo@l#Lp zO9@j|>0elz z=#sP_WqEoBW#W~#-3B)Q&G#2#PuKrOo*#LkDdZ^#56z8r)^bObRZ{1r^YZlckkh%p zlc(b+?eAlZYBru8vT6DKQNyR*a({o|U(jKs?v>ZXg^BJ(fB9{x(=eZr->*LStzE>y zkhU^ZJ@&;%H2UM&&~LhqwK7iad-L-deMqTY%ML8xl2_wKoyykdifpfbX-|n>yCx6V z{M+qY&QEfW+SmAe_1=*(3-$+(usqm*xS{{DWG7AH8;iCZGpD|_()5lQ*s5u-1Gmg( zR(^PF&LgW+fg>-LuQ6rS+_gn!4hZbf;h@D_?V#pUBA!3!xoELpKaA`7^PW={Q`SVy`Y+QaXQTiC diff --git a/src/bin/hamcore/legal.txt b/src/bin/hamcore/legal.txt index 5e4a8d46..56390833 100644 --- a/src/bin/hamcore/legal.txt +++ b/src/bin/hamcore/legal.txt @@ -339,6 +339,10 @@ The list of contributors for SoftEther VPN Project: - ELIN https://github.com/el1n + - YF + https://github.com/yfdyh000 + + SoftEther Corporation, the distributor of PacketiX VPN, appreciates all contributors for SoftEther VPN Project very much. See also: http://www.softether.org/5-download/src/9.patch diff --git a/src/bin/hamcore/pxwfp_x64.sys b/src/bin/hamcore/pxwfp_x64.sys index 200dbb9045f652ab8f90936a1a2267ef4624e331..79a50e466a04d50070b45a35497e190b10b2f9de 100644 GIT binary patch delta 767 zcmaE`mhr(_#tj8b%v@(QCl@pMGIudDZa&P^s16d??5-8aDDY`|vW`VgkIy9G)$5ef z9vN?5p`F3S%f`UMa8-qY0Zea}H49}FHe=9XP+%|sla>r73`Pu=n_JC&nXyVdwPIlu zVOTI@`v3F`O`gT2F2<3%LI#~lUpD`>t`!%_I_z+Mdg`hP2Y(oB;Q24J=+M&ZizoL5 zJJxF+uQ+~+wcTz{LrJ^0;2Vc8?sdl$oo3jc&b3iwPAN!KaNWgXe6rt{|1{hGopvr8 zy`Ha@`O$xGp_In)hDHVFj>$$YIme$c3f|#+EB(W>An;?ZK>5Y51;RY8TkpOo{8uW! z<&q75dlk#${ErUSM;=`}M>=c(iQe>^@1&3S|#aXqqP zC_ZTQ)SrLNF2TnAC+`(H&-0xZDE}q*n6c=~uM3K{h~_-s-r0J5dXC!j&1n}-vw0lh z^>HZnGwyzVN%>0%^9mP%&-%)rch70!_u{^=MZRKNynWIsc|BIK$|)TZ(`6*TFxaaH zNZsL%XtVk<|0h#w{^au^XX}j(Ee*{~O-&4<43yb8wc0$|zVkA2vKWf7h_K!N;A(eP zi80XVa<0Z4TV`3opO+1I;ffd;Ss7TG7#X~B*2b61N=kjyn=i&~QTgh|zLm>&b5ts| zRI+V+RCjW|^?_^+t?$b>2%lYjKkPVj-^c9uh1NbRo~(MVH1k@$)1_viF!$|!yn0!d zssew`Y`M`>!1}wjCOSHzbjc~ZbwTew%XoFU%KuV&yTIK>wjlqXEYp$f+1Dl?mF(O6 zL)&G`6m3J+>-Ebb8F_Rcm`3Ro&+a|3QvPVnPStPk*lS~DGZ$s|aS3>DRGz3btK^XA zFOIe&y0h;K_DbK}yX19st6NRTdO?@=?t_9ipC`CxJ=*>Km!#$X*hwePFWjE9Yf1aP s%PcFZp48M>+kEZ$!zOvo%W|fE$mLL>kTV}tr(~NP)$Gl6RAOKN0HIGpS^xk5 delta 767 zcmaE`mhr(_#tj8b%rD+DOfF{fW$uV)*nF6&Q5__(*r73`Pt_n_JC&nXyVdwPIlu zF;>gIxpu-CgX&iq(@Ye~OR`Sg7vB8Wx>j7oL;m4Z4yQ?<{5hV!GU@2k+O}lf!^wTY zj`hvSn~3TsdIw0t6onpZ@RHf$T#_Y>Ync6;HCERGq=5H&^yd+mnCq_ zRrbR1{YmS7zF!-K)@k*?x)FR?K>|cCySvNi-;`Os-B2T z6Xm6O#FFE$&dbvXxZP>M3s=O*2#m5OMusxK)uLziJzuW4+HSW>%H(Ii#iSq0E!=K3 zJIiNpw~Czf+|7pPGk*P9bL+D1#Grtf*V<1nr|c_De!Rb8o#xK^`gc;@D^6-KmLL6^ zVCseb7ZHKF+>@2&_a6h6CMB^lN6z;S!_ZvGQjj-QZq z%BXlcMRB8}P2T(dv^%O-C&ztX)_(Z5z|9qrJD#v6>@3cns`Y$1_m6aqN0Y7>vCOFY z^XGmX^Rt^0+2?gD)OHuX7H|`q>HWLzt8vJ;x`bjsl{2q*>{iTsaP;Q(y`KY1HrTH> sSNd15J2_-&=-JPsv{gDZ+2&7RJP7r<+bpMip1WtkKRmwKlQ}D&}AW4tTxJY9#8$a%$>QYnCokjG~Zc` zjs*+%)cxJ=u~6(KkL&;1$ehv2DlKm-5juZoruv$> z54#t#F&wX7d4A8FlP7+;#vcxCZQ6F~%#LXr$`9<-tFP?K-ovs!+YZL!rS02~cc^fdq)gT(b z?oH$#CJxb0(G!`xFHZJ%Ia_aRXlZC>YGP;)VM4x9Z@+x>B@P2%PITvMfv{(H)K$!UUOpQ-QZ zd+w)#o=#PN+WFYVA@;8Cyx2_@f(q ut_!bU=GOf-rRde|Fw^P)Q`Rr4?uOxCUOqOQeN6G{Wb=9#hDir|7#ILwgIUP{ delta 766 zcmaFR!}y?waYF$UbMIS*$;C{*Oy2i4A7Uz!1o1bU%eXQM@K19#Hx0h&I1|0?k1_Ll@$zZ}@#9*|!Rn?antHe`{7ABDg z%-s?jR+T2^ujhJ_t^CmY;d9NX&9&OK;v%{iRPt??UHaP7cje#L&CDthMkXwi`J5f= zJAN*5b1&GIu*}i4V4<}<72XiuQVR6mbmNwpk_Tbpd(u6?($k%52Z zhN7g^PlFfDne5k`KWW0QEY9j9d5lYqdvXM~$k(Uu%yVn}^8INzv;1pujTTQg0g=qx zFP@)ea(VS4DIq+u@%4YllaAXp3OBB9NN3{O-ulpNzMNE2LUr2rJDjX;^(B{U(oWnv z)uJ-jHFb}4bG%=BfJlw}$y@fi`_Ed5|43S#_-aMPc0R3w2;G*qzpry;9^LjM<;}T| zPD%G9tGHE}o`+5LcR5>cWN2n+W@>6;6lI{y#;Mij(e|B}k(0$xj74Os!by%K=F0k0 z3mv0PEq7-g?%dF4zzbKz$Ow$GCPoIP-o2BSGtUs#irf|!@b+5eqGYqBr)%}+G*?fM zUu-qU`C*c`=Y{1F+h*O&cRQ#iVESQ={+yRn95-{G+~PZ_{^Y+WH61S(UEUY@Ikd!j zpO)>lsTmxlE&t}s^oy8yXY;>;rw>F{s0vHJNctjJHPLTjT=`24vBrfL);l?yrf29V zZSG@QJn0R?1G%8r76)~!e-s?4`|N9xiXMZJD|jRli83%)KD6x+FqfdK%Y+C~8Y diff --git a/src/bin/hamcore/see.sys b/src/bin/hamcore/see.sys index 4687811b71fadb923955f09f810398e7948f49bb..21a8089e2cfcdb6e08469c86b4a8a453d4b8b47b 100644 GIT binary patch delta 765 zcmaEGf$6~orU^Hgmz~y}c-xnm&zEttHX~;dh`-sq*p*pe*HixadM8``Ch?{S&Xlmy z-rQ5x!o|zRz`}4Xl43?W)n@pLpN}O$-!!F{w zaPh-A2X^sj|J%%ZU!hyje`5pl=Gxv`agk?txcZ~ACVMgdzH#LE9ewY2bE`up^DT9( zmw2_mt644O|9hKbNm{PSpCeKi7k-?&(=>ih=6!{UGxE|;eNHUDG@(e`aDD-Q#JAJg zX8xV$8Vh4$n!o?%Ui2|6wkk&Ozj>=oX8%Nv%}**B-+7(no$bJq;#O+#&sNIhf9xO8XX)tRx!PIATG+n4Cn^5t#GwANw1i*fk`w{yAC zd!HJFwq6Wq4-rdwez#LYD9~`u_9;znD|A}&PpR`*thN02s%p+bzpckUI3#A}1^j*H z?p8fvrv=Ns6ef*xll_;Stv5EbG&D0cHnog0P-f%QYV&CO&dbQjVkpKUGU=?frFGJ> z0CwigjnQ?>XWw})KHY#9u85J5m4T&+k-^TWRpZZlKEwH!qfRI;47|QSAu_Jp@-3Td z`dPEa2J_XtC!Km?{)fcH^l_Ta)c>W<^7O6uDs_+RlMjE{?q2`0b5X+Nxdp+oyl&U$ ziZ>p;X?3dW_2MaFv$a_AH!w6gu}w@7JvCpK$K!fg=B))4`;D4>RA)E4tcs}e-u;X@ zk@L&^9zOS&YmGi}M#p#LeRI9n{$1Ipt$EqBk0uvYVood!FHbq|pE<9U`IW5bmVKWV z7VVl<-)kwh$o6C#!=?usZsLqAg4+YHJ&3rs(Bp@pR70uj{be-?d^H6{^@q0JXq$fQ r1XIqY#Rp|Hnpk#(?FiD`)p*l>$w%wE>}Pwue~3tX%$xuID+2=nj7Lv- delta 765 zcmaEGf$6~orU^Hg>)$d=yzR^Eag1TJHX~;dh`-sq*p*peL$cvB35TWr%d{TsZ&p23 zzqzNZg^QP!fra6m3IhX}-YnY~$|!8gpu?cRU;rj98B7?A7>qWzHkmSGl{nivhg~E? zD=hfeM!S=u$%~&Q<;po_t%@z%T-#eKE^;S3_~3NQ-w|4JW%_%bDVQ}&pRAtDx74v- z;O-lp{0+a(ACG!ylCr7SVwb@?w$8Krr*8C-7HE6Pxg#n`ykf`INQ0pF6TfW|Q^+j) z{>kB|!cyCNrQMQT(+ZWp`z+4hv-Lar#jpFnC^K$=eQ*GdC{gBs?m&B zFDnLir^sHHyLh&z^8U3w+MCb6J9}>R-g{|tUTmtr^uY0Z_&?9zy4&v_`SK-ZqUhQs z4F5OW*GiuGV6y*O{=1${9gFVyn64=nqMKhB0xA8*~eGs~^umwYDUncKVmg&qu$I&`d}-^6H_LDtU#^UboQ+|>(o sPDfegGtJeXVYfRv@+pvJ60Q&=3)Bpeg diff --git a/src/bin/hamcore/see_x64.sys b/src/bin/hamcore/see_x64.sys index 0e94036a1459bd6be499679dd0259be2839158ea..32887f2b6cbf20757044c22b084afcad681b8c8d 100644 GIT binary patch delta 764 zcmaE`is`{BrU?(2|DM*I_}G_eN%m$V#-bvk12AdHV8UR;V7a-q)Rh^l#NCP>Mv+KP ze%^ek)Eg`&yk+NxS{kq0F@yO(T~ z*VkUC)pNq*#=(}>CJxDn9}Mr>?0wHyU;K6W>gtmll@yPrXDmv~-sNehXvjUa`*(MK zyw%a>Srxx@I#z6CHM)=^bEJP$-D-!T%B8%Hm35|CI+J%4Htl3vCUhtKxN)oSAL0L} zmh;-^6t2JGnmFaC+sq)z<+?oH-kEx*=2r_Gs^8dkW5TCbofFTW`nS=eTQTor_zbam zMZK20KYK3OC^kQLYhd(z_K>6{u3O&EE!Vw&?byvd`XwuE!Y40V{J#2)ok9NEKO!p^ zKCP7Q&djrO_;KO6&?1*-Im`=udHa4Z6!{c)+^lzFnUdG1rnm{#@^1NR{aa3DYHhsF zIM;mVC1y4YrkpvG{U@KTH#W31G&40dGK(@$X5-Xq^Jx3d%gD)MD8?dkX7LYpiIC4x zXXf-S*S7vEIw3UXoB=Of5hEij14|PlgJF2)ZjraA|DP0JtRBhyJL!I_kmN+KZ`qq8 z$|kvqaV}yqkj$*#d+K?VX-f5${wp?~huMQ(t(5P5vLreGef_(8cB{05d76x$pZ8fN z`{3M`TaLO)68E~_4!*RJ#O+#C3w%`P@=N~uFqR8d{yD+ifaedo^2%sk_AO;K%S)$jjB z3ko*f&Qn|?eRz5Ij9@2`KFO6 rC>frc1*6@{J;L)(RPz_ zvqt<25nfgX7KU>w3=Cj;vusHyqp&H14ub-N0hqL8FkvuaFxuQ&>dK5&;%-F`qlmu7 z6v?t*Cj^()7@zngzl6%^IU$j^X##n17+F2 zDhggpd#c#474lYPQ;3X>JiK*X`A_y_X;7%J2P=QMAB1^5@kVaZ@KfpCgja zk=wrL!LOoLr^>sFg-@m~x~R*iUv{eV%DMY8*Xxyw7R7H!ez2k8OyHX}g?BTO=2!Qw zWYV7Sp=#RJAE%smAN%MqA?)5N?U_coG`A`{gvQR$Gd9BPl?0d1?Sqgt?{~d*PNg6)}j~tudne_zH>l*OF6)`dbqpXRML9M(ducdy^|71D+wwWCgzjUXa(VN;YA~O5y z(*6f*e|N2nHLU%)tnJFPL*YSF7X7SH3uIh9S>VyTiyN-ZnOmPU^KIGZ^4eM{ndgdo z^)yyYz8AbH=6zb>PW8nv48%UpW$AY2`t~?~?vy?8)pD#0Yj)c{)OC=Ea6fl!Mf29q zuCCKJ-gpb{s^}~GRuI2T;#>dIGiP>rHJzUx`Z`!-f6`=sh66tn|Ef)vmvuLrpf)X5 zDamR6|NiZ=_5CZm|7NT^<2Ko=;KHxGl?P^gjt;5%C}uE4;6?uugX=r*cuf4gA&+&(r+<>FoCSg-T_<%Ki#VGe7Kt9<5a`~T2R514oXOfp*~ diff --git a/src/bin/hamcore/strtable_cn.stb b/src/bin/hamcore/strtable_cn.stb index beeefb04..a432e516 100644 --- a/src/bin/hamcore/strtable_cn.stb +++ b/src/bin/hamcore/strtable_cn.stb @@ -1,7 +1,10 @@ -# SoftEther VPN String Table +# SoftEther VPN String Table # Copyright (c) SoftEther VPN Project. All Rights Reserved. # # http://www.softether.co.jp/ +# +# Contributors: +# - YF (https://github.com/yfdyh000) ########################################################################### @@ -291,8 +294,9 @@ DLG_OPEN_CONFIG 指定é…置文件导入 DLG_STRING_DEFTITLE 输入字符串 DLG_STRING_DEFINFO 请输入字符串。 DLG_ABOUT_LEGAL 法律公告 +DLG_ABOUT_AUTHORS 作者åå• DLG_UPDATE_DATE \ (Released on %S) -DLG_UPDATE_HINT 按 确定 查看网页æµè§ˆå™¨æœ€æ–°æ›´æ–°çš„ä¿¡æ¯ã€‚\r\n\r\n您必须手动下载并安装更新。如果你想在其他电脑上更新软件,您必须登录到计算机通过远程桌é¢æˆ– SSH 进行下载和更新。 +DLG_UPDATE_HINT 按确定查看网页æµè§ˆå™¨æœ€æ–°æ›´æ–°çš„ä¿¡æ¯ã€‚\r\n\r\n您必须手动下载并安装更新。如果你想在其他电脑上更新软件,您必须登录到计算机通过远程桌é¢æˆ– SSH 进行下载和更新。 # 关于竞争进程 @@ -446,7 +450,13 @@ WINVER_ERROR_PC_REMOTE 远程æœåŠ¡å™¨ # å¼€æºç‰ˆæœ¬çš„警告 -OSS_MSG 欢迎æ¥åˆ° SoftEther VPN æœåŠ¡å™¨å­¦æœ¯ç‰ˆ !\r\n\r\næ­¤ VPN æœåŠ¡å™¨ä½œä¸ºæ—¥æœ¬ç­‘波大学的一个学术研究由å…费软件开å‘çš„ï¼Œä¸”ç”±ï¼Œå¼€æº (GPL) SoftEther 项目 (http://www.softether.org/) 为公众利益å…è´¹å‘布的。\r\n\r\nSoftEther VPN 软件是作为筑波大学和 SoftEther å…¬å¸ä¹‹é—´çš„è”åˆç ”究åˆåŒçš„一部分而å‘布给公众的。SoftEther VPN 软件的开å‘å’Œå‘布仅为学术研究目的。因此,对 SoftEther VPN 软件ä¸æ供支æŒæœåŠ¡ï¼Œå³ä½¿å®ƒåŒ…å«é”™è¯¯æˆ–æ¼æ´žã€‚用户将对使用 SoftEther VPN 的结果承担责任。 SoftEther VPN çš„å¼€å‘者和å‘行者都将永远ä¸ä¼šä¸ºä»»ä½•åŽæžœæˆ–æŸå¤±æ‰¿æ‹…责任。\r\n\r\n在您åŒæ„上述å¯ç¤ºåŽï¼Œä½¿ç”¨ SoftEther VPN æœåŠ¡å™¨äº«å— VPN 通信。\r\n\r\n对于 SoftEther VPN 的更多细节,请å‚阅 http://www.softether.org/ 。\r\n\r\n +OSS_MSG 欢迎æ¥åˆ° SoftEther VPN æœåŠ¡å™¨å­¦æœ¯ç‰ˆ !\r\n\r\næ­¤ VPN æœåŠ¡å™¨ä½œä¸ºæ—¥æœ¬ç­‘波大学的一个学术研究由å…费软件开å‘çš„ï¼Œä¸”ç”±ï¼Œå¼€æº (GPL) SoftEther 项目 (http://www.softether.org/) 为公众利益å…è´¹å‘布的。\r\n\r\nSoftEther VPN 软件是作为筑波大学和 SoftEther å…¬å¸ä¹‹é—´çš„è”åˆç ”究åˆåŒçš„一部分而å‘布给公众的。SoftEther VPN 软件的开å‘å’Œå‘布仅为学术研究目的。因此,对 SoftEther VPN 软件ä¸æ供支æŒæœåŠ¡ï¼Œå³ä½¿å®ƒåŒ…å«é”™è¯¯æˆ–æ¼æ´žã€‚用户将对使用 SoftEther VPN 的结果承担责任。 SoftEther VPN çš„å¼€å‘者和å‘行者都将永远ä¸ä¼šä¸ºä»»ä½•åŽæžœæˆ–æŸå¤±æ‰¿æ‹…责任。\r\n\r\n在您åŒæ„上述å¯ç¤ºåŽï¼Œä½¿ç”¨ SoftEther VPN æœåŠ¡å™¨äº«å— VPN 通信。\r\n\r\n对于 SoftEther VPN 的更多细节,请å‚阅 http://www.softether.org/。\r\n\r\n + + +# NAT Traversal warning +NATT_MSG ** 使用 NAT ç©¿é€ (UDP 打洞) - 它å¯èƒ½æ˜¯ä¸ç¨³å®šçš„ **\r\n\r\næ­¤ VPN 客户端通过使用 NAT ç©¿é€ (UDP 打洞) 技术连接到 VPN æœåŠ¡å™¨ '%S'。\r\n\r\nNAT ç©¿é€å…许ä½äºŽ NAT ç›’åŽé¢çš„ VPN æœåŠ¡å™¨æŽ¥å—æ¥è‡ª NAT 盒中的ã€æ²¡æœ‰ä»»ä½•ç«¯å£æ˜ å°„设置的 VPN 客户端的 VPN 连接。\r\n\r\n然而,基于 NAT ç©¿é€çš„ VPN 会è¯æœ‰æ—¶ä¼šå˜å¾—ä¸ç¨³å®šï¼Œå› ä¸º NAT ç©¿é€ä½¿ç”¨çš„是基于 UDP çš„å议。例如,如果在 VPN æœåŠ¡å™¨å’Œ VPN 客户端之间有一个ä¸å¥½çš„ NAT ç›’å­ï¼Œ VPN 隧é“æ¯ 5 分钟断开一次。一些大规模 NAT 网关使用便宜的互è”网æœåŠ¡ä¾›åº”å•†ï¼Œæœ‰æ—¶ä¼šé€ æˆ NAT ç©¿é€çš„åŒæ ·é—®é¢˜ã€‚这是路由器或互è”网æœåŠ¡ä¾›åº”商的问题。这ä¸æ˜¯ SoftEther VPN 软件的问题。\r\n\r\n为了解决这个ä¸ç¨³å®šçš„隧é“问题,您应该直接连接到 VPN æœåŠ¡å™¨çš„ TCP 监å¬ç«¯å£ï¼Œè€Œä¸æ˜¯ä½¿ç”¨ NAT ç©¿é€åŠŸèƒ½ã€‚è¦ä½¿ç”¨ TCP 直接连接到 VPN æœåŠ¡å™¨ï¼Œ VPN æœåŠ¡å™¨çš„监å¬ç«¯å£å¿…须通过在 NAT 盒的端å£æ˜ å°„设置暴露到互è”网上。请询问 NAT 盒的管ç†å‘˜æˆ–å‚阅 NAT 盒的手册在 NAT 盒上添加端å£æ˜ å°„设置。\r\n\r\n如果此消æ¯ä»æ˜¯ VPN æœåŠ¡å™¨æš´éœ²äº†ä¸€ä¸ª TCP 端å£åˆ°äº’è”网åŽï¼Œæ£€æŸ¥ VPN 客户端连接设置å±å¹•ä¸Šçš„ "ç¦ç”¨ NAT-T" å¤é€‰æ¡†ã€‚\r\n\r\n +NATT_MSG2 ** 使用 NAT ç©¿é€ (UDP 打洞) - 它å¯èƒ½æ˜¯ä¸ç¨³å®šçš„ **\r\n\r\næ­¤ VPN 客户端通过使用 NAT ç©¿é€ (UDP 打洞) 技术连接到 VPN æœåŠ¡å™¨ '%S'。\r\n\r\nNAT ç©¿é€å…许ä½äºŽ NAT ç›’åŽé¢çš„ VPN æœåŠ¡å™¨æŽ¥å—æ¥è‡ª NAT 盒中的ã€æ²¡æœ‰ä»»ä½•ç«¯å£æ˜ å°„设置的 VPN 客户端的 VPN 连接。\r\n\r\n然而,基于 NAT ç©¿é€çš„ VPN 会è¯æœ‰æ—¶ä¼šå˜å¾—ä¸ç¨³å®šï¼Œå› ä¸º NAT ç©¿é€ä½¿ç”¨çš„是基于 UDP çš„å议。例如,如果在 VPN æœåŠ¡å™¨å’Œ VPN 客户端之间有一个ä¸å¥½çš„ NAT ç›’å­ï¼Œ VPN 隧é“æ¯ 5 分钟断开一次。一些大规模 NAT 网关使用便宜的互è”网æœåŠ¡ä¾›åº”å•†ï¼Œæœ‰æ—¶ä¼šé€ æˆ NAT ç©¿é€çš„åŒæ ·é—®é¢˜ã€‚这是路由器或互è”网æœåŠ¡ä¾›åº”商的问题。这ä¸æ˜¯ SoftEther VPN 软件的问题。\r\n\r\n为了解决这个ä¸ç¨³å®šçš„隧é“问题,您应该直接连接到 VPN æœåŠ¡å™¨çš„ TCP 监å¬ç«¯å£ï¼Œè€Œä¸æ˜¯ä½¿ç”¨ NAT ç©¿é€åŠŸèƒ½ã€‚è¦ä½¿ç”¨ TCP 直接连接到 VPN æœåŠ¡å™¨ï¼Œ VPN æœåŠ¡å™¨çš„监å¬ç«¯å£å¿…须通过在 NAT 盒的端å£æ˜ å°„设置暴露到互è”网上。请询问 NAT 盒的管ç†å‘˜æˆ–å‚阅 NAT 盒的手册在 NAT 盒上添加端å£æ˜ å°„设置。\r\n\r\n如果此消æ¯ä»æ˜¯ VPN æœåŠ¡å™¨æš´éœ²äº†ä¸€ä¸ª TCP 端å£åˆ°äº’è”网åŽï¼Œæ£€æŸ¥ VPN 客户端连接设置å±å¹•ä¸Šçš„ "ç¦ç”¨ NAT-T" å¤é€‰æ¡†ã€è€Œä½ çš„ VPN 客户端å‡çº§åˆ° Build 9428 或更高版本。\r\n\r\n + @@ -541,6 +551,11 @@ HUB_AO_DisableUserModeSecureNAT 如果您将此选项设置为éžé›¶å€¼ï¼Œé‚£ HUB_AO_DisableCheckMacOnLocalBridge 如果您将此选项设置为éžé›¶å€¼ï¼Œé‚£ä¹ˆ MAC 地å€é‡å¤æ£€æŸ¥åœ¨æœ¬åœ°æ¡¥åŠŸèƒ½ä¸Šå°†è¢«ç¦ç”¨ã€‚一些网络适é…器有å射传出的数æ®åŒ…å‘虚拟 HUB 的问题。虚拟 HUB 自动检测这样的é‡å¤ï¼Œå¹¶ä¸¢å¼ƒå®ƒä»¬ã€‚å¯ç”¨æ­¤æ ‡å¿—æ¥ç¦ç”¨æ£€æµ‹ï¼Œå¹¶ä¸¢å¼ƒã€‚ HUB_AO_DisableCorrectIpOffloadChecksum 如果您将此选项设置为éžé›¶å€¼ï¼Œé‚£ä¹ˆåœ¨æœ¬åœ°æ¡¥åŠŸèƒ½ä¸Šæ£€æŸ¥å’Œçº æ­£ IP 校验和值。有些有 IPã€TCP 或 UDP 包头的校验和å¸è½½å¼•æ“Žçš„网络适é…器,以ä¸å®Œæ•´çš„校验和值传输数æ®åŒ…。这样的数æ®åŒ…ä¸èƒ½è¢«æŽ¥æ”¶ç«¯æ­£ç¡®å¯¹å¾…。所以本地桥检测到这样的数æ®åŒ…,并纠正了它的校验和字段。å¯ç”¨æ­¤æ ‡å¿—æ¥ç¦ç”¨è¿™ç§çº æ­£ã€‚ HUB_AO_BroadcastLimiterStrictMode If you set this option to non-zero value, then the broadcast-storm detection algorithm will compare either source or destination IP address of each packet. If any of the two fields matches, the packet will be recorded on the short-term history of broadcast-storm detection state machine. +HUB_AO_MaxLoggedPacketsPerMinute Maximum number of logging target packets per minute. +HUB_AO_DoNotSaveHeavySecurityLogs Do not take heavy security log. +HUB_AO_DropBroadcastsInPrivacyFilterMode Drop broadcasting packets if the both source and destination session is PrivacyFilter mode. +HUB_AO_DropArpInPrivacyFilterMode Drop ARP packets if the both source and destination session is PrivacyFilter mode. + #关于失败连接对è¯æ¡† ERRDLG_ERRMSG 错误(é”™è¯¯ä»£ç  %u) :\r\n\r\n%s\r\n @@ -644,6 +659,8 @@ CT_b_using_selow_driver æ”¯æŒ SoftEther Lightweight Kernel-mode Ethernet Drive CT_b_support_vgs æ”¯æŒ VPN Gate æœåŠ¡çš„æœåŠ¡å™¨åŠŸèƒ½ CT_b_support_vgs_in_client VPN Gate æœåŠ¡çš„æœåŠ¡å™¨åŠŸèƒ½ (VPN 客户端集æˆ) CT_b_is_softether SoftEther VPN çš„å…费或开æºç‰ˆ +CT_b_suppport_push_route é™æ€è·¯ç”±è¡¨æŽ¨é€åŠŸèƒ½ +CT_b_suppport_push_route_config é™æ€è·¯ç”±è¡¨æŽ¨é€åŠŸèƒ½ (å¯é…ç½®) #相关策略 @@ -775,7 +792,7 @@ CM_ACCOUNT_ONLINE 已连接 CM_ACCOUNT_CONNECTING 连接中 CM_VLAN_ENABLED å·²å¯ç”¨ CM_VLAN_DISABLED å·²ç¦ç”¨ -CM_DELETE_ACCOUNT_MSG VPN 连接设置“%sâ€å°†åˆ é™¤ï¼Œä½ ç¡®å®šå—? +CM_DELETE_ACCOUNT_MSG VPN 连接设置 "%s" 将删除,你确定å—? CM_ST_ACCOUNT_NAME VPN 连接设置å称 CM_ST_CONNECTED 会è¯çŠ¶æ€ CM_ST_CONNECTED_TRUE è¿žæŽ¥å®Œæˆ (会è¯å»ºç«‹) @@ -811,8 +828,8 @@ CM_ST_MAX_TCP TCP 连接数最大值 CM_ST_VLAN_ID VLAN ID CM_ST_NO_VLAN ï¼ CM_ST_USE_ENCRYPT 加密 -CM_ST_USE_ENCRYPT_TRUE å·²å¯ç”¨ -CM_ST_USE_ENCRYPT_TRUE2 å·²å¯ç”¨ (算法: %S) +CM_ST_USE_ENCRYPT_TRUE å·²å¯ç”¨ (算法: %S) +CM_ST_USE_ENCRYPT_TRUE2 å·²å¯ç”¨ CM_ST_USE_ENCRYPT_FALSE å·²ç¦ç”¨ (ä¸åŠ å¯†) CM_ST_USE_COMPRESS 使用压缩 CM_ST_UDP_ACCEL_ENABLED æ”¯æŒ UDP 加速 @@ -1591,7 +1608,7 @@ SM_SETUP_NO_LICENSE_KEY ç›®å‰æ­¤ SoftEther VPN Server 上没有注册任何一 # ----- ä¸å®Œå…¨ç¿»è¨³ã“ã“ã‹ã‚‰ ----- SM_HUBEXT_OPTION_TITLE 虚拟 HUB 扩展选项 SM_HUBEXT_OPTION_STATIC1 虚拟 HUB 扩展选项å…许您é…置这个虚拟 HUB 的详细å‚数。 -SM_HUBEXT_OPTION_STATIC2 标准,VPN Server 全部管ç†è€…åŠï¼Œè™šæ‹Ÿ HUB 管ç†è€…çš„åŒæ–¹éƒ½ï¼Œèƒ½ç¼–辑虚拟 HUB 高级选项。但,如果虚拟 HUB 管ç†é€‰æ‹©çš„ deny_hub_admin_change_ext_option 默认情况下,VPN æœåŠ¡å™¨çš„全局管ç†å‘˜å’Œå„虚拟 HUB 的管ç†å‘˜éƒ½å¯ä»¥ä¿®æ”¹è™šæ‹Ÿ HUB 扩展选项。\n但是,如果在虚拟 HUB 管ç†é€‰é¡¹ä¸­ deny_hub_admin_change_ext_option 被设置为 1,å„虚拟 HUB 的管ç†å‘˜å°±æ— æ³•ä¿®æ”¹è™šæ‹Ÿ HUB 扩展选项了 (åªèƒ½æŸ¥çœ‹)。 +SM_HUBEXT_OPTION_STATIC2 标准,VPN Server 全部管ç†è€…åŠï¼Œè™šæ‹Ÿ HUB 管ç†è€…çš„åŒæ–¹éƒ½ï¼Œèƒ½ç¼–辑虚拟 HUB 高级选项。但,如果虚拟 HUB 管ç†é€‰æ‹©çš„ deny_hub_admin_change_ext_option 默认情况下,VPN æœåŠ¡å™¨çš„全局管ç†å‘˜å’Œå„虚拟 HUB 的管ç†å‘˜éƒ½å¯ä»¥ä¿®æ”¹è™šæ‹Ÿ HUB 扩展选项。\r\n但是,如果在虚拟 HUB 管ç†é€‰é¡¹ä¸­ deny_hub_admin_change_ext_option 被设置为 1,å„虚拟 HUB 的管ç†å‘˜å°±æ— æ³•ä¿®æ”¹è™šæ‹Ÿ HUB 扩展选项了 (åªèƒ½æŸ¥çœ‹)。 SM_VLAN_COLUMN_0 网络适é…器å称 SM_VLAN_COLUMN_1 驱动程åºç§ç±» SM_VLAN_COLUMN_2 驱动程åºæ–‡ä»¶å @@ -1621,6 +1638,9 @@ SM_DDNS_FQDN_EMPTY (æ— ) SM_DDNS_OK_MSG åŠ¨æ€ DNS 主机å:%S%S\r\n\r\n您å¯ä»¥é€šè¿‡æŒ‡å®šä»¥ä¸Š DNS 主机å访问下é¢çš„ IP 地å€ã€‚\r\n\r\nIPv4 地å€ï¼š%s \r\nIPv6 地å€ï¼š%s\r\n\r\n您也å¯ä»¥æŒ‡å®šä¸‹åˆ—主机å的特殊形å¼æ¥æŒ‡å®š IPv4 或 IPv6 作为明确地å€ç±»åž‹ã€‚\r\n\r\n针对 IPv4 的主机å%S.v4%S \r\n针对 IPv6 的主机å:%S.v6%S。 SM_DDNS_OK_TITLE åŠ¨æ€ DNS 功能 SM_DDNS_OK_MSG2 åŠ¨æ€ DNS 主机å被更改为'%S'。\r\n\r\nå•å‡»æ示读å–更多的信æ¯ã€‚ +SM_DDNS_KEY_TITLE åŠ¨æ€ DNS 密钥 +SM_DDNS_KEY_MSG åŠ¨æ€ DNS 密钥: %s\r\n\r\n此密钥与当å‰çš„ DDNS å称相关è”。如果你的 VPN æœåŠ¡å™¨ç”µè„‘æŸå,丢失了密钥,当å‰çš„ DDNS å称将被永远å ç”¨ï¼Œä¸”其他 VPN æœåŠ¡å™¨å°†æ— æ³•ä½¿ç”¨ç›¸åŒçš„å称。\r\n如果你想继续使用相åŒçš„å称,请在互è”网æœåŠ¡ä¸Šã€æˆ–å¦ä¸€å°ç”µè„‘上ã€æˆ–在便笺纸上ä¿ç•™å¯†é’¥ã€‚\r\n当在新的 VPN æœåŠ¡å™¨è®¾ç½®å¯†é’¥æ—¶ï¼Œç¼–辑 VPN æœåŠ¡å™¨çš„é…置文件。请在 "declare DDnsClient" æŒ‡ä»¤ä¸‹ï¼Œç”¨è·Ÿéš "byte Key" 的值替æ¢â€‹å­—符串的密钥。\r\n请ä¸è¦åŒæ—¶åœ¨ä¸¤ä¸ªæˆ–多个 VPN æœåŠ¡å™¨ä¸Šè®¾ç½®ç›¸åŒçš„密钥。 +SM_DDNS_KEY_ERR æ— æ³•è¯»å– DNS 密钥。 SM_IPSEC_PSK_TOO_LONG 预共享密钥(PSK)有 10 个或更多的字æ¯ã€‚\r\n\r\næ®æŠ¥é“谷歌安å“的几个版本有一个 10 个或更多字æ¯ä½œä¸ºé¢„共享密钥的严é‡æ•…障。\r\nå› æ­¤ 9 个或少于 9 个字æ¯è¢«æŽ¨è作为预共享密钥。\r\n\r\n您è¦ä¿®æ”¹é¢„共享密钥å—? SM_ADVANCED_REDIRECT_URL_HINT_TITLE 如何使用高级 HTTP é‡å®šå‘功能 SM_ADVANCED_REDIRECT_URL_HINT 高级 HTTP é‡å®šå‘(为专家)\r\n\r\n此字符串“â€æ˜¯ä¸€ä¸ªå ä½ç¬¦ã€‚它å¯ä»¥åµŒå…¥é‡å®šå‘çš„ URL 中。\r\n\r\n嵌入 URL 示例:\r\nhttp://www.google.com/search?q=|secret\r\n\r\n当客户端将被é‡å®šå‘,é‡å®šå‘的实际 URL 目的地将被å–代如下。\r\n\r\n用户å|会è¯ID|IP 地å€|日期和时间|哈希值\r\n\r\n替æ¢åŽç¤ºä¾‹ï¼šzurukko|SID-ZURUKKO-123|219.117.219.154|20131117100354|99707160AFE7A454042B2C47B064112D652452D7\r\n\r\nå„字段的详情æ述如下。\r\n\r\n用户åï¼šå½“å‰ VPN 会è¯çš„用户å将被放置。\r\n\r\n会è¯ID:VPN 会è¯çš„ä¼šè¯ ID 将被放置\r\n\r\n日期和时间:14 ä½æ•°å­—将以'YYYYMMDDHHMMSS’格å¼æ”¾ç½®(时区是 UTC)\r\n\r\n哈希值:代表 20 个字节二进制数æ®çš„一个 40 字符的å六进制字符串。二进制数æ®æ˜¯ SHA-1 哈希函数至临时字符串的结果。在é‡å®šå‘ URL 中“|â€ç¬¦å·åŽï¼Œä¸´æ—¶å­—符串是上述字段的ä½é˜µåˆ—加上秘密字符串的结åˆã€‚(在上é¢çš„例å­ä¸­ï¼Œâ€œç§˜å¯†â€æ˜¯ç§˜å¯†å­—符串)。如果在 URL 中没有“|â€ç¬¦å·ï¼Œæ²¡æœ‰å“ˆå¸Œå€¼å°†è¢«æ·»åŠ ã€‚\r\n\r\n哈希值的目的:秘密字符串如密钥般有效。感谢密钥。在é‡å®šå‘ URL 中接收é‡å®šå‘查询字符串的 CGI 程åºï¼Œå¯ä»¥éªŒè¯åŒ…å«åœ¨ URL 中å‚数的完整性。\r\n @@ -1634,7 +1654,7 @@ SM_SETUP_STEP_SECURENAT æ­¤ VPN Server / Bridge å¯èƒ½ä»¥ç”¨æˆ·æ¨¡å¼æˆ–å—å…¶ SM_SETUP_STEP_SECURENAT_TITLE 第3步。网桥虚拟 HUB 和物ç†ç½‘络 SM_UPDATE_CHECK_TITLE_VPNSERVER %S VPN Server (在主机'%S'上) SM_UPDATE_CHECK_TITLE_VPNBRIDGE %S VPN Bridge (在主机'%S'上) -SM_FACTORY_DEFAULT_WARNING 这将在 VPN Server / Bridge 上执行出厂å¤ä½è®¾ç½®ã€‚\r\nå½“å‰ VPN Server / Bridge é…置将被清除,将立å³åº”用åˆå§‹è®¾ç½®ã€‚\r\n在åšå‡ºåŽ‚å¤ä½è®¾ç½®å‰ï¼Œå»ºè®®æ‚¨å¤‡ä»½å½“å‰é…置。\r\n\r\n按 确定 执行出厂å¤ä½è®¾ç½®ã€‚ VPN Server / Bridge å°†é‡æ–°å¯åŠ¨ã€‚当å‰çš„管ç†è¿žæŽ¥å°†è¢«æ–­å¼€ï¼Œæ‰€ä»¥è¯·é‡æ–°è¿žæŽ¥åˆ° VPN Server / Bridge。\r\n\r\n按“å–消â€å–消æ“作。 +SM_FACTORY_DEFAULT_WARNING 这将在 VPN Server / Bridge 上执行出厂å¤ä½è®¾ç½®ã€‚\r\nå½“å‰ VPN Server / Bridge é…置将被清除,将立å³åº”用åˆå§‹è®¾ç½®ã€‚\r\n在åšå‡ºåŽ‚å¤ä½è®¾ç½®å‰ï¼Œå»ºè®®æ‚¨å¤‡ä»½å½“å‰é…置。\r\n\r\n按 确定 执行出厂å¤ä½è®¾ç½®ã€‚ VPN Server / Bridge å°†é‡æ–°å¯åŠ¨ã€‚当å‰çš„管ç†è¿žæŽ¥å°†è¢«æ–­å¼€ï¼Œæ‰€ä»¥è¯·é‡æ–°è¿žæŽ¥åˆ° VPN Server / Bridge。\r\n\r\n按 "å–消" å–消æ“作。 SM_FACTORY_DEFAULT_PERFORMED 在æœåŠ¡å™¨ä¸Šæ­£åœ¨æ‰§è¡Œå‡ºåŽ‚å¤ä½æ“作。\r\n\r\n按“确定â€é€€å‡ºå½“å‰ VPN Server 管ç†å™¨çš„会è¯â€œã€‚\r\n退出åŽï¼Œè¯·é‡æ–°å¯åŠ¨ VPN Server 管ç†å™¨å¹¶å†æ¬¡è¿žæŽ¥åˆ° VPN Server。\r\n然åŽä½ ä¼šçœ‹åˆ° VPN Server å¤ä½ã€‚ SM_AZURE_STATUS_CONNECTED 状æ€: 已连接 SM_AZURE_STATUS_NOT_CONNECTED 状æ€: 没有连接 @@ -1687,6 +1707,7 @@ DHCP_MAC_ADDRESS MAC åœ°å€ DHCP_IP_ADDRESS 分é…çš„ IP DHCP_HOSTNAME 客户端主机å NM_PASSWORD_MSG 管ç†å‘˜å¯†ç è®¾å®šå®Œæˆã€‚ +NM_PUSH_ROUTE_WARNING é™æ€è·¯ç”±è¡¨ä¸­æŒ‡å®šçš„文本å¯èƒ½æœ‰è¯­æ³•é”™è¯¯ã€‚ #å…³äºŽç‰ˆæœ¬ä¿¡æ¯ @@ -2299,6 +2320,7 @@ R_HIDE2 éšè— IP 地å€å±å¹•(&O) STATIC15 请设置连接到 VPN Server 时需è¦çš„用户认è¯ä¿¡æ¯ã€‚ B_REGIST_CLIENT_CERT 指定客户端è¯ä¹¦(&C) B_IE 导入I&E代ç†æœåŠ¡å™¨è®¾ç½® +R_DISABLE_NATT ç¦ç”¨ NAT-T PREFIX D_CM_PROXY @@ -2328,7 +2350,7 @@ STATIC9 秒 R_USE_DISCONNECT 设置æ¯ä¸ª TCP 的连接寿命(&A) STATIC10 寿命(&P): STATIC11 秒 -STATIC12 当使用两个或以上 TCP 连接时,å¯ä»¥ä½¿ç”¨â€œåŠåŒå·¥æ¨¡å¼â€ã€‚åŠåŒå·¥æ¨¡å¼ä¸‹å›ºå®šäº†æ¯ä¸ª TCP 连接的数æ®æ–¹å‘。例如,当使用 8 个 TCP 连接建立一个 VPN 时,VPN 隧é“的物ç†ç»“构将被固定为:4 个 TCP 连接专用于上行方å‘,其余 4 个连接专用于下行方å‘。 +STATIC12 当使用两个或以上 TCP 连接时,å¯ä»¥ä½¿ç”¨ "åŠåŒå·¥æ¨¡å¼"。åŠåŒå·¥æ¨¡å¼ä¸‹å›ºå®šäº†æ¯ä¸ª TCP 连接的数æ®æ–¹å‘。例如,当使用 8 个 TCP 连接建立一个 VPN 时,VPN 隧é“的物ç†ç»“构将被固定为: 4 个 TCP 连接专用于上行方å‘,其余 4 个连接专用于下行方å‘。 R_USE_HALF_CONNECTION 使用åŠåŒå·¥æ¨¡å¼(&H) STATIC13 加密和压缩(&C): STATIC14 通常 VPN 会è¯ä¸ºå®‰å…¨èµ·è§ä¼šè¢«åŠ å¯†ã€‚您也å¯ä»¥ç¦ç”¨åŠ å¯†ä»¥æ高åžåé‡ã€‚请注æ„,在ç¦ç”¨åŠ å¯†çš„情况下,数æ®åœ¨ç½‘络上是以明文方å¼ä¼ è¾“的。 @@ -2343,7 +2365,7 @@ R_MONITOR 监控模å¼(&D) STATIC17 其它é…ç½®(&G): R_NO_ROUTING ä¸è¦è°ƒæ•´è·¯ç”±è¡¨(&R) STATIC18 除éžä½ å¾—到系统管ç†å‘˜çš„åŒæ„或者你有网络和安全方é¢çš„专业知识,å¦åˆ™è¯·ä¿æŒæ­¤å¯¹è¯æ¡†çš„默认设置。 -STATIC19 VoIP / QoS 功能å¯ä»¥å¤„ç†é«˜ä¼˜å…ˆçº§æ•°æ®åŒ…,如 IP 电è¯æ•°æ®åŒ…(VoIP)å¯ä»¥è¢«æ›´å¿«çš„传输。 +STATIC19 VoIP / QoS 功能å¯ä»¥å¤„ç†é«˜ä¼˜å…ˆçº§æ•°æ®åŒ…,如 IP 电è¯æ•°æ®åŒ… (VoIP) å¯ä»¥è¢«æ›´å¿«çš„传输。 R_DISABLE_QOS ç¦ç”¨ VoIP / &QoS 功能 IDOK 确定(&O) IDCANCEL å–消 @@ -2417,6 +2439,7 @@ B_EULA æœ€ç»ˆç”¨æˆ·è®¸å¯ B_IMPORTANT é‡è¦å¯äº‹ B_LEGAL 法律å¯äº‹ B_UPDATE_CONFIG é…置更新 +B_AUTHORS 作者åå• PREFIX D_REMOTE @@ -3098,6 +3121,9 @@ STATIC22 域å(&W): STATIC23 DNS æœåŠ¡å™¨åœ°å€ 2 (&V): IDOK 确定(&O) IDCANCEL å–消 +S_1 é™æ€è·¯ç”±è¡¨æŽ¨åŠŸèƒ½ (拆分隧é“) +S_2 推é€é™æ€è·¯ç”±è¡¨è‡³ VPN 客户端。 +B_PUSH 编辑该é™æ€è·¯ç”±è¡¨ä»¥æŽ¨é€ PREFIX D_NM_NAT @@ -3853,6 +3879,8 @@ S_2 如果您没有连接到 IPv6 网络,“ å…¨çƒ IPv6 地å€â€œå°†ä¼š IDCANCEL 退出(&X) B_DISABLE ç¦ç”¨åŠ¨æ€ DNS 功能(&D) B_PROXY 通过代ç†æœåŠ¡å™¨è¿žæŽ¥(&P)... +S_STATUS8 DNS é’¥: +B_HINT2 æ示 PREFIX D_SM_SPECIALLISTENER @@ -4139,6 +4167,19 @@ IDCANCEL ä¸åŒæ„(&D) S_BOLD 注æ„! ä¸è¦åœ¨ VPN 通讯ç¦æ­¢çš„国家使用 VPN Gate æœåŠ¡ã€‚ +PREFIX D_NM_PUSH +CAPTION 编辑该é™æ€è·¯ç”±è¡¨ä»¥æŽ¨é€ +S1 这个虚拟 DHCP æœåŠ¡å™¨å¯ä»¥æŽ¨é€å¸¦ DHCP 应答消æ¯çš„æ— ç±»é™æ€è·¯ç”± (RFC 3442) 至 VPN 客户端。 +S2 VPN 客户端是å¦èƒ½å¤Ÿè¯†åˆ«æ— ç±»é™æ€è·¯ç”± (RFC 3442) å–决于目标 VPN 客户端软件。SoftEther VPN 客户端和 OpenVPN 客户端都支æŒæ— ç±»é™æ€è·¯ç”±ã€‚在 L2TP/IPSec å’Œ MS-SSTP å议上,兼容性å–决于客户端软件的实施。 +S3 如果你清除了虚拟 DHCP æœåŠ¡å™¨é€‰é¡¹çš„默认网关字段,您就å¯ä»¥å®žçŽ°æ‹†åˆ†éš§é“。在客户端一侧,为了使用拆分隧é“, L2TP/IPSec å’Œ MS-SSTP 客户端需è¦é…置为ä¸åˆ›å»ºé»˜è®¤ç½‘关。 +S4 您还å¯ä»¥é€šè¿‡çŽ°æœ‰çš„外部 DHCP æœåŠ¡å™¨æŽ¨é€æ— ç±»é™æ€è·¯ç”± (RFC 3442)。在这ç§æƒ…况下,在 SecureNAT ç¦ç”¨è™šæ‹Ÿ DHCP æœåŠ¡å™¨åŠŸèƒ½ï¼Œåœ¨è¿™ä¸€å±å¹•ä¸Šä½ ä¸éœ€è¦è®¾ç½®æ— ç±»è·¯ç”±ã€‚ +S5 编辑该é™æ€è·¯ç”±è¡¨ä»¥æŽ¨é€ +S6 例如: 192.168.5.0/255.255.255.0/192.168.4.254, 10.0.0.0/255.0.0.0/192.168.4.253\r\n\r\n用逗å·æˆ–空格字符æ¥æ‹†åˆ†å¤šæ¡ç›® (最多 64 æ¡ç›®)。\r\næ¯ä¸ªæ¡ç›®å¿…须以 "IP ç½‘ç»œåœ°å€ / å­ç½‘æŽ©ç  / 网关 IP 地å€" çš„æ ¼å¼æ¥æŒ‡å®šã€‚ +S7 请å‚阅 RFC3442 以了解无类路由。 +IDOK 确定(&O) +IDCANCEL å–消 + + ########################################################################### @@ -5911,6 +5952,7 @@ CMD_DhcpGet_Column_GW é»˜è®¤ç½‘å…³åœ°å€ CMD_DhcpGet_Column_DNS DNS æœåŠ¡å™¨åœ°å€ 1 CMD_DhcpGet_Column_DNS2 DNS æœåŠ¡å™¨åœ°å€ 2 CMD_DhcpGet_Column_DOMAIN 域å +CMD_DhcpGet_Column_PUSHROUTE é™æ€è·¯ç”±è¡¨æŽ¨é€ # DhcpEnable 命令 @@ -5928,7 +5970,7 @@ CMD_DhcpDisable_Args DhcpDisable # DhcpSet 命令 CMD_DhcpSet 更改安全网络功能的虚拟 DHCP æœåŠ¡å™¨åŠŸèƒ½çš„设置 CMD_DhcpSet_Help 在现在管ç†çš„虚拟 HUB 内,更改虚拟 DHCP æœåŠ¡å™¨çš„设置。虚拟 DHCP æœåŠ¡å™¨è®¾ç½®åŒ…括: åˆ†é… IP 地å€èŒƒå›´ï¼Œå­ç½‘掩ç ï¼Œå‡ºç§ŸæœŸé™ï¼ŒåŠåˆ†é…给客户端的选项值。\n该指令在作为进群æ“作的 VPN Server 的虚拟æœåŠ¡å™¨ä¸Šä¸èƒ½æ‰§è¡Œã€‚ -CMD_DhcpSet_Args DhcpSet [/START:start_ip] [/END:end_ip] [/MASK:subnetmask] [/EXPIRE:sec] [/GW:gwip] [/DNS:dns] [/DNS2:dns2] [/DOMAIN:domain] [/LOG:yes|no] +CMD_DhcpSet_Args DhcpSet [/START:start_ip] [/END:end_ip] [/MASK:subnetmask] [/EXPIRE:sec] [/GW:gwip] [/DNS:dns] [/DNS2:dns2] [/DOMAIN:domain] [/LOG:yes|no] [/PUSHROUTE:"routing_table"] CMD_DhcpSet_START 指定地å€èŒƒå›´çš„开始点,以分å‘给客户。(例如: 192.168.30.10) CMD_DhcpSet_END 指定地å€èŒƒå›´çš„结æŸç‚¹ï¼Œä»¥åˆ†å‘给客户。(例如: 192.168.30.200) CMD_DhcpSet_MASK 指定对客户指定的å­ç½‘掩ç ã€‚(例如: 255.255.255.0) @@ -5938,6 +5980,7 @@ CMD_DhcpSet_DNS 指定被通知到客户端的主 DNS æœåŠ¡å™¨çš„ IP åœ°å€ CMD_DhcpSet_DNS2 æŒ‡å®šè¢«é€šçŸ¥åˆ°å®¢æˆ·ç«¯çš„æ¬¡è¦ DNS æœåŠ¡å™¨ IP 地å€ã€‚当 SecureNAT 功能的虚拟 NAT 功能已ç»å¯ç”¨å¹¶æ­£åœ¨è¿è¡Œæ—¶ï¼Œæ‚¨å¯ä»¥ä¸ºæ­¤æŒ‡å®šä¸€ä¸ª SecureNAT 虚拟主机 IP 地å€ã€‚如果您指定的是 0 或者 none,那么客户端就ä¸ä¼šè¢« DNS æœåŠ¡å™¨åœ°å€é€šçŸ¥ã€‚ CMD_DhcpSet_DOMAIN 指定域å通知客户。如果指定 none,该域åä¸é€šçŸ¥å®¢æˆ·ã€‚ CMD_DhcpSet_LOG 指定是å¦å°†è™šæ‹Ÿ DHCP æœåŠ¡å™¨è¿è¡Œä¿å­˜ä¸ºå®‰å…¨æ—¥å¿—。指定 "yes" 则ä¿å­˜ã€‚此值与虚拟 NAT 功能的日志ä¿å­˜è®¾ç½®æ˜¯è”动的。 +CMD_DhcpSet_PUSHROUTE 指定é™æ€è·¯ç”±è¡¨æŽ¨é€ã€‚\n例如: "192.168.5.0/255.255.255.0/192.168.4.254, 10.0.0.0/255.0.0.0/192.168.4.253"\n用逗å·æˆ–空格字符æ¥æ‹†åˆ†å¤šæ¡ç›® (最多 64 æ¡ç›®)。æ¯ä¸ªæ¡ç›®å¿…须以 "IP 网络地å€/å­ç½‘掩ç /网关 IP 地å€" çš„æ ¼å¼æ¥æŒ‡å®šã€‚ \n这个虚拟 DHCP æœåŠ¡å™¨å¯ä»¥æŽ¨é€å¸¦DHCP应答消æ¯çš„æ— ç±»é™æ€è·¯ç”± (RFC 3442) 至 VPN 客户端。\nVPN 客户端是å¦èƒ½å¤Ÿè¯†åˆ«æ— ç±»é™æ€è·¯ç”± (RFC 3442) å–决于目标VPN客户端软件。SoftEther VPN 客户端和 OpenVPN 客户端都支æŒæ— ç±»é™æ€è·¯ç”±ã€‚在 L2TP/IPSec å’Œ MS-SSTP å议上,兼容性å–决于客户端软件的实施。如果你清除了虚拟 DHCP æœåŠ¡å™¨é€‰é¡¹çš„默认网关字段,您就å¯ä»¥å®žçŽ°æ‹†åˆ†éš§é“。在客户端一侧,为了使用拆分隧é“,L2TP/IPSec å’Œ MS-SSTP 客户端需è¦é…置为ä¸åˆ›å»ºé»˜è®¤ç½‘关。\n您还å¯ä»¥é€šè¿‡çŽ°æœ‰çš„外部 DHCP æœåŠ¡å™¨æŽ¨é€æ— ç±»é™æ€è·¯ç”± (RFC 3442)。在这ç§æƒ…况下,在 SecureNAT ç¦ç”¨è™šæ‹Ÿ DHCP æœåŠ¡å™¨åŠŸèƒ½ï¼Œåœ¨è¿™ä¸€å±å¹•ä¸Šä½ ä¸éœ€è¦è®¾ç½®æ— ç±»è·¯ç”±ã€‚\n请å‚阅 RFC 3442 以了解无类路由。 CMD_DhcpSet_Prompt_START 分å‘地å€èŒƒå›´çš„开始: CMD_DhcpSet_Prompt_END 分å‘地å€èŒƒå›´çš„结æŸ: CMD_DhcpSet_Prompt_MASK å­ç½‘掩ç : @@ -7085,3 +7128,4 @@ SW_LINK_NAME_LANGUAGE_COMMENT 修改 %s 的显示语言设置。 SW_LINK_NAME_DEBUG 调试信æ¯é‡‡é›†å·¥å…· SW_LINK_NAME_DEBUG_COMMENT 采集 SoftEther VPN 的调试信æ¯ã€‚仅在您的支æŒäººå‘˜è¦æ±‚你这样åšæ—¶ä½¿ç”¨æ­¤å·¥å…·ã€‚ + diff --git a/src/bin/hamcore/strtable_en.stb b/src/bin/hamcore/strtable_en.stb index 655e6269..32b95194 100644 --- a/src/bin/hamcore/strtable_en.stb +++ b/src/bin/hamcore/strtable_en.stb @@ -290,6 +290,7 @@ DLG_OPEN_CONFIG Specify the Configuration File to Import DLG_STRING_DEFTITLE String Input DLG_STRING_DEFINFO Enter strings. DLG_ABOUT_LEGAL Legal Notices +DLG_ABOUT_AUTHORS List of Authors DLG_UPDATE_DATE \ (Released on %S) DLG_UPDATE_HINT Press OK to view the information of the latest update on the web browser.\r\n\r\nYou have to download and install updates manually. If you want to update software on the other computer you have to log in to the computer by Remote Desktop or SSH to perform the download and update. @@ -447,6 +448,9 @@ WINVER_ERROR_PC_REMOTE the remote server # Warning for Open-source Version OSS_MSG Welcome to the SoftEther VPN Server Academic Version!\r\n\r\n\r\nThis VPN Server is open-source free software developed as academic research at University of Tsukuba, Japan, and distributed from the SoftEther VPN Project (http://www.softether.org/), for free of charge for the public interests.\r\n\r\nSoftEther VPN software is distributed to public as a part of the joint-research contract between University of Tsukuba and SoftEther VPN Project. SoftEther VPN software is developed and published for JUST AN ACADEMIC RESEARCH PURPOSE. Therefore no support service are provided about SoftEther VPN software even if it contains bugs or vulnerabilities. A user will be liable for the result of use SoftEther VPN. The developers and publishers of SoftEther VPN will never be liable for either any consequences or damages.\r\n\r\nEnjoy using VPN with SoftEther VPN Server.\r\n\r\nFor more details of SoftEther VPN, visit http://www.softether.org/.\r\n\r\n +NATT_MSG ** Connected with NAT traversal - might be unstable **\r\n\r\nThis VPN Client is connected to the VPN Server '%S' by using the NAT Traversal (UDP Hole Punching) technology.\r\n\r\nNAT Traversal allows the VPN Server behind the NAT-box to accept VPN connections from VPN Client without any port-forwarding setting on the NAT-box.\r\n\r\nHowever, NAT Traversal-based VPN sessions sometimes become unstable, because NAT Traversal uses UDP-based protocol. For example, the VPN tunnel disconnects every 5 minutes if there is a poor NAT-box between the VPN Server and the VPN Client. Some large-scale NAT gateways in cheap ISPs sometimes cause the same problem on NAT Traversal. This is a problem of routers or ISPs. This is not a problem of SoftEther VPN software.\r\n\r\nTo solve the unstable tunnel problem, you should connect to the VPN Server's TCP listener port directly, instead of using NAT Traversal. To connect to the VPN Server directly by using TCP, a listener port of the VPN Server must be exposed to the Internet by a port-forward setting on the NAT-box. Ask the administrator of the NAT-box, or refer to the manual of the NAT-box to add a port-forwarding setting on the NAT-box.\r\n\r\nIf this message still remains despite the VPN Server is exposing a TCP port to the Internet, check the "Disable NAT-T" checkbox on the VPN Client connection setting screen.\r\n\r\n +NATT_MSG2 ** Connected with NAT traversal - might be unstable **\r\n\r\nThis VPN Client is connected to the VPN Server '%S' by using the NAT Traversal (UDP Hole Punching) technology.\r\n\r\nNAT Traversal allows the VPN Server behind the NAT-box to accept VPN connections from VPN Client without any port-forwarding setting on the NAT-box.\r\n\r\nHowever, NAT Traversal-based VPN sessions sometimes become unstable, because NAT Traversal uses UDP-based protocol. For example, the VPN tunnel disconnects every 5 minutes if there is a poor NAT-box between the VPN Server and the VPN Client. Some large-scale NAT gateways in cheap ISPs sometimes cause the same problem on NAT Traversal. This is a problem of routers or ISPs. This is not a problem of SoftEther VPN software.\r\n\r\nTo solve the unstable tunnel problem, you should connect to the VPN Server's TCP listener port directly, instead of using NAT Traversal. To connect to the VPN Server directly by using TCP, a listener port of the VPN Server must be exposed to the Internet by a port-forward setting on the NAT-box. Ask the administrator of the NAT-box, or refer to the manual of the NAT-box to add a port-forwarding setting on the NAT-box.\r\n\r\nIf this message still remains despite the VPN Server is exposing a TCP port to the Internet, check the "Disable NAT-T" checkbox on the VPN Client connection setting screen after upgrading the VPN Client to Build 9428 or later.\r\n\r\n + # Virtual HUB Admin Options @@ -541,6 +545,10 @@ HUB_AO_DisableUserModeSecureNAT If you set this option to non-zero value, the HUB_AO_DisableCheckMacOnLocalBridge If you set this option to non-zero value, the MAC address duplication check will be disabled on the Local Bridge function. There might be a case when some network adapters has a problem that reflects outgoing packets towards the Virtual Hub. A Virtual HUB detects such duplications automatically, and discards them. Enable this flag to disable the detection and discarding. HUB_AO_DisableCorrectIpOffloadChecksum If you set this option to non-zero value, then the checking and correction of IP check-sum value on the Local Bridge function. Some network adapters, which have IP, TCP or UDP header check-sum offloading engines, transmit packets with incomplete check-sum values. Such packets cannot be treated correctly by receiver-side. So the Local Bridge detects such packets and corrects its check-sum fields. Enable this flag to disable such correction. HUB_AO_BroadcastLimiterStrictMode If you set this option to non-zero value, then the broadcast-storm detection algorithm will compare either source or destination IP address of each packet. If any of the two fields matches, the packet will be recorded on the short-term history of broadcast-storm detection state machine. +HUB_AO_MaxLoggedPacketsPerMinute Maximum number of logging target packets per minute. +HUB_AO_DoNotSaveHeavySecurityLogs Do not take heavy security log. +HUB_AO_DropBroadcastsInPrivacyFilterMode Drop broadcasting packets if the both source and destination session is PrivacyFilter mode. +HUB_AO_DropArpInPrivacyFilterMode Drop ARP packets if the both source and destination session is PrivacyFilter mode. # Concerning failed connection dialogs @@ -646,6 +654,8 @@ CT_b_using_selow_driver SoftEther Lightweight Kernel-mode Ethernet Driver is Act CT_b_support_vgs VPN Gate Service Server Functions are Supported CT_b_support_vgs_in_client VPN Gate Service Server Functions (VPN Client integrated) CT_b_is_softether Either Free or Open-Source Version of SoftEther VPN +CT_b_suppport_push_route Static Routing Table Pushing Function +CT_b_suppport_push_route_config Static Routing Table Pushing Function (Configurable) # Concerning policies POL_TITLE_STR Policy Name @@ -1129,9 +1139,9 @@ SM_PASSWORD_TYPE_STR Password for Administration Connection SM_HUB_COLUMN_1 Virtual Hub Name SM_HUB_COLUMN_2 Status SM_HUB_COLUMN_3 Type -SM_HUB_COLUMN_4 User -SM_HUB_COLUMN_5 Group -SM_HUB_COLUMN_6 Session +SM_HUB_COLUMN_4 Users +SM_HUB_COLUMN_5 Groups +SM_HUB_COLUMN_6 Sessions SM_HUB_COLUMN_7 MAC Tables SM_HUB_COLUMN_8 IP Tables SM_HUB_COLUMN_9 Num Logins @@ -1610,6 +1620,9 @@ SM_DDNS_FQDN_EMPTY (None) SM_DDNS_OK_MSG The Dynamic DNS hostname: %S%S\r\n\r\nYou can access to the below IP address by specifying the above DNS hostname.\r\n\r\nIPv4 Address: %s\r\nIPv6 Address: %s\r\n\r\nYou can also specify the following special forms of hostnames to specify IPv4 or IPv6 as the address-type explicitly.\r\n\r\nHostname for IPv4: %S.v4%S\r\nHostname for IPv6: %S.v6%S\r\n SM_DDNS_OK_TITLE Dynamic DNS Function SM_DDNS_OK_MSG2 The Dynamic DNS hostname has been changed to '%S'.\r\n\r\nClick Hint to read additional information. +SM_DDNS_KEY_TITLE Dynamic DNS Key +SM_DDNS_KEY_MSG Your Dynamic DNS Private Key: %s\r\n\r\nThis is the private key which is associated with your current DDNS name. If your VPN Server PC damaged and lost the key, the current DDNS name will be occupied forever and other VPN Server will not be able to use the same name.\r\nIf you want to continue to use the same name, keep the key on a safe place, such as an Internet storage, an another PC or a notepad.\r\nWhen applying the key to the new VPN Server, edit the configuration file of the VPN Server to replace the key by the string in the value following to "byte Key" in the "declare DDnsClient" directive.\r\nDo not use the duplicated key to two or more VPN Servers at the same time. +SM_DDNS_KEY_ERR Failed to read the DNS key. SM_IPSEC_PSK_TOO_LONG The pre-shared key (PSK) has 10 or more letters.\r\n\r\nIt is reported that several versions of Google Android has a serious bug with 10 or more letters pre-shared key.\r\nTherefore 9 or less letters are recommended for pre-shared key.\r\n\r\nDo you want to modify the pre-shared key? SM_ADVANCED_REDIRECT_URL_HINT_TITLE How to Use Advanced HTTP Redirection Function SM_ADVANCED_REDIRECT_URL_HINT Advanced HTTP Redirection (For Experts)\r\n\r\nThe string "" is a place holder. It can embedded on the URL of redirection.\r\n\r\nEmbedded URL Example:\r\nhttp://www.google.com/search?q=|secret\r\n\r\nWhen the client is being redirected, the actual destination URL of redirection will be replaced as follows.\r\n\r\nUsername|Session ID|IP Address|Date and Time|Hash Value\r\n\r\\nAfter Replacement Example: zurukko|SID-ZURUKKO-123|219.117.219.154|20131117100354|99707160AFE7A454042B2C47B064112D652452D7\r\n\r\nThe details of each fields are described as following.\r\n\r\nUsername: The username using for the current VPN Session will be placed.\r\n\r\nSession ID: The Session ID of the VPN Session will be placed.\r\n\r\nDate and Time: 14-digits will be placed as 'YYYYMMDDHHMMSS' format (Time zone is UTC).\r\n\r\nHash Value: A 40-characters hexadecimal strings which represent 20 bytes binary data. The binary data is the result of SHA-1 hash function to the temporary string. The temporary string is the combination of the bit-array of the above fields plus the secret string after the '|' symbol in the redirection URL. (In the above example, "secret" is the secret string.) If there are no '|' symbols in the URL, no hash value will be appended.\r\n\r\nThe Purpose of Hash Value: The secret string is effective as the secret key. Thanks to the secret key, the CGI program which receives the query strings on the redirected URL can verify the integrity of the parameters included in the URL.\r\n @@ -1677,6 +1690,7 @@ DHCP_MAC_ADDRESS MAC Address DHCP_IP_ADDRESS Allocated IP DHCP_HOSTNAME Client Host Name NM_PASSWORD_MSG The administration password has been set. +NM_PUSH_ROUTE_WARNING The specified text of the static routing table may have a syntax error. # Concerning version information @@ -2287,6 +2301,7 @@ R_HIDE2 Hide IP Address Screens STATIC15 Set the user authentication information that is required when connecting to the VPN Server. B_REGIST_CLIENT_CERT Specify Client &Certificate B_IE Import I&E Proxy Server Settings +R_DISABLE_NATT Disable NAT-T PREFIX D_CM_PROXY @@ -2405,6 +2420,7 @@ B_EULA &End User License B_IMPORTANT &Important Notices B_LEGAL &Legal Notices B_UPDATE_CONFIG &Configure Updates +B_AUTHORS List of &Authors PREFIX D_REMOTE @@ -3088,6 +3104,9 @@ STATIC22 Domain Name: STATIC23 DNS &Server Address 2: IDOK &OK IDCANCEL Cancel +S_1 Static routing table pushing function (for split tunneling) +S_2 Push the static routing table to VPN clients. +B_PUSH Edit the static routing table to push PREFIX D_NM_NAT @@ -3771,7 +3790,7 @@ R_ETHERIP Enable &EtherIP / L2TPv3 over IPsec Server Function B_DETAIL EtherIP / L2TPv3 &Detail Settings S07 IPsec &Common Settings S_PSK IPsec &Pre-Shared Key: -S_PSK2 IPsec Pre-Shared Key is also called "PSKs" or "Secrets". Specify it with almost eight ASCII characters, and let all VPN users know. +S_PSK2 IPsec Pre-Shared Key is also called "PSKs" or "Secrets". Specify it with around eight ASCII characters, and let all VPN users know. IDOK &OK IDCANCEL Cancel @@ -3844,7 +3863,8 @@ S_2 If you are not connected to IPv6 Internet, "Global IPv6 Address" should IDCANCEL E&xit B_DISABLE &Disable Dynamic DNS Function B_PROXY Connect via &Proxy Server... - +S_STATUS8 DNS Key: +B_HINT2 Hint PREFIX D_SM_SPECIALLISTENER CAPTION VPN over ICMP / DNS Function Settings @@ -4132,6 +4152,18 @@ IDCANCEL &Disagree S_BOLD Caution! Do Not Use the VPN Gate Services in Countries where VPN Communications are Prohibited. +PREFIX D_NM_PUSH +CAPTION Edit the static routing table to push +S1 This Virtual DHCP Server can push the classless static routes (RFC 3442) with DHCP reply messages to VPN clients. +S2 Whether or not a VPN client can recognize the classless static routes (RFC 3442) depends on the target VPN client software. SoftEther VPN Client and OpenVPN Client are supporting the classless static routes. On L2TP/IPsec and MS-SSTP protocols, the compatibility depends on the implementation of the client software. +S3 You can realize the split tunneling if you clear the default gateway field on the Virtual DHCP Server options. On the client side, L2TP/IPsec and MS-SSTP clients need to be configured not to set up the default gateway for the split tunneling usage. +S4 You can also push the classless static routes (RFC 3442) by your existing external DHCP server. In that case, disable the Virtual DHCP Server function on SecureNAT, and you need not to set up the classless routes on this screen. +S5 Edit the static routing table to push +S6 Example: 192.168.5.0/255.255.255.0/192.168.4.254, 10.0.0.0/255.0.0.0/192.168.4.253\r\n\r\nSplit multiple entries (maximum: 64 entries) by comma or space characters.\r\nEach entry must be specified in the "IP network address/subnet mask/gateway IP address" format. +S7 See the RFC 3442 to understand the classless routes. +IDOK &OK +IDCANCEL Cancel + ########################################################################### @@ -5904,6 +5936,7 @@ CMD_DhcpGet_Column_GW Default Gateway Address CMD_DhcpGet_Column_DNS DNS Server Address 1 CMD_DhcpGet_Column_DNS2 DNS Server Address 2 CMD_DhcpGet_Column_DOMAIN Domain Name +CMD_DhcpGet_Column_PUSHROUTE Static Routing Table to Push # DhcpEnable command @@ -5921,7 +5954,7 @@ CMD_DhcpDisable_Args DhcpDisable # DhcpSet command CMD_DhcpSet Change Virtual DHCP Server Function Setting of SecureNAT Function CMD_DhcpSet_Help Use this to change the Virtual DHCP Server setting of the currently managed Virtual Hub. The Virtual DHCP Server settings include the following items: distribution address band, subnet mask, lease limit, and option values assigned to clients. \nYou cannot execute this command for Virtual Hubs of VPN Servers operating as a cluster. -CMD_DhcpSet_Args DhcpSet [/START:start_ip] [/END:end_ip] [/MASK:subnetmask] [/EXPIRE:sec] [/GW:gwip] [/DNS:dns] [/DNS2:dns2][/DOMAIN:domain] [/LOG:yes|no] +CMD_DhcpSet_Args DhcpSet [/START:start_ip] [/END:end_ip] [/MASK:subnetmask] [/EXPIRE:sec] [/GW:gwip] [/DNS:dns] [/DNS2:dns2][/DOMAIN:domain] [/LOG:yes|no] [/PUSHROUTE:"routing_table"] CMD_DhcpSet_START Specify the start point of the address band to be distributed to the client. (Example: 192.168.30.10) CMD_DhcpSet_END Specify the end point of the address band to be distributed to the client. (Example: 192.168.30.200) CMD_DhcpSet_MASK Specify the subnet mask to be specified for the client. (Example: 255.255.255.0) @@ -5931,6 +5964,7 @@ CMD_DhcpSet_DNS Specify the IP address of the primary DNS Server to be notifie CMD_DhcpSet_DNS2 Specify the IP address of the secondary DNS Server to be notified to the client. You can specify a SecureNAT Virtual Host IP address for this when the SecureNAT Function's Virtual NAT Function has been enabled and is being used also. If you specify 0 or none, then the client will not be notified of the DNS Server address. CMD_DhcpSet_DOMAIN Specify the domain name to be notified to the client. If you specify none, then the client will not be notified of the domain name. CMD_DhcpSet_LOG Specify whether or not to save the Virtual DHCP Server operation in the Virtual Hub security log. Specify "yes" to save it. This value is interlinked with the Virtual NAT Function log save setting. +CMD_DhcpSet_PUSHROUTE Specify the static routing table to push.\nExample: "192.168.5.0/255.255.255.0/192.168.4.254, 10.0.0.0/255.0.0.0/192.168.4.253"\nSplit multiple entries (maximum: 64 entries) by comma or space characters. Each entry must be specified in the "IP network address/subnet mask/gateway IP address" format.\nThis Virtual DHCP Server can push the classless static routes (RFC 3442) with DHCP reply messages to VPN clients.\nWhether or not a VPN client can recognize the classless static routes (RFC 3442) depends on the target VPN client software. SoftEther VPN Client and OpenVPN Client are supporting the classless static routes. On L2TP/IPsec and MS-SSTP protocols, the compatibility depends on the implementation of the client software. You can realize the split tunneling if you clear the default gateway field on the Virtual DHCP Server options. On the client side, L2TP/IPsec and MS-SSTP clients need to be configured not to set up the default gateway for the split tunneling usage.\nYou can also push the classless static routes (RFC 3442) by your existing external DHCP server. In that case, disable the Virtual DHCP Server function on SecureNAT, and you need not to set up the classless routes on this command.\nSee the RFC 3442 to understand the classless routes. CMD_DhcpSet_Prompt_START Start Point for Distributed Address Band: CMD_DhcpSet_Prompt_END End Point for Distributed Address Band: CMD_DhcpSet_Prompt_MASK Subnet Mask: diff --git a/src/bin/hamcore/strtable_ja.stb b/src/bin/hamcore/strtable_ja.stb index 6cc51bd1..5cfb4f2b 100644 --- a/src/bin/hamcore/strtable_ja.stb +++ b/src/bin/hamcore/strtable_ja.stb @@ -293,6 +293,7 @@ DLG_OPEN_CONFIG インãƒãƒ¼ãƒˆã™ã‚‹ã‚³ãƒ³ãƒ•ã‚£ã‚°ãƒ¬ãƒ¼ã‚·ãƒ§ãƒ³ãƒ•ã‚¡ã‚¤ DLG_STRING_DEFTITLE 文字列ã®å…¥åŠ› DLG_STRING_DEFINFO 文字列を入力ã—ã¦ãã ã•ã„。 DLG_ABOUT_LEGAL 法律上ã®é€šçŸ¥ +DLG_ABOUT_AUTHORS 開発者ã®ä¸€è¦§ DLG_UPDATE_DATE \ (%S ã«ãƒªãƒªãƒ¼ã‚¹) DLG_UPDATE_HINT [OK] をクリックã™ã‚‹ã¨ã€Web ブラウザãŒé–‹ã„ã¦æœ€æ–°ã®ã‚¢ãƒƒãƒ—デートã«é–¢ã™ã‚‹æƒ…å ±ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚\r\n\r\nアップデートã®ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¨ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯æ‰‹å‹•ã§è¡Œã†å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ä»–ã®ã‚³ãƒ³ãƒ”ュータ上ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ã‚¢ãƒƒãƒ—デートを行ã†å ´åˆã¯ã€ãã®ã‚³ãƒ³ãƒ”ュータã«ãƒªãƒ¢ãƒ¼ãƒˆãƒ‡ã‚¹ã‚¯ãƒˆãƒƒãƒ—ã‚„ SSH ãªã©ã§ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã¨ã‚¢ãƒƒãƒ—デート作業を行ã£ã¦ãã ã•ã„。\r\n @@ -469,6 +470,11 @@ WINVER_ERROR_PC_REMOTE 接続先ã®ã‚µãƒ¼ãƒãƒ¼ã‚³ãƒ³ãƒ”ュータ OSS_MSG ã¯ã˜ã‚ã« - SoftEther VPN Server ã«ã¤ã„ã¦\r\n\r\nã“ã® VPN Server ã¯ã€ç­‘波大学ã«ãŠã„ã¦å­¦è¡“実験目的ã§é–‹ç™ºã•ã‚Œ SoftEther プロジェクト http://www.softether.org/ ã§ç„¡å„Ÿé…布ã•ã‚Œã¦ã„るオープンソースã®ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã§ã™ã€‚\r\nSoftEther VPN ソフトウェアã¯å›½ç«‹å¤§å­¦æ³•äººç­‘波大学ã¨ã‚½ãƒ•ãƒˆã‚¤ãƒ¼ã‚µæ ªå¼ä¼šç¤¾ã¨ã®å…±åŒç ”究契約ã®ä¸€ç’°ã¨ã—ã¦åºƒã公開ã•ã‚Œã¦ã„ã‚‹ã‚‚ã®ã§ã™ã€‚SoftEther VPN ソフトウェアã¯å­¦è¡“実験目的ã§é–‹ç™ºãƒ»å…¬é–‹ã•ã‚Œã¦ãŠã‚Šã¾ã™ã€‚SoftEther VPN ソフトウェアã«å«ã¾ã‚Œã‚‹ä¸å…·åˆç­‰ã«ã¤ã„ã¦ã®ã‚µãƒãƒ¼ãƒˆç­‰ã¯æä¾›ã•ã‚Œã¦ãŠã‚‰ãšã€åˆ©ç”¨è€…ãŒã™ã¹ã¦ã®è²¬ä»»ã‚’è² ã†ã“ã¨ã«ãªã‚Šã¾ã™ã€‚本ソフトウェアã®é–‹ç™ºè€…・é…布者ã¯ã€SoftEther VPN ソフトウェアã®åˆ©ç”¨ã®çµæžœã€åˆ©ç”¨è€…ã«ç”Ÿã˜ã‚‹æ失等ã«ã¤ã„ã¦ã€ä¸€åˆ‡è²¬ä»»ã‚’è² ã„ã¾ã›ã‚“。\r\n\r\nã“れらã®ã“ã¨ã«åˆæ„ã„ãŸã ã„ãŸä¸Šã§ã€SoftEther VPN Server を用ã„ãŸé€šä¿¡ã‚’ãŠæ¥½ã—ã¿ãã ã•ã„。\r\n\r\nSoftEther VPN ã«ã¤ã„ã¦è©³ã—ã㯠http://www.softether.org/ ã‚’ã”å‚ç…§ãã ã•ã„。\r\n\r\n +# NAT Traversal ã«é–¢ã™ã‚‹è­¦å‘Š +NATT_MSG ** NAT Traversal 接続 - 安定性低下ã®å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ **\r\n\r\nVPN Client 㯠VPN Server '%S' ã« NAT トラãƒãƒ¼ã‚µãƒ« (UDP ホールパンãƒãƒ³ã‚°) モードã§æŽ¥ç¶šã—ã¾ã—ãŸã€‚\r\n\r\nNAT トラãƒãƒ¼ã‚µãƒ«ã«ã‚ˆã£ã¦ã€VPN Client 㯠NAT やファイアウォールã®èƒŒå¾Œã«ã‚ã‚‹ VPN Server ã«ã€ãれら㮠NAT やファイアウォールã§ã®ãƒãƒ¼ãƒˆãƒ•ã‚©ãƒ¯ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®è¨­å®šã‚’è¡Œã†ã“ã¨ãªã接続ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\r\n\r\nã—ã‹ã—ã€NAT トラãƒãƒ¼ã‚µãƒ«ã¯ UDP をベースã¨ã—ãŸé€šä¿¡ã‚’使用ã™ã‚‹ãŸã‚ã€VPN セッションãŒä¸å®‰å®šã«ãªã‚‹åŽŸå› ã¨ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ãŸã¨ãˆã°ã€å®‰ä¾¡ãª NAT ルータ㌠VPN Server 㨠VPN Client ã¨ã®é–“ã«å­˜åœ¨ã™ã‚‹å ´åˆã€NAT トラãƒãƒ¼ã‚µãƒ«ä¸Šã® VPN トンãƒãƒ«ã¯ 5 分ã”ã¨ã«åˆ‡æ–­ã•ã‚Œã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€å®‰ä¾¡ãª ISP ãŒå¤§è¦æ¨¡ãª NAT を使用ã—ã¦ã„ã‚‹å ´åˆã«ã‚‚ NAT トラãƒãƒ¼ã‚µãƒ«ã¯ä¸å®‰å®šã«ãªã‚Šã¾ã™ã€‚ã“ã‚Œã¯ãƒ«ãƒ¼ã‚¿ã‚„ ISP ã®å“質ã®å•é¡Œã§ã‚ã‚Šã€SoftEther VPN ã®å•é¡Œã§ã¯ã‚ã‚Šã¾ã›ã‚“。\r\n\r\nã“れを解決ã™ã‚‹ãŸã‚ã«ã¯ã€NAT トラãƒãƒ¼ã‚µãƒ«ã‚’使用ã™ã‚‹ã®ã§ã¯ãªãã€ç›´æŽ¥ TCP/IP ã«ã‚ˆã£ã¦ VPN Server ã®ãƒªã‚¹ãƒŠãƒ¼ãƒãƒ¼ãƒˆã« VPN Client ãŒæŽ¥ç¶šã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ã—ã¾ã™ã€‚ãã®ãŸã‚ã«ã¯ã€VPN Server ã®ãƒªã‚¹ãƒŠãƒ¼ãƒãƒ¼ãƒˆãŒã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«å¯¾ã—ã¦å…¬é–‹ã•ã‚Œã‚‹ã‚ˆã†ã«ã€NAT ã«ãŠã‘ã‚‹ãƒãƒ¼ãƒˆãƒ•ã‚©ãƒ¯ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°è¨­å®šã‚’è¡Œã£ã¦ãã ã•ã„。NAT ã«ãŠã‘ã‚‹ãƒãƒ¼ãƒˆãƒ•ã‚©ãƒ¯ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°è¨­å®šã®æ–¹æ³•ã¯ã€NAT ã®ç®¡ç†è€…ã«å•ã„åˆã‚ã›ã‚‹ã‹ã€NAT 製å“ã®èª¬æ˜Žæ›¸ã‚’ãŠèª­ã¿ãã ã•ã„。\r\n\r\nVPN Server ㌠TCP ãƒãƒ¼ãƒˆã‚’インターãƒãƒƒãƒˆã«å¯¾ã—ã¦å…¬é–‹ã—ã¦ã„ã‚‹ã«ã‚‚é–¢ã‚らãšã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•ã‚Œã‚‹å ´åˆã¯ã€VPN Client ã®æŽ¥ç¶šè¨­å®šç”»é¢ã§ã€ŒNAT-T 無効ã€ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。\r\n\r\n +NATT_MSG2 ** NAT Traversal 接続 - 安定性低下ã®å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ **\r\n\r\nVPN Client 㯠VPN Server '%S' ã« NAT トラãƒãƒ¼ã‚µãƒ« (UDP ホールパンãƒãƒ³ã‚°) モードã§æŽ¥ç¶šã—ã¾ã—ãŸã€‚\r\n\r\nNAT トラãƒãƒ¼ã‚µãƒ«ã«ã‚ˆã£ã¦ã€VPN Client 㯠NAT やファイアウォールã®èƒŒå¾Œã«ã‚ã‚‹ VPN Server ã«ã€ãれら㮠NAT やファイアウォールã§ã®ãƒãƒ¼ãƒˆãƒ•ã‚©ãƒ¯ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã®è¨­å®šã‚’è¡Œã†ã“ã¨ãªã接続ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\r\n\r\nã—ã‹ã—ã€NAT トラãƒãƒ¼ã‚µãƒ«ã¯ UDP をベースã¨ã—ãŸé€šä¿¡ã‚’使用ã™ã‚‹ãŸã‚ã€VPN セッションãŒä¸å®‰å®šã«ãªã‚‹åŽŸå› ã¨ãªã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ãŸã¨ãˆã°ã€å®‰ä¾¡ãª NAT ルータ㌠VPN Server 㨠VPN Client ã¨ã®é–“ã«å­˜åœ¨ã™ã‚‹å ´åˆã€NAT トラãƒãƒ¼ã‚µãƒ«ä¸Šã® VPN トンãƒãƒ«ã¯ 5 分ã”ã¨ã«åˆ‡æ–­ã•ã‚Œã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€å®‰ä¾¡ãª ISP ãŒå¤§è¦æ¨¡ãª NAT を使用ã—ã¦ã„ã‚‹å ´åˆã«ã‚‚ NAT トラãƒãƒ¼ã‚µãƒ«ã¯ä¸å®‰å®šã«ãªã‚Šã¾ã™ã€‚ã“ã‚Œã¯ãƒ«ãƒ¼ã‚¿ã‚„ ISP ã®å“質ã®å•é¡Œã§ã‚ã‚Šã€SoftEther VPN ã®å•é¡Œã§ã¯ã‚ã‚Šã¾ã›ã‚“。\r\n\r\nã“れを解決ã™ã‚‹ãŸã‚ã«ã¯ã€NAT トラãƒãƒ¼ã‚µãƒ«ã‚’使用ã™ã‚‹ã®ã§ã¯ãªãã€ç›´æŽ¥ TCP/IP ã«ã‚ˆã£ã¦ VPN Server ã®ãƒªã‚¹ãƒŠãƒ¼ãƒãƒ¼ãƒˆã« VPN Client ãŒæŽ¥ç¶šã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ã—ã¾ã™ã€‚ãã®ãŸã‚ã«ã¯ã€VPN Server ã®ãƒªã‚¹ãƒŠãƒ¼ãƒãƒ¼ãƒˆãŒã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«å¯¾ã—ã¦å…¬é–‹ã•ã‚Œã‚‹ã‚ˆã†ã«ã€NAT ã«ãŠã‘ã‚‹ãƒãƒ¼ãƒˆãƒ•ã‚©ãƒ¯ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°è¨­å®šã‚’è¡Œã£ã¦ãã ã•ã„。NAT ã«ãŠã‘ã‚‹ãƒãƒ¼ãƒˆãƒ•ã‚©ãƒ¯ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°è¨­å®šã®æ–¹æ³•ã¯ã€NAT ã®ç®¡ç†è€…ã«å•ã„åˆã‚ã›ã‚‹ã‹ã€NAT 製å“ã®èª¬æ˜Žæ›¸ã‚’ãŠèª­ã¿ãã ã•ã„。\r\n\r\nVPN Server ㌠TCP ãƒãƒ¼ãƒˆã‚’インターãƒãƒƒãƒˆã«å¯¾ã—ã¦å…¬é–‹ã—ã¦ã„ã‚‹ã«ã‚‚é–¢ã‚らãšã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒè¡¨ç¤ºã•ã‚Œã‚‹å ´åˆã¯ã€VPN Client ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ Build 9428 以é™ã«ã‚¢ãƒƒãƒ—グレードã—ã¦ã‹ã‚‰ã€VPN Client ã®æŽ¥ç¶šè¨­å®šç”»é¢ã§ã€ŒNAT-T 無効ã€ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ãã ã•ã„。\r\n\r\n + + # 仮想 HUB 管ç†ã‚ªãƒ—ション関係 HUB_AO_CLICK é …ç›®åã‚’ 1 ã¤é¸æŠžã™ã‚‹ã¨ã€ãã®é …ç›®åã«é–¢ã™ã‚‹èª¬æ˜Žæ–‡ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ HUB_AO_UNKNOWN ã“ã®é …ç›®ã«é–¢ã™ã‚‹èª¬æ˜Žæ–‡ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚ドキュメント等をå‚ç…§ã™ã‚‹ã‹ã€é …ç›®åã‚’ã‚‚ã¨ã«æ„味・内容を推測ã—ã¦åˆ©ç”¨ã—ã¦ãã ã•ã„。 @@ -560,6 +566,10 @@ HUB_AO_DisableUserModeSecureNAT ã“ã®é …目㌠1 (有効) ã®å ´åˆã¯ã€Sec HUB_AO_DisableCheckMacOnLocalBridge ã“ã®é …目㌠1 (有効) ã®å ´åˆã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ–リッジ機能ã«ãŠã„㦠MAC アドレスã®é‡è¤‡ãƒã‚§ãƒƒã‚¯ã‚’無効ã«ã—ã¾ã™ã€‚一部㮠LAN カードã§ã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ–リッジ機能ã«ã‚ˆã£ã¦é€å‡ºã•ã‚ŒãŸãƒ‘ケット㌠LAN カード内部ã§åå°„ã—仮想 HUB ã«æˆ»ã£ã¦ãã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ã“ã®å ´åˆã€ä»®æƒ³ HUB 㯠MAC アドレスã®é‡è¤‡ã‚’自動的ã«æ¤œå‡ºã—ã€åå°„ã—ã¦ããŸãƒ‘ケットを破棄ã—ã¾ã™ã€‚ã“ã®ãƒ•ãƒ©ã‚°ã‚’有効ã«ã™ã‚‹ã¨ã€ã“ã®æ¤œå‡ºãƒã‚§ãƒƒã‚¯ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚ HUB_AO_DisableCorrectIpOffloadChecksum ã“ã®é …目㌠1 (有効) ã®å ´åˆã¯ã€ãƒ­ãƒ¼ã‚«ãƒ«ãƒ–リッジ機能ã«ãŠã„㦠IP ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®æ¤œæŸ»ãŠã‚ˆã³è£œæ­£å‡¦ç†ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚IP, TCP, UDP ヘッダã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®ã‚ªãƒ•ãƒ­ãƒ¼ãƒ‰æ©Ÿèƒ½ãŒæ­è¼‰ã•ã‚Œã¦ã„ã‚‹ LAN カードã‹ã‚‰é€ä¿¡ã•ã‚ŒãŸ IP パケットãŒåŒä¸€ãƒ›ã‚¹ãƒˆä¸Šã§å‹•ä½œã™ã‚‹ VPN Server ã®ãƒ­ãƒ¼ã‚«ãƒ«ãƒ–リッジã«å…¥åŠ›ã•ã‚ŒãŸå ´åˆã€å½“該 IP パケットã®ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã¯ä¸æ­£ç¢ºãªå€¤ãŒä»£å…¥ã•ã‚Œã¦ã„ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ローカルブリッジã¯ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã§ãã®ä¸æ­£ç¢ºãªå€¤ã‚’検出ã—ã€æ­£ã—ã„ãƒã‚§ãƒƒã‚¯ã‚µãƒ ã®è¨ˆç®—çµæžœã‚’代入ã—ã¾ã™ã€‚ã“ã®ãƒ•ãƒ©ã‚°ã‚’有効ã«ã™ã‚‹ã¨ã€ã“れらã®è£œæ­£å‡¦ç†ãŒç„¡åŠ¹ã«ãªã‚Šã¾ã™ã€‚ HUB_AO_BroadcastLimiterStrictMode ã“ã®é …目㌠1 (有効) ã®å ´åˆã¯ã€ä»®æƒ³ HUB 上ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ã«ãŠã‘るブロードキャストストームã®æ¤œå‡ºã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ã«ãŠã„ã¦ã€é€ä¿¡å…ƒ IP アドレスã¾ãŸã¯å®›å…ˆ IP アドレスã®ã„ãšã‚Œã‹ 1 個ãŒä¸€è‡´ã—ã¦ã„ã‚Œã°æ—¢å­˜ã®æ¤œå‡ºç”¨è¨˜éŒ²ã¨ãƒ’ットã—ãŸã¨ã¿ãªã—ã¾ã™ã€‚ +HUB_AO_MaxLoggedPacketsPerMinute Maximum number of logging target packets per minute. +HUB_AO_DoNotSaveHeavySecurityLogs Do not take heavy security log. +HUB_AO_DropBroadcastsInPrivacyFilterMode Drop broadcasting packets if the both source and destination session is PrivacyFilter mode. +HUB_AO_DropArpInPrivacyFilterMode Drop ARP packets if the both source and destination session is PrivacyFilter mode. # Caps 関係 @@ -646,6 +656,8 @@ CT_b_using_selow_driver SoftEther 軽é‡ã‚«ãƒ¼ãƒãƒ«ãƒ¢ãƒ¼ãƒ‰ Ethernet ドライ CT_b_support_vgs VPN Gate サービス サーãƒãƒ¼æ©Ÿèƒ½ãŒåˆ©ç”¨å¯èƒ½ CT_b_support_vgs_in_client VPN Gate サービス サーãƒãƒ¼æ©Ÿèƒ½ (VPN Client çµ±åˆ) CT_b_is_softether 無償版ã¾ãŸã¯ã‚ªãƒ¼ãƒ—ンソース版㮠SoftEther VPN ã§ã‚ã‚‹ +CT_b_suppport_push_route é™çš„ルーティングテーブルã®ãƒ—ッシュ機能 +CT_b_suppport_push_route_config é™çš„ルーティングテーブルã®ãƒ—ッシュ機能 (設定å¯) # ãƒãƒªã‚·ãƒ¼é–¢ä¿‚ @@ -1613,6 +1625,9 @@ SM_DDNS_FQDN_EMPTY (ãªã—) SM_DDNS_OK_MSG ダイナミック DNS ホストå: %S%S\r\n\r\n上記㮠DNS ホストåを指定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã“ã® VPN Server ã®ã‚°ãƒ­ãƒ¼ãƒãƒ« IP アドレスã§ã‚る以下㮠IP アドレスã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\r\n\r\nIPv4 アドレス: %s\r\nIPv6 アドレス: %s\r\n\r\nãªãŠã€ä»¥ä¸‹ã®ã‚ˆã†ãª DNS ホストåを指定ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€IPv4 アドレスã¾ãŸã¯ IPv6 アドレスã®ã„ãšã‚Œã‹ã®ã¿ã‚’明示的ã«å¿œç­”ã•ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\r\n\r\nIPv4 ã®ã¿ã‚’応答ã™ã‚‹ãƒ›ã‚¹ãƒˆå: %S.v4%S\r\nIPv6 ã®ã¿ã‚’応答ã™ã‚‹ãƒ›ã‚¹ãƒˆå: %S.v6%S\r\n SM_DDNS_OK_TITLE ダイナミック DNS 機能 SM_DDNS_OK_MSG2 ダイナミック DNS ホストåã‚’ '%S' ã«å¤‰æ›´ã—ã¾ã—ãŸã€‚\r\n\r\n[ヒント] ボタンをクリックã—ã¦è¿½åŠ æƒ…報をãŠèª­ã¿ãã ã•ã„。 +SM_DDNS_KEY_TITLE ダイナミック DNS ç§˜å¯†éµ +SM_DDNS_KEY_MSG ダイナミック DNS 秘密éµ: %s\r\n\r\nã“ã®ç§˜å¯†éµã¯ã€ç¾åœ¨ä½¿ç”¨ã—ã¦ã„ã‚‹ DDNS åã¨å¯¾å¿œä»˜ã‘られã¦ã„ã¾ã™ã€‚ç¾åœ¨ VPN Server ã¨ã—ã¦ä½¿ç”¨ã—ã¦ã„ã‚‹ PC ãŒç ´æã™ã‚‹ãªã©ã—ã¦ã€ã“ã®ç§˜å¯†éµãŒå¤±ã‚れるã¨ã€ãã®æ™‚設定ã•ã‚Œã¦ã„㟠DDNS åã¯å æœ‰ã•ã‚ŒãŸã¾ã¾ã®çŠ¶æ…‹ã¨ãªã‚Šã€ä»–ã® VPN Serverã§ä½¿ç”¨ã§ããªããªã‚Šã¾ã™ã€‚åŒã˜åå‰ã‚’継続ã—ã¦ä½¿ç”¨ã—ãŸã„å ´åˆã¯ã€ç§˜å¯†éµã‚’ä»–ã® PC やインタãƒãƒƒãƒˆä¸Šã®ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ã€ãƒ¡ãƒ¢ç”¨ç´™ãªã©ã«ä¿ç®¡ã—ã¦ãŠã„ã¦ãã ã•ã„。\r\n秘密éµã‚’æ–°ã—ã„ VPN Server ã«è¨­å®šã™ã‚‹éš›ã¯ã€VPN Server ã®è¨­å®šãƒ•ã‚¡ã‚¤ãƒ«ã‚’編集ã—ã¾ã™ã€‚"declare DDnsClient" ディレクティブ中ã«ã‚ã‚‹ "byte Key" ã«ç¶šã値をã€ä¿ç®¡ã—ã¦ãŠã„ãŸç§˜å¯†éµã®æ–‡å­—列ã§ç½®ãæ›ãˆã¦ãã ã•ã„。\r\nãªãŠã€åŒæ™‚ã«è¤‡æ•°ã® VPN Server ã§åŒã˜ç§˜å¯†éµã‚’設定ã™ã‚‹ã¨æ­£å¸¸ã«å‹•ä½œã—ãªããªã‚Šã¾ã™ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。 +SM_DDNS_KEY_ERR DNS éµã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚ SM_IPSEC_PSK_TOO_LONG 事å‰å…±æœ‰éµ (PSK) ã®é•·ã•ãŒ 10 文字以上ã«è¨­å®šã•ã‚Œã¦ã„ã¾ã™ã€‚\r\n\r\nAndroid æºå¸¯é›»è©±ã®ä¸€éƒ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã¯ãƒã‚°ãŒã‚ã‚Šã€äº‹å‰å…±æœ‰éµãŒ 10 文字以上ã®å ´åˆã¯ VPN 接続ãŒè¡Œãˆãªã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚\r\nãã®ãŸã‚ã€äº‹å‰å…±æœ‰éµã®é•·ã•ã¯ 9 文字以下ã¨ã™ã‚‹ã“ã¨ã‚’推奨ã—ã¾ã™ã€‚\r\n\r\n事å‰å…±æœ‰éµã®è¨­å®šã‚’見直ã—ã¾ã™ã‹? SM_ADVANCED_REDIRECT_URL_HINT_TITLE 高度㪠HTTP リダイレクション機能ã®ä½¿ã„æ–¹ SM_ADVANCED_REDIRECT_URL_HINT 高度㪠HTTP リダイレクション機能 (上級者å‘ã‘)\r\n\r\nアクセスリスト㫠HTTP リダイレクト先㮠URL を記載ã™ã‚‹éš›ã«ã€URL ã®ä¸€éƒ¨ã¨ã—㦠ã¨ã„ã†æ–‡å­—列を埋ã‚込むã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆå…ˆã® URL ã‚’å—å–ã£ãŸ CGI ãªã©ã§ã€VPN 接続を行ã£ã¦ã„るクライアントã®æƒ…報を用ã„ãŸé«˜åº¦ãªå‡¦ç†ã‚’実行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\r\n\r\n埋ã‚込㿠URL 例:\r\nhttp://www.google.com/search?q=|secret\r\n\r\n実際ã«ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã•ã‚Œã‚‹éš›ã«ã¯ã€å½“該文字列部分ãŒä»¥ä¸‹ã®ã‚ˆã†ãªæ–‡å­—列ã«ç½®æ›ã•ã‚Œã¾ã™ã€‚\r\n\r\nユーザーå|セッション ID|IP アドレス|日付ã¨æ™‚刻|ãƒãƒƒã‚·ãƒ¥å€¤\r\n\r\nç½®æ›å¾Œã®ä¾‹: zurukko|SID-ZURUKKO-123|219.117.219.154|20131117100354|99707160AFE7A454042B2C47B064112D652452D7\r\n\r\nã“ã“ã§ã€ä¸Šè¨˜ã®å„フィールドã®å€¤ã®å†…容ã®è©³ç´°ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ã€‚\r\n\r\nユーザーå: VPN 接続を行ã£ã¦ã„るユーザーåãŒä»£å…¥ã•ã‚Œã¾ã™ã€‚\r\n\r\nセッション ID: 当該 VPN セッション㮠ID ãŒä»£å…¥ã•ã‚Œã¾ã™ã€‚\r\n\r\n日付ã¨æ™‚刻: 'YYYYMMDDHHMMSS' ã®å½¢å¼ã§ 14 æ¡ã®æ•°å­—ãŒä»£å…¥ã•ã‚Œã¾ã™ (タイムゾーン㯠UTC)。\r\n\r\nãƒãƒƒã‚·ãƒ¥å€¤: ãƒãƒƒã‚·ãƒ¥å€¤ç›´å‰ã¾ã§ã®ä¸Šè¨˜ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®ãƒ“ット列㫠URL 中ã®æ–‡å­— '|' 以é™ã®æœ«å°¾ã¾ã§ã®æ–‡å­—列 (上記ã®ä¾‹ã§ã¯ "secret" ã¨ã„ã†æ–‡å­—列) ã®ãƒ“ット列ã¨ã‚’連çµã— SHA-1 ãƒãƒƒã‚·ãƒ¥é–¢æ•°ã‚’é©ç”¨ã—ãŸçµæžœã® 20 ãƒã‚¤ãƒˆã‚’ 16 進数ã§è¡¨è¨˜ã—㟠40 文字ã®æ–‡å­—列。ãªãŠã€URL 中ã«æ–‡å­— '|' ãŒå­˜åœ¨ã—ãªã„å ´åˆã¯ãƒãƒƒã‚·ãƒ¥å€¤ã¯ä»˜ä¸Žã•ã‚Œã¾ã›ã‚“。\r\n\r\nãƒãƒƒã‚·ãƒ¥å€¤ã®å­˜åœ¨æ„義ã«ã¤ã„ã¦: ãƒãƒƒã‚·ãƒ¥æ–‡å­—列 (上記ã®ä¾‹ã§ã¯ "secret" ã¨ã„ã†æ–‡å­—列) ã¯ç§˜å¯†éµã¨ã—ã¦æ©Ÿèƒ½ã—ã¾ã™ã€‚ã“ã‚Œã«ã‚ˆã‚Šã€ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆå…ˆã§ã‚¯ã‚¨ãƒªæ–‡å­—列をå—å–ã£ãŸ CGI ã¯å—å–ã£ãŸæ–‡å­—列ãŒã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«ã‚ˆã£ã¦ä¸æ­£ã«æ”¹ã–ã‚“ã•ã‚Œã¦ã„ãªã„ã“ã¨ã‚’確èªã§ãã¾ã™ã€‚\r\n @@ -1680,6 +1695,7 @@ DHCP_MAC_ADDRESS MAC アドレス DHCP_IP_ADDRESS 割り当㦠IP DHCP_HOSTNAME クライアントホストå NM_PASSWORD_MSG 管ç†ãƒ‘スワードを設定ã—ã¾ã—ãŸã€‚ +NM_PUSH_ROUTE_WARNING 指定ã•ã‚ŒãŸé™çš„ルーティングテーブルã®ãƒ†ã‚­ã‚¹ãƒˆã«ã¯æ–‡æ³•ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚ # ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…報系 @@ -2291,6 +2307,7 @@ R_HIDE2 IP アドレスメッセージをéžè¡¨ç¤º(&9) STATIC15 VPN Server ã«æŽ¥ç¶šã™ã‚‹éš›ã«å¿…è¦ãªãƒ¦ãƒ¼ã‚¶ãƒ¼èªè¨¼æƒ…報を設定ã—ã¦ãã ã•ã„。 B_REGIST_CLIENT_CERT クライアント証明書ã®æŒ‡å®š(&8) B_IE IE ã®è¨­å®šã‚’使用(&E) +R_DISABLE_NATT NAT-T 無効 PREFIX D_CM_PROXY @@ -2409,6 +2426,7 @@ B_EULA 使用許諾契約書(&E) B_IMPORTANT é‡è¦äº‹é …説明書(&I) B_LEGAL 法律上ã®é€šçŸ¥(&L) B_UPDATE_CONFIG 更新通知設定(&C) +B_AUTHORS 開発者ã®ä¸€è¦§(&A) PREFIX D_REMOTE @@ -3093,6 +3111,9 @@ STATIC22 ドメインå(&W): STATIC23 DNS サーãƒãƒ¼ã®ã‚¢ãƒ‰ãƒ¬ã‚¹ 2 (&X): IDOK &OK IDCANCEL キャンセル +S_1 é™çš„ルーティングテーブルã®ãƒ—ッシュ (スプリットトンãƒãƒªãƒ³ã‚°) +S_2 VPN クライアントã«å¯¾ã—ã¦é™çš„ルーティングテーブルをプッシュé€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +B_PUSH プッシュã™ã‚‹é™çš„ルーティングテーブルã®ç·¨é›† PREFIX D_NM_NAT @@ -3848,6 +3869,8 @@ S_2 IPv6 インターãƒãƒƒãƒˆã«æŽ¥ç¶šã•ã‚Œã¦ã„ãªã„å ´åˆã¯ä¸Šè¨˜ã® IDCANCEL é–‰ã˜ã‚‹(&X) B_DISABLE ダイナミック DNS 機能を無効ã«ã™ã‚‹(&D) B_PROXY プロキシサーãƒãƒ¼çµŒç”±ã§æŽ¥ç¶š(&P) +S_STATUS8 DNS éµ: +B_HINT2 ヒント PREFIX D_SM_SPECIALLISTENER @@ -4137,6 +4160,18 @@ IDCANCEL åŒæ„ã—ãªã„(&D) S_BOLD VPN 通信ãŒç¦æ­¢ã•ã‚Œã¦ã„る国・地域ã§ã¯ VPN Gate を使用ã—ãªã„ã§ãã ã•ã„。 +PREFIX D_NM_PUSH +CAPTION プッシュã™ã‚‹é™çš„ルーティングテーブルã®ç·¨é›† +S1 VPN クライアントã«å¯¾ã—ã¦ã“ã®ä»®æƒ³ DHCP サーãƒãƒ¼ã‹ã‚‰ DHCP 応答をé€ä¿¡ã™ã‚‹éš›ã«ã€ã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルート (RFC 3442) ã‚’ä½µã›ã¦é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ +S2 VPN クライアントãŒã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルート (RFC 3442) ã‚’èªè­˜ã§ãã‚‹ã‹ã©ã†ã‹ã¯ã€VPN クライアントソフトウェアã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚SoftEther VPN Client ãŠã‚ˆã³ OpenVPN Client ã¯ã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルートã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚L2TP/IPsec ãŠã‚ˆã³ MS-SSTP ã«ãŠã„ã¦ã¯ã€åˆ©ç”¨ã®å¯å¦ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã«ä¾å­˜ã—ã¾ã™ã€‚ +S3 仮想 DHCP サーãƒãƒ¼ã®ã‚ªãƒ—ションã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚²ãƒ¼ãƒˆã‚¦ã‚§ã‚¤ã‚’空欄ã«è¨­å®šã™ã‚‹ã“ã¨ã§ã€ã‚¹ãƒ—リットトンãƒãƒªãƒ³ã‚°ãŒå®Ÿç¾ã§ãã¾ã™ã€‚L2TP/IPsec ãŠã‚ˆã³ MS-SSTP クライアントを使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€IPv4 ã®è¨­å®šç”»é¢ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚²ãƒ¼ãƒˆã‚¦ã‚§ã‚¤ã‚’ VPN サーãƒãƒ¼ã«å‘ã‘ãªã„よã†ã«ã™ã‚‹è¨­å®šãŒå¿…è¦ã§ã™ã€‚ +S4 ローカルブリッジ経由ã§å¤–部㫠DHCP サーãƒãƒ¼ãŒã‚ã‚‹å ´åˆã¯ã€ãã® DHCP サーãƒãƒ¼ã§ã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルート (RFC 3442) をプッシュã™ã‚‹ã‚ˆã†è¨­å®šã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ãã®å ´åˆã¯ã€SecureNAT ã®ä»®æƒ³ DHCP サーãƒãƒ¼æ©Ÿèƒ½ã¯ç„¡åŠ¹ã«ã—ã¦ãã ã•ã„。ã¾ãŸã€ã“ã®ç”»é¢ã§ã®è¨­å®šã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。 +S5 プッシュã™ã‚‹é™çš„ルーティングテーブルã®ç·¨é›† +S6 例: 192.168.5.0/255.255.255.0/192.168.4.254, 10.0.0.0/255.0.0.0/192.168.4.253\r\n\r\n複数ã®ã‚¨ãƒ³ãƒˆãƒª (最大 64 個) ã¯ã‚«ãƒ³ãƒžã¾ãŸã¯ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚Šã¾ã™ã€‚\r\nå„エントリã¯ã€"IP ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒ‰ãƒ¬ã‚¹/サブãƒãƒƒãƒˆãƒžã‚¹ã‚¯/ゲートウェイ IP アドレス" ã®æ›¸å¼ã§è¨˜è¿°ã—ã¾ã™ã€‚ +S7 クラスレスé™çš„ルートã«ã¤ã„ã¦ã¯ã€RFC 3442 ã‚’ãŠèª­ã¿ãã ã•ã„。 +IDOK &OK +IDCANCEL キャンセル + ########################################################################### @@ -5909,6 +5944,7 @@ CMD_DhcpGet_Column_GW デフォルトゲートウェイアドレス CMD_DhcpGet_Column_DNS DNS サーãƒãƒ¼ アドレス 1 CMD_DhcpGet_Column_DNS2 DNS サーãƒãƒ¼ アドレス 2 CMD_DhcpGet_Column_DOMAIN ドメインå +CMD_DhcpGet_Column_PUSHROUTE プッシュã™ã‚‹é™çš„ルーティングテーブル # DhcpEnable コマンド @@ -5926,7 +5962,7 @@ CMD_DhcpDisable_Args DhcpDisable # DhcpSet コマンド CMD_DhcpSet SecureNAT 機能ã®ä»®æƒ³ DHCP サーãƒãƒ¼æ©Ÿèƒ½ã®è¨­å®šã®å¤‰æ›´ CMD_DhcpSet_Help ç¾åœ¨ç®¡ç†ã—ã¦ã„る仮想 HUB 内ã®ã€ä»®æƒ³ DHCP サーãƒãƒ¼ã®è¨­å®šã‚’変更ã—ã¾ã™ã€‚仮想 DHCP サーãƒãƒ¼ã®è¨­å®šã«ã¯ã€é…布 IP アドレス帯ã€ã‚µãƒ–ãƒãƒƒãƒˆãƒžã‚¹ã‚¯ã€ãƒªãƒ¼ã‚¹æœŸé™ã€ãŠã‚ˆã³ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã«å‰²ã‚Šå½“ã¦ã‚‹ã‚ªãƒ—ション値ãŒå«ã¾ã‚Œã¾ã™ã€‚\nã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ã€ã‚¯ãƒ©ã‚¹ã‚¿ã¨ã—ã¦å‹•ä½œã—ã¦ã„ã‚‹ VPN Server ã®ä»®æƒ³ HUB ã§ã¯å®Ÿè¡Œã§ãã¾ã›ã‚“。 -CMD_DhcpSet_Args DhcpSet [/START:start_ip] [/END:end_ip] [/MASK:subnetmask] [/EXPIRE:sec] [/GW:gwip] [/DNS:dns] [/DNS2:dns2] [/DOMAIN:domain] [/LOG:yes|no] +CMD_DhcpSet_Args DhcpSet [/START:start_ip] [/END:end_ip] [/MASK:subnetmask] [/EXPIRE:sec] [/GW:gwip] [/DNS:dns] [/DNS2:dns2] [/DOMAIN:domain] [/LOG:yes|no] [/PUSHROUTE:"routing_table"] CMD_DhcpSet_START クライアントã«å¯¾ã—ã¦é…布ã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹å¸¯ã®é–‹å§‹ç‚¹ã‚’指定ã—ã¾ã™ã€‚(例: 192.168.30.10) CMD_DhcpSet_END クライアントã«å¯¾ã—ã¦é…布ã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹å¸¯ã®çµ‚了点を指定ã—ã¾ã™ã€‚(例: 192.168.30.200) CMD_DhcpSet_MASK クライアントã«å¯¾ã—ã¦æŒ‡å®šã™ã‚‹ã‚µãƒ–ãƒãƒƒãƒˆãƒžã‚¹ã‚¯ã‚’指定ã—ã¾ã™ã€‚(例: 255.255.255.0) @@ -5936,6 +5972,7 @@ CMD_DhcpSet_DNS クライアントã«å¯¾ã—ã¦é€šçŸ¥ã™ã‚‹ DNS サーãƒãƒ¼ ( CMD_DhcpSet_DNS2 クライアントã«å¯¾ã—ã¦é€šçŸ¥ã™ã‚‹ DNS サーãƒãƒ¼ (セカンダリ) ã® IP アドレスを指定ã—ã¾ã™ã€‚SecureNAT 機能ã®ä»®æƒ³ NAT 機能ã¨å…±ã«æœ‰åŠ¹ã«ã—ã¦ä½¿ç”¨ã™ã‚‹å ´åˆã¯ã€SecureNAT ã®ä»®æƒ³ãƒ›ã‚¹ãƒˆã® IP アドレスを指定ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚0 ã¾ãŸã¯ none を指定ã™ã‚‹ã¨ã€DNS サーãƒãƒ¼ アドレスをクライアントã«å¯¾ã—ã¦é€šçŸ¥ã—ã¾ã›ã‚“。 CMD_DhcpSet_DOMAIN クライアントã«å¯¾ã—ã¦é€šçŸ¥ã™ã‚‹ãƒ‰ãƒ¡ã‚¤ãƒ³åを指定ã—ã¾ã™ã€‚none を指定ã™ã‚‹ã¨ã€ãƒ‰ãƒ¡ã‚¤ãƒ³åをクライアントã«å¯¾ã—ã¦é€šçŸ¥ã—ã¾ã›ã‚“。 CMD_DhcpSet_LOG 仮想 DHCP サーãƒãƒ¼ã®å‹•ä½œã‚’仮想 HUB ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ­ã‚°ã«ä¿å­˜ã™ã‚‹ã‹ã©ã†ã‹ã‚’指定ã—ã¾ã™ã€‚"yes" を指定ã™ã‚‹ã¨ä¿å­˜ã—ã¾ã™ã€‚ã“ã®å€¤ã¯ã€ä»®æƒ³ NAT 機能ã®ãƒ­ã‚°ä¿å­˜è¨­å®šã¨é€£å‹•ã—ã¦ã„ã¾ã™ã€‚ +CMD_DhcpSet_PUSHROUTE プッシュã™ã‚‹é™çš„ルーティングテーブルを指定ã—ã¾ã™ã€‚\n例: "192.168.5.0/255.255.255.0/192.168.4.254, 10.0.0.0/255.0.0.0/192.168.4.253"\n複数ã®ã‚¨ãƒ³ãƒˆãƒª (最大 64 個) ã¯ã‚«ãƒ³ãƒžã¾ãŸã¯ã‚¹ãƒšãƒ¼ã‚¹ã§åŒºåˆ‡ã‚Šã¾ã™ã€‚å„エントリã¯ã€"IP ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¢ãƒ‰ãƒ¬ã‚¹/サブãƒãƒƒãƒˆãƒžã‚¹ã‚¯/ゲートウェイ IP アドレス" ã®æ›¸å¼ã§è¨˜è¿°ã—ã¾ã™ã€‚\nVPN クライアントã«å¯¾ã—ã¦ã“ã®ä»®æƒ³ DHCP サーãƒãƒ¼ã‹ã‚‰ DHCP 応答をé€ä¿¡ã™ã‚‹éš›ã«ã€ã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルート (RFC 3442) ã‚’ä½µã›ã¦é€ä¿¡ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\nVPN クライアントãŒã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルート (RFC 3442) ã‚’èªè­˜ã§ãã‚‹ã‹ã©ã†ã‹ã¯ã€VPN クライアントソフトウェアã«ã‚ˆã£ã¦ç•°ãªã‚Šã¾ã™ã€‚SoftEther VPN Client ãŠã‚ˆã³ OpenVPN Client ã¯ã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルートã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚L2TP/IPsec ãŠã‚ˆã³ MS-SSTP ã«ãŠã„ã¦ã¯ã€åˆ©ç”¨ã®å¯å¦ã¯ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã«ä¾å­˜ã—ã¾ã™ã€‚\n仮想 DHCP サーãƒãƒ¼ã®ã‚ªãƒ—ションã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚²ãƒ¼ãƒˆã‚¦ã‚§ã‚¤ã‚’空欄ã«è¨­å®šã™ã‚‹ã“ã¨ã§ã€ã‚¹ãƒ—リットトンãƒãƒªãƒ³ã‚°ãŒå®Ÿç¾ã§ãã¾ã™ã€‚L2TP/IPsec ãŠã‚ˆã³ MS-SSTP クライアントを使用ã—ã¦ã„ã‚‹å ´åˆã¯ã€IPv4 ã®è¨­å®šç”»é¢ã§ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã‚²ãƒ¼ãƒˆã‚¦ã‚§ã‚¤ã‚’ VPN サーãƒãƒ¼ã«å‘ã‘ãªã„よã†ã«ã™ã‚‹è¨­å®šãŒå¿…è¦ã§ã™ã€‚\nローカルブリッジ経由ã§å¤–部㫠DHCP サーãƒãƒ¼ãŒã‚ã‚‹å ´åˆã¯ã€ãã® DHCP サーãƒãƒ¼ã§ã‚¯ãƒ©ã‚¹ãƒ¬ã‚¹é™çš„ルート (RFC 3442) をプッシュã™ã‚‹ã‚ˆã†è¨­å®šã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ãã®å ´åˆã¯ã€SecureNAT ã®ä»®æƒ³ DHCP サーãƒãƒ¼æ©Ÿèƒ½ã¯ç„¡åŠ¹ã«ã—ã¦ãã ã•ã„。ã¾ãŸã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã§ã®è¨­å®šã¯å¿…è¦ã‚ã‚Šã¾ã›ã‚“。\nクラスレスé™çš„ルートã«ã¤ã„ã¦ã¯ã€RFC 3442 ã‚’ãŠèª­ã¿ãã ã•ã„。 CMD_DhcpSet_Prompt_START é…布ã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹å¸¯ã®é–‹å§‹ç‚¹: CMD_DhcpSet_Prompt_END é…布ã™ã‚‹ã‚¢ãƒ‰ãƒ¬ã‚¹å¸¯ã®çµ‚了点: CMD_DhcpSet_Prompt_MASK サブãƒãƒƒãƒˆãƒžã‚¹ã‚¯: diff --git a/src/bin/hamcore/vpn_driver.sys b/src/bin/hamcore/vpn_driver.sys index a58937784deeffcfad33980bd73102aee7439759..b3f7ac688122c74c631b6e38958b909acafcecf6 100644 GIT binary patch delta 766 zcmaEGlJUVw#tj)v%!^KIPR?fXWnLc2xOq2Iry5wmU2~^EOmWPm!l^=jlTJ-2SejZH zxLH7}L5!D;fra6!3IhX}-aOYKlu_7>L5D$s!2nEJGMF$JF<5S9bqZz1Dv|42!y?ij ze*6>1tZN~gkKEamns&=;v#RKY&3`>>#YL2AdFJasxz^p6B%+wfa`e~luYY7F_a!>k zJ3r0%@3y}3Ye_5fnh8^x?^NAMcT5(3A-HuBQ&h#8%e;LnZXG_W8<3wpxu5NaxW^{x zNQsi|cSNm@F7%0f8gr7*!tA|N>Qy@4->8;Vq1``d)pteY4%C1=~wZG{iK zI5!+ubGqwt(k{$zW$g3R*}qQw_1<~$%MUPe`7q#f95(Q4FGY zC$j%nni*$#NJ-P;8Hcs}i5UmZ%N@S4{+#8tZm<1yVM)=IO|$&CFElr8jeH&? zS|R8%)$6U=(d$gdCQLq`bhh5u(9+P%)Y#NC%0QWoQ>)FR?K>|cCySvNi%7`=(PoCw zmulCn3l<;IoLjT@)G0>;UbrGgMpg!vCPoI%BW@Qh8qO+-xjiXWo^U1Jr}nA&B3I$Z zxA_FOZ8+j^@R!2QuvT_egA(^vUiE)`CSkH6OcA-;y(~&vD}L4U$vRCveK32SOaC3a zlT&A1GTbnmVagrH`c;<-KYpAnRC!N-!oe+~hII{GQ?KlLJxRjx+M}eJ%<85)HD3={ z-1|0?k1_Ll@$zZ}@#9*|U)hU!2t32l9>L#5TVT?N*Jm&mz23=Dp``LAcKxQI~2k42=70AE3{AT z^4nlZo7q!;=BczqMcVZvacZ@Bw0-Aghqh=39H(*Zy=9+rXmbI494v?I(k0u9;SfZc^?BVUDd|S@zUw&kQ_ZwjlFj z&-6f%tP2wRA78z1bS=dq`W55mP5Me-9A_T?_V&wcA+yzTx*Mfd$_W(y-7-mr=hOel z&6zWP*jaqB{ulM<-O?ZRTOPapOj&k&_Ssph+89z}L$@|*F21eP@K8#%@3*UWyye@# tIeQg!=6D=+^<2I{$ezF2^6&pg2c|_o@IB7!%(1?g#XI*%?v@w^1^`HwR_Xu% diff --git a/src/bin/hamcore/vpn_driver6.sys b/src/bin/hamcore/vpn_driver6.sys index 4f02c0b0ab697392d07f288d246c05a7182cf4dd..0fd3280bcd68f4dafaa8ec41c03b6658c7dd5db4 100644 GIT binary patch delta 766 zcmaEGhVj7}#tj)v%sWnNPR?fXW&Zt$Ve@V#PHnKjaowE)`pR<@nW~@rO*P_wbMKkf z+RYR68iaY-7+4stsxUBs>CLiEp^U<23_1)73LxDzdv>4ysPc>S*zo(%eW_7ZLamM6&G1)_vA{vbikU8&-xW#W!{-OtQ43wf$y8-&*-45VXxUt?&NW@&v-P$ zko!8@oZa{Pezqj@%vX=xT(-2<=(WWJ!^*17iM_V>OK$MI`5tL)WFPQujW-M!Q8~+CM6rsx_zgrlH-fx8?@`6tZ!$SA`=xlVa~$Zy{$3K3fIEA zriaU4ddFG+WncVP)FR?K>|cCySvNi-@M-!9&5C zJ-L=rTKq3nPhaY<^;&Mg3s=O*$jZRd#K^FSox6QvJLB$2&-vvi^_-V|9eDb}y!EBg zJD$8-vdFn;in?^CHj9}ii{qswJ9b^V@#3G*9m}1ky_a~)sAV6l-_OQ*&LU9Q#H)Y% zoOuz;>iD0v-G6DvFpXPfVb1oMmh;{OIO%NPv^&dbIklZrkOV8jB0dJMWXdWvtG@u`Tr1jEBBcldq}jMLbqJTi)3wyEJ9nb{Q9jWdTO- zzASwBr>Jp;-9m-H)UvZCWhdQ^6kba(yc(psfqlkOz5}z_ckO-XSHKW6Y47FIAOBUw u9`Ad7V_QY;!Bk#-nFzCf zxp{(KgD@{E0}I1B6$S<{y;;^Nlu_7}L5D$s!2nEJGMF$JF&J%bbq;05D)H8>hDC&d z=e(NLq%diZz1|*sEu9#ab=`Qrxz@W@T;y#3o|?t${QsQGC~XRkFgtnNq|A@rnX3KMIGWG2>KNTBoV3_zv!B9+BUkp6Ogn9`e(w1hRh}pA zHm|f<+dU`zR^U}vDHPdLFR}V|G zThsF^d6EAsm#kgQ^1zw1YhRL)Xp>q+?wL2I0vN!wkgk>`P^>t-IAwmb;{-^r>4#2`DR^WqKs=gklJ zSbkS}iM-4a$-_*g^^^Tm&ej_lni-mznwpqL87Q-HYPET^edlH5WHA(D5m9DZ;*{r; z8Gn9>$uyQ(RZ}hRmuDF8!WA(x0;8;nk)cO(-s|w)cex5VkHj^9czm+i@zF)!B$M`yTZa`X_hH6LOg)_FCa>?b&~)4un3~%-LRldcM%29X(Z(IwefF z^3OhR*)Alb!qU-}ZzX*9#r*!(tEbP-E7_cU_j1NpO-JE#Ys>e!Caq>`KXYV;M}Y_{ zzw`&Y31()GKD8!%F0E{`-Z1O+>ucMrmF(SArt|+_V0iWR|06M%8V>ukPLI(mKfcWS z`m=e4`!3|KX+&amARz0J4O=|Nc|8=IU@e?QW(`&CL+sjVm4^6w)-rIk^Ay!Q2)Z6dNf4t`4 z-fdzRE3&0k|8JYln?vQ>JYqIgmv5c{FI*8LBP#<-6C;CjuJEV2%w2Z{@4PAVIHbB|zUgck^X``Qt-8 delta 765 zcmaFxfbqct#tj8b%x~W^OfF{fWm^4b^C6~5+F*XT-cfKDp#U=zsUpSAG6=ysWd#ge89lhja6#Ffv86W=vdLTP0+qT>IBc_;&4g5Aj(J ziM^Yb?)JOy%n~_qaoLQAcQ@zkyp?_N^{M4A)UMP^yl3j#_dj-T2pm|KZ$_>01w<#m;e9( diff --git a/src/bin/hamcore/vpn_driver_x64.sys b/src/bin/hamcore/vpn_driver_x64.sys index d9d2e938844247ca715a7a9302d3626531944ace..5cbf4a884c67b6fe873bf74f256fc8409d77a2d5 100644 GIT binary patch delta 766 zcmaFxjPb!U#tjur%)d@+POfJ1WnOxNVe@IGPIa(AxYkjD+ZpzPxA!~yPMF$j<;x-0 zx>-m2i5f2(0}I1d6$S<{y;(LWlu_7>L5D$s!2nEJGMF$JF<5SH4NhgoD)Bcghf$<{ z)-JIQi^EgipS*dn$9tX0#2?T2HrGbfii>=elQ{R_-#R}RtCX3FZVkBm@1 z)m)Z$&Uj>H#_>u-@$*fk$C|lESG>(&tz?+CZDVlOOwWv7h8x+H|6cd*S~~la*zpBt z?@zoQ(0YTT^NWd`c?wgEt*m3@g8pADQat--+3l*oDDYd#pY`+WnNDjv^7)GoOQ~Hi zeM46VzS_rTkbJ<>>s6v8FmW%xsUr$A?F5R8I5rUfiiz z=HKXl`qtNI&zl=3pIa)I%g-}At@T`{%q*LXYy3G2sw2+VJBt|o3Q7;JcViM{a$3v% zJxuNG{p-ucnX>C9`xl$git4G?w zFMCYS|GG5o#?9pd4-I(XiWnJL8CaSa8KhoW{<+-F+xN)W_iP8J&q)?#qs@<_9%=tn zRZuy#Mq@%8Z_&cdHSDE)HAfYGxI6gh_31X~YhOvI_+0zPu>Snn0+X}PcF7q_F1Oy9 z$6Ke&=DhDOzpmM`)8^YhNID7rRMiU9?YsFga;IxoU2(-0C(~(jQ)Zv9yZXiZ%&AUy z&qdYKR;O%{I+Jwjd}5Zgh3E9+!jq=4NGTlOvytJHc_JIOKTHyq8CWElecy z71yunmKib@oi-`0Mm7d+1|k9*KIOG+IX5Tj)rpDc{TThPGNvz_v;QxzcBth4%8=r> qUEvHi7BbXW1TPEU$<+V)S1fdK#vJw~Mf delta 766 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 Dk=PZk delta 58672 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 A=>Px# delta 822 zcmV-61IhfjuoSqk6tEZp19j~HlN$j|0-Ab*Y5|980Rgva0Rn2G19j~Hx7VWr^)nDq zAU|AH3_C@r+1j|(+CaFs+}8rQKm&E{0JoPI186lKO>b@>MrC3kF*hJEF*-FhIx#aK zGB7bT3KIZv?Er@zP6M|cP6SVP4Fv!M0L~-;00jU90M560#ROFW6Ey%V03ZM`04x9? z0673O05SkFx8cSFMFSHx04x9?05AY703ZN405kwH05Z2Z$^xrn07PuCYZIXQg64h8eK z*^Wva{?r9-;Wb{r)ttyz3masHLr{tBL1mY~7}(c4e2=Aq6wVR6l0PizL)h2qVyFX& zb#yj9jzGJ8_izXo(nD7hHaLsWlQbuW<8Zey_FRG%HXw0MiG#ID*e%$eK2MY19I`)m?AGMs4S%}%M2s(Zz^ zv4&F`WW|2qUOOb2pbO)GMVx=AE}Vi7@e<CeG2NcIU*O9hi?zp7f*gj5JU#NGynhq0MmU{ AX#fBK diff --git a/src/hamcorebuilder/hamcorebuilder.c b/src/hamcorebuilder/hamcorebuilder.c index 48604120..6371777b 100644 --- a/src/hamcorebuilder/hamcorebuilder.c +++ b/src/hamcorebuilder/hamcorebuilder.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // hamcorebuilder.c diff --git a/src/makefiles/freebsd_32bit.mak b/src/makefiles/freebsd_32bit.mak index 86873394..5c60ada3 100644 --- a/src/makefiles/freebsd_32bit.mak +++ b/src/makefiles/freebsd_32bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/freebsd_64bit.mak b/src/makefiles/freebsd_64bit.mak index 1626db86..42e1d090 100644 --- a/src/makefiles/freebsd_64bit.mak +++ b/src/makefiles/freebsd_64bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/linux_32bit.mak b/src/makefiles/linux_32bit.mak index 44bd0778..c8988de4 100644 --- a/src/makefiles/linux_32bit.mak +++ b/src/makefiles/linux_32bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/linux_64bit.mak b/src/makefiles/linux_64bit.mak index 537651af..8d0ebafd 100644 --- a/src/makefiles/linux_64bit.mak +++ b/src/makefiles/linux_64bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/macos_32bit.mak b/src/makefiles/macos_32bit.mak index f0ab4298..4b8fb23d 100644 --- a/src/makefiles/macos_32bit.mak +++ b/src/makefiles/macos_32bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/macos_64bit.mak b/src/makefiles/macos_64bit.mak index 5507c0a7..f06ba4a1 100644 --- a/src/makefiles/macos_64bit.mak +++ b/src/makefiles/macos_64bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/openbsd_32bit.mak b/src/makefiles/openbsd_32bit.mak index f3808612..15453628 100644 --- a/src/makefiles/openbsd_32bit.mak +++ b/src/makefiles/openbsd_32bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/openbsd_64bit.mak b/src/makefiles/openbsd_64bit.mak index f17a9f3f..810921ae 100644 --- a/src/makefiles/openbsd_64bit.mak +++ b/src/makefiles/openbsd_64bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/solaris_32bit.mak b/src/makefiles/solaris_32bit.mak index 09598bdf..ee56f3f1 100644 --- a/src/makefiles/solaris_32bit.mak +++ b/src/makefiles/solaris_32bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/makefiles/solaris_64bit.mak b/src/makefiles/solaris_64bit.mak index 63678e91..f1e683da 100644 --- a/src/makefiles/solaris_64bit.mak +++ b/src/makefiles/solaris_64bit.mak @@ -51,7 +51,7 @@ HEADERS_MAYAQUA=src/Mayaqua/Cfg.h src/Mayaqua/cryptoki.h src/Mayaqua/Encrypt.h s HEADERS_CEDAR=src/Cedar/Account.h src/Cedar/Admin.h src/Cedar/AzureClient.h src/Cedar/AzureServer.h src/Cedar/Bridge.h src/Cedar/BridgeUnix.h src/Cedar/BridgeWin32.h src/Cedar/Cedar.h src/Cedar/CedarPch.h src/Cedar/CedarType.h src/Cedar/Client.h src/Cedar/CM.h src/Cedar/CMInner.h src/Cedar/Command.h src/Cedar/Connection.h src/Cedar/Console.h src/Cedar/Database.h src/Cedar/DDNS.h src/Cedar/EM.h src/Cedar/EMInner.h src/Cedar/EtherLog.h src/Cedar/Hub.h src/Cedar/Interop_OpenVPN.h src/Cedar/Interop_SSTP.h src/Cedar/IPsec.h src/Cedar/IPsec_EtherIP.h src/Cedar/IPsec_IKE.h src/Cedar/IPsec_IkePacket.h src/Cedar/IPsec_IPC.h src/Cedar/IPsec_L2TP.h src/Cedar/IPsec_PPP.h src/Cedar/IPsec_Win7.h src/Cedar/IPsec_Win7Inner.h src/Cedar/Layer3.h src/Cedar/Link.h src/Cedar/Listener.h src/Cedar/Logging.h src/Cedar/Nat.h src/Cedar/NativeStack.h src/Cedar/netcfgn.h src/Cedar/netcfgx.h src/Cedar/NM.h src/Cedar/NMInner.h src/Cedar/NullLan.h src/Cedar/Protocol.h src/Cedar/Radius.h src/Cedar/Remote.h src/Cedar/Sam.h src/Cedar/SecureInfo.h src/Cedar/SecureNAT.h src/Cedar/SeLowUser.h src/Cedar/Server.h src/Cedar/Session.h src/Cedar/SM.h src/Cedar/SMInner.h src/Cedar/SW.h src/Cedar/SWInner.h src/Cedar/UdpAccel.h src/Cedar/UT.h src/Cedar/VG.h src/Cedar/Virtual.h src/Cedar/VLan.h src/Cedar/VLanUnix.h src/Cedar/VLanWin32.h src/Cedar/WaterMark.h src/Cedar/WebUI.h src/Cedar/Win32Com.h src/Cedar/winpcap/bittypes.h src/Cedar/winpcap/bucket_lookup.h src/Cedar/winpcap/count_packets.h src/Cedar/winpcap/Devioctl.h src/Cedar/winpcap/Gnuc.h src/Cedar/winpcap/ip6_misc.h src/Cedar/winpcap/memory_t.h src/Cedar/winpcap/normal_lookup.h src/Cedar/winpcap/Ntddndis.h src/Cedar/winpcap/Ntddpack.h src/Cedar/winpcap/Packet32.h src/Cedar/winpcap/pcap.h src/Cedar/winpcap/pcap-bpf.h src/Cedar/winpcap/pcap-int.h src/Cedar/winpcap/pcap-stdinc.h src/Cedar/winpcap/pthread.h src/Cedar/winpcap/remote-ext.h src/Cedar/winpcap/sched.h src/Cedar/winpcap/semaphore.h src/Cedar/winpcap/tcp_session.h src/Cedar/winpcap/time_calls.h src/Cedar/winpcap/tme.h src/Cedar/winpcap/Win32-Extensions.h src/Cedar/WinUi.h src/Cedar/Wpc.h OBJECTS_MAYAQUA=tmp/objs/Mayaqua/Cfg.o tmp/objs/Mayaqua/Encrypt.o tmp/objs/Mayaqua/FileIO.o tmp/objs/Mayaqua/Internat.o tmp/objs/Mayaqua/Kernel.o tmp/objs/Mayaqua/Mayaqua.o tmp/objs/Mayaqua/Memory.o tmp/objs/Mayaqua/Microsoft.o tmp/objs/Mayaqua/Network.o tmp/objs/Mayaqua/Object.o tmp/objs/Mayaqua/OS.o tmp/objs/Mayaqua/Pack.o tmp/objs/Mayaqua/Secure.o tmp/objs/Mayaqua/Str.o tmp/objs/Mayaqua/Table.o tmp/objs/Mayaqua/TcpIp.o tmp/objs/Mayaqua/Tick64.o tmp/objs/Mayaqua/Tracking.o tmp/objs/Mayaqua/Unix.o tmp/objs/Mayaqua/Win32.o OBJECTS_CEDAR=tmp/objs/Cedar/Account.o tmp/objs/Cedar/Admin.o tmp/objs/Cedar/AzureClient.o tmp/objs/Cedar/AzureServer.o tmp/objs/Cedar/Bridge.o tmp/objs/Cedar/BridgeUnix.o tmp/objs/Cedar/BridgeWin32.o tmp/objs/Cedar/Cedar.o tmp/objs/Cedar/CedarPch.o tmp/objs/Cedar/Client.o tmp/objs/Cedar/CM.o tmp/objs/Cedar/Command.o tmp/objs/Cedar/Connection.o tmp/objs/Cedar/Console.o tmp/objs/Cedar/Database.o tmp/objs/Cedar/DDNS.o tmp/objs/Cedar/EM.o tmp/objs/Cedar/EtherLog.o tmp/objs/Cedar/Hub.o tmp/objs/Cedar/Interop_OpenVPN.o tmp/objs/Cedar/Interop_SSTP.o tmp/objs/Cedar/IPsec.o tmp/objs/Cedar/IPsec_EtherIP.o tmp/objs/Cedar/IPsec_IKE.o tmp/objs/Cedar/IPsec_IkePacket.o tmp/objs/Cedar/IPsec_IPC.o tmp/objs/Cedar/IPsec_L2TP.o tmp/objs/Cedar/IPsec_PPP.o tmp/objs/Cedar/IPsec_Win7.o tmp/objs/Cedar/Layer3.o tmp/objs/Cedar/Link.o tmp/objs/Cedar/Listener.o tmp/objs/Cedar/Logging.o tmp/objs/Cedar/Nat.o tmp/objs/Cedar/NativeStack.o tmp/objs/Cedar/NM.o tmp/objs/Cedar/NullLan.o tmp/objs/Cedar/Protocol.o tmp/objs/Cedar/Radius.o tmp/objs/Cedar/Remote.o tmp/objs/Cedar/Sam.o tmp/objs/Cedar/SecureInfo.o tmp/objs/Cedar/SecureNAT.o tmp/objs/Cedar/SeLowUser.o tmp/objs/Cedar/Server.o tmp/objs/Cedar/Session.o tmp/objs/Cedar/SM.o tmp/objs/Cedar/SW.o tmp/objs/Cedar/UdpAccel.o tmp/objs/Cedar/UT.o tmp/objs/Cedar/VG.o tmp/objs/Cedar/Virtual.o tmp/objs/Cedar/VLan.o tmp/objs/Cedar/VLanUnix.o tmp/objs/Cedar/VLanWin32.o tmp/objs/Cedar/WaterMark.o tmp/objs/Cedar/WebUI.o tmp/objs/Cedar/WinUi.o tmp/objs/Cedar/Wpc.o -HAMCORE_FILES=src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css +HAMCORE_FILES=src/bin/hamcore/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/empty.config src/bin/hamcore/empty_sevpnclient.config src/bin/hamcore/eula.txt src/bin/hamcore/install_src.dat src/bin/hamcore/lang.config src/bin/hamcore/languages.txt src/bin/hamcore/legal.txt src/bin/hamcore/openvpn_readme.pdf src/bin/hamcore/openvpn_readme.txt src/bin/hamcore/openvpn_sample.ovpn src/bin/hamcore/SOURCES_OF_BINARY_FILES.TXT src/bin/hamcore/strtable_cn.stb src/bin/hamcore/strtable_en.stb src/bin/hamcore/strtable_ja.stb src/bin/hamcore/vpnweb_sample_cn.htm src/bin/hamcore/vpnweb_sample_en.htm src/bin/hamcore/vpnweb_sample_ja.htm src/bin/hamcore/warning_cn.txt src/bin/hamcore/warning_en.txt src/bin/hamcore/warning_ja.txt src/bin/hamcore/webui/cryptcom.cgi src/bin/hamcore/webui/edituser.cgi src/bin/hamcore/webui/error.cgi src/bin/hamcore/webui/hub.cgi src/bin/hamcore/webui/license.cgi src/bin/hamcore/webui/listener.cgi src/bin/hamcore/webui/localbridge.cgi src/bin/hamcore/webui/login.cgi src/bin/hamcore/webui/newhub.cgi src/bin/hamcore/webui/redirect.cgi src/bin/hamcore/webui/securenat.cgi src/bin/hamcore/webui/server.cgi src/bin/hamcore/webui/session.cgi src/bin/hamcore/webui/user.cgi src/bin/hamcore/webui/webui.css # Build Action default: build diff --git a/src/vpn16/vpn16.c b/src/vpn16/vpn16.c index 05088d04..ebdc78a2 100644 --- a/src/vpn16/vpn16.c +++ b/src/vpn16/vpn16.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpn16.c diff --git a/src/vpn16/vpn16.h b/src/vpn16/vpn16.h index 7ea17ba9..cab8d224 100644 --- a/src/vpn16/vpn16.h +++ b/src/vpn16/vpn16.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpn16.h diff --git a/src/vpnbrand/vpnbrand.h b/src/vpnbrand/vpnbrand.h index 9f7742fd..df680910 100644 --- a/src/vpnbrand/vpnbrand.h +++ b/src/vpnbrand/vpnbrand.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // BrandingKit.h diff --git a/src/vpnbridge/vpnbridge.c b/src/vpnbridge/vpnbridge.c index ef4a9230..bdf1ac7a 100644 --- a/src/vpnbridge/vpnbridge.c +++ b/src/vpnbridge/vpnbridge.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpnbridge.c diff --git a/src/vpnclient/vpncsvc.c b/src/vpnclient/vpncsvc.c index ff9ed262..43b4d0e5 100644 --- a/src/vpnclient/vpncsvc.c +++ b/src/vpnclient/vpncsvc.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncsvc.c diff --git a/src/vpnclient/vpncsvc.h b/src/vpnclient/vpncsvc.h index 8b7a3dad..300a7ecf 100644 --- a/src/vpnclient/vpncsvc.h +++ b/src/vpnclient/vpncsvc.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncsvc.h diff --git a/src/vpncmd/vpncmd.c b/src/vpncmd/vpncmd.c index 200b5886..a58a24e4 100644 --- a/src/vpncmd/vpncmd.c +++ b/src/vpncmd/vpncmd.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncmd.c diff --git a/src/vpncmdsys/vpncmdsys.c b/src/vpncmdsys/vpncmdsys.c index 2910a02f..b5718902 100644 --- a/src/vpncmdsys/vpncmdsys.c +++ b/src/vpncmdsys/vpncmdsys.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncmdsys.c diff --git a/src/vpncmdsys/vpncmdsys.h b/src/vpncmdsys/vpncmdsys.h index 62f716df..ed37ab00 100644 --- a/src/vpncmdsys/vpncmdsys.h +++ b/src/vpncmdsys/vpncmdsys.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncmdsys.h diff --git a/src/vpncmgr/vpncmgr.c b/src/vpncmgr/vpncmgr.c index 989d32e6..f524e9bd 100644 --- a/src/vpncmgr/vpncmgr.c +++ b/src/vpncmgr/vpncmgr.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncmgr.c diff --git a/src/vpndrvinst/vpndrvinst.c b/src/vpndrvinst/vpndrvinst.c index 771d3c5a..2909fee2 100644 --- a/src/vpndrvinst/vpndrvinst.c +++ b/src/vpndrvinst/vpndrvinst.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Ham.c diff --git a/src/vpndrvinst/vpndrvinst.h b/src/vpndrvinst/vpndrvinst.h index 548ae0f4..36d850a5 100644 --- a/src/vpndrvinst/vpndrvinst.h +++ b/src/vpndrvinst/vpndrvinst.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // Ham.h diff --git a/src/vpninstall/vpninstall.c b/src/vpninstall/vpninstall.c index fd4450d9..c03c1860 100644 --- a/src/vpninstall/vpninstall.c +++ b/src/vpninstall/vpninstall.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpninstall.c diff --git a/src/vpninstall/vpninstall.h b/src/vpninstall/vpninstall.h index ab51bfa4..c57b426d 100644 --- a/src/vpninstall/vpninstall.h +++ b/src/vpninstall/vpninstall.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpninstall.h diff --git a/src/vpnserver/vpnserver.c b/src/vpnserver/vpnserver.c index a5c2f71f..9b45d25d 100644 --- a/src/vpnserver/vpnserver.c +++ b/src/vpnserver/vpnserver.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpnserver.c diff --git a/src/vpnsetup/vpnsetup.c b/src/vpnsetup/vpnsetup.c index 7e310b43..d0e6caeb 100644 --- a/src/vpnsetup/vpnsetup.c +++ b/src/vpnsetup/vpnsetup.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. #include diff --git a/src/vpnsmgr/vpnsmgr.c b/src/vpnsmgr/vpnsmgr.c index b92ed3ec..a38fdea8 100644 --- a/src/vpnsmgr/vpnsmgr.c +++ b/src/vpnsmgr/vpnsmgr.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpncmgr.c diff --git a/src/vpnweb/vpnweb.h b/src/vpnweb/vpnweb.h index 6969e75c..b3aa1dda 100644 --- a/src/vpnweb/vpnweb.h +++ b/src/vpnweb/vpnweb.h @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 7.00.0500 */ -/* at Tue Feb 18 19:10:01 2014 +/* at Thu Mar 20 04:08:24 2014 */ /* Compiler settings for .\vpnweb.idl: Oicf, W1, Zp8, env=Win32 (32b run) diff --git a/src/vpnweb/vpnweb_i.c b/src/vpnweb/vpnweb_i.c index d9f97af2..8036f6de 100644 --- a/src/vpnweb/vpnweb_i.c +++ b/src/vpnweb/vpnweb_i.c @@ -6,7 +6,7 @@ /* File created by MIDL compiler version 7.00.0500 */ -/* at Tue Feb 18 19:10:01 2014 +/* at Thu Mar 20 04:08:24 2014 */ /* Compiler settings for .\vpnweb.idl: Oicf, W1, Zp8, env=Win32 (32b run) diff --git a/src/vpnweb/vpnweb_p.c b/src/vpnweb/vpnweb_p.c index af4d093d..f503f174 100644 --- a/src/vpnweb/vpnweb_p.c +++ b/src/vpnweb/vpnweb_p.c @@ -4,7 +4,7 @@ /* File created by MIDL compiler version 7.00.0500 */ -/* at Tue Feb 18 19:10:01 2014 +/* at Thu Mar 20 04:08:24 2014 */ /* Compiler settings for .\vpnweb.idl: Oicf, W1, Zp8, env=Win32 (32b run) diff --git a/src/vpnweb/vpnwebdlg.c b/src/vpnweb/vpnwebdlg.c index 6b258ae4..ed8ce021 100644 --- a/src/vpnweb/vpnwebdlg.c +++ b/src/vpnweb/vpnwebdlg.c @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpnwebdlg.c diff --git a/src/vpnweb/vpnwebdlg.h b/src/vpnweb/vpnwebdlg.h index bc8f31c8..bff0206d 100644 --- a/src/vpnweb/vpnwebdlg.h +++ b/src/vpnweb/vpnwebdlg.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpnwebdlg.h diff --git a/src/vpnweb/vpnwebdlg_inner.h b/src/vpnweb/vpnwebdlg_inner.h index 74524389..315a4931 100644 --- a/src/vpnweb/vpnwebdlg_inner.h +++ b/src/vpnweb/vpnwebdlg_inner.h @@ -14,7 +14,6 @@ // Author: Daiyuu Nobori // Comments: Tetsuo Sugiyama, Ph.D. // -// // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // version 2 as published by the Free Software Foundation. @@ -85,6 +84,13 @@ // http://www.softether.org/ and ask your question on the users forum. // // Thank you for your cooperation. +// +// +// NO MEMORY OR RESOURCE LEAKS +// --------------------------- +// +// The memory-leaks and resource-leaks verification under the stress +// test has been passed before release this source code. // vpnwebdlg.h