Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SoftEtherVPN/SoftEtherVPN_Stable.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordnobori <da.git@softether.co.jp>2014-10-03 19:09:23 +0400
committerdnobori <da.git@softether.co.jp>2014-10-03 19:09:23 +0400
commit10d4b2c43ddc9fcc2f318c76e3d66f11ef383fad (patch)
tree0f6a9b771241360febb89ab977d2c45ff9654d90
parent16b713b98da8dba29f0f845d5a8c36d6f7c34824 (diff)
v4.10-9505-beta
-rw-r--r--src/BuildFiles/Manifests/x64_admin.manifest1
-rw-r--r--src/BuildFiles/Manifests/x64_user.manifest1
-rw-r--r--src/BuildFiles/Manifests/x86_admin.manifest1
-rw-r--r--src/BuildFiles/Manifests/x86_user.manifest1
-rw-r--r--src/Cedar/Account.c7
-rw-r--r--src/Cedar/Admin.c32
-rw-r--r--src/Cedar/BridgeUnix.c171
-rw-r--r--src/Cedar/BridgeUnix.h1
-rw-r--r--src/Cedar/Cedar.c137
-rw-r--r--src/Cedar/Cedar.h85
-rw-r--r--src/Cedar/Command.c31
-rw-r--r--src/Cedar/Connection.c479
-rw-r--r--src/Cedar/Connection.h11
-rw-r--r--src/Cedar/DDNS.c2
-rw-r--r--src/Cedar/DDNS.h8
-rw-r--r--src/Cedar/Hub.c288
-rw-r--r--src/Cedar/Hub.h15
-rw-r--r--src/Cedar/Interop_SSTP.c3
-rw-r--r--src/Cedar/Link.c119
-rw-r--r--src/Cedar/Link.h6
-rw-r--r--src/Cedar/Logging.c113
-rw-r--r--src/Cedar/Logging.h7
-rw-r--r--src/Cedar/NM.c2
-rw-r--r--src/Cedar/NullLan.c55
-rw-r--r--src/Cedar/NullLan.h2
-rw-r--r--src/Cedar/Protocol.c8
-rw-r--r--src/Cedar/SM.c21
-rw-r--r--src/Cedar/SW.c2
-rw-r--r--src/Cedar/SeLowUser.c45
-rw-r--r--src/Cedar/SeLowUser.h2
-rw-r--r--src/Cedar/Server.c213
-rw-r--r--src/Cedar/Server.h36
-rw-r--r--src/Cedar/Session.c199
-rw-r--r--src/Cedar/WinUi.c18
-rw-r--r--src/Cedar/WinUi.h2
-rw-r--r--src/CurrentBuild.txt4
-rw-r--r--src/Mayaqua/Cfg.c40
-rw-r--r--src/Mayaqua/Cfg.h2
-rw-r--r--src/Mayaqua/Encrypt.c117
-rw-r--r--src/Mayaqua/Internat.c77
-rw-r--r--src/Mayaqua/Internat.h1
-rw-r--r--src/Mayaqua/Kernel.c27
-rw-r--r--src/Mayaqua/Kernel.h1
-rw-r--r--src/Mayaqua/MayaType.h6
-rw-r--r--src/Mayaqua/Mayaqua.h7
-rw-r--r--src/Mayaqua/Memory.c157
-rw-r--r--src/Mayaqua/Memory.h19
-rw-r--r--src/Mayaqua/Microsoft.c29
-rw-r--r--src/Mayaqua/Microsoft.h1
-rw-r--r--src/Mayaqua/Network.c67
-rw-r--r--src/Mayaqua/Network.h5
-rw-r--r--src/Mayaqua/OS.c12
-rw-r--r--src/Mayaqua/TcpIp.c2
-rw-r--r--src/Mayaqua/Unix.c75
-rw-r--r--src/Mayaqua/Unix.h6
-rw-r--r--src/Mayaqua/Win32.c21
-rw-r--r--src/PenCore/PenCore.rc2
-rw-r--r--src/SeLow/SeLow.c127
-rw-r--r--src/SeLow/SeLow.h3
-rw-r--r--src/SeLow/SeLowCommon.h5
-rw-r--r--src/bin/hamcore/SeLow_x64.sysbin38112 -> 38368 bytes
-rw-r--r--src/bin/hamcore/SeLow_x86.sysbin30816 -> 31072 bytes
-rw-r--r--src/bin/hamcore/chain_certs.txt24
-rw-r--r--src/bin/hamcore/inf/selow_x64/SeLow_x64.inf4
-rw-r--r--src/bin/hamcore/inf/selow_x64/inf.catbin6275 -> 6275 bytes
-rw-r--r--src/bin/hamcore/inf/selow_x86/SeLow_x86.inf4
-rw-r--r--src/bin/hamcore/inf/selow_x86/inf.catbin6275 -> 6275 bytes
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN10.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN100.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN101.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN102.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN103.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN104.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN105.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN106.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN107.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN108.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN109.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN11.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN110.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN111.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN112.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN113.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN114.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN115.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN116.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN117.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN118.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN119.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN12.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN120.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN121.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN122.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN123.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN124.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN125.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN126.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN127.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN13.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN14.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN15.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN16.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN17.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN18.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN19.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN2.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN20.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN21.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN22.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN23.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN24.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN25.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN26.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN27.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN28.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN29.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN3.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN30.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN31.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN32.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN33.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN34.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN35.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN36.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN37.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN38.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN39.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN4.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN40.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN41.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN42.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN43.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN44.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN45.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN46.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN47.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN48.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN49.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN5.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN50.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN51.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN52.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN53.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN54.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN55.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN56.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN57.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN58.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN59.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN6.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN60.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN61.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN62.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN63.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN64.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN65.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN66.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN67.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN68.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN69.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN7.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN70.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN71.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN72.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN73.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN74.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN75.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN76.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN77.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN78.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN79.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN8.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN80.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN81.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN82.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN83.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN84.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN85.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN86.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN87.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN88.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN89.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN9.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN90.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN91.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN92.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN93.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN94.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN95.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN96.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN97.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN98.inf2
-rw-r--r--src/bin/hamcore/inf/x64/INF_VPN99.inf2
-rw-r--r--src/bin/hamcore/inf/x64/inf.catbin43113 -> 43113 bytes
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN10.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN100.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN101.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN102.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN103.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN104.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN105.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN106.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN107.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN108.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN109.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN11.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN110.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN111.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN112.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN113.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN114.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN115.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN116.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN117.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN118.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN119.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN12.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN120.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN121.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN122.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN123.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN124.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN125.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN126.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN127.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN13.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN14.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN15.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN16.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN17.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN18.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN19.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN2.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN20.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN21.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN22.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN23.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN24.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN25.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN26.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN27.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN28.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN29.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN3.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN30.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN31.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN32.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN33.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN34.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN35.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN36.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN37.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN38.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN39.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN4.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN40.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN41.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN42.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN43.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN44.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN45.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN46.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN47.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN48.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN49.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN5.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN50.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN51.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN52.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN53.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN54.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN55.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN56.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN57.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN58.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN59.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN6.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN60.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN61.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN62.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN63.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN64.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN65.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN66.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN67.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN68.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN69.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN7.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN70.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN71.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN72.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN73.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN74.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN75.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN76.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN77.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN78.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN79.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN8.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN80.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN81.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN82.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN83.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN84.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN85.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN86.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN87.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN88.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN89.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN9.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN90.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN91.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN92.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN93.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN94.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN95.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN96.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN97.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN98.inf2
-rw-r--r--src/bin/hamcore/inf/x86/INF_VPN99.inf2
-rw-r--r--src/bin/hamcore/inf/x86/inf.catbin43113 -> 43113 bytes
-rw-r--r--src/bin/hamcore/pxwfp_x64.sysbin22240 -> 22240 bytes
-rw-r--r--src/bin/hamcore/pxwfp_x86.sysbin18016 -> 18016 bytes
-rw-r--r--src/bin/hamcore/see.sysbin43104 -> 43104 bytes
-rw-r--r--src/bin/hamcore/see_x64.sysbin38240 -> 38240 bytes
-rw-r--r--src/bin/hamcore/strtable_cn.stb5
-rw-r--r--src/bin/hamcore/strtable_en.stb5
-rw-r--r--src/bin/hamcore/strtable_ja.stb5
-rw-r--r--src/bin/hamcore/vpn_driver.sysbin25824 -> 25824 bytes
-rw-r--r--src/bin/hamcore/vpn_driver6.sysbin26208 -> 26208 bytes
-rw-r--r--src/bin/hamcore/vpn_driver6_x64.sysbin28768 -> 28768 bytes
-rw-r--r--src/bin/hamcore/vpn_driver_x64.sysbin29536 -> 29536 bytes
-rw-r--r--src/bin/vpnweb.cabbin195796 -> 195820 bytes
-rw-r--r--src/bin/vpnweb.ocxbin333880 -> 333880 bytes
-rw-r--r--src/makefiles/freebsd_32bit.mak2
-rw-r--r--src/makefiles/freebsd_64bit.mak2
-rw-r--r--src/makefiles/linux_32bit.mak2
-rw-r--r--src/makefiles/linux_64bit.mak2
-rw-r--r--src/makefiles/macos_32bit.mak2
-rw-r--r--src/makefiles/macos_64bit.mak2
-rw-r--r--src/makefiles/openbsd_32bit.mak2
-rw-r--r--src/makefiles/openbsd_64bit.mak2
-rw-r--r--src/makefiles/solaris_32bit.mak2
-rw-r--r--src/makefiles/solaris_64bit.mak2
-rw-r--r--src/vpnweb/vpnweb.h2
-rw-r--r--src/vpnweb/vpnweb_i.c2
-rw-r--r--src/vpnweb/vpnweb_p.c2
349 files changed, 2630 insertions, 888 deletions
diff --git a/src/BuildFiles/Manifests/x64_admin.manifest b/src/BuildFiles/Manifests/x64_admin.manifest
index 0fcdb4d9..58caa97d 100644
--- a/src/BuildFiles/Manifests/x64_admin.manifest
+++ b/src/BuildFiles/Manifests/x64_admin.manifest
@@ -18,6 +18,7 @@
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>
+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS>
</application>
</compatibility>
<asmv3:application>
diff --git a/src/BuildFiles/Manifests/x64_user.manifest b/src/BuildFiles/Manifests/x64_user.manifest
index 21e1e78a..2c19b412 100644
--- a/src/BuildFiles/Manifests/x64_user.manifest
+++ b/src/BuildFiles/Manifests/x64_user.manifest
@@ -18,6 +18,7 @@
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>
+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS>
</application>
</compatibility>
<asmv3:application>
diff --git a/src/BuildFiles/Manifests/x86_admin.manifest b/src/BuildFiles/Manifests/x86_admin.manifest
index 0129bc30..7feaa3c2 100644
--- a/src/BuildFiles/Manifests/x86_admin.manifest
+++ b/src/BuildFiles/Manifests/x86_admin.manifest
@@ -18,6 +18,7 @@
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>
+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS>
</application>
</compatibility>
<asmv3:application>
diff --git a/src/BuildFiles/Manifests/x86_user.manifest b/src/BuildFiles/Manifests/x86_user.manifest
index 4a3d6fb4..61ee3699 100644
--- a/src/BuildFiles/Manifests/x86_user.manifest
+++ b/src/BuildFiles/Manifests/x86_user.manifest
@@ -18,6 +18,7 @@
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"></supportedOS>
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"></supportedOS>
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"></supportedOS>
+ <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"></supportedOS>
</application>
</compatibility>
<asmv3:application>
diff --git a/src/Cedar/Account.c b/src/Cedar/Account.c
index 82434dce..ae69e7db 100644
--- a/src/Cedar/Account.c
+++ b/src/Cedar/Account.c
@@ -257,7 +257,7 @@ POLICY_ITEM *GetPolicyItem(UINT id)
// Does cascade connection support the specified policy?
bool PolicyIsSupportedForCascade(UINT i)
{
- if (i == 0 || i == 4 || i == 5 || i == 9 || i == 12 || i == 13 ||
+ if (i == 0 || i == 4 || i == 5 || i == 12 || i == 13 ||
i == 14 || i == 19 || i == 20 || i == 21 || i == 26 || i == 30 || i == 31 || i == 36)
{
// These items are not supported by cascade connection.
@@ -375,6 +375,11 @@ bool IsUserName(char *name)
return false;
}
+ if (StrCmpi(name, "link") == 0)
+ {
+ return false;
+ }
+
if (StrCmpi(name, LINK_USER_NAME) == 0)
{
return false;
diff --git a/src/Cedar/Admin.c b/src/Cedar/Admin.c
index a14b85ee..29bdf52b 100644
--- a/src/Cedar/Admin.c
+++ b/src/Cedar/Admin.c
@@ -3972,20 +3972,20 @@ UINT StDeleteMacTable(ADMIN *a, RPC_DELETE_TABLE *t)
return ERR_NOT_ENOUGH_RIGHT;
}
- LockList(h->MacTable);
+ LockHashList(h->MacHashTable);
{
- if (IsInListKey(h->MacTable, t->Key))
+ if (IsInHashListKey(h->MacHashTable, t->Key))
{
- MAC_TABLE_ENTRY *e = ListKeyToPointer(h->MacTable, t->Key);
+ MAC_TABLE_ENTRY *e = HashListKeyToPointer(h->MacHashTable, t->Key);
+ DeleteHash(h->MacHashTable, e);
Free(e);
- Delete(h->MacTable, e);
}
else
{
ret = ERR_OBJECT_NOT_FOUND;
}
}
- UnlockList(h->MacTable);
+ UnlockHashList(h->MacHashTable);
if (ret == ERR_OBJECT_NOT_FOUND)
{
@@ -4040,15 +4040,15 @@ UINT SiEnumMacTable(SERVER *s, char *hubname, RPC_ENUM_MAC_TABLE *t)
StrCpy(t->HubName, sizeof(t->HubName), hubname);
- LockList(h->MacTable);
+ LockHashList(h->MacHashTable);
{
- t->NumMacTable = LIST_NUM(h->MacTable);
+ MAC_TABLE_ENTRY **pp = (MAC_TABLE_ENTRY **)HashListToArray(h->MacHashTable, &t->NumMacTable);
t->MacTables = ZeroMalloc(sizeof(RPC_ENUM_MAC_TABLE_ITEM) * t->NumMacTable);
for (i = 0;i < t->NumMacTable;i++)
{
RPC_ENUM_MAC_TABLE_ITEM *e = &t->MacTables[i];
- MAC_TABLE_ENTRY *mac = LIST_DATA(h->MacTable, i);
+ MAC_TABLE_ENTRY *mac = pp[i];
e->Key = POINTER_TO_KEY(mac);
StrCpy(e->SessionName, sizeof(e->SessionName), mac->Session->Name);
@@ -4059,8 +4059,10 @@ UINT SiEnumMacTable(SERVER *s, char *hubname, RPC_ENUM_MAC_TABLE *t)
GetMachineName(e->RemoteHostname, sizeof(e->RemoteHostname));
}
+
+ Free(pp);
}
- UnlockList(h->MacTable);
+ UnlockHashList(h->MacHashTable);
ReleaseHub(h);
@@ -5863,6 +5865,8 @@ UINT StDeleteLink(ADMIN *a, RPC_LINK *t)
return ERR_OBJECT_NOT_FOUND;
}
+ k->NoOnline = true;
+
ALog(a, h, "LA_DELETE_LINK", t->AccountName);
SetLinkOffline(k);
@@ -6880,7 +6884,7 @@ UINT StGetHubStatus(ADMIN *a, RPC_HUB_STATUS *t)
t->NumGroups = LIST_NUM(h->HubDb->GroupList);
}
- t->NumMacTables = LIST_NUM(h->MacTable);
+ t->NumMacTables = HASH_LIST_NUM(h->MacHashTable);
t->NumIpTables = LIST_NUM(h->IpTable);
Lock(h->TrafficLock);
@@ -7863,11 +7867,11 @@ UINT StEnumHub(ADMIN *a, RPC_ENUM_HUB *t)
e->NumSessions = LIST_NUM(h->SessionList);
- LockList(h->MacTable);
+ LockHashList(h->MacHashTable);
{
- e->NumMacTables = LIST_NUM(h->MacTable);
+ e->NumMacTables = HASH_LIST_NUM(h->MacHashTable);
}
- UnlockList(h->MacTable);
+ UnlockHashList(h->MacHashTable);
LockList(h->IpTable);
{
@@ -8876,7 +8880,7 @@ UINT StGetServerStatus(ADMIN *a, RPC_SERVER_STATUS *t)
}
}
- t->NumMacTables += LIST_NUM(h->MacTable);
+ t->NumMacTables += HASH_LIST_NUM(h->MacHashTable);
t->NumIpTables += LIST_NUM(h->IpTable);
if (h->HubDb != NULL)
diff --git a/src/Cedar/BridgeUnix.c b/src/Cedar/BridgeUnix.c
index 321bb0aa..d3618eff 100644
--- a/src/Cedar/BridgeUnix.c
+++ b/src/Cedar/BridgeUnix.c
@@ -143,6 +143,22 @@
#include <ifaddrs.h>
#endif // BRIDGE_BPF
+#ifdef UNIX_LINUX
+struct my_tpacket_auxdata
+{
+ UINT tp_status;
+ UINT tp_len;
+ UINT tp_snaplen;
+ USHORT tp_mac;
+ USHORT tp_net;
+ USHORT tp_vlan_tci;
+ USHORT tp_vlan_tpid;
+};
+#define MY_TP_STATUS_VLAN_VALID (1 << 4)
+#define MY_TP_STATUS_VLAN_TPID_VALID (1 << 6)
+#define MY_PACKET_AUXDATA 8
+#endif // UNIX_LINUX
+
// Initialize
void InitEth()
{
@@ -543,6 +559,7 @@ ETH *OpenEthLinux(char *name, bool local, bool tapmode, char *tapaddr)
struct sockaddr_ll addr;
int s;
int index;
+ bool aux_ok = false;
CANCEL *c;
// Validate arguments
if (name == NULL)
@@ -624,12 +641,30 @@ ETH *OpenEthLinux(char *name, bool local, bool tapmode, char *tapaddr)
}
}
+ if (true)
+ {
+ int val = 1;
+ int ss_ret = setsockopt(s, SOL_PACKET, MY_PACKET_AUXDATA, &val, sizeof(val));
+
+ if (ss_ret < 0)
+ {
+ Debug("eth(%s): setsockopt: PACKET_AUXDATA failed.\n", name);
+ }
+ else
+ {
+ Debug("eth(%s): setsockopt: PACKET_AUXDATA ok.\n", name);
+ aux_ok = true;
+ }
+ }
+
e = ZeroMalloc(sizeof(ETH));
e->Name = CopyStr(name);
e->Title = CopyStr(name);
e->IfIndex = index;
e->Socket = s;
+ e->Linux_IsAuxDataSupported = aux_ok;
+
c = NewCancel();
UnixDeletePipe(c->pipe_read, c->pipe_write);
c->pipe_read = c->pipe_write = -1;
@@ -646,8 +681,11 @@ ETH *OpenEthLinux(char *name, bool local, bool tapmode, char *tapaddr)
if (tapmode == false)
{
- // Disable hardware offloading
- UnixDisableInterfaceOffload(name);
+ if (GetGlobalServerFlag(GSF_LOCALBRIDGE_NO_DISABLE_OFFLOAD) == false)
+ {
+ // Disable hardware offloading
+ UnixDisableInterfaceOffload(name);
+ }
}
return e;
@@ -1566,10 +1604,19 @@ UINT EthGetPacket(ETH *e, void **data)
}
#ifdef UNIX_LINUX
+
UINT EthGetPacketLinux(ETH *e, void **data)
{
int s, ret;
UCHAR tmp[UNIX_ETH_TMP_BUFFER_SIZE];
+ struct iovec msg_iov;
+ struct msghdr msg_header;
+ struct cmsghdr *cmsg;
+ union
+ {
+ struct cmsghdr cmsg;
+ char buf[CMSG_SPACE(sizeof(struct my_tpacket_auxdata))];
+ } cmsg_buf;
// Validate arguments
if (e == NULL || data == NULL)
{
@@ -1603,7 +1650,28 @@ UINT EthGetPacketLinux(ETH *e, void **data)
}
// Read
- ret = read(s, tmp, sizeof(tmp));
+ msg_iov.iov_base = tmp;
+ msg_iov.iov_len = sizeof(tmp);
+
+ msg_header.msg_name = NULL;
+ msg_header.msg_namelen = 0;
+ msg_header.msg_iov = &msg_iov;
+ msg_header.msg_iovlen = 1;
+ if (e->Linux_IsAuxDataSupported)
+ {
+ memset(&cmsg_buf, 0, sizeof(cmsg_buf));
+
+ msg_header.msg_control = &cmsg_buf;
+ msg_header.msg_controllen = sizeof(cmsg_buf);
+ }
+ else
+ {
+ msg_header.msg_control = NULL;
+ msg_header.msg_controllen = 0;
+ }
+ msg_header.msg_flags = 0;
+
+ ret = recvmsg(s, &msg_header, 0);
if (ret == 0 || (ret == -1 && errno == EAGAIN))
{
// No packet
@@ -1619,9 +1687,75 @@ UINT EthGetPacketLinux(ETH *e, void **data)
}
else
{
- // Success to read a packet
- *data = MallocFast(ret);
- Copy(*data, tmp, ret);
+ bool flag = false;
+ USHORT api_vlan_id = 0;
+ USHORT api_vlan_tpid = 0;
+
+ if (e->Linux_IsAuxDataSupported)
+ {
+ for (cmsg = CMSG_FIRSTHDR(&msg_header); cmsg; cmsg = CMSG_NXTHDR(&msg_header, cmsg))
+ {
+ struct my_tpacket_auxdata *aux;
+ UINT len;
+ USHORT vlan_tpid = 0x8100;
+ USHORT vlan_id = 0;
+
+ if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct my_tpacket_auxdata)) ||
+ cmsg->cmsg_level != SOL_PACKET ||
+ cmsg->cmsg_type != MY_PACKET_AUXDATA)
+ {
+ continue;
+ }
+
+ aux = (struct my_tpacket_auxdata *)CMSG_DATA(cmsg);
+
+ if (aux != NULL)
+ {
+ if (aux->tp_vlan_tci != 0)
+ {
+ vlan_id = aux->tp_vlan_tci;
+ }
+ }
+
+ if (vlan_id != 0)
+ {
+ api_vlan_id = vlan_id;
+ api_vlan_tpid = vlan_tpid;
+ break;
+ }
+ }
+
+ if (api_vlan_id != 0 && api_vlan_tpid != 0)
+ {
+ // VLAN ID has been received with PACKET_AUXDATA.
+ // Insert the tag.
+ USHORT vlan_id_ne = Endian16(api_vlan_id);
+ USHORT vlan_tpid_ne = Endian16(api_vlan_tpid);
+
+ if (ret >= 14)
+ {
+ if (*((USHORT *)(tmp + 12)) != vlan_tpid_ne)
+ {
+ *data = MallocFast(ret + 4);
+ Copy(*data, tmp, 12);
+ Copy(((UCHAR *)*data) + 12, &vlan_tpid_ne, 2);
+ Copy(((UCHAR *)*data) + 14, &vlan_id_ne, 2);
+ Copy(((UCHAR *)*data) + 16, tmp + 12, ret - 12);
+
+ flag = true;
+
+ ret += 4;
+ }
+ }
+ }
+ }
+
+ // Success to read a packet (No VLAN)
+ if (flag == false)
+ {
+ *data = MallocFast(ret);
+ Copy(*data, tmp, ret);
+ }
return ret;
}
@@ -1824,11 +1958,36 @@ void EthPutPacket(ETH *e, void *data, UINT size)
Debug("EthPutPacket: ret:%d size:%d\n", ret, size);
}
#else // BRIDGE_PCAP
+#ifndef UNIX_LINUX
ret = write(s, data, size);
if (ret<0)
{
Debug("EthPutPacket: ret:%d errno:%d size:%d\n", ret, errno, size);
}
+#else // UNIX_LINUX
+ {
+ struct iovec msg_iov;
+ struct msghdr msg_header;
+
+ msg_iov.iov_base = data;
+ msg_iov.iov_len = size;
+
+ msg_header.msg_name = NULL;
+ msg_header.msg_namelen = 0;
+ msg_header.msg_iov = &msg_iov;
+ msg_header.msg_iovlen = 1;
+ msg_header.msg_control = NULL;
+ msg_header.msg_controllen = 0;
+ msg_header.msg_flags = 0;
+
+ ret = sendmsg(s, &msg_header, 0);
+
+ if (ret<0)
+ {
+ Debug("EthPutPacket: ret:%d errno:%d size:%d\n", ret, errno, size);
+ }
+ }
+#endif // UNIX_LINUX
#endif //BRIDGE_PCAP
Free(data);
diff --git a/src/Cedar/BridgeUnix.h b/src/Cedar/BridgeUnix.h
index a816d8e6..e0763e57 100644
--- a/src/Cedar/BridgeUnix.h
+++ b/src/Cedar/BridgeUnix.h
@@ -161,6 +161,7 @@ struct ETH
#endif // BRIDGE_BPF
VLAN *Tap; // tap
+ bool Linux_IsAuxDataSupported; // Is PACKET_AUXDATA supported
};
#if defined( BRIDGE_BPF ) || defined( BRIDGE_PCAP )
diff --git a/src/Cedar/Cedar.c b/src/Cedar/Cedar.c
index aaf75433..869efa59 100644
--- a/src/Cedar/Cedar.c
+++ b/src/Cedar/Cedar.c
@@ -235,6 +235,19 @@ bool IsSupportedWinVer(RPC_WINVER *v)
}
}
+#if 0
+ // Enable in future when supported
+ if (v->VerMajor == 6 && v->VerMinor == 4)
+ {
+ // Windows 10, Server 10
+ if (v->ServicePack <= 0)
+ {
+ // SP0 only
+ return true;
+ }
+ }
+#endif
+
return false;
}
@@ -1149,6 +1162,118 @@ void StopAllListener(CEDAR *c)
Free(array);
}
+// Budget management functions
+void CedarAddQueueBudget(CEDAR *c, int diff)
+{
+ // Validate arguments
+ if (c == NULL || diff == 0)
+ {
+ return;
+ }
+
+ Lock(c->QueueBudgetLock);
+ {
+ int v = (int)c->QueueBudget;
+ v += diff;
+ c->QueueBudget = (UINT)v;
+ }
+ Unlock(c->QueueBudgetLock);
+}
+void CedarAddFifoBudget(CEDAR *c, int diff)
+{
+ // Validate arguments
+ if (c == NULL || diff == 0)
+ {
+ return;
+ }
+
+ Lock(c->FifoBudgetLock);
+ {
+ int v = (int)c->FifoBudget;
+ v += diff;
+ c->FifoBudget = (UINT)v;
+ }
+ Unlock(c->FifoBudgetLock);
+}
+UINT CedarGetQueueBudgetConsuming(CEDAR *c)
+{
+ // Validate arguments
+ if (c == NULL)
+ {
+ return 0;
+ }
+
+ return c->QueueBudget;
+}
+UINT CedarGetFifoBudgetConsuming(CEDAR *c)
+{
+ // Validate arguments
+ if (c == NULL)
+ {
+ return 0;
+ }
+
+ return c->FifoBudget;
+}
+UINT CedarGetQueueBudgetBalance(CEDAR *c)
+{
+ UINT current = CedarGetQueueBudgetConsuming(c);
+ UINT budget = QUEUE_BUDGET;
+
+ if (current <= budget)
+ {
+ return budget - current;
+ }
+ else
+ {
+ return 0;
+ }
+}
+UINT CedarGetFifoBudgetBalance(CEDAR *c)
+{
+ UINT current = CedarGetFifoBudgetConsuming(c);
+ UINT budget = FIFO_BUDGET;
+
+ if (current <= budget)
+ {
+ return budget - current;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+// Add the current TCP queue size
+void CedarAddCurrentTcpQueueSize(CEDAR *c, int diff)
+{
+ // Validate arguments
+ if (c == NULL || diff == 0)
+ {
+ return;
+ }
+
+ Lock(c->CurrentTcpQueueSizeLock);
+ {
+ int v = (int)c->CurrentTcpQueueSize;
+ v += diff;
+ c->CurrentTcpQueueSize = (UINT)v;
+ }
+ Unlock(c->CurrentTcpQueueSizeLock);
+}
+
+// Get the current TCP queue size
+UINT CedarGetCurrentTcpQueueSize(CEDAR *c)
+{
+ // Validate arguments
+ if (c == NULL)
+ {
+ return 0;
+ }
+
+ return c->CurrentTcpQueueSize;
+}
+
// Stop Cedar
void StopCedar(CEDAR *c)
{
@@ -1269,6 +1394,12 @@ void CleanupCedar(CEDAR *c)
DeleteLock(c->CurrentRegionLock);
+ DeleteLock(c->CurrentTcpQueueSizeLock);
+ DeleteLock(c->QueueBudgetLock);
+ DeleteLock(c->FifoBudgetLock);
+
+ DeleteCounter(c->CurrentActiveLinks);
+
Free(c);
}
@@ -1524,6 +1655,8 @@ CEDAR *NewCedar(X *server_x, K *server_k)
c = ZeroMalloc(sizeof(CEDAR));
+ c->CurrentActiveLinks = NewCounter();
+
c->AcceptingSockets = NewCounter();
c->CedarSuperLock = NewLock();
@@ -1539,6 +1672,10 @@ CEDAR *NewCedar(X *server_x, K *server_k)
c->AssignedBridgeLicense = NewCounter();
c->AssignedClientLicense = NewCounter();
+ c->CurrentTcpQueueSizeLock = NewLock();
+ c->QueueBudgetLock = NewLock();
+ c->FifoBudgetLock = NewLock();
+
Rand(c->UniqueId, sizeof(c->UniqueId));
c->CreatedTick = Tick64();
diff --git a/src/Cedar/Cedar.h b/src/Cedar/Cedar.h
index abd0a641..2f6c7ef9 100644
--- a/src/Cedar/Cedar.h
+++ b/src/Cedar/Cedar.h
@@ -138,7 +138,7 @@
#define CEDAR_VER 410
// Build Number
-#define CEDAR_BUILD 9473
+#define CEDAR_BUILD 9505
// Beta number
//#define BETA_NUMBER 3
@@ -153,16 +153,16 @@
// Specify the location to build
#ifndef BUILD_PLACE
-#define BUILD_PLACE "pc26"
+#define BUILD_PLACE "pc25"
#endif // BUILD_PLACE
// Specifies the build date
#define BUILD_DATE_Y 2014
-#define BUILD_DATE_M 7
-#define BUILD_DATE_D 12
-#define BUILD_DATE_HO 2
-#define BUILD_DATE_MI 14
-#define BUILD_DATE_SE 33
+#define BUILD_DATE_M 10
+#define BUILD_DATE_D 3
+#define BUILD_DATE_HO 17
+#define BUILD_DATE_MI 55
+#define BUILD_DATE_SE 4
// Tolerable time difference
#define ALLOW_TIMESTAMP_DIFF (UINT64)(3 * 24 * 60 * 60 * 1000)
@@ -224,27 +224,45 @@
#define MAX_ACCESSLISTS (4096 * 8) // Maximum number of access list entries
#define MAX_USERS 10000 // The maximum number of users
#define MAX_GROUPS 10000 // Maximum number of groups
-#define MAX_MAC_TABLES 65536 // Maximum number of MAC address table entries
-#define MAX_IP_TABLES 65536 // Maximum number of IP address table entries
+#define MAX_MAC_TABLES VPN_GP(GP_MAX_MAC_TABLES, 65536) // Maximum number of MAC address table entries
+#define MAX_IP_TABLES VPN_GP(GP_MAX_IP_TABLES, 65536) // Maximum number of IP address table entries
#define MAX_HUB_CERTS 4096 // Maximum number of Root CA that can be registered
#define MAX_HUB_CRLS 4096 // Maximum number of CRL that can be registered
#define MAX_HUB_ACS 4096 // Maximum number of AC that can be registered
-#define MAX_HUB_LINKS 128 // Maximum number of Cascade that can be registered
+#define MAX_HUB_LINKS VPN_GP(GP_MAX_HUB_LINKS, 1024) // Maximum number of Cascade that can be registered
#define MAX_HUB_ADMIN_OPTIONS 4096 // Maximum number of Virtual HUB management options that can be registered
+#ifndef USE_STRATEGY_LOW_MEMORY
+#define MEM_FIFO_REALLOC_MEM_SIZE VPN_GP(GP_MEM_FIFO_REALLOC_MEM_SIZE, (65536 * 10))
+#define QUEUE_BUDGET VPN_GP(GP_QUEUE_BUDGET, 2048)
+#define FIFO_BUDGET VPN_GP(GP_FIFO_BUDGET, 1600 * 1600 * 4)
+#else // USE_STRATEGY_LOW_MEMORY
+#define MEM_FIFO_REALLOC_MEM_SIZE VPN_GP(GP_MEM_FIFO_REALLOC_MEM_SIZE, (65536))
+#define QUEUE_BUDGET VPN_GP(GP_QUEUE_BUDGET, 1024)
+#define FIFO_BUDGET VPN_GP(GP_FIFO_BUDGET, 1000000)
+#endif // USE_STRATEGY_LOW_MEMORY
+
#define MAX_PACKET_SIZE 1560 // Maximum packet size
#define UDP_BUF_SIZE (32 * 1024) // Aim of the UDP packet size
-#define MAX_SEND_SOCKET_QUEUE_SIZE (1600 * 1600 * 1) // Maximum transmit queue size
-#define MIN_SEND_SOCKET_QUEUE_SIZE (1600 * 200 * 1)
-#define MAX_SEND_SOCKET_QUEUE_NUM 128 // Maximum transmission queue items
+#ifndef USE_STRATEGY_LOW_MEMORY
+#define MAX_SEND_SOCKET_QUEUE_SIZE VPN_GP(GP_MAX_SEND_SOCKET_QUEUE_SIZE, (1600 * 1600 * 1)) // Maximum transmit queue size
+#define MIN_SEND_SOCKET_QUEUE_SIZE VPN_GP(GP_MIN_SEND_SOCKET_QUEUE_SIZE, (1600 * 200 * 1)) // Minimum transmit queue size
+#define MAX_STORED_QUEUE_NUM VPN_GP(GP_MAX_STORED_QUEUE_NUM, 1024) // The number of queues that can be stored in each session
+#define MAX_BUFFERING_PACKET_SIZE VPN_GP(GP_MAX_BUFFERING_PACKET_SIZE, (1600 * 1600)) // Maximum packet size can be buffered
+#else // USE_STRATEGY_LOW_MEMORY
+#define MAX_SEND_SOCKET_QUEUE_SIZE VPN_GP(GP_MAX_SEND_SOCKET_QUEUE_SIZE, (1600 * 200 * 1)) // Maximum transmit queue size
+#define MIN_SEND_SOCKET_QUEUE_SIZE VPN_GP(GP_MIN_SEND_SOCKET_QUEUE_SIZE, (1600 * 50 * 1)) // Minimum transmit queue size
+#define MAX_STORED_QUEUE_NUM VPN_GP(GP_MAX_STORED_QUEUE_NUM, 384) // The number of queues that can be stored in each session
+#define MAX_BUFFERING_PACKET_SIZE VPN_GP(GP_MAX_BUFFERING_PACKET_SIZE, (1600 * 300 * 1)) // Maximum packet size can be buffered
+#endif // USE_STRATEGY_LOW_MEMORY
+
+#define MAX_SEND_SOCKET_QUEUE_NUM VPN_GP(GP_MAX_SEND_SOCKET_QUEUE_NUM, 128) // Maximum number of transmission queue items per processing
#define MAX_TCP_CONNECTION 32 // The maximum number of TCP connections
#define NUM_TCP_CONNECTION_FOR_UDP_RECOVERY 2 // Maximum number of connections when using UDP recovery
-#define SELECT_TIME 256
-#define SELECT_TIME_FOR_NAT 30
+#define SELECT_TIME VPN_GP(GP_SELECT_TIME, 256)
+#define SELECT_TIME_FOR_NAT VPN_GP(GP_SELECT_TIME_FOR_NAT, 30)
#define SELECT_TIME_FOR_DELAYED_PKT 1 // If there is a delayed packet
-#define MAX_STORED_QUEUE_NUM 1024 // The number of queues that can be stored in each session
-#define MAX_BUFFERING_PACKET_SIZE (1600 * 1600) // Maximum packet size can be buffered
#define TIMEOUT_MIN (5 * 1000) // Minimum timeout in seconds
#define TIMEOUT_MAX (60 * 1000) // Maximum timeout in seconds
@@ -266,16 +284,16 @@
#define MAC_TABLE_EXCLUSIVE_TIME (13 * 1000) // Period that can occupy the MAC address
#define IP_TABLE_EXCLUSIVE_TIME (13 * 1000) // Period that can occupy the IP address
-#define MAC_TABLE_EXPIRE_TIME (600 * 1000) // MAC address table expiration date
-#define IP_TABLE_EXPIRE_TIME (60 * 1000) // IP address table expiration date
-#define IP_TABLE_EXPIRE_TIME_DHCP (5 * 60 * 1000) // IP address table expiration date (In the case of DHCP)
-#define HUB_ARP_SEND_INTERVAL (5 * 1000) // ARP packet transmission interval (alive check)
+#define MAC_TABLE_EXPIRE_TIME VPN_GP(GP_MAC_TABLE_EXPIRE_TIME, (600 * 1000)) // MAC address table expiration time
+#define IP_TABLE_EXPIRE_TIME VPN_GP(GP_IP_TABLE_EXPIRE_TIME, (60 * 1000)) // IP address table expiration time
+#define IP_TABLE_EXPIRE_TIME_DHCP VPN_GP(GP_IP_TABLE_EXPIRE_TIME_DHCP, (5 * 60 * 1000)) // IP address table expiration time (In the case of DHCP)
+#define HUB_ARP_SEND_INTERVAL VPN_GP(GP_HUB_ARP_SEND_INTERVAL, (5 * 1000)) // ARP packet transmission interval (alive check)
#define LIMITER_SAMPLING_SPAN 1000 // Sampling interval of the traffic limiting device
-#define STORM_CHECK_SPAN 500 // Broadcast storm check interval
-#define STORM_DISCARD_VALUE_START 3 // Broadcast packet discard value start value
-#define STORM_DISCARD_VALUE_END 1024 // Broadcast packet discard value end value
+#define STORM_CHECK_SPAN VPN_GP(GP_STORM_CHECK_SPAN, 500) // Broadcast storm check interval
+#define STORM_DISCARD_VALUE_START VPN_GP(GP_STORM_DISCARD_VALUE_START, 3) // Broadcast packet discard value start value
+#define STORM_DISCARD_VALUE_END VPN_GP(GP_STORM_DISCARD_VALUE_END, 1024) // Broadcast packet discard value end value
#define KEEP_INTERVAL_MIN 5 // Packet transmission interval minimum value
#define KEEP_INTERVAL_DEFAULT 50 // Packet transmission interval default value
@@ -526,7 +544,7 @@
#define PACKET_LOG_ALL 2 // Store also data
// Timing of log switching
-#define LOG_SWITCH_NO 0 // Without switching
+#define LOG_SWITCH_NO 0 // No switching
#define LOG_SWITCH_SECOND 1 // Secondly basis
#define LOG_SWITCH_MINUTE 2 // Minutely basis
#define LOG_SWITCH_HOUR 3 // Hourly basis
@@ -539,7 +557,7 @@
#define DISK_FREE_SPACE_DEFAULT_WINDOWS ((UINT64)(8ULL * 1024ULL * 1024ULL * 1024ULL)) // 8GBytes
// Interval to check the free space
-#define DISK_FREE_CHECK_INTERVAL (5 * 60 * 1000)
+#define DISK_FREE_CHECK_INTERVAL_DEFAULT (5 * 60 * 1000)
// Simple log
#define TINY_LOG_DIRNAME "@tiny_log"
@@ -1026,6 +1044,13 @@ typedef struct CEDAR
LOCK *OpenVPNPublicPortsLock; // Lock of OpenVPN public UDP port list
LOCK *CurrentRegionLock; // Current region lock
char CurrentRegion[128]; // Current region
+ LOCK *CurrentTcpQueueSizeLock; // Current TCP send queue size lock
+ UINT CurrentTcpQueueSize; // Current TCP send queue size
+ COUNTER *CurrentActiveLinks; // Current active cascade connections
+ LOCK *QueueBudgetLock; // Queue budget lock
+ UINT QueueBudget; // Queue budget
+ LOCK *FifoBudgetLock; // Fifo budget lock
+ UINT FifoBudget; // Fifo budget
} CEDAR;
// Type of CEDAR
@@ -1223,6 +1248,14 @@ SOCK *GetInProcListeningSock(CEDAR *c);
SOCK *GetReverseListeningSock(CEDAR *c);
void GetCedarVersion(char *tmp, UINT size);
UINT64 GetCurrentBuildDate();
+void CedarAddCurrentTcpQueueSize(CEDAR *c, int diff);
+UINT CedarGetCurrentTcpQueueSize(CEDAR *c);
+void CedarAddQueueBudget(CEDAR *c, int diff);
+void CedarAddFifoBudget(CEDAR *c, int diff);
+UINT CedarGetQueueBudgetConsuming(CEDAR *c);
+UINT CedarGetFifoBudgetConsuming(CEDAR *c);
+UINT CedarGetQueueBudgetBalance(CEDAR *c);
+UINT CedarGetFifoBudgetBalance(CEDAR *c);
diff --git a/src/Cedar/Command.c b/src/Cedar/Command.c
index e377d78c..4f4d7145 100644
--- a/src/Cedar/Command.c
+++ b/src/Cedar/Command.c
@@ -9056,6 +9056,7 @@ UINT PsConfigGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
wchar_t tmp[MAX_SIZE];
UINT buf_size;
wchar_t *buf;
+ UNI_TOKEN_LIST *lines;
UniFormat(tmp, sizeof(tmp), _UU("CMD_ConfigGet_FILENAME"), t.FileName,
StrLen(t.FileData));
@@ -9067,7 +9068,19 @@ UINT PsConfigGet(CONSOLE *c, char *cmd_name, wchar_t *str, void *param)
Utf8ToUni(buf, buf_size, (BYTE *)t.FileData, StrLen(t.FileData));
- c->Write(c, buf);
+ lines = UniGetLines(buf);
+ if (lines != NULL)
+ {
+ UINT i;
+
+ for (i = 0;i < lines->NumTokens;i++)
+ {
+ c->Write(c, lines->Token[i]);
+ }
+
+ UniFreeToken(lines);
+ }
+
c->Write(c, L"");
Free(buf);
@@ -22237,18 +22250,18 @@ void CtPrintCsv(CT *ct, CONSOLE *c)
{
UINT i, j;
UINT num_columns = LIST_NUM(ct->Columns);
- wchar_t buf[MAX_SIZE];
- wchar_t fmtbuf[MAX_SIZE];
+ wchar_t buf[MAX_SIZE*4];
+ wchar_t fmtbuf[MAX_SIZE*4];
// Show the heading row
buf[0] = 0;
for(i=0; i<num_columns; i++)
{
CTC *ctc = LIST_DATA(ct->Columns, i);
- CtEscapeCsv(fmtbuf, MAX_SIZE, ctc->String);
- UniStrCat(buf, MAX_SIZE, fmtbuf);
+ CtEscapeCsv(fmtbuf, sizeof(fmtbuf), ctc->String);
+ UniStrCat(buf, sizeof(buf), fmtbuf);
if(i != num_columns-1)
- UniStrCat(buf, MAX_SIZE, L",");
+ UniStrCat(buf, sizeof(buf), L",");
}
c->Write(c, buf);
@@ -22259,10 +22272,10 @@ void CtPrintCsv(CT *ct, CONSOLE *c)
buf[0] = 0;
for(i=0; i<num_columns; i++)
{
- CtEscapeCsv(fmtbuf, MAX_SIZE, ctr->Strings[i]);
- UniStrCat(buf, MAX_SIZE, fmtbuf);
+ CtEscapeCsv(fmtbuf, sizeof(fmtbuf), ctr->Strings[i]);
+ UniStrCat(buf, sizeof(buf), fmtbuf);
if(i != num_columns-1)
- UniStrCat(buf, MAX_SIZE, L",");
+ UniStrCat(buf, sizeof(buf), L",");
}
c->Write(c, buf);
}
diff --git a/src/Cedar/Connection.c b/src/Cedar/Connection.c
index bc5a4ae9..51075c8b 100644
--- a/src/Cedar/Connection.c
+++ b/src/Cedar/Connection.c
@@ -743,36 +743,32 @@ void SendDataWithUDP(SOCK *s, CONNECTION *c)
WriteBuf(b, dummy_buf, sizeof(dummy_buf));
// Pack the packets in transmission queue
- LockQueue(c->SendBlocks);
+ while (true)
{
- while (true)
- {
- BLOCK *block;
-
- if (b->Size > UDP_BUF_SIZE)
- {
- break;
- }
- block = GetNext(c->SendBlocks);
- if (block == NULL)
- {
- break;
- }
+ BLOCK *block;
- if (block->Size != 0)
- {
- WriteBufInt(b, block->Size);
- WriteBuf(b, block->Buf, block->Size);
+ if (b->Size > UDP_BUF_SIZE)
+ {
+ break;
+ }
+ block = GetNext(c->SendBlocks);
+ if (block == NULL)
+ {
+ break;
+ }
- c->Session->TotalSendSize += (UINT64)block->SizeofData;
- c->Session->TotalSendSizeReal += (UINT64)block->Size;
- }
+ if (block->Size != 0)
+ {
+ WriteBufInt(b, block->Size);
+ WriteBuf(b, block->Buf, block->Size);
- FreeBlock(block);
- break;
+ c->Session->TotalSendSize += (UINT64)block->SizeofData;
+ c->Session->TotalSendSizeReal += (UINT64)block->Size;
}
+
+ FreeBlock(block);
+ break;
}
- UnlockQueue(c->SendBlocks);
// Write sequence number and session key
sign = (char *)(((UCHAR *)b->Buf));
@@ -896,7 +892,7 @@ void PutUDPPacketData(CONNECTION *c, void *data, UINT size)
block = NewBlock(tmp, size, 0);
// Insert Block
- InsertReveicedBlockToQueue(c, block);
+ InsertReveicedBlockToQueue(c, block, false);
}
}
@@ -913,7 +909,7 @@ void PutUDPPacketData(CONNECTION *c, void *data, UINT size)
}
// Add a block to the receive queue
-void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block)
+void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block, bool no_lock)
{
SESSION *s;
// Validate arguments
@@ -930,11 +926,24 @@ void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block)
s->TotalRecvSize += block->Size;
}
- LockQueue(c->ReceivedBlocks);
+ if (no_lock == false)
+ {
+ LockQueue(c->ReceivedBlocks);
+ }
+
+ if (c->ReceivedBlocks->num_item < MAX_STORED_QUEUE_NUM)
{
InsertQueue(c->ReceivedBlocks, block);
}
- UnlockQueue(c->ReceivedBlocks);
+ else
+ {
+ FreeBlock(block);
+ }
+
+ if (no_lock == false)
+ {
+ UnlockQueue(c->ReceivedBlocks);
+ }
}
// Generate the interval to the next Keep-Alive packet
@@ -1012,10 +1021,9 @@ void SendKeepAlive(CONNECTION *c, TCPSOCK *ts)
}
// Transmission of block
-void ConnectionSend(CONNECTION *c)
+void ConnectionSend(CONNECTION *c, UINT64 now)
{
UINT i, num;
- UINT64 now;
UINT min_count;
UINT64 max_recv_tick;
TCPSOCK **tcpsocks;
@@ -1037,8 +1045,6 @@ void ConnectionSend(CONNECTION *c)
hub = s->Hub;
}
- now = Tick64();
-
// Protocol
if (c->Protocol == CONNECTION_TCP)
{
@@ -1048,6 +1054,8 @@ void ConnectionSend(CONNECTION *c)
TCPSOCK *ts_hp;
UINT num_available;
bool is_rudp = false;
+ UINT tcp_queue_size = 0;
+ int tcp_queue_size_diff = 0;
LockList(tcp->TcpSockList);
{
num = LIST_NUM(tcp->TcpSockList);
@@ -1143,8 +1151,16 @@ void ConnectionSend(CONNECTION *c)
}
}
}
+
+ tcp_queue_size += tcpsock->SendFifo->size;
}
+ tcp_queue_size_diff = ((int)tcp_queue_size) - ((int)c->LastTcpQueueSize);
+
+ CedarAddCurrentTcpQueueSize(c->Cedar, tcp_queue_size_diff);
+
+ c->LastTcpQueueSize = tcp_queue_size;
+
if (ts_hp == NULL)
{
ts_hp = ts;
@@ -1183,13 +1199,15 @@ void ConnectionSend(CONNECTION *c)
tss = ts;
}
// I reserve the data to send on the selected socket ts
- LockQueue(c->SendBlocks);
if (q->num_item != 0)
{
UINT num_data;
BLOCK *b;
+ UINT size_quota_v1 = MAX_SEND_SOCKET_QUEUE_SIZE / s->MaxConnection;
+ UINT size_quota_v2 = MIN_SEND_SOCKET_QUEUE_SIZE;
+ UINT size_quota = MAX(size_quota_v1, size_quota_v2);
- if (tss->SendFifo->size >= MAX((MAX_SEND_SOCKET_QUEUE_SIZE / s->MaxConnection), MIN_SEND_SOCKET_QUEUE_SIZE))
+ if (tss->SendFifo->size >= size_quota)
{
// The size of the socket send queue is exceeded
// Unable to send
@@ -1344,7 +1362,6 @@ void ConnectionSend(CONNECTION *c)
}
}
}
- UnlockQueue(c->SendBlocks);
}
}
@@ -1428,7 +1445,7 @@ SEND_START:
PROBE_STR("TcpSockSend All Completed");
}
// Updated the last communication date and time
- c->Session->LastCommTime = now;
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
goto SEND_START;
}
@@ -1477,56 +1494,46 @@ SEND_START:
// SecureNAT session
SNAT *snat = s->SecureNAT;
VH *v = snat->Nat->Virtual;
+ BLOCK *block;
+ UINT num_packet = 0;
- LockQueue(c->SendBlocks);
+ if (hub != NULL)
{
- BLOCK *block;
- UINT num_packet = 0;
-
- if (hub != NULL)
- {
- NatSetHubOption(v, hub->Option);
- }
+ NatSetHubOption(v, hub->Option);
+ }
- while (block = GetNext(c->SendBlocks))
- {
- num_packet++;
- c->CurrentSendQueueSize -= block->Size;
- VirtualPutPacket(v, block->Buf, block->Size);
- Free(block);
- }
+ while (block = GetNext(c->SendBlocks))
+ {
+ num_packet++;
+ c->CurrentSendQueueSize -= block->Size;
+ VirtualPutPacket(v, block->Buf, block->Size);
+ Free(block);
+ }
- if (num_packet != 0)
- {
- VirtualPutPacket(v, NULL, 0);
- }
+ if (num_packet != 0)
+ {
+ VirtualPutPacket(v, NULL, 0);
}
- UnlockQueue(c->SendBlocks);
}
else if (c->Protocol == CONNECTION_HUB_LAYER3)
{
// Layer-3 session
L3IF *f = s->L3If;
+ BLOCK *block;
+ UINT num_packet = 0;
- LockQueue(c->SendBlocks);
+ while (block = GetNext(c->SendBlocks))
{
- BLOCK *block;
- UINT num_packet = 0;
-
- while (block = GetNext(c->SendBlocks))
- {
- num_packet++;
- c->CurrentSendQueueSize -= block->Size;
- L3PutPacket(f, block->Buf, block->Size);
- Free(block);
- }
+ num_packet++;
+ c->CurrentSendQueueSize -= block->Size;
+ L3PutPacket(f, block->Buf, block->Size);
+ Free(block);
+ }
- if (num_packet != 0)
- {
- L3PutPacket(f, NULL, 0);
- }
+ if (num_packet != 0)
+ {
+ L3PutPacket(f, NULL, 0);
}
- UnlockQueue(c->SendBlocks);
}
else if (c->Protocol == CONNECTION_HUB_LINK_SERVER)
{
@@ -1535,30 +1542,35 @@ SEND_START:
if (k != NULL)
{
- LockQueue(c->SendBlocks);
+ UINT num_blocks = 0;
+ LockQueue(k->SendPacketQueue);
{
- UINT num_blocks = 0;
- LockQueue(k->SendPacketQueue);
+ BLOCK *block;
+
+ // Transfer the packet queue to the client thread
+ while (block = GetNext(c->SendBlocks))
{
- BLOCK *block;
+ c->CurrentSendQueueSize -= block->Size;
- // Transfer the packet queue to the client thread
- while (block = GetNext(c->SendBlocks))
+ if (k->SendPacketQueue->num_item >= MAX_STORED_QUEUE_NUM)
+ {
+ FreeBlock(block);
+ }
+ else
{
num_blocks++;
- c->CurrentSendQueueSize -= block->Size;
+ k->CurrentSendPacketQueueSize += block->Size;
InsertQueue(k->SendPacketQueue, block);
}
}
- UnlockQueue(k->SendPacketQueue);
+ }
+ UnlockQueue(k->SendPacketQueue);
- if (num_blocks != 0)
- {
- // Issue of cancellation
- Cancel(k->ClientSession->Cancel1);
- }
+ if (num_blocks != 0)
+ {
+ // Issue of cancellation
+ Cancel(k->ClientSession->Cancel1);
}
- UnlockQueue(c->SendBlocks);
}
}
else if (c->Protocol == CONNECTION_HUB_BRIDGE)
@@ -1570,54 +1582,50 @@ SEND_START:
{
if (b->Active)
{
- LockQueue(c->SendBlocks);
+ BLOCK *block;
+ UINT num_packet = c->SendBlocks->num_item; // Packet count
+
+ if (num_packet != 0)
{
- BLOCK *block;
- UINT num_packet = c->SendBlocks->num_item; // Packet count
+ // Packet data array
+ void **datas = MallocFast(sizeof(void *) * num_packet);
+ UINT *sizes = MallocFast(sizeof(UINT *) * num_packet);
+ UINT i;
- if (num_packet != 0)
+ i = 0;
+ while (block = GetNext(c->SendBlocks))
{
- // Packet data array
- void **datas = MallocFast(sizeof(void *) * num_packet);
- UINT *sizes = MallocFast(sizeof(UINT *) * num_packet);
- UINT i;
+ if (hub != NULL && hub->Option != NULL && hub->Option->DisableUdpFilterForLocalBridgeNic == false &&
+ b->Eth != NULL && IsDhcpPacketForSpecificMac(block->Buf, block->Size, b->Eth->MacAddress))
+ {
+ // DHCP Packet is filtered
+ datas[i] = NULL;
+ sizes[i] = 0;
- i = 0;
- while (block = GetNext(c->SendBlocks))
+ Free(block->Buf);
+ }
+ else
{
- if (hub != NULL && hub->Option != NULL && hub->Option->DisableUdpFilterForLocalBridgeNic == false &&
- b->Eth != NULL && IsDhcpPacketForSpecificMac(block->Buf, block->Size, b->Eth->MacAddress))
- {
- // DHCP Packet is filtered
- datas[i] = NULL;
- sizes[i] = 0;
+ datas[i] = block->Buf;
+ sizes[i] = block->Size;
- Free(block->Buf);
- }
- else
+ if (block->Size > 1514)
{
- datas[i] = block->Buf;
- sizes[i] = block->Size;
-
- if (block->Size > 1514)
- {
- NormalizeEthMtu(b, c, block->Size);
- }
+ NormalizeEthMtu(b, c, block->Size);
}
-
- c->CurrentSendQueueSize -= block->Size;
- Free(block);
- i++;
}
- // Write the packet
- EthPutPackets(b->Eth, num_packet, datas, sizes);
-
- Free(datas);
- Free(sizes);
+ c->CurrentSendQueueSize -= block->Size;
+ Free(block);
+ i++;
}
+
+ // Write the packet
+ EthPutPackets(b->Eth, num_packet, datas, sizes);
+
+ Free(datas);
+ Free(sizes);
}
- UnlockQueue(c->SendBlocks);
}
}
}
@@ -1632,10 +1640,10 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
TCPSOCK **tcpsocks;
UCHAR *buf;
UINT size;
- UINT64 now;
UINT time;
UINT num_delayed = 0;
bool no_spinlock_for_delay = false;
+ UINT64 now = Tick64();
HUB *hub = NULL;
// Validate arguments
if (c == NULL)
@@ -1657,8 +1665,6 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
no_spinlock_for_delay = hub->Option->NoSpinLockForPacketDelay;
}
- now = Tick64();
-
if (c->RecvBuf == NULL)
{
c->RecvBuf = Malloc(RECV_BUF_SIZE);
@@ -1671,6 +1677,8 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
// TCP
TCP *tcp = c->Tcp;
UINT next_delay_packet_diff = 0;
+ UINT current_recv_fifo_size = 0;
+ int recv_fifo_size_middle_update = 0;
// Disconnect if disconnection interval is specified
if (s->ServerMode == false)
@@ -1784,6 +1792,8 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
}
}
+ now = Tick64();
+
PROBE_STR("ConnectionReceive: Select 1");
if (s->UseUdpAcceleration && s->UdpAccel != NULL)
@@ -1799,6 +1809,7 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
while (true)
{
+ UINT current_packet_index = 0;
BLOCK *b = GetNext(s->UdpAccel->RecvBlockQueue);
if (b == NULL)
@@ -1813,8 +1824,27 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
}
else
{
- // Add the data block to queue
- InsertReveicedBlockToQueue(c, b);
+ if (CedarGetQueueBudgetBalance(c->Cedar) == 0)
+ {
+ FreeBlock(b);
+ }
+ else
+ {
+ // Add the data block to queue
+ InsertReveicedBlockToQueue(c, b, true);
+
+ if ((current_packet_index % 32) == 0)
+ {
+ UINT current_recv_block_num = c->ReceivedBlocks->num_item;
+ int diff = (int)current_recv_block_num - (int)c->LastRecvBlocksNum;
+
+ CedarAddQueueBudget(c->Cedar, diff);
+
+ c->LastRecvBlocksNum = current_recv_block_num;
+ }
+
+ current_packet_index++;
+ }
}
}
}
@@ -1845,6 +1875,7 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
// R-UDP bulk transfer data reception
if (t != NULL && IsTubeConnected(t))
{
+ UINT current_packet_index = 0;
while (true)
{
TUBEDATA *d = TubeRecvAsync(t);
@@ -1876,15 +1907,34 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
}
else
{
- // Add the data block to queue
- InsertReveicedBlockToQueue(c, block);
+ if (CedarGetQueueBudgetBalance(c->Cedar) == 0)
+ {
+ FreeBlock(block);
+ }
+ else
+ {
+ // Add the data block to queue
+ InsertReveicedBlockToQueue(c, block, true);
+
+ if ((current_packet_index % 32) == 0)
+ {
+ UINT current_recv_block_num = c->ReceivedBlocks->num_item;
+ int diff = (int)current_recv_block_num - (int)c->LastRecvBlocksNum;
+
+ CedarAddQueueBudget(c->Cedar, diff);
+
+ c->LastRecvBlocksNum = current_recv_block_num;
+ }
+
+ current_packet_index++;
+ }
}
FreeTubeData(d);
- ts->LastCommTime = now;
- ts->LastRecvTime = now;
- c->Session->LastCommTime = now;
+ UPDATE_LAST_COMM_TIME(ts->LastCommTime, now);
+ UPDATE_LAST_COMM_TIME(ts->LastRecvTime, now);
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
}
}
}
@@ -1893,6 +1943,8 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
if (c->IsInProc)
{
TUBEDATA *d;
+ UINT current_packet_index = 0;
+
// Socket for in-process connection
if (IsTubeConnected(sock->RecvTube) == false)
{
@@ -1920,17 +1972,38 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
}
else
{
- // Add the data block to queue
- InsertReveicedBlockToQueue(c, block);
+ if (CedarGetQueueBudgetBalance(c->Cedar) == 0)
+ {
+ FreeBlock(block);
+ }
+ else
+ {
+ // Add the data block to queue
+ InsertReveicedBlockToQueue(c, block, true);
+
+ if ((current_packet_index % 32) == 0)
+ {
+ UINT current_recv_block_num = c->ReceivedBlocks->num_item;
+ int diff = (int)current_recv_block_num - (int)c->LastRecvBlocksNum;
+
+ CedarAddQueueBudget(c->Cedar, diff);
+
+ c->LastRecvBlocksNum = current_recv_block_num;
+ }
+
+ current_packet_index++;
+ }
}
FreeTubeData(d);
}
- c->Session->LastCommTime = now;
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
}
else
{
+ UINT current_fifo_budget = 0;
+ UINT current_packet_index = 0;
// A normal socket (Not in-process)
if (ts->WantSize == 0)
{
@@ -1938,10 +2011,28 @@ void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2)
ts->WantSize = sizeof(UINT);
}
+ now = Tick64();
+
RECV_START:
+ current_fifo_budget = CedarGetFifoBudgetBalance(c->Cedar);
// Receive
- size = TcpSockRecv(s, ts, buf, RECV_BUF_SIZE);
-/*
+ if (ts->RecvFifo->size < current_fifo_budget)
+ {
+ UINT recv_buf_size = current_fifo_budget - ts->RecvFifo->size;
+
+ recv_buf_size = MIN(recv_buf_size, RECV_BUF_SIZE);
+
+ size = TcpSockRecv(s, ts, buf, recv_buf_size);
+ }
+ else
+ {
+ size = SOCK_LATER;
+
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
+ UPDATE_LAST_COMM_TIME(ts->LastCommTime, now);
+ }
+
+ /*
// Experiment
if (c->ServerMode)
{
@@ -1988,22 +2079,34 @@ DISCONNECT_THIS_TCP:
}
else
{
+ UINT budget_balance = CedarGetFifoBudgetBalance(c->Cedar);
+ UINT fifo_size_limit = budget_balance;
+
+ if (fifo_size_limit > MAX_BUFFERING_PACKET_SIZE)
+ {
+ fifo_size_limit = MAX_BUFFERING_PACKET_SIZE;
+ }
+
// Update the last communication time
- ts->LastCommTime = now;
- c->Session->LastCommTime = now;
- ts->LastRecvTime = now;
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
+ UPDATE_LAST_COMM_TIME(ts->LastRecvTime, now);
+
+ CedarAddFifoBudget(c->Cedar, (int)size);
+ recv_fifo_size_middle_update += (int)size;
// Write the received data into the FIFO
PROBE_DATA2("WriteRecvFifo", buf, size);
WriteRecvFifo(s, ts, buf, size);
// Stop receiving when the receive buffer is full
- if (ts->RecvFifo->size < MAX_SEND_SOCKET_QUEUE_SIZE)
+ if (ts->RecvFifo->size < fifo_size_limit)
{
goto RECV_START;
}
}
+ current_recv_fifo_size += FifoSize(ts->RecvFifo);
+
// process the data written to FIFO
while (ts->RecvFifo->size >= ts->WantSize)
{
@@ -2088,6 +2191,9 @@ DISCONNECT_THIS_TCP:
ReadFifo(ts->RecvFifo, NULL, ts->NextBlockSize);
block = NewBlock(data, ts->NextBlockSize, s->UseCompress ? -1 : 0);
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
+ UPDATE_LAST_COMM_TIME(ts->LastCommTime, now);
+
if (block->Size > MAX_PACKET_SIZE)
{
// Packet size exceeded
@@ -2095,8 +2201,27 @@ DISCONNECT_THIS_TCP:
}
else
{
- // Add the data block to queue
- InsertReveicedBlockToQueue(c, block);
+ if (CedarGetQueueBudgetBalance(c->Cedar) == 0)
+ {
+ FreeBlock(block);
+ }
+ else
+ {
+ // Add the data block to queue
+ InsertReveicedBlockToQueue(c, block, true);
+
+ if ((current_packet_index % 32) == 0)
+ {
+ UINT current_recv_block_num = c->ReceivedBlocks->num_item;
+ int diff = (int)current_recv_block_num - (int)c->LastRecvBlocksNum;
+
+ CedarAddQueueBudget(c->Cedar, diff);
+
+ c->LastRecvBlocksNum = current_recv_block_num;
+ }
+
+ current_packet_index++;
+ }
}
if (ts->CurrentPacketNum >= ts->NextBlockNum)
@@ -2127,6 +2252,9 @@ DISCONNECT_THIS_TCP:
ts->NextBlockSize = MIN(sz, MAX_KEEPALIVE_SIZE);
ReadFifo(ts->RecvFifo, NULL, sizeof(UINT));
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
+ UPDATE_LAST_COMM_TIME(ts->LastCommTime, now);
+
s->TotalRecvSize += sizeof(UINT);
s->TotalRecvSizeReal += sizeof(UINT);
@@ -2169,6 +2297,9 @@ DISCONNECT_THIS_TCP:
PROBE_DATA2("ReadFifo 4", NULL, 0);
ReadFifo(ts->RecvFifo, NULL, sz);
+ UPDATE_LAST_COMM_TIME(c->Session->LastCommTime, now);
+ UPDATE_LAST_COMM_TIME(ts->LastCommTime, now);
+
s->TotalRecvSize += sz;
s->TotalRecvSizeReal += sz;
@@ -2176,9 +2307,33 @@ DISCONNECT_THIS_TCP:
break;
}
}
+
+ ShrinkFifoMemory(ts->RecvFifo);
+ //printf("Fifo: %u\n", ts->RecvFifo->memsize);
}
}
+ if (true)
+ {
+ int diff;
+
+ diff = (int)current_recv_fifo_size - (int)c->LastRecvFifoTotalSize;
+
+ CedarAddFifoBudget(c->Cedar, (diff - recv_fifo_size_middle_update));
+
+ c->LastRecvFifoTotalSize = current_recv_fifo_size;
+ }
+
+ if (true)
+ {
+ UINT current_recv_block_num = c->ReceivedBlocks->num_item;
+ int diff = (int)current_recv_block_num - (int)c->LastRecvBlocksNum;
+
+ CedarAddQueueBudget(c->Cedar, diff);
+
+ c->LastRecvBlocksNum = current_recv_block_num;
+ }
+
Free(tcpsocks);
}
else if (c->Protocol == CONNECTION_UDP)
@@ -2322,7 +2477,7 @@ DISCONNECT_THIS_TCP:
else
{
// Add the data block to queue
- InsertReveicedBlockToQueue(c, block);
+ InsertReveicedBlockToQueue(c, block, true);
}
num++;
if (num >= MAX_SEND_SOCKET_QUEUE_NUM)
@@ -2403,7 +2558,7 @@ DISCONNECT_THIS_TCP:
}
else
{
- InsertReveicedBlockToQueue(c, block);
+ InsertReveicedBlockToQueue(c, block, true);
}
num++;
@@ -2443,7 +2598,9 @@ DISCONNECT_THIS_TCP:
if ((b->LastNumDeviceCheck + BRIDGE_NUM_DEVICE_CHECK_SPAN) <= Tick64())
{
+#ifdef OS_WIN32
check_device_num = true;
+#endif // OS_WIN32
b->LastNumDeviceCheck = Tick64();
}
@@ -2518,7 +2675,7 @@ DISCONNECT_THIS_TCP:
}
else
{
- InsertReveicedBlockToQueue(c, block);
+ InsertReveicedBlockToQueue(c, block, true);
}
num++;
if (num >= MAX_SEND_SOCKET_QUEUE_NUM)
@@ -2641,6 +2798,8 @@ BLOCK *NewBlock(void *data, UINT size, int compress)
b = MallocFast(sizeof(BLOCK));
+ b->IsFlooding = false;
+
b->PriorityQoS = b->Ttl = b->Param1 = 0;
if (compress == 0)
@@ -2891,7 +3050,7 @@ void ConnectionAccept(CONNECTION *c)
SERVER *server;
UCHAR *peek_buf = NULL;
UINT peek_buf_size = 1500;
- char sni[128] = {0};
+ char sni[256] = {0};
bool native1 = false;
bool native2 = false;
bool native3 = false;
@@ -3191,6 +3350,32 @@ void CleanupConnection(CONNECTION *c)
return;
}
+ if (c->LastRecvFifoTotalSize != 0)
+ {
+ CedarAddFifoBudget(c->Cedar, -((int)c->LastRecvFifoTotalSize));
+ c->LastRecvFifoTotalSize = 0;
+ }
+
+ if (c->LastRecvBlocksNum != 0)
+ {
+ CedarAddQueueBudget(c->Cedar, -((int)c->LastRecvBlocksNum));
+ c->LastRecvBlocksNum = 0;
+ }
+
+ if (c->LastTcpQueueSize != 0)
+ {
+ int diff = -((int)c->LastTcpQueueSize);
+ CedarAddCurrentTcpQueueSize(c->Cedar, diff);
+ c->LastTcpQueueSize = 0;
+ }
+
+ if (c->LastPacketQueueSize != 0)
+ {
+ int diff = -((int)c->LastPacketQueueSize);
+ CedarAddCurrentTcpQueueSize(c->Cedar, diff);
+ c->LastPacketQueueSize = 0;
+ }
+
DeleteLock(c->lock);
ReleaseCedar(c->Cedar);
diff --git a/src/Cedar/Connection.h b/src/Cedar/Connection.h
index c6d59dc2..44d52c07 100644
--- a/src/Cedar/Connection.h
+++ b/src/Cedar/Connection.h
@@ -119,6 +119,8 @@
#define KEEP_ALIVE_STRING "Internet Connection Keep Alive Packet"
+#define UPDATE_LAST_COMM_TIME(v, n) {if ((v) <= (n)) { v = (n); } }
+
// KEEP CONNECT structure
struct KEEP
{
@@ -258,6 +260,7 @@ struct BLOCK
bool PriorityQoS; // Priority packet for VoIP / QoS function
UINT Ttl; // TTL value (Used only in ICMP NAT of Virtual.c)
UINT Param1; // Parameter 1
+ bool IsFlooding; // Is flooding packet
};
// Connection structure
@@ -316,6 +319,10 @@ struct CONNECTION
bool WasSstp; // Processed the SSTP
bool WasDatProxy; // DAT proxy processed
UCHAR CToken_Hash[SHA1_SIZE]; // CTOKEN_HASH
+ UINT LastTcpQueueSize; // The last queue size of TCP sockets
+ UINT LastPacketQueueSize; // The last queue size of packets
+ UINT LastRecvFifoTotalSize; // The last RecvFifo total size
+ UINT LastRecvBlocksNum; // The last ReceivedBlocks num
};
@@ -334,7 +341,7 @@ void StartTunnelingMode(CONNECTION *c);
void EndTunnelingMode(CONNECTION *c);
void DisconnectTcpSockets(CONNECTION *c);
void ConnectionReceive(CONNECTION *c, CANCEL *c1, CANCEL *c2);
-void ConnectionSend(CONNECTION *c);
+void ConnectionSend(CONNECTION *c, UINT64 now);
TCPSOCK *NewTcpSock(SOCK *s);
void FreeTcpSock(TCPSOCK *ts);
BLOCK *NewBlock(void *data, UINT size, int compress);
@@ -345,7 +352,7 @@ void SendKeepAlive(CONNECTION *c, TCPSOCK *ts);
void DisconnectUDPSockets(CONNECTION *c);
void PutUDPPacketData(CONNECTION *c, void *data, UINT size);
void SendDataWithUDP(SOCK *s, CONNECTION *c);
-void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block);
+void InsertReveicedBlockToQueue(CONNECTION *c, BLOCK *block, bool no_lock);
void InitTcpSockRc4Key(TCPSOCK *ts, bool server_mode);
UINT TcpSockRecv(SESSION *s, TCPSOCK *ts, void *data, UINT size);
UINT TcpSockSend(SESSION *s, TCPSOCK *ts, void *data, UINT size);
diff --git a/src/Cedar/DDNS.c b/src/Cedar/DDNS.c
index 68281444..d376be10 100644
--- a/src/Cedar/DDNS.c
+++ b/src/Cedar/DDNS.c
@@ -645,7 +645,7 @@ UINT DCRegister(DDNS_CLIENT *c, bool ipv6, DDNS_REGISTER_PARAM *p, char *replace
cert_hash = StrToBin(DDNS_CERT_HASH);
Format(url2, sizeof(url2), "%s?v=%I64u", url, Rand64());
- Format(url3, sizeof(url3), url2, key_hash_str[0], key_hash_str[1], key_hash_str[2], key_hash_str[3]);
+ Format(url3, sizeof(url3), url2, key_hash_str[2], key_hash_str[3]);
if (use_https == false)
{
diff --git a/src/Cedar/DDNS.h b/src/Cedar/DDNS.h
index 008ac213..14b0929d 100644
--- a/src/Cedar/DDNS.h
+++ b/src/Cedar/DDNS.h
@@ -118,8 +118,8 @@
#define DDNS_CERT_HASH "EFAC5FA0CDD14E0F864EED58A73C35D7E33B62F3"
// Destination URL
-#define DDNS_URL_V4_GLOBAL "https://x%c.x%c.x%c.x%c.servers.ddns.softether-network.net/ddns/ddns.aspx"
-#define DDNS_URL_V6_GLOBAL "https://x%c.x%c.x%c.x%c.servers-v6.ddns.softether-network.net/ddns/ddns.aspx"
+#define DDNS_URL_V4_GLOBAL "https://x%c.x%c.servers.ddns.softether-network.net/ddns/ddns.aspx"
+#define DDNS_URL_V6_GLOBAL "https://x%c.x%c.servers-v6.ddns.softether-network.net/ddns/ddns.aspx"
#define DDNS_URL2_V4_GLOBAL "http://get-my-ip.ddns.softether-network.net/ddns/getmyip.ashx"
#define DDNS_URL2_V6_GLOBAL "http://get-my-ip-v6.ddns.softether-network.net/ddns/getmyip.ashx"
@@ -132,8 +132,8 @@
#define DDNS_REPLACE_URL2_FOR_WEST_NGN "http://senet.p-ns.flets-west.jp/ddns/getmyip.ashx"
// For China: Free version
-#define DDNS_URL_V4_ALT "https://x%c.x%c.x%c.x%c.servers.ddns.uxcom.jp/ddns/ddns.aspx"
-#define DDNS_URL_V6_ALT "https://x%c.x%c.x%c.x%c.servers-v6.ddns.uxcom.jp/ddns/ddns.aspx"
+#define DDNS_URL_V4_ALT "https://x%c.x%c.servers.ddns.uxcom.jp/ddns/ddns.aspx"
+#define DDNS_URL_V6_ALT "https://x%c.x%c.servers-v6.ddns.uxcom.jp/ddns/ddns.aspx"
#define DDNS_URL2_V4_ALT "http://get-my-ip.ddns.uxcom.jp/ddns/getmyip.ashx"
#define DDNS_URL2_V6_ALT "http://get-my-ip-v6.ddns.uxcom.jp/ddns/getmyip.ashx"
diff --git a/src/Cedar/Hub.c b/src/Cedar/Hub.c
index b3a2f4f4..2ffd1528 100644
--- a/src/Cedar/Hub.c
+++ b/src/Cedar/Hub.c
@@ -596,6 +596,7 @@ void DataToHubOptionStruct(HUB_OPTION *o, RPC_ADMIN_OPTION *ao)
GetHubAdminOptionDataAndSet(ao, "DropBroadcastsInPrivacyFilterMode", &o->DropBroadcastsInPrivacyFilterMode);
GetHubAdminOptionDataAndSet(ao, "DropArpInPrivacyFilterMode", &o->DropArpInPrivacyFilterMode);
GetHubAdminOptionDataAndSet(ao, "SuppressClientUpdateNotification", &o->SuppressClientUpdateNotification);
+ GetHubAdminOptionDataAndSet(ao, "FloodingSendQueueBufferQuota", &o->FloodingSendQueueBufferQuota);
}
// Convert the contents of the HUB_OPTION to data
@@ -660,6 +661,7 @@ void HubOptionStructToData(RPC_ADMIN_OPTION *ao, HUB_OPTION *o, char *hub_name)
Add(aol, NewAdminOption("DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode));
Add(aol, NewAdminOption("DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode));
Add(aol, NewAdminOption("SuppressClientUpdateNotification", o->SuppressClientUpdateNotification));
+ Add(aol, NewAdminOption("FloodingSendQueueBufferQuota", o->FloodingSendQueueBufferQuota));
Zero(ao, sizeof(RPC_ADMIN_OPTION));
@@ -2048,6 +2050,7 @@ bool IsPacketMaskedByAccessList(SESSION *s, PKT *p, ACCESS *a, UINT64 dest_usern
IPV6_HEADER *ip6 = NULL;
bool is_ipv4_packet = false;
bool is_ipv6_packet = false;
+ bool is_arp_packet = false;
// Validate arguments
if (s == NULL || p == NULL || a == NULL)
{
@@ -2180,6 +2183,11 @@ bool IsPacketMaskedByAccessList(SESSION *s, PKT *p, ACCESS *a, UINT64 dest_usern
is_ipv6_packet = true;
}
+ if (p->TypeL3 == L3_ARPV4)
+ {
+ is_arp_packet = true;
+ }
+
if (is_ipv4_packet)
{
ip = p->L3.IPv4Header;
@@ -2346,7 +2354,7 @@ bool IsPacketMaskedByAccessList(SESSION *s, PKT *p, ACCESS *a, UINT64 dest_usern
}
// Don't match the packet of non-IPv4 and non-IPv6
- if (is_ipv4_packet == false && is_ipv6_packet==false)
+ if (is_arp_packet)
{
if (s->Hub != NULL && s->Hub->Option != NULL && s->Hub->Option->ApplyIPv4AccessListOnArpPacket)
{
@@ -2745,7 +2753,7 @@ void ForceRedirectToUrl(HUB *hub, SESSION *src_session, PKT *p, char *redirect_u
// Reply packet
StorePacketToHubPa((HUB_PA *)src_session->PacketAdapter->Param,
- NULL, b->Buf, b->Size, NULL);
+ NULL, b->Buf, b->Size, NULL, false, false);
// Release the memory
Free(tcp_data);
@@ -3432,13 +3440,16 @@ void HubPaFree(SESSION *s)
}
// Erase MAC address table entries that is associated with this session
- LockList(hub->MacTable);
+ LockHashList(hub->MacHashTable);
{
- UINT i, num = LIST_NUM(hub->MacTable);
+ UINT i, num;
+ MAC_TABLE_ENTRY **pp;
LIST *o = NewListFast(NULL);
+
+ pp = (MAC_TABLE_ENTRY **)HashListToArray(hub->MacHashTable, &num);
for (i = 0;i < num;i++)
{
- MAC_TABLE_ENTRY *e = (MAC_TABLE_ENTRY *)LIST_DATA(hub->MacTable, i);
+ MAC_TABLE_ENTRY *e = (MAC_TABLE_ENTRY *)pp[i];
if (e->Session == s)
{
Add(o, e);
@@ -3447,10 +3458,11 @@ void HubPaFree(SESSION *s)
for (i = 0;i < LIST_NUM(o);i++)
{
MAC_TABLE_ENTRY *e = (MAC_TABLE_ENTRY *)LIST_DATA(o, i);
- Delete(hub->MacTable, e);
+ DeleteHash(hub->MacHashTable, e);
Free(e);
}
ReleaseList(o);
+ Free(pp);
}
{
UINT i, num = LIST_NUM(hub->IpTable);
@@ -3471,7 +3483,7 @@ void HubPaFree(SESSION *s)
}
ReleaseList(o);
}
- UnlockList(hub->MacTable);
+ UnlockHashList(hub->MacHashTable);
// Release the STORM list
LockList(pa->StormList);
@@ -3496,6 +3508,11 @@ void HubPaFree(SESSION *s)
while (b = GetNext(pa->PacketQueue))
{
// Release the block
+ if (b->IsFlooding)
+ {
+ CedarAddCurrentTcpQueueSize(s->Cedar, -((int)b->Size));
+ }
+
FreeBlock(b);
}
}
@@ -3538,6 +3555,11 @@ UINT HubPaGetNextPacket(SESSION *s, void **data)
}
else
{
+ if (block->IsFlooding)
+ {
+ CedarAddCurrentTcpQueueSize(s->Cedar, -((int)block->Size));
+ }
+
// Found
*data = block->Buf;
ret = block->Size;
@@ -3944,11 +3966,11 @@ void StorePacket(HUB *hub, SESSION *s, PKT *packet)
bool broadcast_mode;
HUB_PA *dest_pa;
SESSION *dest_session;
- TRAFFIC traffic;
UINT64 now = Tick64();
bool no_heavy = false;
bool drop_broadcast_packet_privacy = false;
bool drop_arp_packet_privacy = false;
+ UINT tcp_queue_quota = 0;
// Validate arguments
if (hub == NULL || packet == NULL)
{
@@ -3971,10 +3993,11 @@ void StorePacket(HUB *hub, SESSION *s, PKT *packet)
no_heavy = hub->Option->DoNotSaveHeavySecurityLogs;
drop_broadcast_packet_privacy = hub->Option->DropBroadcastsInPrivacyFilterMode;
drop_arp_packet_privacy = hub->Option->DropArpInPrivacyFilterMode;
+ tcp_queue_quota = hub->Option->FloodingSendQueueBufferQuota;
}
// Lock the entire MAC address table
- LockList(hub->MacTable);
+ LockHashList(hub->MacHashTable);
{
// Filtering
if (s != NULL && (packet->DelayedForwardTick == 0 && StorePacketFilter(s, packet) == false))
@@ -4035,7 +4058,7 @@ DISCARD_PACKET:
if (forward_now)
{
- if (Cmp(packet->MacAddressSrc, hub->HubMacAddr, 6) == 0)
+ if (memcmp(packet->MacAddressSrc, hub->HubMacAddr, 6) == 0)
{
if (s != NULL)
{
@@ -4043,7 +4066,7 @@ DISCARD_PACKET:
goto DISCARD_PACKET;
}
}
- if (s != NULL && (Cmp(packet->MacAddressSrc, hub->HubMacAddr, 6) != 0))
+ if (s != NULL && (memcmp(packet->MacAddressSrc, hub->HubMacAddr, 6) != 0))
{
// Check whether the source MAC address is registered in the table
Copy(t.MacAddress, packet->MacAddressSrc, 6);
@@ -4055,29 +4078,40 @@ DISCARD_PACKET:
{
t.VlanId = 0;
}
- entry = Search(hub->MacTable, &t);
+ entry = SearchHash(hub->MacHashTable, &t);
if (entry == NULL)
{
- // Remove old entries
- DeleteExpiredMacTableEntry(hub->MacTable);
+ if (hub->LastFlushTick == 0 || (hub->LastFlushTick + (UINT64)OLD_MAC_ADDRESS_ENTRY_FLUSH_INTERVAL) < now)
+ {
+ hub->LastFlushTick = now;
+
+ // Remove old entries
+ DeleteExpiredMacTableEntry(hub->MacHashTable);
+ }
// Register since it is not registered
if ((s->Policy->MaxMac != 0 || s->Policy->NoBridge) && (s->IsOpenVPNL3Session == false))
{
UINT i, num_mac_for_me = 0;
UINT limited_count;
+ MAC_TABLE_ENTRY **pp;
+ UINT num_pp;
+
+ pp = (MAC_TABLE_ENTRY **)HashListToArray(hub->MacHashTable, &num_pp);
// Examine a number of MAC addresses that are registered in this current session
- for (i = 0;i < LIST_NUM(hub->MacTable);i++)
+ for (i = 0;i < num_pp;i++)
{
- MAC_TABLE_ENTRY *e = LIST_DATA(hub->MacTable, i);
+ MAC_TABLE_ENTRY *e = pp[i];
if (e->Session == s)
{
num_mac_for_me++;
}
}
+ Free(pp);
+
limited_count = 0xffffffff;
if (s->Policy->NoBridge)
{
@@ -4117,27 +4151,10 @@ DISCARD_PACKET:
}
}
- if (LIST_NUM(hub->MacTable) >= MAX_MAC_TABLES)
+ if (HASH_LIST_NUM(hub->MacHashTable) >= MAX_MAC_TABLES)
{
- // Delete the oldest entry because the MAC table database is
- // exceeded the maximum number of entries
- UINT i;
- UINT64 old_time = 0xffffffffffffffffULL;
- MAC_TABLE_ENTRY *old_entry = NULL;
- for (i = 0;i < LIST_NUM(hub->MacTable);i++)
- {
- MAC_TABLE_ENTRY *e = LIST_DATA(hub->MacTable, i);
- if (e->UpdatedTime <= old_time)
- {
- old_time = e->UpdatedTime;
- old_entry = e;
- }
- }
- if (old_entry != NULL)
- {
- Delete(hub->MacTable, old_entry);
- Free(old_entry);
- }
+ // Number of MAC addresses exceeded, discard the packet
+ goto DISCARD_PACKET;
}
entry = ZeroMalloc(sizeof(MAC_TABLE_ENTRY));
@@ -4154,7 +4171,7 @@ DISCARD_PACKET:
entry->Session = s;
entry->UpdatedTime = entry->CreatedTime = now;
- Insert(hub->MacTable, entry);
+ AddHash(hub->MacHashTable, entry);
if (hub->Option->NoMacAddressLog == false)
{
@@ -4163,19 +4180,16 @@ DISCARD_PACKET:
if (s != NULL)
{
- MacToStr(mac_address, sizeof(mac_address), packet->MacAddressSrc);
-// Debug("Register MAC Address %s to Session %X.\n", mac_address, s);
-
- if (packet->VlanId == 0)
+ if (no_heavy == false)
{
- if (no_heavy == false)
+ MacToStr(mac_address, sizeof(mac_address), packet->MacAddressSrc);
+ // Debug("Register MAC Address %s to Session %X.\n", mac_address, s);
+
+ if (packet->VlanId == 0)
{
HLog(hub, "LH_MAC_REGIST", s->Name, mac_address);
}
- }
- else
- {
- if (no_heavy == false)
+ else
{
HLog(hub, "LH_MAC_REGIST_VLAN", s->Name, mac_address, packet->VlanId);
}
@@ -4211,7 +4225,7 @@ DISCARD_PACKET:
}
// It's already registered and it's in another session
- if (check_mac && (Cmp(packet->MacAddressSrc, hub->HubMacAddr, 6) != 0) &&
+ if (check_mac && (memcmp(packet->MacAddressSrc, hub->HubMacAddr, 6) != 0) &&
((entry->UpdatedTime + MAC_TABLE_EXCLUSIVE_TIME) >= now))
{
UCHAR *mac = packet->MacAddressSrc;
@@ -4228,7 +4242,7 @@ DISCARD_PACKET:
if ((s->LastDLinkSTPPacketSendTick != 0) &&
(tick_diff < 750ULL) &&
- (Cmp(hash, s->LastDLinkSTPPacketDataHash, MD5_SIZE) == 0))
+ (memcmp(hash, s->LastDLinkSTPPacketDataHash, MD5_SIZE) == 0))
{
// Discard if the same packet sent before 750ms ago
Debug("D-Link Discard %u\n", (UINT)tick_diff);
@@ -4271,18 +4285,15 @@ UPDATE_FDB:
if (s != NULL)
{
- MacToStr(mac_address, sizeof(mac_address), packet->MacHeader->SrcAddress);
- Debug("Register MAC Address %s to Session %X.\n", mac_address, s);
- if (packet->VlanId == 0)
+ if (no_heavy == false)
{
- if (no_heavy == false)
+ MacToStr(mac_address, sizeof(mac_address), packet->MacHeader->SrcAddress);
+ Debug("Register MAC Address %s to Session %X.\n", mac_address, s);
+ if (packet->VlanId == 0)
{
HLog(hub, "LH_MAC_REGIST", s->Name, mac_address);
}
- }
- else
- {
- if (no_heavy == false)
+ else
{
HLog(hub, "LH_MAC_REGIST_VLAN", s->Name, mac_address, packet->VlanId);
}
@@ -4315,7 +4326,7 @@ UPDATE_FDB:
{
t.VlanId = 0;
}
- entry = Search(hub->MacTable, &t);
+ entry = SearchHash(hub->MacHashTable, &t);
if (entry == NULL)
{
@@ -4736,30 +4747,6 @@ UPDATE_FDB:
}
}
- // Adding traffic
- Zero(&traffic, sizeof(traffic));
- if (packet->BroadcastPacket)
- {
- // Broadcast
- traffic.Send.BroadcastBytes = packet->PacketSize;
- traffic.Send.BroadcastCount = 1;
- }
- else
- {
- // Unicast
- traffic.Send.UnicastBytes = packet->PacketSize;
- traffic.Send.UnicastCount = 1;
- }
-
- if (s != NULL)
- {
- AddTrafficForSession(s, &traffic);
- }
-
- // Invert the Recv and Send of traffic information
- Copy(&traffic.Recv, &traffic.Send, sizeof(TRAFFIC_ENTRY));
- Zero(&traffic.Send, sizeof(TRAFFIC_ENTRY));
-
// Broadcast this packet to the monitor port of the HUB
if (hub->MonitorList->num_item != 0)
{
@@ -4778,7 +4765,7 @@ UPDATE_FDB:
data = MallocFast(size);
Copy(data, packet->PacketData, size);
StorePacketToHubPa((HUB_PA *)monitor_session->PacketAdapter->Param,
- s, data, size, packet);
+ s, data, size, packet, false, false);
}
}
}
@@ -4787,6 +4774,7 @@ UPDATE_FDB:
if (broadcast_mode == false)
{
+ // Unicast packet
if (dest_pa != NULL)
{
if (dest_session->Policy->NoIPv6DefaultRouterInRA ||
@@ -4894,8 +4882,8 @@ UPDATE_FDB:
if (s != NULL)
{
- if (Cmp(packet->MacAddressSrc, s->Hub->HubMacAddr, 6) == 0 ||
- Cmp(packet->MacAddressDest, s->Hub->HubMacAddr, 6) == 0)
+ if (memcmp(packet->MacAddressSrc, s->Hub->HubMacAddr, 6) == 0 ||
+ memcmp(packet->MacAddressDest, s->Hub->HubMacAddr, 6) == 0)
{
goto DISCARD_UNICAST_PACKET;
}
@@ -4912,10 +4900,7 @@ UPDATE_FDB:
}
// Store to the destination HUB_PA
- StorePacketToHubPa(dest_pa, s, packet->PacketData, packet->PacketSize, packet);
-
- // Adding traffic
- AddTrafficForSession(dest_session, &traffic);
+ StorePacketToHubPa(dest_pa, s, packet->PacketData, packet->PacketSize, packet, false, false);
}
else
{
@@ -4925,6 +4910,9 @@ DISCARD_UNICAST_PACKET:
}
else
{
+ // Flooding as a broadcast packet
+ UINT current_tcp_queue_size = 0;
+
// Take a packet log
if (s != NULL)
{
@@ -4954,6 +4942,28 @@ DISCARD_UNICAST_PACKET:
discard = true;
}
+ if (tcp_queue_quota != 0)
+ {
+ current_tcp_queue_size = CedarGetCurrentTcpQueueSize(hub->Cedar);
+
+ if (current_tcp_queue_size >= tcp_queue_quota)
+ {
+ // Quota exceeded. Discard the packet for normal session.
+ if (dest_session->Connection != NULL &&
+ dest_session->Connection->Protocol == CONNECTION_TCP)
+ {
+ discard = true;
+ }
+
+ if (dest_session->LinkModeServer)
+ {
+ LINK *k = dest_session->Link;
+
+ discard = true;
+ }
+ }
+ }
+
if (dest_session->VLanId != 0 && packet->TypeL3 == L3_TAGVLAN &&
packet->VlanId != dest_session->VLanId)
{
@@ -5076,8 +5086,8 @@ DISCARD_UNICAST_PACKET:
if (s != NULL)
{
- if (Cmp(packet->MacAddressSrc, s->Hub->HubMacAddr, 6) == 0 ||
- Cmp(packet->MacAddressDest, s->Hub->HubMacAddr, 6) == 0)
+ if (memcmp(packet->MacAddressSrc, s->Hub->HubMacAddr, 6) == 0 ||
+ memcmp(packet->MacAddressDest, s->Hub->HubMacAddr, 6) == 0)
{
discard = true;
}
@@ -5085,24 +5095,25 @@ DISCARD_UNICAST_PACKET:
if (discard == false && dest_pa != NULL)
{
- // Store in session other than its own
- data = MallocFast(packet->PacketSize);
- Copy(data, packet->PacketData, packet->PacketSize);
- size = packet->PacketSize;
-
- if (delete_default_router_in_ra)
+ if (s == NULL ||
+ ApplyAccessListToForwardPacket(s->Hub, s, dest_pa->Session, packet))
{
- PKT *pkt2 = ParsePacket(data, size);
+ // Store in session other than its own
+ data = MallocFast(packet->PacketSize);
+ Copy(data, packet->PacketData, packet->PacketSize);
+ size = packet->PacketSize;
- DeleteIPv6DefaultRouterInRA(pkt2);
+ if (delete_default_router_in_ra)
+ {
+ PKT *pkt2 = ParsePacket(data, size);
- FreePacket(pkt2);
- }
+ DeleteIPv6DefaultRouterInRA(pkt2);
- StorePacketToHubPa(dest_pa, s, data, size, packet);
+ FreePacket(pkt2);
+ }
- // Adding traffic
- AddTrafficForSession(dest_session, &traffic);
+ StorePacketToHubPa(dest_pa, s, data, size, packet, true, true);
+ }
}
}
}
@@ -5116,7 +5127,7 @@ DISCARD_BROADCAST_PACKET:
}
}
}
- UnlockList(hub->MacTable);
+ UnlockHashList(hub->MacHashTable);
}
// Examine the maximum number of logging target packets per minute
@@ -5278,7 +5289,7 @@ STORM *SearchStormList(HUB_PA *pa, UCHAR *mac_address, IP *src_ip, IP *dest_ip,
}
// Store the packet to destination HUB_PA
-void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet)
+void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet, bool is_flooding, bool no_check_acl)
{
BLOCK *b;
// Validate arguments
@@ -5293,13 +5304,16 @@ void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *
return;
}
- if (src != NULL)
+ if (no_check_acl == false)
{
- // Apply the access list for forwarding
- if (ApplyAccessListToForwardPacket(src->Hub, src, dest->Session, packet) == false)
+ if (src != NULL)
{
- Free(data);
- return;
+ // Apply the access list for forwarding
+ if (ApplyAccessListToForwardPacket(src->Hub, src, dest->Session, packet) == false)
+ {
+ Free(data);
+ return;
+ }
}
}
@@ -5400,11 +5414,19 @@ void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *
LockQueue(dest->PacketQueue);
{
// Measure the length of queue
- if ((dest->PacketQueue->num_item < MAX_STORED_QUEUE_NUM) ||
- (((UCHAR *)data)[12] == 'S' && ((UCHAR *)data)[13] == 'E'))
+ if (dest->PacketQueue->num_item < MAX_STORED_QUEUE_NUM)
{
// Store
InsertQueue(dest->PacketQueue, b);
+
+ if (is_flooding)
+ {
+ if (src != NULL)
+ {
+ b->IsFlooding = true;
+ CedarAddCurrentTcpQueueSize(src->Cedar, b->Size);
+ }
+ }
}
else
{
@@ -5731,7 +5753,7 @@ bool StorePacketFilterByPolicy(SESSION *s, PKT *p)
MAC_TABLE_ENTRY *mac_table, mt;
mt.VlanId = 0;
Copy(&mt.MacAddress, &h->ClientMacAddress, 6);
- mac_table = Search(hub->MacTable, &mt);
+ mac_table = SearchHash(hub->MacHashTable, &mt);
if (mac_table != NULL)
{
@@ -5803,21 +5825,25 @@ UPDATE_DHCP_ALLOC_ENTRY:
}
// Delete the expired MAC table entries
-void DeleteExpiredMacTableEntry(LIST *o)
+void DeleteExpiredMacTableEntry(HASH_LIST *h)
{
LIST *o2;
UINT i;
+ MAC_TABLE_ENTRY **pp;
+ UINT num;
// Validate arguments
- if (o == NULL)
+ if (h == NULL)
{
return;
}
o2 = NewListFast(NULL);
- for (i = 0;i < LIST_NUM(o);i++)
+ pp = (MAC_TABLE_ENTRY **)HashListToArray(h, &num);
+
+ for (i = 0;i < num;i++)
{
- MAC_TABLE_ENTRY *e = LIST_DATA(o, i);
+ MAC_TABLE_ENTRY *e = pp[i];
if ((e->UpdatedTime + (UINT64)MAC_TABLE_EXPIRE_TIME) <= Tick64())
{
Add(o2, e);
@@ -5827,11 +5853,13 @@ void DeleteExpiredMacTableEntry(LIST *o)
for (i = 0;i < LIST_NUM(o2);i++)
{
MAC_TABLE_ENTRY *e = LIST_DATA(o2, i);
- Delete(o, e);
+ DeleteHash(h, e);
Free(e);
}
ReleaseList(o2);
+
+ Free(pp);
}
// Delete the expired IP table entries
@@ -6633,7 +6661,7 @@ void CleanupHub(HUB *h)
DeleteLock(h->lock_online);
Free(h->Name);
ReleaseList(h->SessionList);
- ReleaseList(h->MacTable);
+ ReleaseHashList(h->MacHashTable);
ReleaseList(h->IpTable);
ReleaseList(h->MonitorList);
ReleaseList(h->LinkList);
@@ -6694,6 +6722,24 @@ int CompareIpTable(void *p1, void *p2)
return CmpIpAddr(&e1->Ip, &e2->Ip);
}
+// Get hash of MAC table entry
+UINT GetHashOfMacTable(void *p)
+{
+ UINT v;
+ MAC_TABLE_ENTRY *e = p;
+
+ if (e == NULL)
+ {
+ return 0;
+ }
+
+ v = e->MacAddress[0] + e->MacAddress[1] + e->MacAddress[2] +
+ e->MacAddress[3] + e->MacAddress[4] + e->MacAddress[5] +
+ e->VlanId;
+
+ return v;
+}
+
// Comparison function of the MAC table entries
int CompareMacTable(void *p1, void *p2)
{
@@ -6709,7 +6755,7 @@ int CompareMacTable(void *p1, void *p2)
{
return 0;
}
- r = Cmp(e1->MacAddress, e2->MacAddress, 6);
+ r = memcmp(e1->MacAddress, e2->MacAddress, 6);
if (r != 0)
{
return r;
@@ -6962,7 +7008,7 @@ HUB *NewHub(CEDAR *cedar, char *HubName, HUB_OPTION *option)
h->NumSessions = NewCounter();
h->NumSessionsClient = NewCounter();
h->NumSessionsBridge = NewCounter();
- h->MacTable = NewList(CompareMacTable);
+ h->MacHashTable = NewHashList(GetHashOfMacTable, CompareMacTable, 8, false);
h->IpTable = NewList(CompareIpTable);
h->MonitorList = NewList(NULL);
h->LinkList = NewList(NULL);
diff --git a/src/Cedar/Hub.h b/src/Cedar/Hub.h
index d3ce0771..d13d216c 100644
--- a/src/Cedar/Hub.h
+++ b/src/Cedar/Hub.h
@@ -128,6 +128,11 @@
// <INFO> tags of the URL in the access list
#define ACCESS_LIST_URL_INFO_TAG "<INFO>"
+// Old MAC address entry flush interval
+#define OLD_MAC_ADDRESS_ENTRY_FLUSH_INTERVAL 1000
+
+// Default flooding queue length
+#define DEFAULT_FLOODING_QUEUE_LENGTH (32 * 1024 * 1024)
// SoftEther link control packet
struct SE_LINK
@@ -269,6 +274,7 @@ struct HUB_OPTION
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
bool SuppressClientUpdateNotification; // Suppress the update notification function on the VPN Client
+ UINT FloodingSendQueueBufferQuota; // The global quota of send queues of flooding packets
};
// MAC table entry
@@ -436,7 +442,7 @@ struct HUB
COUNTER *NumSessionsClient; // The current number of sessions (client)
COUNTER *NumSessionsBridge; // The current number of sessions (bridge)
HUB_OPTION *Option; // HUB options
- LIST *MacTable; // MAC address table
+ HASH_LIST *MacHashTable; // MAC address hash table
LIST *IpTable; // IP address table
LIST *MonitorList; // Monitor port session list
LIST *LinkList; // Linked list
@@ -480,6 +486,8 @@ struct HUB
wchar_t *Msg; // Message to be displayed when the client is connected
LIST *UserList; // Cache of the user list file
bool IsVgsHub; // Whether it's a VGS Virtual HUB
+ UINT64 LastFlushTick; // Last tick to flush the MAC address table
+ bool StopAllLinkFlag; // Stop all link flag
};
@@ -520,9 +528,10 @@ UINT HubPaGetNextPacket(SESSION *s, void **data);
bool HubPaPutPacket(SESSION *s, void *data, UINT size);
PACKET_ADAPTER *GetHubPacketAdapter();
int CompareMacTable(void *p1, void *p2);
+UINT GetHashOfMacTable(void *p);
void StorePacket(HUB *hub, SESSION *s, PKT *packet);
bool StorePacketFilter(SESSION *s, PKT *packet);
-void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet);
+void StorePacketToHubPa(HUB_PA *dest, SESSION *src, void *data, UINT size, PKT *packet, bool is_flooding, bool no_check_acl);
void SetHubOnline(HUB *h);
void SetHubOffline(HUB *h);
SESSION *GetSessionByPtr(HUB *hub, void *ptr);
@@ -565,7 +574,7 @@ void GetHubLogSetting(HUB *h, HUB_LOG *setting);
void SetHubLogSetting(HUB *h, HUB_LOG *setting);
void SetHubLogSettingEx(HUB *h, HUB_LOG *setting, bool no_change_switch_type);
void DeleteExpiredIpTableEntry(LIST *o);
-void DeleteExpiredMacTableEntry(LIST *o);
+void DeleteExpiredMacTableEntry(HASH_LIST *h);
void AddTrafficDiff(HUB *h, char *name, UINT type, TRAFFIC *traffic);
void IncrementHubTraffic(HUB *h);
void EnableSecureNAT(HUB *h, bool enable);
diff --git a/src/Cedar/Interop_SSTP.c b/src/Cedar/Interop_SSTP.c
index d4a6c14c..c0a47581 100644
--- a/src/Cedar/Interop_SSTP.c
+++ b/src/Cedar/Interop_SSTP.c
@@ -1175,8 +1175,9 @@ bool ProcessSstpHttps(CEDAR *cedar, SOCK *s, SOCK_EVENT *se)
// Wait for the next state change
if (state_changed == false)
{
+ UINT select_time = SELECT_TIME;
UINT r = GetNextIntervalForInterrupt(sstp->Interrupt);
- WaitSockEvent(se, MIN(r, SELECT_TIME));
+ WaitSockEvent(se, MIN(r, select_time));
}
}
diff --git a/src/Cedar/Link.c b/src/Cedar/Link.c
index 7e0f8b7d..b2315de2 100644
--- a/src/Cedar/Link.c
+++ b/src/Cedar/Link.c
@@ -173,6 +173,11 @@ bool LinkPaInit(SESSION *s)
return false;
}
+ if (k->Halting || (*k->StopAllLinkFlag))
+ {
+ return false;
+ }
+
// Create a transmission packet queue
k->SendPacketQueue = NewQueue();
@@ -180,6 +185,9 @@ bool LinkPaInit(SESSION *s)
t = NewThread(LinkServerSessionThread, (void *)k);
WaitThreadInit(t);
+ k->LastServerConnectionReceivedBlocksNum = 0;
+ k->CurrentSendPacketQueueSize = 0;
+
ReleaseThread(t);
return true;
@@ -209,6 +217,10 @@ UINT LinkPaGetNextPacket(SESSION *s, void **data)
return INFINITE;
}
+ if (k->Halting || (*k->StopAllLinkFlag))
+ {
+ return INFINITE;
+ }
// Examine whether there are packets in the queue
LockQueue(k->SendPacketQueue);
{
@@ -219,6 +231,9 @@ UINT LinkPaGetNextPacket(SESSION *s, void **data)
// There was a packet
*data = block->Buf;
ret = block->Size;
+
+ k->CurrentSendPacketQueueSize -= block->Size;
+
// Discard the memory for the structure
Free(block);
}
@@ -232,32 +247,95 @@ UINT LinkPaGetNextPacket(SESSION *s, void **data)
bool LinkPaPutPacket(SESSION *s, void *data, UINT size)
{
LINK *k;
- BLOCK *block;
+ BLOCK *block = NULL;
SESSION *server_session;
CONNECTION *server_connection;
+ bool ret = true;
+ bool halting = false;
// Validate arguments
if (s == NULL || (k = (LINK *)s->PacketAdapter->Param) == NULL)
{
return false;
}
+ halting = (k->Halting || (*k->StopAllLinkFlag));
+
server_session = k->ServerSession;
server_connection = server_session->Connection;
+ k->Flag1++;
+ if ((k->Flag1 % 32) == 0)
+ {
+ // Ommit for performance
+ UINT current_num;
+ int diff;
+
+ current_num = GetQueueNum(server_connection->ReceivedBlocks);
+
+ diff = (int)current_num - (int)k->LastServerConnectionReceivedBlocksNum;
+
+ k->LastServerConnectionReceivedBlocksNum = current_num;
+
+ CedarAddQueueBudget(k->Cedar, diff);
+ }
+
// Since the packet arrives from the HUB of the link destination,
// deliver it to the ReceivedBlocks of the server session
if (data != NULL)
{
- block = NewBlock(data, size, 0);
+ if (halting == false)
+ {
+ block = NewBlock(data, size, 0);
+ }
- LockQueue(server_connection->ReceivedBlocks);
+ if (k->LockFlag == false)
{
- InsertQueue(server_connection->ReceivedBlocks, block);
+ UINT current_num;
+ int diff;
+
+ k->LockFlag = true;
+ LockQueue(server_connection->ReceivedBlocks);
+
+ current_num = GetQueueNum(server_connection->ReceivedBlocks);
+
+ diff = (int)current_num - (int)k->LastServerConnectionReceivedBlocksNum;
+
+ k->LastServerConnectionReceivedBlocksNum = current_num;
+
+ CedarAddQueueBudget(k->Cedar, diff);
+ }
+
+ if (halting == false)
+ {
+ if (CedarGetFifoBudgetBalance(k->Cedar) == 0)
+ {
+ FreeBlock(block);
+ }
+ else
+ {
+ InsertReveicedBlockToQueue(server_connection, block, true);
+ }
}
- UnlockQueue(server_connection->ReceivedBlocks);
}
else
{
+ UINT current_num;
+ int diff;
+
+ current_num = GetQueueNum(server_connection->ReceivedBlocks);
+
+ diff = (int)current_num - (int)k->LastServerConnectionReceivedBlocksNum;
+
+ k->LastServerConnectionReceivedBlocksNum = current_num;
+
+ CedarAddQueueBudget(k->Cedar, diff);
+
+ if (k->LockFlag)
+ {
+ k->LockFlag = false;
+ UnlockQueue(server_connection->ReceivedBlocks);
+ }
+
// Issue the Cancel, since finished store all packets when the data == NULL
Cancel(server_session->Cancel1);
@@ -267,7 +345,12 @@ bool LinkPaPutPacket(SESSION *s, void *data, UINT size)
}
}
- return true;
+ if (halting)
+ {
+ ret = false;
+ }
+
+ return ret;
}
// Release the packet adapter
@@ -280,6 +363,9 @@ void LinkPaFree(SESSION *s)
return;
}
+ CedarAddQueueBudget(k->Cedar, -((int)k->LastServerConnectionReceivedBlocksNum));
+ k->LastServerConnectionReceivedBlocksNum = 0;
+
// Stop the server session
StopSession(k->ServerSession);
ReleaseSession(k->ServerSession);
@@ -296,6 +382,8 @@ void LinkPaFree(SESSION *s)
UnlockQueue(k->SendPacketQueue);
ReleaseQueue(k->SendPacketQueue);
+
+ k->CurrentSendPacketQueueSize = 0;
}
// Packet adapter
@@ -384,6 +472,11 @@ void SetLinkOnline(LINK *k)
return;
}
+ if (k->NoOnline)
+ {
+ return;
+ }
+
if (k->Offline == false)
{
return;
@@ -467,6 +560,8 @@ void StopAllLink(HUB *h)
return;
}
+ h->StopAllLinkFlag = true;
+
LockList(h->LinkList);
{
link_list = ToArray(h->LinkList);
@@ -485,6 +580,8 @@ void StopAllLink(HUB *h)
}
Free(link_list);
+
+ h->StopAllLinkFlag = false;
}
// Start the link
@@ -505,6 +602,8 @@ void StartLink(LINK *k)
return;
}
k->Started = true;
+
+ Inc(k->Cedar->CurrentActiveLinks);
}
UnlockLink(k);
@@ -536,6 +635,8 @@ void StopLink(LINK *k)
}
k->Started = false;
k->Halting = true;
+
+ Dec(k->Cedar->CurrentActiveLinks);
}
UnlockLink(k);
@@ -593,8 +694,7 @@ void NormalizeLinkPolicy(POLICY *p)
}
p->Access = true;
- p->NoBridge = p->NoRouting = p->PrivacyFilter =
- p->MonitorPort = false;
+ p->NoBridge = p->NoRouting = p->MonitorPort = false;
p->MaxConnection = 32;
p->TimeOut = 20;
p->FixPassword = false;
@@ -653,6 +753,9 @@ LINK *NewLink(CEDAR *cedar, HUB *hub, CLIENT_OPTION *option, CLIENT_AUTH *auth,
// Link object
k = ZeroMalloc(sizeof(LINK));
+
+ k->StopAllLinkFlag = &hub->StopAllLinkFlag;
+
k->lock = NewLock();
k->ref = NewRef();
diff --git a/src/Cedar/Link.h b/src/Cedar/Link.h
index e381e414..87196021 100644
--- a/src/Cedar/Link.h
+++ b/src/Cedar/Link.h
@@ -119,6 +119,7 @@ struct LINK
bool Started; // Running flag
volatile bool Halting; // Halting flag
bool Offline; // Offline
+ bool NoOnline; // Do not set to online flag
REF *ref; // Reference counter
LOCK *lock; // Lock
CEDAR *Cedar; // Cedar
@@ -129,9 +130,14 @@ struct LINK
CLIENT_AUTH *Auth; // Authentication data
POLICY *Policy; // Policy
QUEUE *SendPacketQueue; // Transmission packet queue
+ UINT CurrentSendPacketQueueSize; // Current send packet queue size
UINT LastError; // Last error
bool CheckServerCert; // To check the server certificate
X *ServerCert; // Server certificate
+ bool LockFlag; // Lock flag
+ bool *StopAllLinkFlag; // Stop all link flag
+ UINT LastServerConnectionReceivedBlocksNum; // Last server connection recv queue num
+ UINT Flag1;
};
diff --git a/src/Cedar/Logging.c b/src/Cedar/Logging.c
index ca9e4d22..21ae4142 100644
--- a/src/Cedar/Logging.c
+++ b/src/Cedar/Logging.c
@@ -127,8 +127,12 @@ static char *delete_targets[] =
"server_log",
"bridge_log",
"packet_log_archive",
+ "azure_log",
};
+static UINT eraser_check_interval = DISK_FREE_CHECK_INTERVAL_DEFAULT;
+static UINT64 logger_max_log_size = MAX_LOG_SIZE_DEFAULT;
+
// Send with syslog
void SendSysLog(SLOG *g, wchar_t *str)
{
@@ -479,8 +483,34 @@ void EraserThread(THREAD *t, void *p)
// Check the amount of free space on the disk periodically
EraserMain(e);
- Wait(e->HaltEvent, DISK_FREE_CHECK_INTERVAL);
+ Wait(e->HaltEvent, GetEraserCheckInterval());
+ }
+}
+
+// Set the interval for disk free space check
+void SetEraserCheckInterval(UINT interval)
+{
+ if (interval == 0)
+ {
+ eraser_check_interval = DISK_FREE_CHECK_INTERVAL_DEFAULT;
+ }
+ else
+ {
+ eraser_check_interval = interval * 1000;
+ }
+}
+
+// Get the interval for disk free space check
+UINT GetEraserCheckInterval()
+{
+ UINT ret = eraser_check_interval / 1000;
+
+ if (ret == 0)
+ {
+ ret = 1;
}
+
+ return ret;
}
// Create a new eraser
@@ -1045,8 +1075,8 @@ bool PacketLog(HUB *hub, SESSION *src_session, SESSION *dest_session, PKT *packe
return true;
}
- if (Cmp(hub->HubMacAddr, packet->MacAddressSrc, 6) == 0 ||
- Cmp(hub->HubMacAddr, packet->MacAddressDest, 6) == 0)
+ if (memcmp(hub->HubMacAddr, packet->MacAddressSrc, 6) == 0 ||
+ memcmp(hub->HubMacAddr, packet->MacAddressDest, 6) == 0)
{
return true;
}
@@ -2400,7 +2430,49 @@ bool MakeLogFileName(LOG *g, char *name, UINT size, char *dir, char *prefix, UIN
}
else
{
- snprintf(tmp2, sizeof(tmp2), "~%02u", num);
+ UINT64 max_log_size = GetMaxLogSize();
+ if (max_log_size == MAX_LOG_SIZE_DEFAULT)
+ {
+ snprintf(tmp2, sizeof(tmp2), "~%02u", num);
+ }
+ else
+ {
+ char tag[32];
+ char c = '2';
+ if (max_log_size >= 1000000000ULL)
+ {
+ c = '3';
+ }
+ else if (max_log_size >= 100000000ULL)
+ {
+ c = '4';
+ }
+ else if (max_log_size >= 10000000ULL)
+ {
+ c = '5';
+ }
+ else if (max_log_size >= 1000000ULL)
+ {
+ c = '6';
+ }
+ else if (max_log_size >= 100000ULL)
+ {
+ c = '7';
+ }
+ else if (max_log_size >= 10000ULL)
+ {
+ c = '8';
+ }
+ else if (max_log_size >= 1000ULL)
+ {
+ c = '9';
+ }
+
+ StrCpy(tag, sizeof(tag), "~%02u");
+ tag[3] = c;
+
+ snprintf(tmp2, sizeof(tmp2), tag, num);
+ }
}
if (strcmp(old_datestr, tmp) != 0)
@@ -2444,6 +2516,30 @@ void WaitLogFlush(LOG *g)
}
}
+// Set the max log size
+void SetMaxLogSize(UINT64 size)
+{
+ if (size == 0)
+ {
+ size = MAX_LOG_SIZE_DEFAULT;
+ }
+
+ logger_max_log_size = size;
+}
+
+// Get the max log size
+UINT64 GetMaxLogSize()
+{
+ UINT64 ret = logger_max_log_size;
+
+ if (ret == 0)
+ {
+ ret = MAX_LOG_SIZE_DEFAULT;
+ }
+
+ return ret;
+}
+
// Logging thread
void LogThread(THREAD *thread, void *param)
{
@@ -2520,7 +2616,7 @@ void LogThread(THREAD *thread, void *param)
}
#endif // OS_WIN32
- if (b->Size > g->MaxLogFileSize)
+ if (b->Size > GetMaxLogSize())
{
// Erase if the size of the buffer is larger than the maximum log file size
ClearBuf(b);
@@ -2531,7 +2627,7 @@ void LogThread(THREAD *thread, void *param)
// Write the contents of the buffer to the file
if (io != NULL)
{
- if ((g->CurrentFilePointer + (UINT64)b->Size) > g->MaxLogFileSize)
+ if ((g->CurrentFilePointer + (UINT64)b->Size) > GetMaxLogSize())
{
if (g->log_number_incremented == false)
{
@@ -2565,7 +2661,7 @@ void LogThread(THREAD *thread, void *param)
// Write the contents of the buffer to the file
if (io != NULL)
{
- if ((g->CurrentFilePointer + (UINT64)b->Size) > g->MaxLogFileSize)
+ if ((g->CurrentFilePointer + (UINT64)b->Size) > GetMaxLogSize())
{
if (g->log_number_incremented == false)
{
@@ -2637,7 +2733,7 @@ void LogThread(THREAD *thread, void *param)
{
if (log_date_changed)
{
- if ((g->CurrentFilePointer + (UINT64)b->Size) <= g->MaxLogFileSize)
+ if ((g->CurrentFilePointer + (UINT64)b->Size) <= GetMaxLogSize())
{
if (FileWrite(io, b->Buf, b->Size) == false)
{
@@ -2863,7 +2959,6 @@ LOG *NewLog(char *dir, char *prefix, UINT switch_type)
g->SwitchType = switch_type;
g->RecordQueue = NewQueue();
g->Event = NewEvent();
- g->MaxLogFileSize = MAX_LOG_SIZE;
g->FlushEvent = NewEvent();
g->Thread = NewThread(LogThread, g);
diff --git a/src/Cedar/Logging.h b/src/Cedar/Logging.h
index 9bddd55d..9ccc6b60 100644
--- a/src/Cedar/Logging.h
+++ b/src/Cedar/Logging.h
@@ -119,7 +119,7 @@
#define LOG_HTTP_PORT 80
-#define MAX_LOG_SIZE 1073741823ULL
+#define MAX_LOG_SIZE_DEFAULT 1073741823ULL
typedef char *(RECORD_PARSE_PROC)(RECORD *rec);
@@ -171,7 +171,6 @@ struct LOG
UINT LastSwitchType;
char LastStr[MAX_SIZE];
UINT64 CurrentFilePointer; // The current file pointer
- UINT64 MaxLogFileSize; // Maximum log file size
UINT CurrentLogNumber; // Log file number of the current
bool log_number_incremented;
};
@@ -269,6 +268,10 @@ void WriteMultiLineLog(LOG *g, BUF *b);
char *BuildHttpLogStr(HTTPLOG *h);
void MakeSafeLogStr(char *str);
void AddLogBufToStr(BUF *b, char *name, char *value);
+void SetEraserCheckInterval(UINT interval);
+UINT GetEraserCheckInterval();
+void SetMaxLogSize(UINT64 size);
+UINT64 GetMaxLogSize();
#endif // LOGGING_G
diff --git a/src/Cedar/NM.c b/src/Cedar/NM.c
index 8d6b834b..b2833ca9 100644
--- a/src/Cedar/NM.c
+++ b/src/Cedar/NM.c
@@ -185,7 +185,7 @@ UINT NmEditPushRouteProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void
if (ok)
{
- if (IsEmptyStr(r->CurrentPushRouteStr) == false)
+ if (IsEmptyStr(str) == false)
{
if (GetCapsBool(r->p->CapsList, "b_suppport_push_route") == false)
{
diff --git a/src/Cedar/NullLan.c b/src/Cedar/NullLan.c
index ca7ff4ee..1296abf0 100644
--- a/src/Cedar/NullLan.c
+++ b/src/Cedar/NullLan.c
@@ -124,10 +124,41 @@ PACKET_ADAPTER *NullGetPacketAdapter()
return pa;
}
+// Generate MAC address
+void NullGenerateMacAddress(UCHAR *mac, UINT id, UINT seq)
+{
+ UCHAR hash[SHA1_SIZE];
+ char name[MAX_SIZE];
+ BUF *b;
+ // Validate arguments
+ if (mac == NULL)
+ {
+ return;
+ }
+
+ b = NewBuf();
+ WriteBufInt(b, id);
+ WriteBufInt(b, seq);
+ GetMachineHostName(name, sizeof(name));
+#ifdef OS_WIN32
+ WriteBufInt(b, MsGetCurrentProcessId());
+#endif // OS_WIN32
+ WriteBufStr(b, name);
+
+ HashSha1(hash, b->Buf, b->Size);
+
+ FreeBuf(b);
+
+ Copy(mac, hash, 6);
+ mac[0] = 0x7E;
+}
+
// Packet generation thread
void NullPacketGenerateThread(THREAD *t, void *param)
{
NULL_LAN *n = (NULL_LAN *)param;
+ UINT64 end_tick = Tick64() + (UINT64)(60 * 1000);
+ UINT seq = 0;
// Validate arguments
if (t == NULL || param == NULL)
{
@@ -136,7 +167,12 @@ void NullPacketGenerateThread(THREAD *t, void *param)
while (true)
{
- Wait(n->Event, Rand32() % NULL_PACKET_GENERATE_INTERVAL);
+ /*if (Tick64() >= end_tick)
+ {
+ break;
+ }*/
+
+ Wait(n->Event, Rand32() % 1500);
if (n->Halt)
{
break;
@@ -147,14 +183,25 @@ void NullPacketGenerateThread(THREAD *t, void *param)
UCHAR *data;
BLOCK *b;
UINT size = Rand32() % 1500 + 14;
+ UCHAR dst_mac[6];
+
+ NullGenerateMacAddress(n->MacAddr, n->Id, seq);
+
+ //NullGenerateMacAddress(dst_mac, n->Id + 1, 0);
+ //StrToMac(dst_mac, "00-1B-21-A9-47-E6");
+ StrToMac(dst_mac, "00-AC-7A-EF-83-FD");
+
data = Malloc(size);
Copy(data, null_lan_broadcast_address, 6);
+ //Copy(data, dst_mac, 6);
Copy(data + 6, n->MacAddr, 6);
b = NewBlock(data, size, 0);
InsertQueue(n->PacketQueue, b);
}
UnlockQueue(n->PacketQueue);
Cancel(n->Cancel);
+
+ //seq++;
}
}
@@ -162,20 +209,24 @@ void NullPacketGenerateThread(THREAD *t, void *param)
bool NullPaInit(SESSION *s)
{
NULL_LAN *n;
+ static UINT id_seed = 0;
// Validate arguments
if (s == NULL)
{
return false;
}
+ id_seed++;
+
n = ZeroMalloc(sizeof(NULL_LAN));
+ n->Id = id_seed;
s->PacketAdapter->Param = (void *)n;
n->Cancel = NewCancel();
n->PacketQueue = NewQueue();
n->Event = NewEvent();
- GenMacAddress(n->MacAddr);
+ NullGenerateMacAddress(n->MacAddr, n->Id, 0);
n->PacketGeneratorThread = NewThread(NullPacketGenerateThread, n);
diff --git a/src/Cedar/NullLan.h b/src/Cedar/NullLan.h
index 416e6a8d..2fb3cba5 100644
--- a/src/Cedar/NullLan.h
+++ b/src/Cedar/NullLan.h
@@ -127,6 +127,7 @@ struct NULL_LAN
EVENT *Event;
UCHAR MacAddr[6];
UCHAR Padding[2];
+ UINT Id;
};
PACKET_ADAPTER *NullGetPacketAdapter();
@@ -136,6 +137,7 @@ UINT NullPaGetNextPacket(SESSION *s, void **data);
bool NullPaPutPacket(SESSION *s, void *data, UINT size);
void NullPaFree(SESSION *s);
void NullPacketGenerateThread(THREAD *t, void *param);
+void NullGenerateMacAddress(UCHAR *mac, UINT id, UINT seq);
#endif // NULLAN_H
diff --git a/src/Cedar/Protocol.c b/src/Cedar/Protocol.c
index ec078ab9..9ad1906e 100644
--- a/src/Cedar/Protocol.c
+++ b/src/Cedar/Protocol.c
@@ -2707,6 +2707,12 @@ bool ServerAccept(CONNECTION *c)
}
}
+ if (use_encrypt == false && c->FirstSock->IsReverseAcceptedSocket)
+ {
+ // On VPN Azure, SSL encryption is mandated.
+ use_encrypt = true;
+ }
+
if (use_client_license || use_bridge_license)
{
// Examine whether not to conflict with the limit of simultaneous connections
@@ -6939,7 +6945,7 @@ SOCK *TcpConnectEx3(char *hostname, UINT port, UINT timeout, bool *cancel_flag,
if (hWnd == NULL)
{
#endif // OS_WIN32
- return ConnectEx3(hostname, port, timeout, cancel_flag, (no_nat_t ? NULL : VPN_RUDP_SVC_NAME), nat_t_error_code, try_start_ssl, ssl_no_tls, false);
+ return ConnectEx3(hostname, port, timeout, cancel_flag, (no_nat_t ? NULL : VPN_RUDP_SVC_NAME), nat_t_error_code, try_start_ssl, ssl_no_tls, true);
#ifdef OS_WIN32
}
else
diff --git a/src/Cedar/SM.c b/src/Cedar/SM.c
index 2c32afb8..1f1775d3 100644
--- a/src/Cedar/SM.c
+++ b/src/Cedar/SM.c
@@ -19097,13 +19097,6 @@ void SmConnectEx(HWND hWnd, SETTING *s, bool is_in_client)
return;
}
- // Updater terminate
- if (sm->Update != NULL)
- {
- FreeUpdateUi(sm->Update);
- sm->Update = NULL;
- }
-
// Disable the control
Disable(hWnd, L_SETTING);
Disable(hWnd, B_NEW_SETTING);
@@ -20272,6 +20265,8 @@ UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
switch (wParam)
{
case IDOK:
+ DisableUpdateUi(sm->Update);
+
// Connection
i = LvGetSelected(hWnd, L_SETTING);
if (i != INFINITE)
@@ -20301,6 +20296,8 @@ UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
break;
case B_NEW_SETTING:
+ DisableUpdateUi(sm->Update);
+
// Add
if (SmAddSettingDlg(hWnd, new_name, sizeof(new_name)))
{
@@ -20309,6 +20306,8 @@ UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
break;
case B_EDIT_SETTING:
+ DisableUpdateUi(sm->Update);
+
// Edit
if (SmEditSettingDlg(hWnd))
{
@@ -20319,6 +20318,8 @@ UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
break;
case B_DELETE:
+ DisableUpdateUi(sm->Update);
+
// Delete
i = LvGetSelected(hWnd, L_SETTING);
if (i != INFINITE)
@@ -20344,16 +20345,22 @@ UINT SmMainDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam, void *para
break;
case B_SECURE_MANAGER:
+ DisableUpdateUi(sm->Update);
+
// Smart Card Manager
SmSecureManager(hWnd);
break;
case B_SELECT_SECURE:
+ DisableUpdateUi(sm->Update);
+
// Smart card selection
SmSelectSecureId(hWnd);
break;
case B_CERT_TOOL:
+ DisableUpdateUi(sm->Update);
+
// Certificate Creation Tool
SmCreateCert(hWnd, NULL, NULL, false, NULL, false);
break;
diff --git a/src/Cedar/SW.c b/src/Cedar/SW.c
index 47ecc715..929f98d5 100644
--- a/src/Cedar/SW.c
+++ b/src/Cedar/SW.c
@@ -3166,7 +3166,7 @@ bool SwInstallMain(SW *sw, WIZARD_PAGE *wp, SW_COMPONENT *c)
}
// Install the SeLow
- if (SuIsSupportedOs())
+ if (SuIsSupportedOs(true))
{
// Only in the system mode
if (c->InstallService && sw->IsSystemMode)
diff --git a/src/Cedar/SeLowUser.c b/src/Cedar/SeLowUser.c
index de6c1945..512a5b34 100644
--- a/src/Cedar/SeLowUser.c
+++ b/src/Cedar/SeLowUser.c
@@ -154,18 +154,12 @@ bool SuInstallDriverInner(bool force)
wchar_t tmp_dir[MAX_PATH];
char *cpu_type = MsIsX64() ? "x64" : "x86";
- if (SuIsSupportedOs() == false)
+ if (SuIsSupportedOs(true) == false)
{
// Unsupported OS
return false;
}
- if (MsIsServiceRunning("RemoteAccess"))
- {
- // Remote Access service is running
- return false;
- }
-
CombinePathW(tmp_dir, sizeof(tmp_dir), MsGetWindowsDirW(), L"Temp");
MakeDirExW(tmp_dir);
@@ -255,14 +249,36 @@ bool SuInstallDriverInner(bool force)
}
// Get whether the current OS is supported by SeLow
-bool SuIsSupportedOs()
+bool SuIsSupportedOs(bool on_install)
{
+ if (MsRegReadIntEx2(REG_LOCAL_MACHINE, SL_REG_KEY_NAME, "EnableSeLow", false, true) != 0)
+ {
+ // Force enable
+ return true;
+ }
+
if (MsRegReadIntEx2(REG_LOCAL_MACHINE, SL_REG_KEY_NAME, "DisableSeLow", false, true) != 0)
{
// Force disable
return false;
}
+ if (MsIsWindows10())
+ {
+ // Windows 10 or later are always supported.
+ return true;
+ }
+
+ if (on_install)
+ {
+ // If Microsoft Routing and Remote Access service is running,
+ // then return false.
+ if (MsIsServiceRunning("RemoteAccess"))
+ {
+ return false;
+ }
+ }
+
// If the Su driver is currently running,
// then return true.
if (MsIsServiceRunning(SL_PROTOCOL_NAME))
@@ -276,11 +292,14 @@ bool SuIsSupportedOs()
return false;
}
- // If Microsoft Routing and Remote Access service is running,
- // then return false.
- if (MsIsServiceRunning("RemoteAccess"))
+ if (on_install == false)
{
- return false;
+ // If Microsoft Routing and Remote Access service is running,
+ // then return false.
+ if (MsIsServiceRunning("RemoteAccess"))
+ {
+ return false;
+ }
}
return true;
@@ -720,7 +739,7 @@ SU *SuInitEx(UINT wait_for_bind_complete_tick)
bool flag = false;
UINT64 giveup_tick = 0;
- if (SuIsSupportedOs() == false)
+ if (SuIsSupportedOs(false) == false)
{
// Unsupported OS
return NULL;
diff --git a/src/Cedar/SeLowUser.h b/src/Cedar/SeLowUser.h
index 4f935ba4..a5315ec7 100644
--- a/src/Cedar/SeLowUser.h
+++ b/src/Cedar/SeLowUser.h
@@ -172,7 +172,7 @@ int SuCmpAdaterList(void *p1, void *p2);
bool SuInstallDriver(bool force);
bool SuInstallDriverInner(bool force);
-bool SuIsSupportedOs();
+bool SuIsSupportedOs(bool on_install);
#endif // SELOWUSER_H
diff --git a/src/Cedar/Server.c b/src/Cedar/Server.c
index dcf80aea..0023b7ad 100644
--- a/src/Cedar/Server.c
+++ b/src/Cedar/Server.c
@@ -118,11 +118,15 @@ static LOCK *server_lock = NULL;
char *SERVER_CONFIG_FILE_NAME = "@vpn_server.config";
char *SERVER_CONFIG_FILE_NAME_IN_CLIENT = "@vpn_gate_svc.config";
char *BRIDGE_CONFIG_FILE_NAME = "@vpn_bridge.config";
+char *SERVER_CONFIG_TEMPLATE_NAME = "@vpn_server_template.config";
+char *BRIDGE_CONFIG_TEMPLATE_NAME = "@vpn_server_template.config";
static bool server_reset_setting = false;
static volatile UINT global_server_flags[NUM_GLOBAL_SERVER_FLAGS] = {0};
+UINT vpn_global_parameters[NUM_GLOBAL_PARAMS] = {0};
+
// Set the OpenVPN and SSTP setting
void SiSetOpenVPNAndSSTPConfig(SERVER *s, OPENVPN_SSTP_CONFIG *c)
{
@@ -255,6 +259,7 @@ UINT SiDebug(SERVER *s, RPC_TEST *ret, UINT i, char *str)
{9, "Set IPsecMessageDisplayed Flag", "", SiDebugProcSetIPsecMessageDisplayedValue},
{10, "Get VgsMessageDisplayed Flag", "", SiDebugProcGetVgsMessageDisplayedValue},
{11, "Set VgsMessageDisplayed Flag", "", SiDebugProcSetVgsMessageDisplayedValue},
+ {12, "Get the current TCP send queue length", "", SiDebugProcGetCurrentTcpSendQueueLength},
};
UINT num_proc_list = sizeof(proc_list) / sizeof(proc_list[0]);
UINT j;
@@ -452,6 +457,27 @@ UINT SiDebugProcGetVgsMessageDisplayedValue(SERVER *s, char *in_str, char *ret_s
return ERR_NO_ERROR;
}
+UINT SiDebugProcGetCurrentTcpSendQueueLength(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size)
+{
+ char tmp1[64], tmp2[64], tmp3[64];
+ // Validate arguments
+ if (s == NULL || in_str == NULL || ret_str == NULL)
+ {
+ return ERR_INVALID_PARAMETER;
+ }
+
+ ToStr3(tmp1, 0, CedarGetCurrentTcpQueueSize(s->Cedar));
+ ToStr3(tmp2, 0, CedarGetQueueBudgetConsuming(s->Cedar));
+ ToStr3(tmp3, 0, CedarGetFifoBudgetConsuming(s->Cedar));
+
+ Format(ret_str, 0,
+ "CurrentTcpQueueSize = %s\n"
+ "QueueBudgetConsuming = %s\n"
+ "FifoBudgetConsuming = %s\n",
+ tmp1, tmp2, tmp3);
+
+ return ERR_NO_ERROR;
+}
UINT SiDebugProcSetVgsMessageDisplayedValue(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size)
{
// Validate arguments
@@ -491,6 +517,7 @@ void SiCheckDeadLockMain(SERVER *s, UINT timeout)
//Debug("SiCheckDeadLockMain Start.\n");
+
cedar = s->Cedar;
if (s->ServerListenerList != NULL)
@@ -2440,6 +2467,7 @@ void SiSetDefaultHubOption(HUB_OPTION *o)
o->NoDhcpPacketLogOutsideHub = true;
o->AccessListIncludeFileCacheLifetime = ACCESS_LIST_INCLUDE_FILE_CACHE_LIFETIME;
o->RemoveDefGwOnDhcpForLocalhost = true;
+ o->FloodingSendQueueBufferQuota = DEFAULT_FLOODING_QUEUE_LENGTH;
}
// Create a default virtual HUB
@@ -2534,6 +2562,8 @@ void SiLoadInitialConfiguration(SERVER *s)
s->Weight = FARM_DEFAULT_WEIGHT;
+ SiLoadGlobalParamsCfg(NULL);
+
// KEEP related
Zero(&k, sizeof(k));
@@ -2676,8 +2706,9 @@ bool SiLoadConfigurationFile(SERVER *s)
}
- s->CfgRw = NewCfgRw(&root,
- s->Cedar->Bridge == false ? server_config_filename : BRIDGE_CONFIG_FILE_NAME);
+ s->CfgRw = NewCfgRwEx2A(&root,
+ s->Cedar->Bridge == false ? server_config_filename : BRIDGE_CONFIG_FILE_NAME, false,
+ s->Cedar->Bridge == false ? SERVER_CONFIG_TEMPLATE_NAME : BRIDGE_CONFIG_TEMPLATE_NAME);
if (server_reset_setting)
{
@@ -2731,6 +2762,8 @@ void SiInitConfiguration(SERVER *s)
SLog(s->Cedar, "LS_LOAD_CONFIG_3");
SiLoadInitialConfiguration(s);
+ SetFifoCurrentReallocMemSize(MEM_FIFO_REALLOC_MEM_SIZE);
+
server_reset_setting = false;
}
else
@@ -3155,6 +3188,10 @@ void SiWriteLocalBridges(FOLDER *f, SERVER *s)
CfgAddBool(f, "EnableSoftEtherKernelModeDriver", Win32GetEnableSeLow());
#endif // OS_WIN32
+#ifdef UNIX_LINUX
+ CfgAddBool(f, "DoNotDisableOffloading", GetGlobalServerFlag(GSF_LOCALBRIDGE_NO_DISABLE_OFFLOAD));
+#endif // UNIX_LINUX
+
LockList(s->Cedar->LocalBridgeList);
{
UINT i;
@@ -3234,6 +3271,10 @@ void SiLoadLocalBridges(SERVER *s, FOLDER *f)
Win32EthSetShowAllIf(CfgGetBool(f, "ShowAllInterfaces"));
#endif // OS_WIN32
+#ifdef UNIX_LINUX
+ SetGlobalServerFlag(GSF_LOCALBRIDGE_NO_DISABLE_OFFLOAD, CfgGetBool(f, "DoNotDisableOffloading"));
+#endif // UNIX_LINUX
+
t = CfgEnumFolderToTokenList(f);
for (i = 0;i < t->NumTokens;i++)
@@ -3972,6 +4013,14 @@ void SiLoadHubOptionCfg(FOLDER *f, HUB_OPTION *o)
o->FixForDLinkBPDU = CfgGetBool(f, "FixForDLinkBPDU");
o->BroadcastLimiterStrictMode = CfgGetBool(f, "BroadcastLimiterStrictMode");
o->MaxLoggedPacketsPerMinute = CfgGetInt(f, "MaxLoggedPacketsPerMinute");
+ if (CfgIsItem(f, "FloodingSendQueueBufferQuota"))
+ {
+ o->FloodingSendQueueBufferQuota = CfgGetInt(f, "FloodingSendQueueBufferQuota");
+ }
+ else
+ {
+ o->FloodingSendQueueBufferQuota = DEFAULT_FLOODING_QUEUE_LENGTH;
+ }
o->DoNotSaveHeavySecurityLogs = CfgGetBool(f, "DoNotSaveHeavySecurityLogs");
if (CfgIsItem(f, "DropBroadcastsInPrivacyFilterMode"))
@@ -4102,6 +4151,7 @@ void SiWriteHubOptionCfg(FOLDER *f, HUB_OPTION *o)
}
CfgAddBool(f, "BroadcastLimiterStrictMode", o->BroadcastLimiterStrictMode);
CfgAddInt(f, "MaxLoggedPacketsPerMinute", o->MaxLoggedPacketsPerMinute);
+ CfgAddInt(f, "FloodingSendQueueBufferQuota", o->FloodingSendQueueBufferQuota);
CfgAddBool(f, "DoNotSaveHeavySecurityLogs", o->DoNotSaveHeavySecurityLogs);
CfgAddBool(f, "DropBroadcastsInPrivacyFilterMode", o->DropBroadcastsInPrivacyFilterMode);
CfgAddBool(f, "DropArpInPrivacyFilterMode", o->DropArpInPrivacyFilterMode);
@@ -5697,6 +5747,7 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
K *k = NULL;
bool cluster_allowed = false;
UINT num_connections_per_ip = 0;
+ FOLDER *params_folder;
// Validate arguments
if (s == NULL || f == NULL)
{
@@ -5725,6 +5776,19 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
s->BackupConfigOnlyWhenModified = true;
}
+ // Server log switch type
+ if (CfgIsItem(f, "ServerLogSwitchType"))
+ {
+ UINT st = CfgGetInt(f, "ServerLogSwitchType");
+
+ SetLogSwitchType(s->Logger, st);
+ }
+
+ SetMaxLogSize(CfgGetInt64(f, "LoggerMaxLogSize"));
+
+ params_folder = CfgGetFolder(f, "GlobalParams");
+ SiLoadGlobalParamsCfg(params_folder);
+
c = s->Cedar;
Lock(c->lock);
{
@@ -5805,6 +5869,7 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
s->DisableDeadLockCheck = CfgGetBool(f, "DisableDeadLockCheck");
// Eraser
+ SetEraserCheckInterval(CfgGetInt(f, "AutoDeleteCheckIntervalSecs"));
s->Eraser = NewEraser(s->Logger, CfgGetInt64(f, "AutoDeleteCheckDiskFreeSpaceMin"));
// WebUI
@@ -6015,8 +6080,99 @@ void SiLoadServerCfg(SERVER *s, FOLDER *f)
// Configuration of VPN Azure Client
s->EnableVpnAzure = CfgGetBool(f, "EnableVpnAzure");
+
+ // Disable GetHostName when accepting TCP
+ s->DisableGetHostNameWhenAcceptTcp = CfgGetBool(f, "DisableGetHostNameWhenAcceptTcp");
+
+ if (s->DisableGetHostNameWhenAcceptTcp)
+ {
+ DisableGetHostNameWhenAcceptInit();
+ }
+
+ // Disable core dump on UNIX
+ s->DisableCoreDumpOnUnix = CfgGetBool(f, "DisableCoreDumpOnUnix");
+
+ // Disable session reconnect
+ SetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT, CfgGetBool(f, "DisableSessionReconnect"));
}
Unlock(c->lock);
+
+#ifdef OS_UNIX
+ if (s->DisableCoreDumpOnUnix)
+ {
+ UnixDisableCoreDump();
+ }
+#endif // OS_UNIX
+}
+
+// Load global params
+void SiLoadGlobalParamsCfg(FOLDER *f)
+{
+ SiLoadGlobalParamItem(GP_MAX_SEND_SOCKET_QUEUE_SIZE, CfgGetInt(f, "MAX_SEND_SOCKET_QUEUE_SIZE"));
+ SiLoadGlobalParamItem(GP_MIN_SEND_SOCKET_QUEUE_SIZE, CfgGetInt(f, "MIN_SEND_SOCKET_QUEUE_SIZE"));
+ SiLoadGlobalParamItem(GP_MAX_SEND_SOCKET_QUEUE_NUM, CfgGetInt(f, "MAX_SEND_SOCKET_QUEUE_NUM"));
+ SiLoadGlobalParamItem(GP_SELECT_TIME, CfgGetInt(f, "SELECT_TIME"));
+ SiLoadGlobalParamItem(GP_SELECT_TIME_FOR_NAT, CfgGetInt(f, "SELECT_TIME_FOR_NAT"));
+ SiLoadGlobalParamItem(GP_MAX_STORED_QUEUE_NUM, CfgGetInt(f, "MAX_STORED_QUEUE_NUM"));
+ SiLoadGlobalParamItem(GP_MAX_BUFFERING_PACKET_SIZE, CfgGetInt(f, "MAX_BUFFERING_PACKET_SIZE"));
+ SiLoadGlobalParamItem(GP_HUB_ARP_SEND_INTERVAL, CfgGetInt(f, "HUB_ARP_SEND_INTERVAL"));
+ SiLoadGlobalParamItem(GP_MAC_TABLE_EXPIRE_TIME, CfgGetInt(f, "MAC_TABLE_EXPIRE_TIME"));
+ SiLoadGlobalParamItem(GP_IP_TABLE_EXPIRE_TIME, CfgGetInt(f, "IP_TABLE_EXPIRE_TIME"));
+ SiLoadGlobalParamItem(GP_IP_TABLE_EXPIRE_TIME_DHCP, CfgGetInt(f, "IP_TABLE_EXPIRE_TIME_DHCP"));
+ SiLoadGlobalParamItem(GP_STORM_CHECK_SPAN, CfgGetInt(f, "STORM_CHECK_SPAN"));
+ SiLoadGlobalParamItem(GP_STORM_DISCARD_VALUE_START, CfgGetInt(f, "STORM_DISCARD_VALUE_START"));
+ SiLoadGlobalParamItem(GP_STORM_DISCARD_VALUE_END, CfgGetInt(f, "STORM_DISCARD_VALUE_END"));
+ SiLoadGlobalParamItem(GP_MAX_MAC_TABLES, CfgGetInt(f, "MAX_MAC_TABLES"));
+ SiLoadGlobalParamItem(GP_MAX_IP_TABLES, CfgGetInt(f, "MAX_IP_TABLES"));
+ SiLoadGlobalParamItem(GP_MAX_HUB_LINKS, CfgGetInt(f, "MAX_HUB_LINKS"));
+ SiLoadGlobalParamItem(GP_MEM_FIFO_REALLOC_MEM_SIZE, CfgGetInt(f, "MEM_FIFO_REALLOC_MEM_SIZE"));
+ SiLoadGlobalParamItem(GP_QUEUE_BUDGET, CfgGetInt(f, "QUEUE_BUDGET"));
+ SiLoadGlobalParamItem(GP_FIFO_BUDGET, CfgGetInt(f, "FIFO_BUDGET"));
+
+ SetFifoCurrentReallocMemSize(MEM_FIFO_REALLOC_MEM_SIZE);
+}
+
+// Load global param itesm
+void SiLoadGlobalParamItem(UINT id, UINT value)
+{
+ // Validate arguments
+ if (id == 0)
+ {
+ return;
+ }
+
+ vpn_global_parameters[id] = value;
+}
+
+// Write global params
+void SiWriteGlobalParamsCfg(FOLDER *f)
+{
+ // Validate arguments
+ if (f == NULL)
+ {
+ return;
+ }
+
+ CfgAddInt(f, "MAX_SEND_SOCKET_QUEUE_SIZE", MAX_SEND_SOCKET_QUEUE_SIZE);
+ CfgAddInt(f, "MIN_SEND_SOCKET_QUEUE_SIZE", MIN_SEND_SOCKET_QUEUE_SIZE);
+ CfgAddInt(f, "MAX_SEND_SOCKET_QUEUE_NUM", MAX_SEND_SOCKET_QUEUE_NUM);
+ CfgAddInt(f, "SELECT_TIME", SELECT_TIME);
+ CfgAddInt(f, "SELECT_TIME_FOR_NAT", SELECT_TIME_FOR_NAT);
+ CfgAddInt(f, "MAX_STORED_QUEUE_NUM", MAX_STORED_QUEUE_NUM);
+ CfgAddInt(f, "MAX_BUFFERING_PACKET_SIZE", MAX_BUFFERING_PACKET_SIZE);
+ CfgAddInt(f, "HUB_ARP_SEND_INTERVAL", HUB_ARP_SEND_INTERVAL);
+ CfgAddInt(f, "MAC_TABLE_EXPIRE_TIME", MAC_TABLE_EXPIRE_TIME);
+ CfgAddInt(f, "IP_TABLE_EXPIRE_TIME", IP_TABLE_EXPIRE_TIME);
+ CfgAddInt(f, "IP_TABLE_EXPIRE_TIME_DHCP", IP_TABLE_EXPIRE_TIME_DHCP);
+ CfgAddInt(f, "STORM_CHECK_SPAN", STORM_CHECK_SPAN);
+ CfgAddInt(f, "STORM_DISCARD_VALUE_START", STORM_DISCARD_VALUE_START);
+ CfgAddInt(f, "STORM_DISCARD_VALUE_END", STORM_DISCARD_VALUE_END);
+ CfgAddInt(f, "MAX_MAC_TABLES", MAX_MAC_TABLES);
+ CfgAddInt(f, "MAX_IP_TABLES", MAX_IP_TABLES);
+ CfgAddInt(f, "MAX_HUB_LINKS", MAX_HUB_LINKS);
+ CfgAddInt(f, "MEM_FIFO_REALLOC_MEM_SIZE", MEM_FIFO_REALLOC_MEM_SIZE);
+ CfgAddInt(f, "QUEUE_BUDGET", QUEUE_BUDGET);
+ CfgAddInt(f, "FIFO_BUDGET", FIFO_BUDGET);
}
// Write the server-specific settings
@@ -6024,6 +6180,7 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
{
BUF *b;
CEDAR *c;
+ FOLDER *params_folder;
// Validate arguments
if (f == NULL || s == NULL)
{
@@ -6037,6 +6194,20 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
CfgAddBool(f, "DontBackupConfig", s->DontBackupConfig);
CfgAddBool(f, "BackupConfigOnlyWhenModified", s->BackupConfigOnlyWhenModified);
+ if (s->Logger != NULL)
+ {
+ CfgAddInt(f, "ServerLogSwitchType", s->Logger->SwitchType);
+ }
+
+ CfgAddInt64(f, "LoggerMaxLogSize", GetMaxLogSize());
+
+ params_folder = CfgCreateFolder(f, "GlobalParams");
+
+ if (params_folder != NULL)
+ {
+ SiWriteGlobalParamsCfg(params_folder);
+ }
+
c = s->Cedar;
Lock(c->lock);
@@ -6084,6 +6255,7 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
// Eraser related
CfgAddInt64(f, "AutoDeleteCheckDiskFreeSpaceMin", s->Eraser->MinFreeSpace);
+ CfgAddInt(f, "AutoDeleteCheckIntervalSecs", GetEraserCheckInterval());
// WebUI
CfgAddBool(f, "UseWebUI", s->UseWebUI);
@@ -6222,6 +6394,12 @@ void SiWriteServerCfg(FOLDER *f, SERVER *s)
{
CfgAddBool(f, "EnableVpnAzure", s->EnableVpnAzure);
}
+
+ CfgAddBool(f, "DisableGetHostNameWhenAcceptTcp", s->DisableGetHostNameWhenAcceptTcp);
+ CfgAddBool(f, "DisableCoreDumpOnUnix", s->DisableCoreDumpOnUnix);
+
+ // Disable session reconnect
+ CfgAddBool(f, "DisableSessionReconnect", GetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT));
}
Unlock(c->lock);
}
@@ -7115,7 +7293,7 @@ void SiCalledEnumHub(SERVER *s, PACK *p, PACK *req)
PackAddIntEx(p, "NumSessionsClient", Count(h->NumSessionsClient), i, num);
PackAddIntEx(p, "NumSessionsBridge", Count(h->NumSessionsBridge), i, num);
- PackAddIntEx(p, "NumMacTables", LIST_NUM(h->MacTable), i, num);
+ PackAddIntEx(p, "NumMacTables", HASH_LIST_NUM(h->MacHashTable), i, num);
PackAddIntEx(p, "NumIpTables", LIST_NUM(h->IpTable), i, num);
@@ -7243,6 +7421,7 @@ void SiCalledUpdateHub(SERVER *s, PACK *p)
o.NoLookBPDUBridgeId = PackGetBool(p, "NoLookBPDUBridgeId");
o.NoManageVlanId = PackGetBool(p, "NoManageVlanId");
o.MaxLoggedPacketsPerMinute = PackGetInt(p, "MaxLoggedPacketsPerMinute");
+ o.FloodingSendQueueBufferQuota = PackGetInt(p, "FloodingSendQueueBufferQuota");
o.DoNotSaveHeavySecurityLogs = PackGetBool(p, "DoNotSaveHeavySecurityLogs");
o.DropBroadcastsInPrivacyFilterMode = PackGetBool(p, "DropBroadcastsInPrivacyFilterMode");
o.DropArpInPrivacyFilterMode = PackGetBool(p, "DropArpInPrivacyFilterMode");
@@ -7464,16 +7643,13 @@ void SiCalledDeleteMacTable(SERVER *s, PACK *p)
return;
}
- LockList(h->MacTable);
+ LockHashList(h->MacHashTable);
{
- if (IsInList(h->MacTable, (void *)key))
- {
- MAC_TABLE_ENTRY *e = (MAC_TABLE_ENTRY *)key;
- Delete(h->MacTable, e);
- Free(e);
- }
+ MAC_TABLE_ENTRY *e = HashListKeyToPointer(h->MacHashTable, key);
+ DeleteHash(h->MacHashTable, e);
+ Free(e);
}
- UnlockList(h->MacTable);
+ UnlockHashList(h->MacHashTable);
ReleaseHub(h);
}
@@ -8316,11 +8492,11 @@ void SiCallEnumHub(SERVER *s, FARM_MEMBER *f)
}
UnlockList(h->SessionList);
- LockList(h->MacTable);
+ LockHashList(h->MacHashTable);
{
- hh->NumMacTables = LIST_NUM(h->MacTable);
+ hh->NumMacTables = HASH_LIST_NUM(h->MacHashTable);
}
- UnlockList(h->MacTable);
+ UnlockHashList(h->MacHashTable);
LockList(h->IpTable);
{
@@ -9084,6 +9260,7 @@ void SiPackAddCreateHub(PACK *p, HUB *h)
PackAddBool(p, "NoSpinLockForPacketDelay", h->Option->NoSpinLockForPacketDelay);
PackAddInt(p, "BroadcastStormDetectionThreshold", h->Option->BroadcastStormDetectionThreshold);
PackAddInt(p, "MaxLoggedPacketsPerMinute", h->Option->MaxLoggedPacketsPerMinute);
+ PackAddInt(p, "FloodingSendQueueBufferQuota", h->Option->FloodingSendQueueBufferQuota);
PackAddBool(p, "DoNotSaveHeavySecurityLogs", h->Option->DoNotSaveHeavySecurityLogs);
PackAddBool(p, "DropBroadcastsInPrivacyFilterMode", h->Option->DropBroadcastsInPrivacyFilterMode);
PackAddBool(p, "DropArpInPrivacyFilterMode", h->Option->DropArpInPrivacyFilterMode);
@@ -10631,6 +10808,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
s = ZeroMalloc(sizeof(SERVER));
+ SetEraserCheckInterval(0);
+
SiInitHubCreateHistory(s);
InitServerCapsCache(s);
@@ -10699,6 +10878,8 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
// Initialize the configuration
SiInitConfiguration(s);
+ SetFifoCurrentReallocMemSize(MEM_FIFO_REALLOC_MEM_SIZE);
+
if (s->DisableIntelAesAcceleration)
{
@@ -10712,6 +10893,10 @@ SERVER *SiNewServerEx(bool bridge, bool in_client_inner_server)
OSSetHighPriority();
}
+#ifdef OS_UNIX
+ UnixSetHighOomScore();
+#endif // OS_UNIX
+
if (s->ServerType == SERVER_TYPE_FARM_MEMBER)
{
// Start a connection to the controller
diff --git a/src/Cedar/Server.h b/src/Cedar/Server.h
index 2e5a5b6d..ffe5b78d 100644
--- a/src/Cedar/Server.h
+++ b/src/Cedar/Server.h
@@ -352,6 +352,9 @@ struct SERVER
AZURE_CLIENT *AzureClient; // VPN Azure client
bool EnableVpnAzure; // Flag whether VPN Azure client is enabled
+ bool DisableGetHostNameWhenAcceptTcp; // Disable GetHostName when accepting TCP
+ bool DisableCoreDumpOnUnix; // Disable core dump on UNIX
+
TINY_LOG *DebugLog; // Debug log
DYNAMIC_LISTENER *DynListenerIcmp; // VPN over ICMP listener
@@ -428,6 +431,35 @@ struct LOG_FILE
#define GSF_DISABLE_AC 5
#define GSF_DISABLE_SYSLOG 6
#define GSF_SHOW_OSS_MSG 7
+#define GSF_LOCALBRIDGE_NO_DISABLE_OFFLOAD 8
+#define GSF_DISABLE_SESSION_RECONNECT 9
+
+// Global parameters
+#define NUM_GLOBAL_PARAMS 128
+#define GP_MAX_SEND_SOCKET_QUEUE_SIZE 1
+#define GP_MIN_SEND_SOCKET_QUEUE_SIZE 2
+#define GP_MAX_SEND_SOCKET_QUEUE_NUM 3
+#define GP_SELECT_TIME 4
+#define GP_SELECT_TIME_FOR_NAT 5
+#define GP_MAX_STORED_QUEUE_NUM 6
+#define GP_MAX_BUFFERING_PACKET_SIZE 7
+#define GP_HUB_ARP_SEND_INTERVAL 8
+#define GP_MAC_TABLE_EXPIRE_TIME 9
+#define GP_IP_TABLE_EXPIRE_TIME 10
+#define GP_IP_TABLE_EXPIRE_TIME_DHCP 11
+#define GP_STORM_CHECK_SPAN 12
+#define GP_STORM_DISCARD_VALUE_START 13
+#define GP_STORM_DISCARD_VALUE_END 14
+#define GP_MAX_MAC_TABLES 15
+#define GP_MAX_IP_TABLES 16
+#define GP_MAX_HUB_LINKS 17
+#define GP_MEM_FIFO_REALLOC_MEM_SIZE 18
+#define GP_QUEUE_BUDGET 19
+#define GP_FIFO_BUDGET 20
+
+extern UINT vpn_global_parameters[NUM_GLOBAL_PARAMS];
+
+#define VPN_GP(id, default_value) ((UINT)(vpn_global_parameters[(id)] != 0 ? vpn_global_parameters[(id)] : (default_value)))
@@ -482,6 +514,9 @@ void SiWriteListenerCfg(FOLDER *f, SERVER_LISTENER *r);
void SiLoadListenerCfg(SERVER *s, FOLDER *f);
void SiWriteServerCfg(FOLDER *f, SERVER *s);
void SiLoadServerCfg(SERVER *s, FOLDER *f);
+void SiWriteGlobalParamsCfg(FOLDER *f);
+void SiLoadGlobalParamsCfg(FOLDER *f);
+void SiLoadGlobalParamItem(UINT id, UINT value);
void SiWriteTraffic(FOLDER *parent, char *name, TRAFFIC *t);
void SiWriteTrafficInner(FOLDER *parent, char *name, TRAFFIC_ENTRY *e);
void SiLoadTrafficInner(FOLDER *parent, char *name, TRAFFIC_ENTRY *e);
@@ -642,6 +677,7 @@ UINT SiDebugProcGetIPsecMessageDisplayedValue(SERVER *s, char *in_str, char *ret
UINT SiDebugProcSetIPsecMessageDisplayedValue(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
UINT SiDebugProcGetVgsMessageDisplayedValue(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
UINT SiDebugProcSetVgsMessageDisplayedValue(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
+UINT SiDebugProcGetCurrentTcpSendQueueLength(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
typedef UINT (SI_DEBUG_PROC)(SERVER *s, char *in_str, char *ret_str, UINT ret_str_size);
diff --git a/src/Cedar/Session.c b/src/Cedar/Session.c
index 8b48e503..a01b2ec4 100644
--- a/src/Cedar/Session.c
+++ b/src/Cedar/Session.c
@@ -137,6 +137,8 @@ void SessionMain(SESSION *s)
TRAFFIC t;
SOCK *msgdlg_sock = NULL;
SOCK *nicinfo_sock = NULL;
+ bool is_server_session = false;
+ bool lock_receive_blocks_queue = false;
// Validate arguments
if (s == NULL)
{
@@ -271,9 +273,14 @@ void SessionMain(SESSION *s)
}
}
+ is_server_session = s->ServerMode;
+
+ lock_receive_blocks_queue = s->LinkModeServer;
+
+ now = Tick64();
+
while (true)
{
- now = Tick64();
Zero(&t, sizeof(t));
@@ -318,12 +325,22 @@ void SessionMain(SESSION *s)
}
}
+
// Chance of additional connection
- ClientAdditionalConnectChance(s);
+ if (is_server_session == false)
+ {
+ if (GetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT) == false)
+ {
+ ClientAdditionalConnectChance(s);
+ }
+ }
// Receive a block
ConnectionReceive(c, s->Cancel1, s->Cancel2);
+ // Get the current time
+ now = Tick64();
+
if (s->UseUdpAcceleration && s->UdpAccel != NULL && s->UdpAccel->FatalError)
{
// A serious error occurs during sending any data on UDP socket
@@ -333,7 +350,10 @@ void SessionMain(SESSION *s)
}
// Pass the received block to the PacketAdapter
- LockQueue(c->ReceivedBlocks);
+ if (lock_receive_blocks_queue)
+ {
+ LockQueue(c->ReceivedBlocks);
+ }
{
BLOCK *b;
packet_put = false;
@@ -349,17 +369,33 @@ void SessionMain(SESSION *s)
update_hub_last_comm = true;
- if (s->ServerMode == false && b->Size >= 14)
+ if (b->Size >= 14)
{
- if (b->Buf[0] & 0x40)
+ if (b->Buf[0] & 0x01)
{
- t.Recv.BroadcastCount++;
- t.Recv.BroadcastBytes += (UINT64)b->Size;
+ if (is_server_session == false)
+ {
+ t.Recv.BroadcastCount++;
+ t.Recv.BroadcastBytes += (UINT64)b->Size;
+ }
+ else
+ {
+ t.Send.BroadcastCount++;
+ t.Send.BroadcastBytes += (UINT64)b->Size;
+ }
}
else
{
- t.Recv.UnicastCount++;
- t.Recv.UnicastBytes += (UINT64)b->Size;
+ if (is_server_session == false)
+ {
+ t.Recv.UnicastCount++;
+ t.Recv.UnicastBytes += (UINT64)b->Size;
+ }
+ else
+ {
+ t.Send.UnicastCount++;
+ t.Send.UnicastBytes += (UINT64)b->Size;
+ }
}
}
@@ -375,7 +411,7 @@ void SessionMain(SESSION *s)
Free(b);
}
- if (packet_put || s->ServerMode)
+ if (true /* packet_put || is_server_session 2014.7.23 for optimizing */)
{
PROBE_DATA2("pa->PutPacket", NULL, 0);
if (pa->PutPacket(s, NULL, 0) == false)
@@ -386,10 +422,12 @@ void SessionMain(SESSION *s)
}
}
}
- UnlockQueue(c->ReceivedBlocks);
+ if (lock_receive_blocks_queue)
+ {
+ UnlockQueue(c->ReceivedBlocks);
+ }
// Add the packet to be transmitted to SendBlocks by acquiring from PacketAdapter
- LockQueue(c->SendBlocks);
{
UINT i, max_num = MAX_SEND_SOCKET_QUEUE_NUM;
i = 0;
@@ -416,35 +454,75 @@ void SessionMain(SESSION *s)
else
{
bool priority;
+ QUEUE *q = NULL;
// Buffering
- if (s->ServerMode == false && packet_size >= 14)
+ if (packet_size >= 14)
{
UCHAR *buf = (UCHAR *)packet;
if (buf[0] & 0x01)
{
- t.Send.BroadcastCount++;
- t.Send.BroadcastBytes += (UINT64)packet_size;
+ if (is_server_session == false)
+ {
+ t.Send.BroadcastCount++;
+ t.Send.BroadcastBytes += (UINT64)packet_size;
+ }
+ else
+ {
+ t.Recv.BroadcastCount++;
+ t.Recv.BroadcastBytes += (UINT64)packet_size;
+ }
}
else
{
- t.Send.UnicastCount++;
- t.Send.UnicastBytes += (UINT64)packet_size;
+ if (is_server_session == false)
+ {
+ t.Send.UnicastCount++;
+ t.Send.UnicastBytes += (UINT64)packet_size;
+ }
+ else
+ {
+ t.Recv.UnicastCount++;
+ t.Recv.UnicastBytes += (UINT64)packet_size;
+ }
}
}
priority = IsPriorityHighestPacketForQoS(packet, packet_size);
+
b = NewBlock(packet, packet_size, s->UseCompress ? 1 : 0);
b->PriorityQoS = priority;
- c->CurrentSendQueueSize += b->Size;
if (b->PriorityQoS && c->Protocol == CONNECTION_TCP && s->QoS)
{
- InsertQueue(c->SendBlocks2, b);
+ q = c->SendBlocks2;
+ }
+ else
+ {
+ q = c->SendBlocks;
+ }
+
+ if (q->num_item > MAX_STORED_QUEUE_NUM)
+ {
+ q = NULL;
+ }
+
+ if (q != NULL)
+ {
+ c->CurrentSendQueueSize += b->Size;
+ InsertQueue(q, b);
}
else
{
- InsertQueue(c->SendBlocks, b);
+ FreeBlock(b);
}
}
+
+ if ((i % 16) == 0)
+ {
+ int diff = ((int)c->CurrentSendQueueSize) - ((int)c->LastPacketQueueSize);
+ CedarAddCurrentTcpQueueSize(c->Cedar, diff);
+ c->LastPacketQueueSize = c->CurrentSendQueueSize;
+ }
+
i++;
if (i >= max_num)
{
@@ -452,15 +530,23 @@ void SessionMain(SESSION *s)
}
}
}
- UnlockQueue(c->SendBlocks);
AddTrafficForSession(s, &t);
+ if (true)
+ {
+ int diff = ((int)c->CurrentSendQueueSize) - ((int)c->LastPacketQueueSize);
+ CedarAddCurrentTcpQueueSize(c->Cedar, diff);
+ c->LastPacketQueueSize = c->CurrentSendQueueSize;
+ }
+
+ now = Tick64();
+
// Send a block
- ConnectionSend(c);
+ ConnectionSend(c, now);
// Determine the automatic disconnection
- if (auto_disconnect_tick != 0 && auto_disconnect_tick <= Tick64())
+ if (auto_disconnect_tick != 0 && auto_disconnect_tick <= now)
{
err = ERR_AUTO_DISCONNECTED;
s->CurrentRetryCount = INFINITE;
@@ -477,9 +563,6 @@ void SessionMain(SESSION *s)
break;
}
- // Get the current time
- now = Tick64();
-
// Increments the number of logins for user object and Virtual HUB object.
// (It's incremented only if the time 30 seconds passed after connection.
// If not do this, it will be incremented on DoS attacks or any error.)
@@ -498,7 +581,7 @@ void SessionMain(SESSION *s)
}
}
- if (s->ServerMode)
+ if (is_server_session)
{
HUB *hub;
@@ -513,15 +596,11 @@ void SessionMain(SESSION *s)
if (hub != NULL)
{
- Lock(hub->lock);
+ if ((hub->LastIncrementTraffic + INCREMENT_TRAFFIC_INTERVAL) <= now)
{
- if ((hub->LastIncrementTraffic + INCREMENT_TRAFFIC_INTERVAL) <= now)
- {
- IncrementHubTraffic(s->Hub);
- hub->LastIncrementTraffic = now;
- }
+ hub->LastIncrementTraffic = now;
+ IncrementHubTraffic(s->Hub);
}
- Unlock(hub->lock);
}
}
@@ -536,7 +615,22 @@ void SessionMain(SESSION *s)
WHERE;
}
- if (s->ServerMode == false && s->ClientOption != NULL && s->ClientOption->ConnectionDisconnectSpan == 0)
+ if (c->Protocol == CONNECTION_TCP)
+ {
+ if (GetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT))
+ {
+ UINT num_tcp_connections = Count(c->CurrentNumConnection);
+
+ if (num_tcp_connections == 0)
+ {
+ // All TCP connections are disconnected.
+ // Terminate the session immediately.
+ timeouted = true;
+ }
+ }
+ }
+
+ if (is_server_session == false && s->ClientOption != NULL && s->ClientOption->ConnectionDisconnectSpan == 0)
{
if (LIST_NUM(s->Connection->Tcp->TcpSockList) < s->MaxConnection)
{
@@ -588,7 +682,14 @@ CLEANUP:
if (s->Connection)
{
+ int diff = -((int)s->Connection->LastTcpQueueSize);
+ s->Connection->LastTcpQueueSize = 0;
s->Connection->Halt = true;
+ CedarAddCurrentTcpQueueSize(s->Cedar, diff);
+
+ diff = ((int)c->CurrentSendQueueSize) - ((int)c->LastPacketQueueSize);
+ CedarAddCurrentTcpQueueSize(c->Cedar, diff);
+ c->LastPacketQueueSize = c->CurrentSendQueueSize;
}
// Release the packet adapter
@@ -1343,6 +1444,12 @@ void ClientThread(THREAD *t, void *param)
while (true)
{
+ if (s->Link != NULL && ((*s->Link->StopAllLinkFlag) || s->Link->Halting))
+ {
+ s->Err = ERR_USER_CANCEL;
+ break;
+ }
+
CLog(s->Cedar->Client, "LC_CONNECT_1", s->ClientOption->AccountName, s->CurrentRetryCount + 1);
if (s->LinkModeClient && s->Link != NULL)
{
@@ -1424,6 +1531,21 @@ void ClientThread(THREAD *t, void *param)
{
UINT retry_interval = s->RetryInterval;
+ if (s->LinkModeClient)
+ {
+ UINT current_num_links = Count(s->Cedar->CurrentActiveLinks);
+ UINT max_retry_interval = MAX(1000 * current_num_links, retry_interval);
+
+ retry_interval += retry_interval * MIN(s->CurrentRetryCount, 1000);
+ retry_interval = MIN(retry_interval, max_retry_interval);
+
+ // On the cascade client, adjust the retry_interval. (+/- 20%)
+ if (retry_interval >= 1000 && retry_interval <= (60 * 60 * 1000))
+ {
+ retry_interval = (retry_interval * 8 / 10) + (Rand32() % (retry_interval * 4 / 10));
+ }
+ }
+
if (s->Err == ERR_HUB_IS_BUSY || s->Err == ERR_LICENSE_ERROR ||
s->Err == ERR_HUB_STOPPING || s->Err == ERR_TOO_MANY_USER_SESSION)
{
@@ -1812,6 +1934,13 @@ SESSION *NewClientSessionEx(CEDAR *cedar, CLIENT_OPTION *option, CLIENT_AUTH *au
s->ClientOption = Malloc(sizeof(CLIENT_OPTION));
Copy(s->ClientOption, option, sizeof(CLIENT_OPTION));
+ if (GetGlobalServerFlag(GSF_DISABLE_SESSION_RECONNECT))
+ {
+ s->ClientOption->DisableQoS = true;
+ s->ClientOption->MaxConnection = 1;
+ s->ClientOption->HalfConnection = false;
+ }
+
s->MaxConnection = option->MaxConnection;
s->UseEncrypt = option->UseEncrypt;
s->UseCompress = option->UseCompress;
diff --git a/src/Cedar/WinUi.c b/src/Cedar/WinUi.c
index bd37fc22..4317ca7b 100644
--- a/src/Cedar/WinUi.c
+++ b/src/Cedar/WinUi.c
@@ -432,6 +432,12 @@ void UpdateNotifyProcUi(UPDATE_CLIENT *c, UINT latest_build, UINT64 latest_date,
}
}
+ if (u->CurrentlyDisabled)
+ {
+ // Hide
+ return;
+ }
+
// Show the update screen
Zero(&p, sizeof(p));
@@ -491,6 +497,18 @@ WINUI_UPDATE *InitUpdateUi(wchar_t *title, char *name, char *family_name, UINT64
return u;
}
+// Disable the update notification UI
+void DisableUpdateUi(WINUI_UPDATE *u)
+{
+ // Validate arguments
+ if (u == NULL)
+ {
+ return;
+ }
+
+ u->CurrentlyDisabled = true;
+}
+
// Release the update notification
void FreeUpdateUi(WINUI_UPDATE *u)
{
diff --git a/src/Cedar/WinUi.h b/src/Cedar/WinUi.h
index 73c9e95f..a6cce9f5 100644
--- a/src/Cedar/WinUi.h
+++ b/src/Cedar/WinUi.h
@@ -554,6 +554,7 @@ struct WINUI_UPDATE
char RegKey[MAX_PATH];
UPDATE_CLIENT *UpdateClient;
bool UseSuppressFlag;
+ bool CurrentlyDisabled;
};
// Update notification parameters
@@ -579,6 +580,7 @@ void FreeWinUi();
WINUI_UPDATE *InitUpdateUi(wchar_t *title, char *name, char *family_name, UINT64 current_date, UINT current_build, UINT current_ver, char *client_id, bool use_suppress_flag);
void FreeUpdateUi(WINUI_UPDATE *u);
+void DisableUpdateUi(WINUI_UPDATE *u);
void LoadUpdateUiSetting(WINUI_UPDATE *u, UPDATE_CLIENT_SETTING *s);
void SaveUpdateUiSetting(WINUI_UPDATE *u, UPDATE_CLIENT_SETTING *s);
void UpdateNotifyProcUi(UPDATE_CLIENT *c, UINT latest_build, UINT64 latest_date, char *latest_ver, char *url, volatile bool *halt_flag, void *param);
diff --git a/src/CurrentBuild.txt b/src/CurrentBuild.txt
index 8f93466d..78fcba42 100644
--- a/src/CurrentBuild.txt
+++ b/src/CurrentBuild.txt
@@ -1,4 +1,4 @@
-BUILD_NUMBER 9473
+BUILD_NUMBER 9505
VERSION 410
BUILD_NAME beta
-BUILD_DATE 20140712_021433
+BUILD_DATE 20141003_175504
diff --git a/src/Mayaqua/Cfg.c b/src/Mayaqua/Cfg.c
index 0e208f4a..2a3eb34e 100644
--- a/src/Mayaqua/Cfg.c
+++ b/src/Mayaqua/Cfg.c
@@ -259,8 +259,26 @@ CFG_RW *NewCfgRwEx(FOLDER **root, char *cfg_name, bool dont_backup)
}
CFG_RW *NewCfgRwExW(FOLDER **root, wchar_t *cfg_name, bool dont_backup)
{
+ return NewCfgRwEx2W(root, cfg_name, dont_backup, NULL);
+}
+CFG_RW *NewCfgRwEx2A(FOLDER **root, char *cfg_name_a, bool dont_backup, char *template_name_a)
+{
+ CFG_RW *ret;
+ wchar_t *cfg_name_w = CopyStrToUni(cfg_name_a);
+ wchar_t *template_name_w = CopyStrToUni(template_name_a);
+
+ ret = NewCfgRwEx2W(root, cfg_name_w, dont_backup, template_name_w);
+
+ Free(cfg_name_w);
+ Free(template_name_w);
+
+ return ret;
+}
+CFG_RW *NewCfgRwEx2W(FOLDER **root, wchar_t *cfg_name, bool dont_backup, wchar_t *template_name)
+{
CFG_RW *rw;
FOLDER *f;
+ bool loaded_from_template = false;
// Validate arguments
if (cfg_name == NULL || root == NULL)
{
@@ -270,6 +288,18 @@ CFG_RW *NewCfgRwExW(FOLDER **root, wchar_t *cfg_name, bool dont_backup)
f = CfgReadW(cfg_name);
if (f == NULL)
{
+ // Load from template
+ if (UniIsEmptyStr(template_name) == false)
+ {
+ f = CfgReadW(template_name);
+ if (f != NULL)
+ {
+ loaded_from_template = true;
+
+ goto LABEL_CONTIUNE;
+ }
+ }
+
rw = ZeroMalloc(sizeof(CFG_RW));
rw->lock = NewLock();
rw->FileNameW = CopyUniStr(cfg_name);
@@ -281,10 +311,18 @@ CFG_RW *NewCfgRwExW(FOLDER **root, wchar_t *cfg_name, bool dont_backup)
return rw;
}
+LABEL_CONTIUNE:
rw = ZeroMalloc(sizeof(CFG_RW));
rw->FileNameW = CopyUniStr(cfg_name);
rw->FileName = CopyUniToStr(cfg_name);
- rw->Io = FileOpenW(cfg_name, false);
+ if (loaded_from_template == false)
+ {
+ rw->Io = FileOpenW(cfg_name, false);
+ }
+ else
+ {
+ rw->Io = FileCreateW(cfg_name);
+ }
rw->lock = NewLock();
*root = f;
diff --git a/src/Mayaqua/Cfg.h b/src/Mayaqua/Cfg.h
index bef81f40..229b6030 100644
--- a/src/Mayaqua/Cfg.h
+++ b/src/Mayaqua/Cfg.h
@@ -252,6 +252,8 @@ CFG_RW *NewCfgRw(FOLDER **root, char *cfg_name);
CFG_RW *NewCfgRwW(FOLDER **root, wchar_t *cfg_name);
CFG_RW *NewCfgRwEx(FOLDER **root, char *cfg_name, bool dont_backup);
CFG_RW *NewCfgRwExW(FOLDER **root, wchar_t *cfg_name, bool dont_backup);
+CFG_RW *NewCfgRwEx2W(FOLDER **root, wchar_t *cfg_name, bool dont_backup, wchar_t *template_name);
+CFG_RW *NewCfgRwEx2A(FOLDER **root, char *cfg_name_a, bool dont_backup, char *template_name_a);
UINT SaveCfgRw(CFG_RW *rw, FOLDER *f);
UINT SaveCfgRwEx(CFG_RW *rw, FOLDER *f, UINT revision_number);
void FreeCfgRw(CFG_RW *rw);
diff --git a/src/Mayaqua/Encrypt.c b/src/Mayaqua/Encrypt.c
index a3e5795d..fe6f1449 100644
--- a/src/Mayaqua/Encrypt.c
+++ b/src/Mayaqua/Encrypt.c
@@ -1805,6 +1805,77 @@ X *NewRootX(K *pub, K *priv, NAME *name, UINT days, X_SERIAL *serial)
return x2;
}
+// Create new X509 basic & extended key usage
+void AddKeyUsageX509(EXTENDED_KEY_USAGE *ex, int nid)
+{
+ ASN1_OBJECT *obj;
+ // Validate arguments
+ if (ex == NULL)
+ {
+ return;
+ }
+
+ obj = OBJ_nid2obj(nid);
+ if (obj != NULL)
+ {
+ sk_ASN1_OBJECT_push(ex, obj);
+ }
+}
+X509_EXTENSION *NewExtendedKeyUsageForX509()
+{
+ EXTENDED_KEY_USAGE *ex = sk_ASN1_OBJECT_new_null();
+ X509_EXTENSION *ret;
+
+ AddKeyUsageX509(ex, NID_server_auth);
+ AddKeyUsageX509(ex, NID_client_auth);
+ AddKeyUsageX509(ex, NID_code_sign);
+ AddKeyUsageX509(ex, NID_email_protect);
+ AddKeyUsageX509(ex, NID_ipsecEndSystem);
+ AddKeyUsageX509(ex, NID_ipsecTunnel);
+ AddKeyUsageX509(ex, NID_ipsecUser);
+ AddKeyUsageX509(ex, NID_time_stamp);
+ AddKeyUsageX509(ex, NID_OCSP_sign);
+
+ ret = X509V3_EXT_i2d(NID_ext_key_usage, 0, ex);
+
+ sk_ASN1_OBJECT_pop_free(ex, ASN1_OBJECT_free);
+
+ return ret;
+}
+void BitStringSetBit(ASN1_BIT_STRING *str, int bit)
+{
+ // Validate arguments
+ if (str == NULL)
+ {
+ return;
+ }
+
+ ASN1_BIT_STRING_set_bit(str, bit, 1);
+}
+X509_EXTENSION *NewBasicKeyUsageForX509()
+{
+ X509_EXTENSION *ret = NULL;
+ ASN1_BIT_STRING *str;
+
+ str = ASN1_BIT_STRING_new();
+ if (str != NULL)
+ {
+ BitStringSetBit(str, 0); // KU_DIGITAL_SIGNATURE
+ BitStringSetBit(str, 1); // KU_NON_REPUDIATION
+ BitStringSetBit(str, 2); // KU_KEY_ENCIPHERMENT
+ BitStringSetBit(str, 3); // KU_DATA_ENCIPHERMENT
+ //BitStringSetBit(str, 4); // KU_KEY_AGREEMENT
+ BitStringSetBit(str, 5); // KU_KEY_CERT_SIGN
+ BitStringSetBit(str, 6); // KU_CRL_SIGN
+
+ ret = X509V3_EXT_i2d(NID_key_usage, 0, str);
+
+ ASN1_BIT_STRING_free(str);
+ }
+
+ return ret;
+}
+
// Issue an X509 certificate
X509 *NewX509(K *pub, K *priv, X *ca, NAME *name, UINT days, X_SERIAL *serial)
{
@@ -1812,6 +1883,9 @@ X509 *NewX509(K *pub, K *priv, X *ca, NAME *name, UINT days, X_SERIAL *serial)
UINT64 notBefore, notAfter;
ASN1_TIME *t1, *t2;
X509_NAME *subject_name, *issuer_name;
+ X509_EXTENSION *ex = NULL;
+ X509_EXTENSION *eku = NULL;
+ X509_EXTENSION *busage = NULL;
// Validate arguments
if (pub == NULL || name == NULL || ca == NULL)
{
@@ -1892,6 +1966,29 @@ X509 *NewX509(K *pub, K *priv, X *ca, NAME *name, UINT days, X_SERIAL *serial)
s->length = serial->size;
}
+ /*
+ // Extensions
+ ex = X509V3_EXT_conf_nid(NULL, NULL, NID_basic_constraints, "critical,CA:TRUE");
+ X509_add_ext(x509, ex, -1);
+ X509_EXTENSION_free(ex);
+*/
+
+ // Basic usage
+ busage = NewBasicKeyUsageForX509();
+ if (busage != NULL)
+ {
+ X509_add_ext(x509, busage, -1);
+ X509_EXTENSION_free(busage);
+ }
+
+ // EKU
+ eku = NewExtendedKeyUsageForX509();
+ if (eku != NULL)
+ {
+ X509_add_ext(x509, eku, -1);
+ X509_EXTENSION_free(eku);
+ }
+
Lock(openssl_lock);
{
// Set the public key
@@ -1914,6 +2011,8 @@ X509 *NewRootX509(K *pub, K *priv, NAME *name, UINT days, X_SERIAL *serial)
ASN1_TIME *t1, *t2;
X509_NAME *subject_name, *issuer_name;
X509_EXTENSION *ex = NULL;
+ X509_EXTENSION *eku = NULL;
+ X509_EXTENSION *busage = NULL;
// Validate arguments
if (pub == NULL || name == NULL || priv == NULL)
{
@@ -2004,6 +2103,22 @@ X509 *NewRootX509(K *pub, K *priv, NAME *name, UINT days, X_SERIAL *serial)
X509_add_ext(x509, ex, -1);
X509_EXTENSION_free(ex);
+ // Basic usage
+ busage = NewBasicKeyUsageForX509();
+ if (busage != NULL)
+ {
+ X509_add_ext(x509, busage, -1);
+ X509_EXTENSION_free(busage);
+ }
+
+ // EKU
+ eku = NewExtendedKeyUsageForX509();
+ if (eku != NULL)
+ {
+ X509_add_ext(x509, eku, -1);
+ X509_EXTENSION_free(eku);
+ }
+
Lock(openssl_lock);
{
// Set the public key
@@ -4105,7 +4220,7 @@ CRYPT *NewCrypt(void *key, UINT size)
{
CRYPT *c = ZeroMalloc(sizeof(CRYPT));
- c->Rc4Key = ZeroMalloc(sizeof(struct rc4_key_st));
+ c->Rc4Key = Malloc(sizeof(struct rc4_key_st));
RC4_set_key(c->Rc4Key, size, (UCHAR *)key);
diff --git a/src/Mayaqua/Internat.c b/src/Mayaqua/Internat.c
index f2f75729..64e0d38c 100644
--- a/src/Mayaqua/Internat.c
+++ b/src/Mayaqua/Internat.c
@@ -3025,6 +3025,83 @@ wchar_t *UniReplaceFormatStringFor64(wchar_t *fmt)
return ret;
}
+// Get lines from a string
+UNI_TOKEN_LIST *UniGetLines(wchar_t *str)
+{
+ UINT i, len;
+ BUF *b = NULL;
+ LIST *o;
+ UNI_TOKEN_LIST *ret;
+ // Validate arguments
+ if (str == NULL)
+ {
+ return UniNullToken();
+ }
+
+ o = NewListFast(NULL);
+
+ len = UniStrLen(str);
+
+ b = NewBuf();
+
+ for (i = 0;i < len;i++)
+ {
+ wchar_t c = str[i];
+ bool f = false;
+
+ if (c == L'\r')
+ {
+ if (str[i + 1] == L'\n')
+ {
+ i++;
+ }
+ f = true;
+ }
+ else if (c == L'\n')
+ {
+ f = true;
+ }
+
+ if (f)
+ {
+ wchar_t zero = 0;
+ wchar_t *s;
+ WriteBuf(b, &zero, sizeof(wchar_t));
+
+ s = (wchar_t *)b->Buf;
+
+ Add(o, UniCopyStr(s));
+
+ ClearBuf(b);
+ }
+ else
+ {
+ WriteBuf(b, &c, sizeof(wchar_t));
+ }
+ }
+
+ if (true)
+ {
+ wchar_t zero = 0;
+ wchar_t *s;
+ WriteBuf(b, &zero, sizeof(wchar_t));
+
+ s = (wchar_t *)b->Buf;
+
+ Add(o, UniCopyStr(s));
+
+ ClearBuf(b);
+ }
+
+ FreeBuf(b);
+
+ ret = UniListToTokenList(o);
+
+ UniFreeStrList(o);
+
+ return ret;
+}
+
// Display the string on the screen
void UniPrintStr(wchar_t *string)
{
diff --git a/src/Mayaqua/Internat.h b/src/Mayaqua/Internat.h
index 07845b1d..602781f9 100644
--- a/src/Mayaqua/Internat.h
+++ b/src/Mayaqua/Internat.h
@@ -232,6 +232,7 @@ bool UniInStr(wchar_t *str, wchar_t *keyword);
bool UniInStrEx(wchar_t *str, wchar_t *keyword, bool case_sensitive);
void ClearUniStr(wchar_t *str, UINT str_size);
bool UniInChar(wchar_t *string, wchar_t c);
+UNI_TOKEN_LIST *UniGetLines(wchar_t *str);
#ifdef OS_UNIX
void GetCurrentCharSet(char *name, UINT size);
diff --git a/src/Mayaqua/Kernel.c b/src/Mayaqua/Kernel.c
index 880d883c..a13b0fc0 100644
--- a/src/Mayaqua/Kernel.c
+++ b/src/Mayaqua/Kernel.c
@@ -319,6 +319,21 @@ void MainteThreadList(LIST *o)
UnlockList(o);
}
+// Wait until all threads in the thread list will be stopped
+void WaitAllThreadsWillBeStopped(LIST *o)
+{
+ // Validate arguments
+ if (o == NULL)
+ {
+ return;
+ }
+
+ while (LIST_NUM(o) != 0)
+ {
+ SleepThread(100);
+ }
+}
+
// Stop all the threads in the thread list
void StopThreadList(LIST *o)
{
@@ -1934,8 +1949,14 @@ INT64 GetTimeDiffEx(SYSTEMTIME *basetime, bool local_time)
return 0;
}
+#ifndef OS_UNIX
Copy(&t1, localtime(&tmp), sizeof(struct tm));
Copy(&t2, gmtime(&tmp), sizeof(struct tm));
+#else // OS_UNIX
+ localtime_r(&tmp, &t1);
+ gmtime_r(&tmp, &t2);
+#endif // OS_UNIX
+
TmToSystem(&s1, &t1);
TmToSystem(&s2, &t2);
@@ -1970,8 +1991,14 @@ INT64 GetTimeDiff()
return 0;
}
+#ifndef OS_UNIX
Copy(&t1, localtime(&tmp), sizeof(struct tm));
Copy(&t2, gmtime(&tmp), sizeof(struct tm));
+#else // OS_UNIX
+ localtime_r(&tmp, &t1);
+ gmtime_r(&tmp, &t2);
+#endif // OS_UNIX
+
TmToSystem(&s1, &t1);
TmToSystem(&s2, &t2);
diff --git a/src/Mayaqua/Kernel.h b/src/Mayaqua/Kernel.h
index e6b4bd5f..e2e6399e 100644
--- a/src/Mayaqua/Kernel.h
+++ b/src/Mayaqua/Kernel.h
@@ -275,6 +275,7 @@ void DelThreadFromThreadList(LIST *o, THREAD *t);
void MainteThreadList(LIST *o);
void FreeThreadList(LIST *o);
void StopThreadList(LIST *o);
+void WaitAllThreadsWillBeStopped(LIST *o);
#endif // KERNEL_H
diff --git a/src/Mayaqua/MayaType.h b/src/Mayaqua/MayaType.h
index 75d3b954..a98025d4 100644
--- a/src/Mayaqua/MayaType.h
+++ b/src/Mayaqua/MayaType.h
@@ -344,8 +344,10 @@ typedef UINT_PTR SOCKET;
#define OSTYPE_WINDOWS_SERVER_8 2710 // Windows Server 2012
#define OSTYPE_WINDOWS_81 2701 // Windows 8.1
#define OSTYPE_WINDOWS_SERVER_81 2711 // Windows Server 2012 R2
-#define OSTYPE_WINDOWS_9 2800 // Windows 9
-#define OSTYPE_WINDOWS_SERVER_9 2810 // Windows Server 9
+#define OSTYPE_WINDOWS_10 2702 // Windows 10
+#define OSTYPE_WINDOWS_SERVER_10 2712 // Windows Server 10
+#define OSTYPE_WINDOWS_11 2800 // Windows 11 or later
+#define OSTYPE_WINDOWS_SERVER_11 2810 // Windows Server 11 or later
#define OSTYPE_UNIX_UNKNOWN 3000 // Unknown UNIX
#define OSTYPE_LINUX 3100 // Linux
#define OSTYPE_SOLARIS 3200 // Solaris
diff --git a/src/Mayaqua/Mayaqua.h b/src/Mayaqua/Mayaqua.h
index 640faa76..0ee1d502 100644
--- a/src/Mayaqua/Mayaqua.h
+++ b/src/Mayaqua/Mayaqua.h
@@ -218,6 +218,13 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, char *CmdLine, int CmdShow)
#define USE_INTEL_AESNI_LIBRARY
#endif
+// Determine the performance / memory strategy
+#if (defined(CPU_X86) || defined(CPU_X64) || defined(CPU_X86_X64) || defined(CPU_SPARC) || defined(CPU_SPARC64) || defined(OS_WIN32) || defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(i386) || defined(__i386) || defined(__i386__) || defined(__ia64__) || defined(__IA64__) || defined(_IA64))
+#define USE_STRATEGY_PERFORMACE
+#else
+#define USE_STRATEGY_LOW_MEMORY
+#endif
+
// Macro that displays the current time
#ifdef WIN32
#define WHEN if (IsDebug()){WHERE; MsPrintTick();}
diff --git a/src/Mayaqua/Memory.c b/src/Mayaqua/Memory.c
index 4e1f332b..9171c410 100644
--- a/src/Mayaqua/Memory.c
+++ b/src/Mayaqua/Memory.c
@@ -129,11 +129,60 @@
#define FIFO_INIT_MEM_SIZE 4096
#define FIFO_REALLOC_MEM_SIZE (65536 * 10) // Exquisite value
-#define FIFO_REALLOC_MEM_SIZE_SMALL 65536
#define INIT_NUM_RESERVED 32
-static UINT fifo_default_realloc_mem_size = FIFO_REALLOC_MEM_SIZE;
+static UINT fifo_current_realloc_mem_size = FIFO_REALLOC_MEM_SIZE;
+
+// Check whether the specified key item is in the hash list
+bool IsInHashListKey(HASH_LIST *h, UINT key)
+{
+ // Validate arguments
+ if (h == NULL || key == 0)
+ {
+ return false;
+ }
+
+ if (HashListKeyToPointer(h, key) == NULL)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+// Search the item in the hash list with the key
+void *HashListKeyToPointer(HASH_LIST *h, UINT key)
+{
+ UINT num, i;
+ void **pp;
+ void *ret = NULL;
+ // Validate arguments
+ if (h == NULL || key == 0)
+ {
+ return NULL;
+ }
+
+ pp = HashListToArray(h, &num);
+ if (pp == NULL)
+ {
+ return NULL;
+ }
+
+ for (i = 0;i < num;i++)
+ {
+ void *p = pp[i];
+
+ if (POINTER_TO_KEY(p) == key)
+ {
+ ret = p;
+ }
+ }
+
+ Free(pp);
+
+ return ret;
+}
// Lock the hash list
void LockHashList(HASH_LIST *h)
@@ -223,17 +272,11 @@ void *SearchHash(HASH_LIST *h, void *t)
if (h->Entries[r] != NULL)
{
LIST *o = h->Entries[r];
- UINT i;
+ void *r = Search(o, t);
- for (i = 0;i < LIST_NUM(o);i++)
+ if (r != NULL)
{
- void *p = LIST_DATA(o, i);
-
- if (h->CompareProc(&p, &t) == 0)
- {
- ret = p;
- break;
- }
+ ret = r;
}
}
@@ -293,10 +336,10 @@ void AddHash(HASH_LIST *h, void *p)
if (h->Entries[r] == NULL)
{
- h->Entries[r] = NewListFast(NULL);
+ h->Entries[r] = NewListFast(h->CompareProc);
}
- Add(h->Entries[r], p);
+ Insert(h->Entries[r], p);
if (h->AllList != NULL)
{
@@ -1031,6 +1074,18 @@ void *PeekQueue(QUEUE *q)
return p;
}
+// Get the number of queued items
+UINT GetQueueNum(QUEUE *q)
+{
+ // Validate arguments
+ if (q == NULL)
+ {
+ return 0;
+ }
+
+ return q->num_item;
+}
+
// Get one
void *GetNext(QUEUE *q)
{
@@ -1105,6 +1160,21 @@ void InsertQueue(QUEUE *q, void *p)
q->num_item++;
+ /*{
+ static UINT max_num_item;
+ static UINT64 next_tick = 0;
+ UINT64 now = Tick64();
+
+ max_num_item = MAX(q->num_item, max_num_item);
+
+ if (next_tick == 0 || next_tick <= now)
+ {
+ next_tick = now + (UINT64)1000;
+
+ printf("max_queue = %u\n", max_num_item);
+ }
+ }*/
+
// KS
KS_INC(KS_INSERT_QUEUE_COUNT);
}
@@ -2327,9 +2397,26 @@ UINT ReadFifo(FIFO *f, void *p, UINT size)
f->pos = 0;
}
+ ShrinkFifoMemory(f);
+
+ // KS
+ KS_INC(KS_READ_FIFO_COUNT);
+
+ return read_size;
+}
+
+// Rearrange the memory
+void ShrinkFifoMemory(FIFO *f)
+{
+ // Validate arguments
+ if (f == NULL)
+ {
+ return;
+ }
+
// Rearrange the memory
- if (f->pos >= FIFO_INIT_MEM_SIZE &&
- f->memsize >= f->realloc_mem_size &&
+ if (f->pos >= FIFO_INIT_MEM_SIZE &&
+ f->memsize >= fifo_current_realloc_mem_size &&
(f->memsize / 2) > f->size)
{
void *new_p;
@@ -2345,11 +2432,6 @@ UINT ReadFifo(FIFO *f, void *p, UINT size)
f->p = new_p;
f->pos = 0;
}
-
- // KS
- KS_INC(KS_READ_FIFO_COUNT);
-
- return read_size;
}
// Write to the FIFO
@@ -2497,19 +2579,19 @@ void CleanupFifo(FIFO *f)
// Initialize the FIFO system
void InitFifo()
{
- fifo_default_realloc_mem_size = FIFO_REALLOC_MEM_SIZE;
+ fifo_current_realloc_mem_size = FIFO_REALLOC_MEM_SIZE;
}
// Create a FIFO
FIFO *NewFifo()
{
- return NewFifoEx(0, false);
+ return NewFifoEx(false);
}
FIFO *NewFifoFast()
{
- return NewFifoEx(0, true);
+ return NewFifoEx(true);
}
-FIFO *NewFifoEx(UINT realloc_mem_size, bool fast)
+FIFO *NewFifoEx(bool fast)
{
FIFO *f;
@@ -2531,13 +2613,6 @@ FIFO *NewFifoEx(UINT realloc_mem_size, bool fast)
f->memsize = FIFO_INIT_MEM_SIZE;
f->p = Malloc(FIFO_INIT_MEM_SIZE);
- if (realloc_mem_size == 0)
- {
- realloc_mem_size = fifo_default_realloc_mem_size;
- }
-
- f->realloc_mem_size = realloc_mem_size;
-
#ifndef DONT_USE_KERNEL_STATUS
// TrackNewObj(POINTER_TO_UINT64(f), "FIFO", 0);
#endif // DONT_USE_KERNEL_STATUS
@@ -2549,20 +2624,20 @@ FIFO *NewFifoEx(UINT realloc_mem_size, bool fast)
}
// Get the default memory reclaiming size of the FIFO
-UINT GetFifoDefaultReallocMemSize()
+UINT GetFifoCurrentReallocMemSize()
{
- return fifo_default_realloc_mem_size;
+ return fifo_current_realloc_mem_size;
}
// Set the default memory reclaiming size of the FIFO
-void SetFifoDefaultReallocMemSize(UINT size)
+void SetFifoCurrentReallocMemSize(UINT size)
{
if (size == 0)
{
size = FIFO_REALLOC_MEM_SIZE;
}
- fifo_default_realloc_mem_size = size;
+ fifo_current_realloc_mem_size = size;
}
// Read a buffer from a file
@@ -3743,12 +3818,6 @@ char B64_CharToCode(char c)
return 0;
}
-// High-speed Malloc (currently not implemented)
-void *MallocFast(UINT size)
-{
- return Malloc(size);
-}
-
// Malloc
void *Malloc(UINT size)
{
@@ -3899,12 +3968,6 @@ void *ZeroMallocEx(UINT size, bool zero_clear_when_free)
Zero(p, size);
return p;
}
-void *ZeroMallocFast(UINT size)
-{
- void *p = MallocFast(size);
- Zero(p, size);
- return p;
-}
// Memory allocation
void *InternalMalloc(UINT size)
diff --git a/src/Mayaqua/Memory.h b/src/Mayaqua/Memory.h
index 52c098c6..68257a2c 100644
--- a/src/Mayaqua/Memory.h
+++ b/src/Mayaqua/Memory.h
@@ -114,6 +114,10 @@
#ifndef MEMORY_H
#define MEMORY_H
+// MallocFast (not implemented)
+#define MallocFast Malloc
+#define ZeroMallocFast ZeroMalloc
+
// Memory size that can be passed to the kernel at a time
#define MAX_SEND_BUF_MEM_SIZE (10 * 1024 * 1024)
@@ -154,7 +158,6 @@ struct FIFO
LOCK *lock;
void *p;
UINT pos, size, memsize;
- UINT realloc_mem_size;
UINT64 total_read_size;
UINT64 total_write_size;
};
@@ -214,7 +217,7 @@ struct SHARED_BUFFER
// Macro
#define LIST_DATA(o, i) (((o) != NULL) ? ((o)->p[(i)]) : NULL)
#define LIST_NUM(o) (((o) != NULL) ? (o)->num_item : 0)
-
+#define HASH_LIST_NUM(o) (((o) != NULL) ? (o)->NumItems : 0)
// Function pointer type to get a hash function
typedef UINT (GET_HASH)(void *p);
@@ -244,6 +247,8 @@ UINT CalcHashForHashList(HASH_LIST *h, void *p);
void **HashListToArray(HASH_LIST *h, UINT *num);
void LockHashList(HASH_LIST *h);
void UnlockHashList(HASH_LIST *h);
+bool IsInHashListKey(HASH_LIST *h, UINT key);
+void *HashListKeyToPointer(HASH_LIST *h, UINT key);
LIST *NewCandidateList();
void FreeCandidateList(LIST *o);
@@ -254,9 +259,7 @@ LIST *BufToCandidate(BUF *b);
void *Malloc(UINT size);
void *MallocEx(UINT size, bool zero_clear_when_free);
-void *MallocFast(UINT size);
void *ZeroMalloc(UINT size);
-void *ZeroMallocFast(UINT size);
void *ZeroMallocEx(UINT size, bool zero_clear_when_free);
void *ReAlloc(void *addr, UINT size);
void Free(void *addr);
@@ -333,6 +336,7 @@ bool CompareBuf(BUF *b1, BUF *b2);
UINT PeekFifo(FIFO *f, void *p, UINT size);
UINT ReadFifo(FIFO *f, void *p, UINT size);
+void ShrinkFifoMemory(FIFO *f);
UCHAR *GetFifoPointer(FIFO *f);
UCHAR *FifoPtr(FIFO *f);
void WriteFifo(FIFO *f, void *p, UINT size);
@@ -344,10 +348,10 @@ void ReleaseFifo(FIFO *f);
void CleanupFifo(FIFO *f);
FIFO *NewFifo();
FIFO *NewFifoFast();
-FIFO *NewFifoEx(UINT realloc_mem_size, bool fast);
+FIFO *NewFifoEx(bool fast);
void InitFifo();
-UINT GetFifoDefaultReallocMemSize();
-void SetFifoDefaultReallocMemSize(UINT size);
+UINT GetFifoCurrentReallocMemSize();
+void SetFifoCurrentReallocMemSize(UINT size);
void *Search(LIST *o, void *target);
void Sort(LIST *o);
@@ -416,6 +420,7 @@ void ReleaseQueue(QUEUE *q);
void CleanupQueue(QUEUE *q);
QUEUE *NewQueue();
QUEUE *NewQueueFast();
+UINT GetQueueNum(QUEUE *q);
SK *NewSk();
SK *NewSkEx(bool no_compact);
diff --git a/src/Mayaqua/Microsoft.c b/src/Mayaqua/Microsoft.c
index ddaa8dc7..dbbaa158 100644
--- a/src/Mayaqua/Microsoft.c
+++ b/src/Mayaqua/Microsoft.c
@@ -8729,6 +8729,35 @@ bool MsIsWindows7()
return false;
}
+// Determine whether it's Windows 10 or later
+bool MsIsWindows10()
+{
+ OS_INFO *info = GetOsInfo();
+
+ if (info == NULL)
+ {
+ return false;
+ }
+
+ if (OS_IS_WINDOWS_NT(info->OsType))
+ {
+ if (GET_KETA(info->OsType, 100) == 7)
+ {
+ if (GET_KETA(info->OsType, 1) >= 2)
+ {
+ return true;
+ }
+ }
+
+ if (GET_KETA(info->OsType, 100) >= 8)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
// Determine whether it's Windows 8.1 or later
bool MsIsWindows81()
{
diff --git a/src/Mayaqua/Microsoft.h b/src/Mayaqua/Microsoft.h
index d882b6ff..e8683fc9 100644
--- a/src/Mayaqua/Microsoft.h
+++ b/src/Mayaqua/Microsoft.h
@@ -995,6 +995,7 @@ bool MsIsIA64();
void *MsDisableWow64FileSystemRedirection();
void MsRestoreWow64FileSystemRedirection(void *p);
void MsSetWow64FileSystemRedirectionEnable(bool enable);
+bool MsIsWindows10();
bool MsIsWindows81();
bool MsIsWindows8();
bool MsIsWindows7();
diff --git a/src/Mayaqua/Network.c b/src/Mayaqua/Network.c
index b9a55330..b09c6ee1 100644
--- a/src/Mayaqua/Network.c
+++ b/src/Mayaqua/Network.c
@@ -4281,7 +4281,7 @@ void RUDPGetRegisterHostNameByIP(char *dst, UINT size, IP *ip)
StrLower(tmp);
Format(dst, size,
(IsUseAlternativeHostname() ? UDP_NAT_T_SERVER_TAG_ALT : UDP_NAT_T_SERVER_TAG),
- tmp[0], tmp[1], tmp[2], tmp[3]);
+ tmp[2], tmp[3]);
if (false)
@@ -9302,6 +9302,12 @@ void UnixInitAsyncSocket(SOCK *sock)
{
UnixSetSocketNonBlockingMode(sock->socket, true);
}
+
+ if (sock->ssl != NULL && sock->ssl->s3 != NULL)
+ {
+ sock->Ssl_Init_Async_SendAlert[0] = sock->ssl->s3->send_alert[0];
+ sock->Ssl_Init_Async_SendAlert[1] = sock->ssl->s3->send_alert[1];
+ }
}
// Initializing the socket library
@@ -13139,6 +13145,15 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
e = SSL_get_error(ssl, ret);
if (e == SSL_ERROR_WANT_READ || e == SSL_ERROR_WANT_WRITE || e == SSL_ERROR_SSL)
{
+ if (e == SSL_ERROR_SSL &&
+ sock->ssl->s3->send_alert[0] == SSL3_AL_FATAL &&
+ sock->ssl->s3->send_alert[0] != sock->Ssl_Init_Async_SendAlert[0] &&
+ sock->ssl->s3->send_alert[1] != sock->Ssl_Init_Async_SendAlert[1])
+ {
+ Debug("%s %u SSL Fatal Error on ASYNC socket !!!\n", __FILE__, __LINE__);
+ Disconnect(sock);
+ return 0;
+ }
// Packet has not arrived yet, that is not to be read
return SOCK_LATER;
}
@@ -13202,6 +13217,7 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
// Successful reception
sock->RecvSize += (UINT64)ret;
sock->RecvNum++;
+
return (UINT)ret;
}
if (ret == 0)
@@ -13215,6 +13231,16 @@ UINT SecureRecv(SOCK *sock, void *data, UINT size)
{
if (e == SSL_ERROR_WANT_READ || e == SSL_ERROR_WANT_WRITE || e == SSL_ERROR_SSL)
{
+ if (e == SSL_ERROR_SSL &&
+ sock->ssl->s3->send_alert[0] == SSL3_AL_FATAL &&
+ sock->ssl->s3->send_alert[0] != sock->Ssl_Init_Async_SendAlert[0] &&
+ sock->ssl->s3->send_alert[1] != sock->Ssl_Init_Async_SendAlert[1])
+ {
+ Debug("%s %u SSL Fatal Error on ASYNC socket !!!\n", __FILE__, __LINE__);
+ Disconnect(sock);
+ return 0;
+ }
+
// Packet has not yet arrived
return SOCK_LATER;
}
@@ -14220,24 +14246,6 @@ void Disconnect(SOCK *sock)
sock->ssl_ctx = NULL;
}
sock->Connected = false;
- // Release the certificate
- if (sock->RemoteX != NULL)
- {
- FreeX(sock->RemoteX);
- sock->RemoteX = NULL;
- }
- if (sock->LocalX != NULL)
- {
- FreeX(sock->LocalX);
- sock->LocalX = NULL;
- }
-
- // Cipher algorithm name
- if (sock->CipherName != NULL)
- {
- Free(sock->CipherName);
- sock->CipherName = NULL;
- }
sock->SecureMode = false;
}
}
@@ -14957,7 +14965,7 @@ SOCK *ConnectEx(char *hostname, UINT port, UINT timeout)
}
SOCK *ConnectEx2(char *hostname, UINT port, UINT timeout, bool *cancel_flag)
{
- return ConnectEx3(hostname, port, timeout, cancel_flag, NULL, NULL, false, false, false);
+ return ConnectEx3(hostname, port, timeout, cancel_flag, NULL, NULL, false, false, true);
}
SOCK *ConnectEx3(char *hostname, UINT port, UINT timeout, bool *cancel_flag, char *nat_t_svc_name, UINT *nat_t_error_code, bool try_start_ssl, bool ssl_no_tls, bool no_get_hostname)
{
@@ -15824,6 +15832,25 @@ void CleanupSock(SOCK *s)
}
#endif // OS_WIN32
+ // Release the certificate
+ if (s->RemoteX != NULL)
+ {
+ FreeX(s->RemoteX);
+ s->RemoteX = NULL;
+ }
+ if (s->LocalX != NULL)
+ {
+ FreeX(s->LocalX);
+ s->LocalX = NULL;
+ }
+
+ // Cipher algorithm name
+ if (s->CipherName != NULL)
+ {
+ Free(s->CipherName);
+ s->CipherName = NULL;
+ }
+
Free(s->WaitToUseCipher);
DeleteLock(s->lock);
DeleteLock(s->ssl_lock);
diff --git a/src/Mayaqua/Network.h b/src/Mayaqua/Network.h
index 534306fc..d5a6c59d 100644
--- a/src/Mayaqua/Network.h
+++ b/src/Mayaqua/Network.h
@@ -304,6 +304,7 @@ struct SOCK
bool IsReverseAcceptedSocket; // Whether it is a reverse socket
IP Reverse_MyServerGlobalIp; // Self global IP address when using the reverse socket
UINT Reverse_MyServerPort; // Self port number when using the reverse socket
+ UCHAR Ssl_Init_Async_SendAlert[2]; // Initial state of SSL send_alert
#ifdef ENABLE_SSL_LOGGING
// SSL Logging (for debug)
@@ -740,8 +741,8 @@ struct RUDP_SESSION
};
// NAT Traversal Server Information
-#define UDP_NAT_T_SERVER_TAG "x%c.x%c.x%c.x%c.servers.nat-traversal.softether-network.net."
-#define UDP_NAT_T_SERVER_TAG_ALT "x%c.x%c.x%c.x%c.servers.nat-traversal.uxcom.jp."
+#define UDP_NAT_T_SERVER_TAG "x%c.x%c.servers.nat-traversal.softether-network.net."
+#define UDP_NAT_T_SERVER_TAG_ALT "x%c.x%c.servers.nat-traversal.uxcom.jp."
#define UDP_NAT_T_PORT 5004
// Related to processing to get the IP address of the NAT-T server
diff --git a/src/Mayaqua/OS.c b/src/Mayaqua/OS.c
index ffafc51c..6f5275d9 100644
--- a/src/Mayaqua/OS.c
+++ b/src/Mayaqua/OS.c
@@ -197,10 +197,14 @@ char *OsTypeToStr(UINT type)
return "Windows 8.1\0\n";
case OSTYPE_WINDOWS_SERVER_81:
return "Windows Server 2012 R2\0\n";
- case OSTYPE_WINDOWS_9:
- return "Windows 8.2 or later\0\n";
- case OSTYPE_WINDOWS_SERVER_9:
- return "Windows Server 8.2 or later\0\n";
+ case OSTYPE_WINDOWS_10:
+ return "Windows 10\0\n";
+ case OSTYPE_WINDOWS_SERVER_10:
+ return "Windows Server 10\0\n";
+ case OSTYPE_WINDOWS_11:
+ return "Windows 11 or later\0\n";
+ case OSTYPE_WINDOWS_SERVER_11:
+ return "Windows Server 11 or later\0\n";
case OSTYPE_UNIX_UNKNOWN:
return "UNIX System\0\n";
case OSTYPE_LINUX:
diff --git a/src/Mayaqua/TcpIp.c b/src/Mayaqua/TcpIp.c
index 5cb318ee..83e3e226 100644
--- a/src/Mayaqua/TcpIp.c
+++ b/src/Mayaqua/TcpIp.c
@@ -2183,7 +2183,7 @@ bool ParsePacketL2Ex(PKT *p, UCHAR *buf, UINT size, bool no_l3)
b2 = false;
}
}
- if (b1 || b2 || (Cmp(p->MacHeader->SrcAddress, p->MacHeader->DestAddress, 6) == 0))
+ if (b1 || b2 || (memcmp(p->MacHeader->SrcAddress, p->MacHeader->DestAddress, 6) == 0))
{
p->InvalidSourcePacket = true;
}
diff --git a/src/Mayaqua/Unix.c b/src/Mayaqua/Unix.c
index 587baf71..0d077c44 100644
--- a/src/Mayaqua/Unix.c
+++ b/src/Mayaqua/Unix.c
@@ -966,6 +966,24 @@ void *UnixNewSingleInstance(char *instance_name)
}
}
+// Set the high oom score
+void UnixSetHighOomScore()
+{
+ IO *o;
+ char tmp[256];
+
+ sprintf(tmp, "/proc/%u/oom_score_adj", getpid());
+
+ o = UnixFileCreate(tmp);
+ if (o != NULL)
+ {
+ char tmp[128];
+ sprintf(tmp, "%u\n", 800);
+ UnixFileWrite(o, tmp, strlen(tmp));
+ UnixFileClose(o, false);
+ }
+}
+
// Raise the priority of the process
void UnixSetHighPriority()
{
@@ -2139,10 +2157,24 @@ void UnixSigChldHandler(int sig)
signal(SIGCHLD, UnixSigChldHandler);
}
+// Disable core dump
+void UnixDisableCoreDump()
+{
+#ifdef RLIMIT_CORE
+ UnixSetResourceLimit(RLIMIT_CORE, 0);
+#endif // RLIMIT_CORE
+}
+
// Initialize the library for UNIX
void UnixInit()
{
UNIXIO *o;
+ UINT64 max_memory = UNIX_MAX_MEMORY;
+
+ if (UnixIs64BitRlimSupported())
+ {
+ max_memory = UNIX_MAX_MEMORY_64;
+ }
UnixInitSolarisSleep();
@@ -2154,11 +2186,11 @@ void UnixInit()
current_process_id = getpid();
#ifdef RLIMIT_CORE
- UnixSetResourceLimit(RLIMIT_CORE, UNIX_MAX_MEMORY);
+ UnixSetResourceLimit(RLIMIT_CORE, max_memory);
#endif // RLIMIT_CORE
#ifdef RLIMIT_DATA
- UnixSetResourceLimit(RLIMIT_DATA, UNIX_MAX_MEMORY);
+ UnixSetResourceLimit(RLIMIT_DATA, max_memory);
#endif // RLIMIT_DATA
#ifdef RLIMIT_NOFILE
@@ -2170,11 +2202,11 @@ void UnixInit()
#endif // RLIMIT_NOFILE
#ifdef RLIMIT_STACK
-// UnixSetResourceLimit(RLIMIT_STACK, UNIX_MAX_MEMORY);
+// UnixSetResourceLimit(RLIMIT_STACK, max_memory);
#endif // RLIMIT_STACK
#ifdef RLIMIT_RSS
- UnixSetResourceLimit(RLIMIT_RSS, UNIX_MAX_MEMORY);
+ UnixSetResourceLimit(RLIMIT_RSS, max_memory);
#endif // RLIMIT_RSS
#ifdef RLIMIT_LOCKS
@@ -2182,7 +2214,7 @@ void UnixInit()
#endif // RLIMIT_LOCKS
#ifdef RLIMIT_MEMLOCK
- UnixSetResourceLimit(RLIMIT_MEMLOCK, UNIX_MAX_MEMORY);
+ UnixSetResourceLimit(RLIMIT_MEMLOCK, max_memory);
#endif // RLIMIT_MEMLOCK
#ifdef RLIMIT_NPROC
@@ -2226,27 +2258,46 @@ void UnixFree()
}
// Adjust the upper limit of resources that may be occupied
-void UnixSetResourceLimit(UINT id, UINT value)
+void UnixSetResourceLimit(UINT id, UINT64 value)
{
struct rlimit t;
- UINT hard_limit;
+ UINT64 hard_limit;
+
+ if (UnixIs64BitRlimSupported() == false)
+ {
+ if (value > (UINT64)4294967295ULL)
+ {
+ value = (UINT64)4294967295ULL;
+ }
+ }
Zero(&t, sizeof(t));
getrlimit(id, &t);
- hard_limit = t.rlim_max;
+ hard_limit = (UINT64)t.rlim_max;
Zero(&t, sizeof(t));
- t.rlim_cur = MIN(value, hard_limit);
- t.rlim_max = hard_limit;
+ t.rlim_cur = (rlim_t)MIN(value, hard_limit);
+ t.rlim_max = (rlim_t)hard_limit;
setrlimit(id, &t);
Zero(&t, sizeof(t));
- t.rlim_cur = value;
- t.rlim_max = value;
+ t.rlim_cur = (rlim_t)value;
+ t.rlim_max = (rlim_t)value;
setrlimit(id, &t);
}
+// Is the rlim_t type 64-bit?
+bool UnixIs64BitRlimSupported()
+{
+ if (sizeof(rlim_t) >= 8)
+ {
+ return true;
+ }
+
+ return false;
+}
+
// Generate the PID file name
void UnixGenPidFileName(char *name, UINT size)
{
diff --git a/src/Mayaqua/Unix.h b/src/Mayaqua/Unix.h
index f6229429..70ecb5e4 100644
--- a/src/Mayaqua/Unix.h
+++ b/src/Mayaqua/Unix.h
@@ -122,6 +122,7 @@
#define UNIX_LINUX_MAX_THREADS 200000000 // Maximum number of threads
#define UNIX_MAX_LOCKS 65536 // Maximum number of locks
#define UNIX_MAX_MEMORY (2147483648UL) // Maximum memory capacity
+#define UNIX_MAX_MEMORY_64 ((UINT64)((UINT64)65536ULL * (UINT64)2147483647ULL)) // Maximum memory capacity (64-bit)
#define UNIX_MAX_FD (655360) // Maximum number of FDs
#define UNIX_MAX_FD_MACOS (10000) // Maximum number of FDs (Mac OS X)
#define MAXIMUM_WAIT_OBJECTS 64 // Maximum number of select
@@ -201,6 +202,7 @@ void UnixAlert(char *msg, char *caption);
void UnixAlertW(wchar_t *msg, wchar_t *caption);
char *UnixGetProductId();
void UnixSetHighPriority();
+void UnixSetHighOomScore();
void UnixRestorePriority();
void *UnixNewSingleInstance(char *instance_name);
void UnixFreeSingleInstance(void *data);
@@ -211,12 +213,14 @@ void UnixExecSilent(char *cmd);
void UnixDisableInterfaceOffload(char *name);
void UnixSetEnableKernelEspProcessing(bool b);
+void UnixDisableCoreDump();
void UnixSetThreadPriorityRealtime();
void UnixSetThreadPriorityLow();
void UnixSetThreadPriorityHigh();
void UnixSetThreadPriorityIdle();
void UnixRestoreThreadPriority();
-void UnixSetResourceLimit(UINT id, UINT value);
+void UnixSetResourceLimit(UINT id, UINT64 value);
+bool UnixIs64BitRlimSupported();
UINT64 UnixGetTick64();
void UnixSigChldHandler(int sig);
void UnixCloseIO();
diff --git a/src/Mayaqua/Win32.c b/src/Mayaqua/Win32.c
index 588d13b8..eefcc772 100644
--- a/src/Mayaqua/Win32.c
+++ b/src/Mayaqua/Win32.c
@@ -1407,17 +1407,30 @@ UINT Win32GetOsType()
return OSTYPE_WINDOWS_SERVER_81;
}
}
+ else if (os.dwMajorVersion == 6 && os.dwMinorVersion == 4)
+ {
+ if (os.wProductType == VER_NT_WORKSTATION)
+ {
+ // Windows 10
+ return OSTYPE_WINDOWS_10;
+ }
+ else
+ {
+ // Windows Server 10
+ return OSTYPE_WINDOWS_SERVER_10;
+ }
+ }
else
{
if (os.wProductType == VER_NT_WORKSTATION)
{
- // Windows 9?
- return OSTYPE_WINDOWS_9;
+ // Windows 11 or later
+ return OSTYPE_WINDOWS_11;
}
else
{
- // Windows Server 9?
- return OSTYPE_WINDOWS_SERVER_9;
+ // Windows Server 11 or later
+ return OSTYPE_WINDOWS_SERVER_11;
}
}
}
diff --git a/src/PenCore/PenCore.rc b/src/PenCore/PenCore.rc
index 7280de54..c78dd8e5 100644
--- a/src/PenCore/PenCore.rc
+++ b/src/PenCore/PenCore.rc
@@ -4252,7 +4252,7 @@ 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,111,ES_MULTILINE | ES_READONLY | WS_VSCROLL
- CONTROL "@B_AGREE",B_AGREE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,134,297,12
+ CONTROL "@B_AGREE",B_AGREE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,138,297,12
END
D_SW_WARNING DIALOGEX 0, 0, 323, 181
diff --git a/src/SeLow/SeLow.c b/src/SeLow/SeLow.c
index ee909f16..6931fdba 100644
--- a/src/SeLow/SeLow.c
+++ b/src/SeLow/SeLow.c
@@ -391,7 +391,7 @@ NTSTATUS SlDeviceOpenProc(DEVICE_OBJECT *device_object, IRP *irp)
p.Header.Size = NDIS_SIZEOF_NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
p.ProtocolId = NDIS_PROTOCOL_ID_DEFAULT;
p.fAllocateNetBuffer = true;
- p.ContextSize = 32;
+ p.ContextSize = 32 + sizeof(UINT32) * 12;
p.DataSize = SL_MAX_PACKET_SIZE;
f->NetBufferListPool = NdisAllocateNetBufferListPool(NULL, &p);
@@ -648,6 +648,7 @@ NTSTATUS SlDeviceReadProc(DEVICE_OBJECT *device_object, IRP *irp)
SlCopy(d->MacAddress, a->MacAddress, 6);
SlCopy(d->AdapterId, a->AdapterId, sizeof(a->AdapterId));
strcpy(d->FriendlyName, a->FriendlyName);
+ d->SupportsVLanHw = a->SupportVLan;
}
}
SlUnlockList(sl->AdapterList);
@@ -833,6 +834,9 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
UCHAR *packet_buf;
NET_BUFFER_LIST *nbl = NULL;
bool ok = false;
+ bool is_vlan = false;
+ UINT vlan_id = 0;
+ UINT vlan_user_priority = 0, vlan_can_format_id = 0;
if (packet_size > SL_MAX_PACKET_SIZE)
{
@@ -896,6 +900,32 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
NET_BUFFER_LIST_NEXT_NBL(nbl) = NULL;
+ // Determine if the packet is IEEE802.1Q tagged packet
+ if (dev->Adapter->SupportVLan && packet_size >= 18)
+ {
+ if (packet_buf[12] == 0x81 && packet_buf[13] == 0x00)
+ {
+ USHORT tag_us = 0;
+
+ ((UCHAR *)(&tag_us))[0] = packet_buf[15];
+ ((UCHAR *)(&tag_us))[1] = packet_buf[14];
+
+ vlan_id = tag_us & 0x0FFF;
+ vlan_user_priority = (tag_us >> 13) & 0x07;
+ vlan_can_format_id = (tag_us >> 12) & 0x01;
+
+ if (vlan_id != 0)
+ {
+ is_vlan = true;
+ }
+ }
+ }
+
+ if (is_vlan)
+ {
+ packet_size -= 4;
+ }
+
if (nb != NULL && OK(NdisRetreatNetBufferDataStart(nb, packet_size, 0, NULL)))
{
// Buffer copy
@@ -903,7 +933,15 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
if (dst != NULL)
{
- SlCopy(dst, packet_buf, packet_size);
+ if (is_vlan == false)
+ {
+ SlCopy(dst, packet_buf, packet_size);
+ }
+ else
+ {
+ SlCopy(dst, packet_buf, 12);
+ SlCopy(dst + 12, packet_buf + 16, packet_size + 4 - 16);
+ }
ok = true;
}
@@ -935,7 +973,25 @@ NTSTATUS SlDeviceWriteProc(DEVICE_OBJECT *device_object, IRP *irp)
nbl_tail = nbl;
- *((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl)) = f;
+ ((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[0] = f;
+
+ if (is_vlan == false)
+ {
+ NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = NULL;
+ }
+ else
+ {
+ NDIS_NET_BUFFER_LIST_8021Q_INFO qinfo;
+
+ qinfo.Value = &(((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[1]);
+ SlZero(qinfo.Value, sizeof(UINT32) * 12);
+
+ qinfo.TagHeader.VlanId = vlan_id;
+ qinfo.TagHeader.UserPriority = vlan_user_priority;
+ qinfo.TagHeader.CanonicalFormatId = vlan_can_format_id;
+
+ NET_BUFFER_LIST_INFO(nbl, Ieee8021QNetBufferListInfo) = qinfo.Value;
+ }
num_packets++;
}
@@ -1073,6 +1129,22 @@ NDIS_STATUS SlNdisBindAdapterExProc(NDIS_HANDLE protocol_driver_context, NDIS_HA
a->Lock = SlNewLock();
a->AdapterName = SlNewUnicodeFromUnicodeString(bind_parameters->AdapterName);
+/*
+ if (bind_parameters->MacOptions & NDIS_MAC_OPTION_8021Q_VLAN)
+ {
+ a->SupportVLan = true;
+ }
+
+ if (bind_parameters->TcpConnectionOffloadCapabilities != NULL)
+ {
+ if (bind_parameters->TcpConnectionOffloadCapabilities->Encapsulation & NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q ||
+ bind_parameters->TcpConnectionOffloadCapabilities->Encapsulation & NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB)
+ {
+ a->SupportVLan = true;
+ }
+ }
+*/
+
SlCopy(a->AdapterId, a->AdapterName->String.Buffer, MIN(sizeof(a->AdapterId) - sizeof(wchar_t), a->AdapterName->String.Length));
SlCopy(a->AdapterId, adapter_id_tag, sizeof(adapter_id_tag) - sizeof(wchar_t));
@@ -1485,6 +1557,8 @@ void SlNdisReceiveNetBufferListsProc(NDIS_HANDLE protocol_binding_context, NET_B
USHORT tag_us;
is_vlan = true;
+ a->SupportVLan = true;
+
tag_us = (qinfo.TagHeader.UserPriority & 0x07 << 13) |
(qinfo.TagHeader.CanonicalFormatId & 0x01 << 12) |
(qinfo.TagHeader.VlanId & 0x0FFF);
@@ -1600,7 +1674,7 @@ void SlNdisSendNetBufferListsCompleteProc(NDIS_HANDLE protocol_binding_context,
}
// Get a file context
- f = *((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl));
+ f = ((void **)NET_BUFFER_LIST_CONTEXT_DATA_START(nbl))[0];
nbl = NET_BUFFER_LIST_NEXT_NBL(nbl);
NET_BUFFER_LIST_NEXT_NBL(current_nbl) = NULL;
@@ -1921,51 +1995,6 @@ NDIS_STRING *SlGetUnicode(SL_UNICODE *u)
return &u->String;
}
-// Create a packet buffer
-SL_PACKET_BUFFER *SlNewPacketBuffer()
-{
- SL_PACKET_BUFFER *p;
- NET_BUFFER_LIST_POOL_PARAMETERS p1;
-
- // Memory allocation
- p = SlZeroMalloc(sizeof(SL_PACKET_BUFFER));
-
- // Create a NET_BUFFER_LIST pool
- SlZero(&p1, sizeof(p1));
- p1.Header.Type = NDIS_OBJECT_TYPE_DEFAULT;
- p1.Header.Revision = NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
- p1.Header.Size = NDIS_SIZEOF_NET_BUFFER_LIST_POOL_PARAMETERS_REVISION_1;
- p1.ProtocolId = NDIS_PROTOCOL_ID_DEFAULT;
- p1.fAllocateNetBuffer = TRUE;
- p1.DataSize = SL_MAX_PACKET_SIZE;
-
- p->NetBufferListPool = NdisAllocateNetBufferListPool(NULL, &p1);
-
- // Create a NET_BUFFER_LIST
- p->NetBufferList = NdisAllocateNetBufferList(p->NetBufferListPool, 0, 0);
-
- return p;
-}
-
-// Release the packet buffer
-void SlFreePacketBuffer(SL_PACKET_BUFFER *p)
-{
- // Validate arguments
- if (p == NULL)
- {
- return;
- }
-
- // Release the NET_BUFFER_LIST
- NdisFreeNetBufferList(p->NetBufferList);
-
- // Release the NET_BUFFER_LIST pool
- NdisFreeNetBufferListPool(p->NetBufferListPool);
-
- // Release the memory
- SlFree(p);
-}
-
// Create a list
SL_LIST *SlNewList()
{
diff --git a/src/SeLow/SeLow.h b/src/SeLow/SeLow.h
index 85116db9..9f1c3c4a 100644
--- a/src/SeLow/SeLow.h
+++ b/src/SeLow/SeLow.h
@@ -301,6 +301,7 @@ typedef struct SL_ADAPTER
volatile UINT NumPendingSendPackets; // Number of packets being transmitted
UCHAR TmpBuffer[SL_MAX_PACKET_SIZE]; // Temporally buffer size
char FriendlyName[256]; // Adapter name
+ bool SupportVLan; // Supporting VLAN by hardware
SL_DEVICE *Device; // Handle of the device
} SL_ADAPTER;
@@ -367,8 +368,6 @@ SL_UNICODE *SlNewUnicode(char *str);
SL_UNICODE *SlNewUnicodeFromUnicodeString(UNICODE_STRING *src);
void SlFreeUnicode(SL_UNICODE *u);
NDIS_STRING *SlGetUnicode(SL_UNICODE *u);
-SL_PACKET_BUFFER *SlNewPacketBuffer();
-void SlFreePacketBuffer(SL_PACKET_BUFFER *p);
void SlCrash(UINT a, UINT b, UINT c, UINT d);
SL_LIST *SlNewList();
void SlAdd(SL_LIST *o, void *p);
diff --git a/src/SeLow/SeLowCommon.h b/src/SeLow/SeLowCommon.h
index cafa9f9a..b9cd1e8e 100644
--- a/src/SeLow/SeLowCommon.h
+++ b/src/SeLow/SeLowCommon.h
@@ -115,7 +115,7 @@
// Change this number every time functions are added or modified on the driver.
// As long as this number does not change, installation of SeLow during the update
// installation of the VPN Server / VPN Client / VPN Bridge is skipped.
-#define SL_VER 42
+#define SL_VER 43
// Constants
#define SL_MAX_PACKET_SIZE 1560
@@ -165,7 +165,8 @@ typedef struct SL_ADAPTER_INFO
UCHAR Padding1[2];
UINT MtuSize; // MTU size
char FriendlyName[256]; // Display name
- UCHAR Reserved[256]; // Reserved area
+ UINT SupportsVLanHw; // Supports VLAN by HW
+ UCHAR Reserved[256 - sizeof(UINT)]; // Reserved area
} SL_ADAPTER_INFO;
#define SL_MAX_ADAPTER_INFO_LIST_ENTRY 256
diff --git a/src/bin/hamcore/SeLow_x64.sys b/src/bin/hamcore/SeLow_x64.sys
index 18535f82..603a58ab 100644
--- a/src/bin/hamcore/SeLow_x64.sys
+++ b/src/bin/hamcore/SeLow_x64.sys
Binary files differ
diff --git a/src/bin/hamcore/SeLow_x86.sys b/src/bin/hamcore/SeLow_x86.sys
index 915fb49d..abafb268 100644
--- a/src/bin/hamcore/SeLow_x86.sys
+++ b/src/bin/hamcore/SeLow_x86.sys
Binary files differ
diff --git a/src/bin/hamcore/chain_certs.txt b/src/bin/hamcore/chain_certs.txt
deleted file mode 100644
index 4b2ad007..00000000
--- a/src/bin/hamcore/chain_certs.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-What is "chain_certs" directory?
---------------------------------
-
-If you are using a child SSL certificate file, which is issued by
-a CA (Certificate Authority), as the server certificate of VPN Server,
-you need to install X.509 format certificate files of the root
-certificate and all intermediate certificates on this "chain_certs"
-directory.
-
-If you don't know how to obtain root and intermediate certificate
-files of your certificate authority (CA), please refer to the CA's
-web site or contact support staffs of the CA.
-
-
-"chain_certs" ディレクトリã«ã¤ã„ã¦
-----------------------------------
-VPN Server ã«ç™»éŒ²ã™ã‚‹ SSL 証明書ãŒè¨¼æ˜Žæ©Ÿé–¢ (CA) ã«ã‚ˆã£ã¦ç™ºè¡Œã•ã‚ŒãŸã‚‚ã®ã§
-ã‚ã‚‹å ´åˆã¯ã€ã“ã® "chain_certs" ディレクトリ㫠X.509 証明書ã®ãƒ«ãƒ¼ãƒˆè¨¼æ˜Žæ›¸
-ãŠã‚ˆã³ä¸­é–“証明書ファイルをインストールã—ã¦ãã ã•ã„。
-
-ルート証明書ãŠã‚ˆã³ä¸­é–“証明書ファイルã®å–得方法ã¯ã€è¨¼æ˜Žæ©Ÿé–¢ (CA) ãŒç™ºè¡Œã—ã¦
-ã„ã‚‹ Web サイトをãŠèª­ã¿ã„ãŸã ãã‹ã€è¨¼æ˜Žæ©Ÿé–¢ (CA) ã®ã‚µãƒãƒ¼ãƒˆã«å•ã„åˆã‚ã›ã¦
-ãã ã•ã„。
-
diff --git a/src/bin/hamcore/inf/selow_x64/SeLow_x64.inf b/src/bin/hamcore/inf/selow_x64/SeLow_x64.inf
index d828a0b7..6b3ec2ca 100644
--- a/src/bin/hamcore/inf/selow_x64/SeLow_x64.inf
+++ b/src/bin/hamcore/inf/selow_x64/SeLow_x64.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = NetTrans
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_selow.cat
@@ -66,5 +66,5 @@ SeLow_Description = "A lightweight helper kernel-mode module for PacketiX VPN
-; Auto Generated 20140712_023530.474
+; Auto Generated 20141003_183142.008
diff --git a/src/bin/hamcore/inf/selow_x64/inf.cat b/src/bin/hamcore/inf/selow_x64/inf.cat
index 471aeccf..2999b87c 100644
--- a/src/bin/hamcore/inf/selow_x64/inf.cat
+++ b/src/bin/hamcore/inf/selow_x64/inf.cat
Binary files differ
diff --git a/src/bin/hamcore/inf/selow_x86/SeLow_x86.inf b/src/bin/hamcore/inf/selow_x86/SeLow_x86.inf
index a94b27d5..3644b823 100644
--- a/src/bin/hamcore/inf/selow_x86/SeLow_x86.inf
+++ b/src/bin/hamcore/inf/selow_x86/SeLow_x86.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = NetTrans
ClassGUID = {4D36E975-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_selow.cat
@@ -66,5 +66,5 @@ SeLow_Description = "A lightweight helper kernel-mode module for PacketiX VPN
-; Auto Generated 20140712_023339.916
+; Auto Generated 20141003_182654.801
diff --git a/src/bin/hamcore/inf/selow_x86/inf.cat b/src/bin/hamcore/inf/selow_x86/inf.cat
index 017df24c..b534068a 100644
--- a/src/bin/hamcore/inf/selow_x86/inf.cat
+++ b/src/bin/hamcore/inf/selow_x86/inf.cat
Binary files differ
diff --git a/src/bin/hamcore/inf/x64/INF_VPN.inf b/src/bin/hamcore/inf/x64/INF_VPN.inf
index 57b9a22f..93cfcda1 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN10.inf b/src/bin/hamcore/inf/x64/INF_VPN10.inf
index 02145e0a..c6c4eb75 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN10.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN10.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN10.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN100.inf b/src/bin/hamcore/inf/x64/INF_VPN100.inf
index f881fb18..94a58bf2 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN100.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN100.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN100.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN101.inf b/src/bin/hamcore/inf/x64/INF_VPN101.inf
index 0ac12c9f..6719835c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN101.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN101.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN101.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN102.inf b/src/bin/hamcore/inf/x64/INF_VPN102.inf
index 325c3808..de51a75a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN102.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN102.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN102.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN103.inf b/src/bin/hamcore/inf/x64/INF_VPN103.inf
index b7bfdd5e..a46ec999 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN103.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN103.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN103.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN104.inf b/src/bin/hamcore/inf/x64/INF_VPN104.inf
index a3b4c0db..dc4d5054 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN104.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN104.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN104.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN105.inf b/src/bin/hamcore/inf/x64/INF_VPN105.inf
index bb153c8c..b7dd83c1 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN105.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN105.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN105.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN106.inf b/src/bin/hamcore/inf/x64/INF_VPN106.inf
index 4faeea81..37cb081a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN106.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN106.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN106.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN107.inf b/src/bin/hamcore/inf/x64/INF_VPN107.inf
index b921c586..e77ff57c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN107.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN107.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN107.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN108.inf b/src/bin/hamcore/inf/x64/INF_VPN108.inf
index 325c7336..6f79738d 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN108.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN108.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN108.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN109.inf b/src/bin/hamcore/inf/x64/INF_VPN109.inf
index 43629865..f447c668 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN109.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN109.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN109.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN11.inf b/src/bin/hamcore/inf/x64/INF_VPN11.inf
index c006cb1f..7fb4dcf0 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN11.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN11.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN11.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN110.inf b/src/bin/hamcore/inf/x64/INF_VPN110.inf
index 7545ad2c..dbc327d9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN110.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN110.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN110.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN111.inf b/src/bin/hamcore/inf/x64/INF_VPN111.inf
index a1eeb8d2..c10e2d9b 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN111.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN111.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN111.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN112.inf b/src/bin/hamcore/inf/x64/INF_VPN112.inf
index 34a6d57e..c66075a4 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN112.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN112.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN112.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN113.inf b/src/bin/hamcore/inf/x64/INF_VPN113.inf
index cb04b8c1..a1c24e96 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN113.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN113.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN113.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN114.inf b/src/bin/hamcore/inf/x64/INF_VPN114.inf
index 5a40d60d..31153db4 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN114.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN114.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN114.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN115.inf b/src/bin/hamcore/inf/x64/INF_VPN115.inf
index 8e5914a3..1c00fc7c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN115.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN115.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN115.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN116.inf b/src/bin/hamcore/inf/x64/INF_VPN116.inf
index 90009177..f864c6fe 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN116.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN116.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN116.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN117.inf b/src/bin/hamcore/inf/x64/INF_VPN117.inf
index 8887db84..093ba097 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN117.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN117.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN117.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN118.inf b/src/bin/hamcore/inf/x64/INF_VPN118.inf
index 0c50b9b9..f5f47f47 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN118.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN118.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN118.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN119.inf b/src/bin/hamcore/inf/x64/INF_VPN119.inf
index 9391d944..885da9e0 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN119.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN119.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN119.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN12.inf b/src/bin/hamcore/inf/x64/INF_VPN12.inf
index e4e65ca7..8b441591 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN12.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN12.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN12.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN120.inf b/src/bin/hamcore/inf/x64/INF_VPN120.inf
index cde63579..2886b015 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN120.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN120.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN120.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN121.inf b/src/bin/hamcore/inf/x64/INF_VPN121.inf
index 7cae70c7..fac40bcf 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN121.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN121.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN121.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN122.inf b/src/bin/hamcore/inf/x64/INF_VPN122.inf
index 38d16abc..774a0fe0 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN122.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN122.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN122.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN123.inf b/src/bin/hamcore/inf/x64/INF_VPN123.inf
index 15a2111b..3546afcf 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN123.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN123.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN123.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN124.inf b/src/bin/hamcore/inf/x64/INF_VPN124.inf
index 4e08cc63..25763ce9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN124.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN124.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN124.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN125.inf b/src/bin/hamcore/inf/x64/INF_VPN125.inf
index d1430f4f..768a5ea5 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN125.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN125.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN125.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN126.inf b/src/bin/hamcore/inf/x64/INF_VPN126.inf
index 12d79105..c553bc2b 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN126.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN126.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN126.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN127.inf b/src/bin/hamcore/inf/x64/INF_VPN127.inf
index dbd84a71..087e706a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN127.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN127.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN127.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN13.inf b/src/bin/hamcore/inf/x64/INF_VPN13.inf
index 7a6d9c24..571d1d6c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN13.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN13.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN13.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN14.inf b/src/bin/hamcore/inf/x64/INF_VPN14.inf
index 79c9b39e..ee3ca3d5 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN14.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN14.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN14.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN15.inf b/src/bin/hamcore/inf/x64/INF_VPN15.inf
index 43704c3c..ca8936d9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN15.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN15.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN15.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN16.inf b/src/bin/hamcore/inf/x64/INF_VPN16.inf
index d40dcfb7..e082a79c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN16.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN16.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN16.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN17.inf b/src/bin/hamcore/inf/x64/INF_VPN17.inf
index fdc9b0e5..7bbf643d 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN17.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN17.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN17.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN18.inf b/src/bin/hamcore/inf/x64/INF_VPN18.inf
index 5ed5447e..15f38246 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN18.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN18.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN18.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN19.inf b/src/bin/hamcore/inf/x64/INF_VPN19.inf
index 795d15e8..76760b00 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN19.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN19.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN19.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN2.inf b/src/bin/hamcore/inf/x64/INF_VPN2.inf
index 14a55274..c3ca57b6 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN2.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN2.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN2.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN20.inf b/src/bin/hamcore/inf/x64/INF_VPN20.inf
index 623c78a0..51f0532d 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN20.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN20.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN20.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN21.inf b/src/bin/hamcore/inf/x64/INF_VPN21.inf
index ed3ca6dc..311d21e9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN21.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN21.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN21.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN22.inf b/src/bin/hamcore/inf/x64/INF_VPN22.inf
index 5b3fb05e..5a27ad12 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN22.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN22.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN22.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN23.inf b/src/bin/hamcore/inf/x64/INF_VPN23.inf
index ca4469b6..8b6f694f 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN23.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN23.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN23.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN24.inf b/src/bin/hamcore/inf/x64/INF_VPN24.inf
index 24108862..eb9b2f19 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN24.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN24.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN24.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN25.inf b/src/bin/hamcore/inf/x64/INF_VPN25.inf
index c2d11294..a62886e8 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN25.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN25.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN25.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN26.inf b/src/bin/hamcore/inf/x64/INF_VPN26.inf
index b7d50f27..0017e402 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN26.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN26.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN26.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN27.inf b/src/bin/hamcore/inf/x64/INF_VPN27.inf
index 46448dba..21b080d4 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN27.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN27.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN27.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN28.inf b/src/bin/hamcore/inf/x64/INF_VPN28.inf
index f40394ef..aa009550 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN28.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN28.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN28.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN29.inf b/src/bin/hamcore/inf/x64/INF_VPN29.inf
index 3467c6c9..35e0330f 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN29.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN29.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN29.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN3.inf b/src/bin/hamcore/inf/x64/INF_VPN3.inf
index d6195592..e7e06aa3 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN3.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN3.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN3.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN30.inf b/src/bin/hamcore/inf/x64/INF_VPN30.inf
index 934784c0..e61753c9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN30.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN30.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN30.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN31.inf b/src/bin/hamcore/inf/x64/INF_VPN31.inf
index 34c9c3cd..9c5b3828 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN31.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN31.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN31.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN32.inf b/src/bin/hamcore/inf/x64/INF_VPN32.inf
index 01a84bcb..d948be41 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN32.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN32.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN32.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN33.inf b/src/bin/hamcore/inf/x64/INF_VPN33.inf
index 8d14cce7..c2a9d4c7 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN33.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN33.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN33.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN34.inf b/src/bin/hamcore/inf/x64/INF_VPN34.inf
index 12a63c5c..43659051 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN34.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN34.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN34.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN35.inf b/src/bin/hamcore/inf/x64/INF_VPN35.inf
index 23088032..c1d661da 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN35.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN35.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN35.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN36.inf b/src/bin/hamcore/inf/x64/INF_VPN36.inf
index 11f716c8..742dcce2 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN36.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN36.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN36.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN37.inf b/src/bin/hamcore/inf/x64/INF_VPN37.inf
index 5060db17..652bb236 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN37.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN37.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN37.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN38.inf b/src/bin/hamcore/inf/x64/INF_VPN38.inf
index e6566dfa..313f25ca 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN38.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN38.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN38.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN39.inf b/src/bin/hamcore/inf/x64/INF_VPN39.inf
index 6353e52a..933468cc 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN39.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN39.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN39.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN4.inf b/src/bin/hamcore/inf/x64/INF_VPN4.inf
index fa124216..711ecdf1 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN4.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN4.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN4.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN40.inf b/src/bin/hamcore/inf/x64/INF_VPN40.inf
index dcf62caf..5661a4a3 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN40.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN40.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN40.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN41.inf b/src/bin/hamcore/inf/x64/INF_VPN41.inf
index 07586244..2f1185d8 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN41.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN41.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN41.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN42.inf b/src/bin/hamcore/inf/x64/INF_VPN42.inf
index 8c8bec70..be41cfde 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN42.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN42.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN42.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN43.inf b/src/bin/hamcore/inf/x64/INF_VPN43.inf
index 1b329a0e..43b6709a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN43.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN43.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN43.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN44.inf b/src/bin/hamcore/inf/x64/INF_VPN44.inf
index 0ad2136b..efef4fcc 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN44.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN44.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN44.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN45.inf b/src/bin/hamcore/inf/x64/INF_VPN45.inf
index 08c1892e..9dd39539 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN45.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN45.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN45.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN46.inf b/src/bin/hamcore/inf/x64/INF_VPN46.inf
index 265d3dfe..35589b69 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN46.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN46.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN46.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN47.inf b/src/bin/hamcore/inf/x64/INF_VPN47.inf
index ec1917eb..bcf8baa7 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN47.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN47.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN47.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN48.inf b/src/bin/hamcore/inf/x64/INF_VPN48.inf
index 425d5ef9..06ad062b 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN48.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN48.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN48.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN49.inf b/src/bin/hamcore/inf/x64/INF_VPN49.inf
index 98e96ca2..1e8379a5 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN49.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN49.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN49.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN5.inf b/src/bin/hamcore/inf/x64/INF_VPN5.inf
index 5f6eea52..11666ff0 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN5.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN5.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN5.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN50.inf b/src/bin/hamcore/inf/x64/INF_VPN50.inf
index 2a501a6f..664b2041 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN50.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN50.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN50.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN51.inf b/src/bin/hamcore/inf/x64/INF_VPN51.inf
index 8fcc650b..6d30d4f9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN51.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN51.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN51.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN52.inf b/src/bin/hamcore/inf/x64/INF_VPN52.inf
index c0be8997..57cec507 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN52.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN52.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN52.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN53.inf b/src/bin/hamcore/inf/x64/INF_VPN53.inf
index f5e10dcc..f818e8d8 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN53.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN53.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN53.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN54.inf b/src/bin/hamcore/inf/x64/INF_VPN54.inf
index 120842ce..4db05d9f 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN54.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN54.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN54.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN55.inf b/src/bin/hamcore/inf/x64/INF_VPN55.inf
index 22a243a6..ae375c9e 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN55.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN55.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN55.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN56.inf b/src/bin/hamcore/inf/x64/INF_VPN56.inf
index 6c537417..18a975ab 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN56.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN56.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN56.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN57.inf b/src/bin/hamcore/inf/x64/INF_VPN57.inf
index d11fd604..3820a26b 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN57.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN57.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN57.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN58.inf b/src/bin/hamcore/inf/x64/INF_VPN58.inf
index c60c294c..f5c82f55 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN58.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN58.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN58.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN59.inf b/src/bin/hamcore/inf/x64/INF_VPN59.inf
index f3a1a965..3ad10c20 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN59.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN59.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN59.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN6.inf b/src/bin/hamcore/inf/x64/INF_VPN6.inf
index 1b243c68..bde32cc6 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN6.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN6.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN6.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN60.inf b/src/bin/hamcore/inf/x64/INF_VPN60.inf
index f8615760..52ee8b29 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN60.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN60.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN60.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN61.inf b/src/bin/hamcore/inf/x64/INF_VPN61.inf
index 1172c8e4..9067bf94 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN61.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN61.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN61.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN62.inf b/src/bin/hamcore/inf/x64/INF_VPN62.inf
index b85cc622..820c48a8 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN62.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN62.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN62.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN63.inf b/src/bin/hamcore/inf/x64/INF_VPN63.inf
index d3eff462..9005a732 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN63.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN63.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN63.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN64.inf b/src/bin/hamcore/inf/x64/INF_VPN64.inf
index 0e949600..42ac0905 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN64.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN64.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN64.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN65.inf b/src/bin/hamcore/inf/x64/INF_VPN65.inf
index ab044cfa..961f9162 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN65.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN65.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN65.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN66.inf b/src/bin/hamcore/inf/x64/INF_VPN66.inf
index 48f1cac3..45a04bc8 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN66.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN66.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN66.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN67.inf b/src/bin/hamcore/inf/x64/INF_VPN67.inf
index bd322af0..fa6aaf2f 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN67.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN67.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN67.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN68.inf b/src/bin/hamcore/inf/x64/INF_VPN68.inf
index bb6c92c7..6033a45e 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN68.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN68.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN68.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN69.inf b/src/bin/hamcore/inf/x64/INF_VPN69.inf
index 2041c473..80b5730f 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN69.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN69.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN69.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN7.inf b/src/bin/hamcore/inf/x64/INF_VPN7.inf
index 3e5d1c4c..33113b81 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN7.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN7.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN7.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN70.inf b/src/bin/hamcore/inf/x64/INF_VPN70.inf
index a50d0a28..79ec7c27 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN70.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN70.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN70.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN71.inf b/src/bin/hamcore/inf/x64/INF_VPN71.inf
index e263a41c..120a79e0 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN71.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN71.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN71.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN72.inf b/src/bin/hamcore/inf/x64/INF_VPN72.inf
index c860bcfc..90d3a09a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN72.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN72.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN72.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN73.inf b/src/bin/hamcore/inf/x64/INF_VPN73.inf
index ed92024f..ce8f317a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN73.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN73.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN73.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN74.inf b/src/bin/hamcore/inf/x64/INF_VPN74.inf
index a33f307e..c8f266ce 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN74.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN74.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN74.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN75.inf b/src/bin/hamcore/inf/x64/INF_VPN75.inf
index a99604f0..7d003d02 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN75.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN75.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN75.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN76.inf b/src/bin/hamcore/inf/x64/INF_VPN76.inf
index cd06057d..006f124b 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN76.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN76.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN76.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN77.inf b/src/bin/hamcore/inf/x64/INF_VPN77.inf
index 1712d2a0..3c7567e9 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN77.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN77.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN77.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN78.inf b/src/bin/hamcore/inf/x64/INF_VPN78.inf
index 70bd65f6..e03389d4 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN78.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN78.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN78.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN79.inf b/src/bin/hamcore/inf/x64/INF_VPN79.inf
index 6f3ef702..962f13f2 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN79.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN79.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN79.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN8.inf b/src/bin/hamcore/inf/x64/INF_VPN8.inf
index 28ad8acd..11c55d31 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN8.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN8.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN8.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN80.inf b/src/bin/hamcore/inf/x64/INF_VPN80.inf
index 892c1e7a..82f2c95c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN80.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN80.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN80.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN81.inf b/src/bin/hamcore/inf/x64/INF_VPN81.inf
index 49eb56c0..5e7b250a 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN81.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN81.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN81.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN82.inf b/src/bin/hamcore/inf/x64/INF_VPN82.inf
index 55bbd135..c7414b16 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN82.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN82.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN82.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN83.inf b/src/bin/hamcore/inf/x64/INF_VPN83.inf
index a3cf25bc..5c26c729 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN83.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN83.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN83.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN84.inf b/src/bin/hamcore/inf/x64/INF_VPN84.inf
index 4d67e980..293713c7 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN84.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN84.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN84.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN85.inf b/src/bin/hamcore/inf/x64/INF_VPN85.inf
index 0494d32e..699bd6e6 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN85.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN85.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN85.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN86.inf b/src/bin/hamcore/inf/x64/INF_VPN86.inf
index da40bf5f..0e5fbc83 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN86.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN86.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN86.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN87.inf b/src/bin/hamcore/inf/x64/INF_VPN87.inf
index 50a2efe7..b6381c58 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN87.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN87.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN87.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN88.inf b/src/bin/hamcore/inf/x64/INF_VPN88.inf
index 070f505c..e87496ea 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN88.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN88.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN88.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN89.inf b/src/bin/hamcore/inf/x64/INF_VPN89.inf
index e0daadc0..27292806 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN89.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN89.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN89.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN9.inf b/src/bin/hamcore/inf/x64/INF_VPN9.inf
index 9fb0a0c2..4b1ad6ef 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN9.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN9.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN9.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN90.inf b/src/bin/hamcore/inf/x64/INF_VPN90.inf
index 946770af..edb85929 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN90.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN90.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN90.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN91.inf b/src/bin/hamcore/inf/x64/INF_VPN91.inf
index a43fc819..8da2c78d 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN91.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN91.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN91.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN92.inf b/src/bin/hamcore/inf/x64/INF_VPN92.inf
index 6f7a39f3..9aa3cbe8 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN92.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN92.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN92.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN93.inf b/src/bin/hamcore/inf/x64/INF_VPN93.inf
index e2a342f9..e36ecb0c 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN93.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN93.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN93.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN94.inf b/src/bin/hamcore/inf/x64/INF_VPN94.inf
index 500422a7..be9c11b4 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN94.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN94.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN94.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN95.inf b/src/bin/hamcore/inf/x64/INF_VPN95.inf
index 69de04be..90f64e00 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN95.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN95.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN95.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN96.inf b/src/bin/hamcore/inf/x64/INF_VPN96.inf
index 8b13fc2c..b88b8359 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN96.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN96.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN96.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN97.inf b/src/bin/hamcore/inf/x64/INF_VPN97.inf
index e60da922..654cfb7f 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN97.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN97.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN97.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN98.inf b/src/bin/hamcore/inf/x64/INF_VPN98.inf
index d5c5c876..826135be 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN98.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN98.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN98.cat
diff --git a/src/bin/hamcore/inf/x64/INF_VPN99.inf b/src/bin/hamcore/inf/x64/INF_VPN99.inf
index e45f60dc..88d91214 100644
--- a/src/bin/hamcore/inf/x64/INF_VPN99.inf
+++ b/src/bin/hamcore/inf/x64/INF_VPN99.inf
@@ -8,7 +8,7 @@ Signature = "$Windows NT$"
Class = Net
ClassGUID = {4D36E972-E325-11CE-BFC1-08002BE10318}
Provider = %CompanyName%
-DriverVer = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN99.cat
diff --git a/src/bin/hamcore/inf/x64/inf.cat b/src/bin/hamcore/inf/x64/inf.cat
index c5b1a06a..fc4fcea4 100644
--- a/src/bin/hamcore/inf/x64/inf.cat
+++ b/src/bin/hamcore/inf/x64/inf.cat
Binary files differ
diff --git a/src/bin/hamcore/inf/x86/INF_VPN.inf b/src/bin/hamcore/inf/x86/INF_VPN.inf
index 6c91ca04..dd7a9291 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 95eecb4e..16b38548 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 f8c6eff6..7e963617 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7a41dacc..28a869da 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 07498b49..419b5941 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 0e9ef6a4..518ac57f 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 4a255050..dd3fb6a3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 3f4918bd..e2616c3e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 19813ab0..f4a18532 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 436fad61..a62e7d36 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 df47f86f..79a4545c 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 4f2747cd..d813843c 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 c8356d98..b59b2a06 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 24772178..967027d5 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7bc53c05..c4d401ec 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 c9bf8a60..b2c6e998 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 832022cc..abdbb115 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 ecada55b..7e1b5f47 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a5df3057..5df92ddf 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 8bf0ecec..4ae5ab94 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7136a461..25dece02 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 0cfccc98..3e37e692 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 2d6282fb..54c76247 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 6d176bb0..9dfb0acf 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 1e14e7cc..405674eb 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a4c17396..8820afc9 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 8c88c158..a6a33517 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 5e91789d..443db061 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 74b5e73a..5ccf4414 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 599ba19d..da58e18a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 233c1d89..886a6b9a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 12a94849..6c3247bb 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 738983d2..bb794e5e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 160ca6eb..15248ea3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 1e84c1c2..bfc95a5e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 db06a885..db564764 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 b6017e46..dc8cbc3e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 3d412f0c..f935a4d9 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 f00c9581..60b9e6ba 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 098076b2..26bf9d8a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 d7e9d3c0..85854da8 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 f75c781f..e1475629 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 cfefd4d5..49fc3878 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 e0b832c9..70228cbc 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 b37c0b5c..4cceb1c2 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 9482207c..0fe03ada 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 96c120e3..478d1115 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a2217db7..4dfba220 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 d1425a13..b2735eb2 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 64844a36..391fcc53 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 53bcb03c..15edae51 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 ce5462ff..e4d65c48 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 ed3ebcb9..c9ba0466 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 31a49c3a..42ea1c29 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 fac7d6a9..d85970a0 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 1b77f36a..111bc15c 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 47bec33b..8eea5f8a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 d4e2a4bc..832f38c5 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 bce6467f..c3b0023b 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 cf82b4dd..ae1d814a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 d983f014..bf191e89 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 230ab21d..f9f21160 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 50708e2e..83b4cbb9 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 01bce12c..346fbe74 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 d15a56c5..6703efe9 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 dd4cc189..bbe89c26 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 15698218..5801fd60 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 71cf5050..c3374efb 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 86bb9e0c..82c6e157 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 f9505324..5c73b299 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 63471144..a9638e5e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 b021a33d..bcd74715 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 e8e6dbf2..25a822fa 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 d33400ff..4acc1159 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 e4cd65d0..0fd4ba7b 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 be70ff43..906f83bd 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 8e6a73a0..1764665f 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 462ff24e..d8ccf2fe 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 e0f98d15..fad12b27 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 c28d3ca1..c1e32e7c 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 3431f0f5..ce26ad7e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 390b61c9..a727f08a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 e04787d5..ee9df9a0 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 90ce22b3..5571d69b 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 9e55e35a..eb9c08d0 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 eb560922..e8ff239d 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 8e566962..978161f7 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 82cf18ea..df17afb2 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 62867f33..a39901de 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 1666923f..b0e1523e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 3c5555d6..36d6ec34 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 30406b2b..3a6711c3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 5b04c774..8ad84a0f 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 9c591d56..b32b0775 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 2e4b3476..cdf4f36a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 ec0905c0..511fc204 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 be71dedd..2685a9cc 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a2e2424d..4a342c9a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 ab6ccb64..2d00898b 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 4ba0bb48..1a0ff67d 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 0c2d1459..2f8f7c55 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 b6416600..7de03364 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 4df36bbe..39fe7a0e 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 04877529..b3437fa3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 639b8078..d85c883b 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 dee80cef..df153a5f 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 c13b9131..1c635188 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a0439685..f67c164d 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a0f09a71..08c28814 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 f899309b..537cca99 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 713ba83d..cf2055bb 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7afc8f29..6225a581 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 2d3fb176..9804227a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7e82163e..65228fa3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 afc3cdbd..4b4a26e7 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 8812a6a0..25f052b3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 13280547..817ce2c3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7f0b9cb2..6b13e89a 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 1304f568..d7166a6d 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 504df5ae..fc6bc25c 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 22da594a..b8b0c75d 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 a1414adb..5f069599 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 7f48e6ba..574ce1d4 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 c654cd77..16e5e416 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 4fb71aa4..ee4ce2e3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 03e01546..908cfbd3 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
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 60418a29..97337ad5 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 = 07/12/2014, 4.10.0.9473
+DriverVer = 10/03/2014, 4.10.0.9505
CatalogFile.NT = inf_VPN99.cat
diff --git a/src/bin/hamcore/inf/x86/inf.cat b/src/bin/hamcore/inf/x86/inf.cat
index e62b0473..68171dcf 100644
--- a/src/bin/hamcore/inf/x86/inf.cat
+++ b/src/bin/hamcore/inf/x86/inf.cat
Binary files differ
diff --git a/src/bin/hamcore/pxwfp_x64.sys b/src/bin/hamcore/pxwfp_x64.sys
index 5afbd77f..26d839c4 100644
--- a/src/bin/hamcore/pxwfp_x64.sys
+++ b/src/bin/hamcore/pxwfp_x64.sys
Binary files differ
diff --git a/src/bin/hamcore/pxwfp_x86.sys b/src/bin/hamcore/pxwfp_x86.sys
index cb06528c..842ac6f9 100644
--- a/src/bin/hamcore/pxwfp_x86.sys
+++ b/src/bin/hamcore/pxwfp_x86.sys
Binary files differ
diff --git a/src/bin/hamcore/see.sys b/src/bin/hamcore/see.sys
index 7e786cfa..3d2a11a6 100644
--- a/src/bin/hamcore/see.sys
+++ b/src/bin/hamcore/see.sys
Binary files differ
diff --git a/src/bin/hamcore/see_x64.sys b/src/bin/hamcore/see_x64.sys
index 4989d671..b1a53837 100644
--- a/src/bin/hamcore/see_x64.sys
+++ b/src/bin/hamcore/see_x64.sys
Binary files differ
diff --git a/src/bin/hamcore/strtable_cn.stb b/src/bin/hamcore/strtable_cn.stb
index fa6328c6..0d972aa9 100644
--- a/src/bin/hamcore/strtable_cn.stb
+++ b/src/bin/hamcore/strtable_cn.stb
@@ -556,6 +556,7 @@ 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.
HUB_AO_SuppressClientUpdateNotification Suppress the update notification screen on the VPN Client.
+HUB_AO_FloodingSendQueueBufferQuota Specify the quota limitation value (in bytes) of the sending queue buffer size which the flooding operation on the Virtual Hub can consume. The quota value is applied on the total length of sending queues of all active VPN sessions. Specify '0' to disable the quota. This option is effective to solve the out-of-memory problem on the network where there are many flooding packets.
#关于失败连接对è¯æ¡†
@@ -4311,7 +4312,7 @@ CMD_UNKNOWN_PARAM 没有这个å‚数的说明。
# 控制å°ç³»ç»Ÿå†…使用的字符串
CMD_HELP_1 您å¯ä»¥ä½¿ç”¨ä¸‹é¢çš„ %u 命令:
-CMD_HELP_2 å‚考æ¯ä¸ªå‘½ä»¤çš„使用,输入 "命令å称 /?" æ¥æŸ¥çœ‹å¸®åŠ©ã€‚
+CMD_HELP_2 å‚考æ¯ä¸ªå‘½ä»¤çš„使用,输入 "命令å称 ?" æ¥æŸ¥çœ‹å¸®åŠ©ã€‚
CMD_EVAL_MIN_MAX 您必须指定从 %u 到 %u 的整数。
CMD_PROMPT 输入一个值:
CMD_EVAL_NOT_EMPTY 规格ä¸èƒ½ä¸ºç©ºç™½ã€‚
@@ -6864,7 +6865,7 @@ CMD_TrafficClient_ERROR_HOSTPORT 指定的主机å或端å£å·ä¸æ­£ç¡®ã€‚
# TrafficServer 命令
CMD_TrafficServer 在æœåŠ¡å™¨æ¨¡å¼ä¸‹ï¼Œè¿è¡Œç½‘络æµé‡é€Ÿåº¦æµ‹è¯•å·¥å…·
-CMD_TrafficServer_Help è¿è¡Œé€šä¿¡åžåé‡æµ‹é‡å·¥å…·çš„æœåŠ¡å™¨ç¨‹åºã€‚\n通信åžåé‡æµ‹é‡å·¥å…·ï¼Œä½œä¸º TrafficClient å’Œ TrafficServer 两个指令使用,å¯ä»¥æµ‹é‡åœ¨ IP 网络上连接的 2 å°è®¡ç®—机之间å¯ä¼ é€çš„通信åžåé‡ã€‚\nè¦ä½¿æ­¤è®¡ç®—机上的 TCP 端å£å¤„于待机状æ€ï¼Œç­‰å¾…从å¦ä¸€å°è®¡ç®—机的 TrafficClient 连接,å¯åŠ¨ TrafficServer 指令并指定端å£å·ã€‚\n关于通信åžåé‡æµ‹é‡å·¥å…·çš„详细情况,输入 TrafficClient /? 将显示。\n\n※注æ„: 此指令å¯ä»¥ä»Ž SoftEther VPN 命令行管ç†å·¥å…·è°ƒç”¨ã€‚虽然目å‰ä»¥ç®¡ç†æ¨¡å¼è¿žæŽ¥ VPN Server å’Œ VPN Client æ—¶å¯ä»¥è¿è¡Œï¼Œä½†è¦è¿›è¡Œå®žé™…通信并测é‡åžåé‡çš„,是è¿è¡Œæ­¤æŒ‡ä»¤çš„计算机,与用管ç†æ¨¡å¼è¿žæŽ¥ç»ˆç«¯çš„计算机没有任何关系。
+CMD_TrafficServer_Help è¿è¡Œé€šä¿¡åžåé‡æµ‹é‡å·¥å…·çš„æœåŠ¡å™¨ç¨‹åºã€‚\n通信åžåé‡æµ‹é‡å·¥å…·ï¼Œä½œä¸º TrafficClient å’Œ TrafficServer 两个指令使用,å¯ä»¥æµ‹é‡åœ¨ IP 网络上连接的 2 å°è®¡ç®—机之间å¯ä¼ é€çš„通信åžåé‡ã€‚\nè¦ä½¿æ­¤è®¡ç®—机上的 TCP 端å£å¤„于待机状æ€ï¼Œç­‰å¾…从å¦ä¸€å°è®¡ç®—机的 TrafficClient 连接,å¯åŠ¨ TrafficServer 指令并指定端å£å·ã€‚\n关于通信åžåé‡æµ‹é‡å·¥å…·çš„详细情况,输入 "TrafficClient ?" 将显示。\n\n※注æ„: 此指令å¯ä»¥ä»Ž SoftEther VPN 命令行管ç†å·¥å…·è°ƒç”¨ã€‚虽然目å‰ä»¥ç®¡ç†æ¨¡å¼è¿žæŽ¥ VPN Server å’Œ VPN Client æ—¶å¯ä»¥è¿è¡Œï¼Œä½†è¦è¿›è¡Œå®žé™…通信并测é‡åžåé‡çš„,是è¿è¡Œæ­¤æŒ‡ä»¤çš„计算机,与用管ç†æ¨¡å¼è¿žæŽ¥ç»ˆç«¯çš„计算机没有任何关系。
CMD_TrafficServer_Args TrafficServer [port]
CMD_TrafficServer_[port] 以整数指定等待连接的端å£å·ã€‚被指定的端å£ï¼Œå¦‚果已ç»ç”±å¦ä¸€ä¸ªç¨‹åºåœ¨ä½¿ç”¨ï¼Œæˆ–ä¸èƒ½æ‰“开该端å£æ—¶ï¼Œå°†å‘生错误。
diff --git a/src/bin/hamcore/strtable_en.stb b/src/bin/hamcore/strtable_en.stb
index 173aefd7..02f53f45 100644
--- a/src/bin/hamcore/strtable_en.stb
+++ b/src/bin/hamcore/strtable_en.stb
@@ -550,6 +550,7 @@ 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.
HUB_AO_SuppressClientUpdateNotification Suppress the update notification screen on the VPN Client.
+HUB_AO_FloodingSendQueueBufferQuota Specify the quota limitation value (in bytes) of the sending queue buffer size which the flooding operation on the Virtual Hub can consume. The quota value is applied on the total length of sending queues of all active VPN sessions. Specify '0' to disable the quota. This option is effective to solve the out-of-memory problem on the network where there are many flooding packets.
# Concerning failed connection dialogs
@@ -4295,7 +4296,7 @@ CMD_UNKNOWN_PARAM There is no description for this parameter.
# Strings being used within console system
CMD_HELP_1 You can use the following %u commands:
-CMD_HELP_2 To reference the usage for each command, input "command name /?" to view a help.
+CMD_HELP_2 To reference the usage for each command, input "command name ?" to view a help.
CMD_EVAL_MIN_MAX You must specify an integer in the range from %u to %u for the value.
CMD_PROMPT Enter a value:
CMD_EVAL_NOT_EMPTY You cannot make a blank specification.
@@ -6851,7 +6852,7 @@ CMD_TrafficClient_ERROR_HOSTPORT The host name or port number is incorrectly spe
# TrafficServer command
CMD_TrafficServer Run Network Traffic Speed Test Tool in Server Mode
-CMD_TrafficServer_Help Use this to execute the communication throughput measurement tool's server program. \nTwo commands, TrafficClient and TrafficServer, are used for the communication throughput measurement tool to enable the measurement of communication throughput that can be transferred between two computers connected by IP network. \nTo set the TCP port of this computer to the Listen status to listen for the connection from the TrafficClient of another computer, specify the port number and start the server program using the TrafficServer command. \nYou can display more detailed information on the communication throughput measurement tool by inputting "TrafficClient /?". \n\nNote: This command can be called from the SoftEther VPN Command Line Management Utility. You can also execute this command while connected to the current VPN Server or VPN Client in Administration Mode but, what actually conducts communication and measures the throughput is the computer on which the command is running, and all this is executed in a context that has absolutely no relationship to the computer that is the destination of the Administration Mode connection.
+CMD_TrafficServer_Help Use this to execute the communication throughput measurement tool's server program. \nTwo commands, TrafficClient and TrafficServer, are used for the communication throughput measurement tool to enable the measurement of communication throughput that can be transferred between two computers connected by IP network. \nTo set the TCP port of this computer to the Listen status to listen for the connection from the TrafficClient of another computer, specify the port number and start the server program using the TrafficServer command. \nYou can display more detailed information on the communication throughput measurement tool by inputting "TrafficClient ?". \n\nNote: This command can be called from the SoftEther VPN Command Line Management Utility. You can also execute this command while connected to the current VPN Server or VPN Client in Administration Mode but, what actually conducts communication and measures the throughput is the computer on which the command is running, and all this is executed in a context that has absolutely no relationship to the computer that is the destination of the Administration Mode connection.
CMD_TrafficServer_Args TrafficServer [port]
CMD_TrafficServer_[port] Specify, using an integer, the port number at which to listen for the connection. If the specified port has been already being used by another program, or if the port cannot be opened, an error will occur.
diff --git a/src/bin/hamcore/strtable_ja.stb b/src/bin/hamcore/strtable_ja.stb
index 17844af5..68b7bfed 100644
--- a/src/bin/hamcore/strtable_ja.stb
+++ b/src/bin/hamcore/strtable_ja.stb
@@ -571,6 +571,7 @@ HUB_AO_DoNotSaveHeavySecurityLogs ä¿å­˜ã«è² è·ãŒã‹ã‹ã‚‹ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚
HUB_AO_DropBroadcastsInPrivacyFilterMode é€ä¿¡å…ƒãŠã‚ˆã³å®›å…ˆã®ä¸¡æ–¹ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒãƒ—ライãƒã‚·ãƒ¼ãƒ•ã‚£ãƒ«ã‚¿ãƒ¢ãƒ¼ãƒ‰ã®å ´åˆã€ãƒ–ロードキャストパケットを破棄ã—ã¾ã™ã€‚
HUB_AO_DropArpInPrivacyFilterMode é€ä¿¡å…ƒãŠã‚ˆã³å®›å…ˆã®ä¸¡æ–¹ã®ã‚»ãƒƒã‚·ãƒ§ãƒ³ãŒãƒ—ライãƒã‚·ãƒ¼ãƒ•ã‚£ãƒ«ã‚¿ãƒ¢ãƒ¼ãƒ‰ã®å ´åˆã€ARP パケットを破棄ã—ã¾ã™ã€‚
HUB_AO_SuppressClientUpdateNotification VPN Client ã®ã‚¢ãƒƒãƒ—デート通知画é¢ã®è¡¨ç¤ºã‚’抑制ã—ã¾ã™ã€‚
+HUB_AO_FloodingSendQueueBufferQuota パケットã®ä»®æƒ³ HUB 内ã«ãŠã‘るフラッディング動作時ã«ãŠã„ã¦æ¶ˆè²»ã™ã‚‹ã“ã¨ã‚’許容ã™ã‚‹é€ä¿¡ã‚­ãƒ¥ãƒ¼ã®ãƒãƒƒãƒ•ã‚¡ã‚µã‚¤ã‚ºã®åˆ¶é™å€¤ (ãƒã‚¤ãƒˆæ•°) を指定ã—ã¾ã™ã€‚クオータã¯ã€ã™ã¹ã¦ã®æŽ¥ç¶šä¸­ã® VPN セッションã®é€ä¿¡ã‚­ãƒ¥ãƒ¼ã®åˆè¨ˆé•·ã•ã«å¯¾ã—ã¦ã‚°ãƒ­ãƒ¼ãƒãƒ«ã«é©ç”¨ã•ã‚Œã¾ã™ã€‚0 を指定ã™ã‚‹ã¨ç„¡åˆ¶é™ã«ãªã‚Šã¾ã™ã€‚ã“ã®ã‚ªãƒ—ションã¯ã€ãƒ•ãƒ©ãƒƒãƒ‡ã‚£ãƒ³ã‚°ãƒ‘ケットãŒå¤šç™ºã™ã‚‹ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã«ãŠã„ã¦ãƒ¡ãƒ¢ãƒªæ¶ˆè²»é‡ãŒå¢—大ã™ã‚‹å•é¡Œã‚’解決ã™ã‚‹ãŸã‚ã«åˆ©ç”¨ã§ãã¾ã™ã€‚
# Caps 関係
@@ -4300,7 +4301,7 @@ CMD_UNKNOWN_PARAM ã“ã®ãƒ‘ラメータã«é–¢ã™ã‚‹èª¬æ˜Žã¯ã‚ã‚Šã¾ã›ã‚“。
# コンソールシステム内部ã§ä½¿ç”¨ã—ã¦ã„る文字列
CMD_HELP_1 下記㮠%u 個ã®ã‚³ãƒžãƒ³ãƒ‰ãŒä½¿ç”¨ã§ãã¾ã™:
-CMD_HELP_2 ãã‚Œãžã‚Œã®ã‚³ãƒžãƒ³ãƒ‰ã®ä½¿ç”¨æ–¹æ³•ã«ã¤ã„ã¦ã¯ã€"コマンドå /?" ã¨å…¥åŠ›ã™ã‚‹ã¨ãƒ˜ãƒ«ãƒ—ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
+CMD_HELP_2 ãã‚Œãžã‚Œã®ã‚³ãƒžãƒ³ãƒ‰ã®ä½¿ç”¨æ–¹æ³•ã«ã¤ã„ã¦ã¯ã€"コマンドå ?" ã¨å…¥åŠ›ã™ã‚‹ã¨ãƒ˜ãƒ«ãƒ—ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚
CMD_EVAL_MIN_MAX 値㯠%u 以上 %u 以下ã®æ•´æ•°ã§æŒ‡å®šã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
CMD_PROMPT 値を入力ã—ã¦ãã ã•ã„ :
CMD_EVAL_NOT_EMPTY 空白を指定ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。
@@ -6857,7 +6858,7 @@ CMD_TrafficClient_ERROR_HOSTPORT ホストåã¾ãŸã¯ãƒãƒ¼ãƒˆç•ªå·ã®æŒ‡å®šã
# TrafficServer コマンド
CMD_TrafficServer 通信スループット測定ツールサーãƒãƒ¼ã®å®Ÿè¡Œ
-CMD_TrafficServer_Help 通信スループット測定ツールã®ã‚µãƒ¼ãƒãƒ¼ãƒ—ログラムを実行ã—ã¾ã™ã€‚\n通信スループット測定ツールã¯ã€TrafficClient 㨠TrafficServer ã® 2 ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã¨ã—ã¦åˆ©ç”¨ã—ã€IP ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã§æŽ¥ç¶šã•ã‚ŒãŸ 2 å°ã®ã‚³ãƒ³ãƒ”ュータã®é–“ã§ä¼é€ã™ã‚‹ã“ã¨ãŒã§ãる通信スループットを計測ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\nã“ã®ã‚³ãƒ³ãƒ”ュータ上㮠TCP ãƒãƒ¼ãƒˆã‚’待機状態ã«ã—ã¦ã€åˆ¥ã®ã‚³ãƒ³ãƒ”ュータã‹ã‚‰ã® TrafficClient ã‹ã‚‰ã®æŽ¥ç¶šã‚’å¾…ã¡å—ã‘ã‚‹ã«ã¯ã€TrafficServer コマンドã«ãƒãƒ¼ãƒˆç•ªå·ã‚’指定ã—ã¦èµ·å‹•ã—ã¾ã™ã€‚\n通信スループット測定ツールã«é–¢ã™ã‚‹è©³ç´°ã¯ã€TrafficClient /? ã¨å…¥åŠ›ã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚\n\n※注æ„: ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ SoftEther VPN コマンドライン管ç†ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ç¾åœ¨ VPN Server ã‚„ VPN Client ã«ç®¡ç†ãƒ¢ãƒ¼ãƒ‰ã§æŽ¥ç¶šã—ã¦ã„ã‚‹å ´åˆã‚‚実行ã§ãã¾ã™ãŒã€å®Ÿéš›ã«é€šä¿¡ã‚’è¡Œã£ã¦ã‚¹ãƒ«ãƒ¼ãƒ—ットを測定ã™ã‚‹ã®ã¯ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã„るコンピュータã§ã‚ã‚Šã€ç®¡ç†ãƒ¢ãƒ¼ãƒ‰ã§æŽ¥ç¶šå…ˆã®ã‚³ãƒ³ãƒ”ュータã¨ã¯ä¸€åˆ‡é–¢ä¿‚ãªã„コンテキストã§å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚
+CMD_TrafficServer_Help 通信スループット測定ツールã®ã‚µãƒ¼ãƒãƒ¼ãƒ—ログラムを実行ã—ã¾ã™ã€‚\n通信スループット測定ツールã¯ã€TrafficClient 㨠TrafficServer ã® 2 ã¤ã®ã‚³ãƒžãƒ³ãƒ‰ã¨ã—ã¦åˆ©ç”¨ã—ã€IP ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ä¸Šã§æŽ¥ç¶šã•ã‚ŒãŸ 2 å°ã®ã‚³ãƒ³ãƒ”ュータã®é–“ã§ä¼é€ã™ã‚‹ã“ã¨ãŒã§ãる通信スループットを計測ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚\nã“ã®ã‚³ãƒ³ãƒ”ュータ上㮠TCP ãƒãƒ¼ãƒˆã‚’待機状態ã«ã—ã¦ã€åˆ¥ã®ã‚³ãƒ³ãƒ”ュータã‹ã‚‰ã® TrafficClient ã‹ã‚‰ã®æŽ¥ç¶šã‚’å¾…ã¡å—ã‘ã‚‹ã«ã¯ã€TrafficServer コマンドã«ãƒãƒ¼ãƒˆç•ªå·ã‚’指定ã—ã¦èµ·å‹•ã—ã¾ã™ã€‚\n通信スループット測定ツールã«é–¢ã™ã‚‹è©³ç´°ã¯ã€"TrafficClient ?" ã¨å…¥åŠ›ã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚\n\n※注æ„: ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã¯ SoftEther VPN コマンドライン管ç†ãƒ¦ãƒ¼ãƒ†ã‚£ãƒªãƒ†ã‚£ã‹ã‚‰å‘¼ã³å‡ºã™ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ç¾åœ¨ VPN Server ã‚„ VPN Client ã«ç®¡ç†ãƒ¢ãƒ¼ãƒ‰ã§æŽ¥ç¶šã—ã¦ã„ã‚‹å ´åˆã‚‚実行ã§ãã¾ã™ãŒã€å®Ÿéš›ã«é€šä¿¡ã‚’è¡Œã£ã¦ã‚¹ãƒ«ãƒ¼ãƒ—ットを測定ã™ã‚‹ã®ã¯ã€ã“ã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦ã„るコンピュータã§ã‚ã‚Šã€ç®¡ç†ãƒ¢ãƒ¼ãƒ‰ã§æŽ¥ç¶šå…ˆã®ã‚³ãƒ³ãƒ”ュータã¨ã¯ä¸€åˆ‡é–¢ä¿‚ãªã„コンテキストã§å®Ÿè¡Œã•ã‚Œã¾ã™ã€‚
CMD_TrafficServer_Args TrafficServer [port]
CMD_TrafficServer_[port] 接続を待ã¡å—ã‘ã‚‹ãƒãƒ¼ãƒˆç•ªå·ã‚’æ•´æ•°ã§æŒ‡å®šã—ã¾ã™ã€‚指定ã•ã‚ŒãŸãƒãƒ¼ãƒˆãŒã€ã™ã§ã«åˆ¥ã®ãƒ—ログラムã«ã‚ˆã£ã¦ä½¿ç”¨ä¸­ã®å ´åˆã‚„ã€ãƒãƒ¼ãƒˆã‚’é–‹ãã“ã¨ãŒã§ããªã„å ´åˆã¯ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã™ã€‚
diff --git a/src/bin/hamcore/vpn_driver.sys b/src/bin/hamcore/vpn_driver.sys
index 0c37fe58..c74a00ce 100644
--- a/src/bin/hamcore/vpn_driver.sys
+++ b/src/bin/hamcore/vpn_driver.sys
Binary files differ
diff --git a/src/bin/hamcore/vpn_driver6.sys b/src/bin/hamcore/vpn_driver6.sys
index f44593a1..2e6487d0 100644
--- a/src/bin/hamcore/vpn_driver6.sys
+++ b/src/bin/hamcore/vpn_driver6.sys
Binary files differ
diff --git a/src/bin/hamcore/vpn_driver6_x64.sys b/src/bin/hamcore/vpn_driver6_x64.sys
index 243ece00..bee9e0e6 100644
--- a/src/bin/hamcore/vpn_driver6_x64.sys
+++ b/src/bin/hamcore/vpn_driver6_x64.sys
Binary files differ
diff --git a/src/bin/hamcore/vpn_driver_x64.sys b/src/bin/hamcore/vpn_driver_x64.sys
index 33abb6aa..7a1c9cdd 100644
--- a/src/bin/hamcore/vpn_driver_x64.sys
+++ b/src/bin/hamcore/vpn_driver_x64.sys
Binary files differ
diff --git a/src/bin/vpnweb.cab b/src/bin/vpnweb.cab
index e7d4ae28..86b53538 100644
--- a/src/bin/vpnweb.cab
+++ b/src/bin/vpnweb.cab
Binary files differ
diff --git a/src/bin/vpnweb.ocx b/src/bin/vpnweb.ocx
index 7501bafa..812d2986 100644
--- a/src/bin/vpnweb.ocx
+++ b/src/bin/vpnweb.ocx
Binary files differ
diff --git a/src/makefiles/freebsd_32bit.mak b/src/makefiles/freebsd_32bit.mak
index 25847562..7c416313 100644
--- a/src/makefiles/freebsd_32bit.mak
+++ b/src/makefiles/freebsd_32bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 44e588c7..44794953 100644
--- a/src/makefiles/freebsd_64bit.mak
+++ b/src/makefiles/freebsd_64bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 dc131347..6587cdb7 100644
--- a/src/makefiles/linux_32bit.mak
+++ b/src/makefiles/linux_32bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 1eb8b34c..7071cc45 100644
--- a/src/makefiles/linux_64bit.mak
+++ b/src/makefiles/linux_64bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 32998c35..579a4233 100644
--- a/src/makefiles/macos_32bit.mak
+++ b/src/makefiles/macos_32bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 07eaa599..e1855ccd 100644
--- a/src/makefiles/macos_64bit.mak
+++ b/src/makefiles/macos_64bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 c1db3ce1..53bb261c 100644
--- a/src/makefiles/openbsd_32bit.mak
+++ b/src/makefiles/openbsd_32bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 08a6a8e4..2ad52064 100644
--- a/src/makefiles/openbsd_64bit.mak
+++ b/src/makefiles/openbsd_64bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 3a0360d1..a1b988c5 100644
--- a/src/makefiles/solaris_32bit.mak
+++ b/src/makefiles/solaris_32bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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 393f7d27..93ab2b2d 100644
--- a/src/makefiles/solaris_64bit.mak
+++ b/src/makefiles/solaris_64bit.mak
@@ -52,7 +52,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/authors.txt src/bin/hamcore/backup_dir_readme.txt src/bin/hamcore/chain_certs.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/root_certs.dat 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/root_certs.dat 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/vpnweb/vpnweb.h b/src/vpnweb/vpnweb.h
index 4d2b797f..e27f0121 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 Sat Jul 12 02:14:46 2014
+/* at Fri Oct 03 17:55:25 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 2c3ab9d5..30b20f4d 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 Sat Jul 12 02:14:46 2014
+/* at Fri Oct 03 17:55:25 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 03ccdbba..039050c3 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 Sat Jul 12 02:14:46 2014
+/* at Fri Oct 03 17:55:25 2014
*/
/* Compiler settings for .\vpnweb.idl:
Oicf, W1, Zp8, env=Win32 (32b run)